Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/notifications.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2019-03-12 17:57:39 +0300
committerJoas Schilling <coding@schilljs.com>2019-03-18 13:12:51 +0300
commitc6e1cbdc43e39a56af0fa2186f8a077ea29c2ecc (patch)
tree1b47ba50f7ee0c46b2b53e61bfdbb48cc47e0c0b /.eslintrc.js
parentaf9f35b6af24c2e7746b304a09e8e6bb4b6c1541 (diff)
Add eslint
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to '.eslintrc.js')
-rw-r--r--.eslintrc.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..9734a0e
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,99 @@
+module.exports = {
+ root: true,
+ env: {
+ browser: true,
+ es6: true,
+ node: true
+ },
+ globals: {
+ oc_config: true,
+ oca_contacts: true,
+ moment: true,
+ escapeHTML: true,
+ n: true,
+ t: true,
+ OC: true,
+ OCA: true,
+ OCP: true,
+ Vue: true,
+ $: true // FIXME should remove jQuery dependency
+ },
+ parserOptions: {
+ parser: 'babel-eslint',
+ ecmaVersion: 6
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:import/errors',
+ 'plugin:import/warnings',
+ 'plugin:node/recommended',
+ 'plugin:vue/essential',
+ 'plugin:vue/recommended',
+ 'standard'
+ ],
+ settings: {
+ 'import/resolver': {
+ webpack: {
+ config: 'src/webpack.common.js'
+ },
+ node: {
+ paths: ['src'],
+ extensions: ['.js', '.vue']
+ }
+ }
+ },
+ plugins: ['vue', 'node'],
+ rules: {
+ "no-control-regex": 0,
+
+ // space before function ()
+ 'space-before-function-paren': ['error', 'never'],
+ // curly braces always space
+ 'object-curly-spacing': ['error', 'always'],
+ // stay consistent with array brackets
+ 'array-bracket-newline': ['error', 'consistent'],
+ // 1tbs brace style
+ 'brace-style': 'error',
+ // tabs only
+ indent: ['error', 'tab'],
+ 'no-tabs': 0,
+ 'vue/html-indent': ['error', 'tab'],
+ // only debug console
+ 'no-console': ['error', { allow: ['error', 'warn', 'info', 'debug'] }],
+ // classes blocks
+ 'padded-blocks': ['error', { classes: 'always' }],
+ // always have the operator in front
+ 'operator-linebreak': ['error', 'before'],
+ // ternary on multiline
+ 'multiline-ternary': ['error', 'always-multiline'],
+ // force proper JSDocs
+ 'valid-jsdoc': [2, {
+ 'prefer': {
+ 'return': 'returns'
+ },
+ 'requireReturn': false,
+ 'requireReturnDescription': false
+ }],
+ // es6 import/export and require
+ 'node/no-unpublished-require': ['off'],
+ 'node/no-unsupported-features/es-syntax': ['off'],
+ // kebab case components for vuejs
+ 'vue/component-name-in-template-casing': ['error', 'kebab-case'],
+ // space before self-closing elements
+ 'vue/html-closing-bracket-spacing': 'error',
+ // no ending html tag on a new line
+ 'vue/html-closing-bracket-newline': ['error', { multiline: 'never' }],
+ // code spacing with attributes
+ 'vue/max-attributes-per-line': [
+ 'error',
+ {
+ singleline: 3,
+ multiline: {
+ max: 3,
+ allowFirstLine: true
+ }
+ }
+ ],
+ 'vue/no-v-html': ['off']
+ }
+}