summaryrefslogtreecommitdiffstats
path: root/.eslintrc.js
diff options
context:
space:
mode:
authorMarco Ambrosini <marcoambrosini@pm.me>2019-09-13 18:28:44 +0200
committerMarco Ambrosini <marcoambrosini@pm.me>2019-10-09 10:48:26 +0200
commit5e9c3400c758499d6d0b796ad288ede528835fa9 (patch)
tree1eac8577b0a486aa6b9ba0cb24caef83c9b769df /.eslintrc.js
parent88d7d7820e5ae8f4a3d897605124ad7755926494 (diff)
Create Message component
Signed-off-by: Marco Ambrosini <marcoambrosini@pm.me>
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 000000000..02f83b17c
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,99 @@
+module.exports = {
+ root: true,
+ env: {
+ browser: true,
+ es6: true,
+ node: true,
+ jest: true
+ },
+ globals: {
+ t: true,
+ n: true,
+ OC: true,
+ OCA: true,
+ Vue: true,
+ VueRouter: true
+ },
+ parserOptions: {
+ parser: 'babel-eslint',
+ ecmaVersion: 6
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:import/errors',
+ 'plugin:import/warnings',
+ 'plugin:node/recommended',
+ 'plugin:vue/essential',
+ 'plugin:vue/recommended',
+ 'plugin:nextcloud/recommended',
+ 'standard'
+ ],
+ settings: {
+ 'import/resolver': {
+ webpack: {
+ config: 'webpack.common.js'
+ },
+ node: {
+ paths: ['src'],
+ extensions: ['.js', '.vue']
+ }
+ }
+ },
+ plugins: ['vue', 'node'],
+ rules: {
+ // 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': ['off'],
+ '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'],
+ // PascalCase components names for vuejs
+ // https://vuejs.org/v2/style-guide/#Single-file-component-filename-casing-strongly-recommended
+ 'vue/component-name-in-template-casing': ['error', 'PascalCase'],
+ // force name
+ 'vue/match-component-file-name': ['error', {
+ 'extensions': ['jsx', 'vue', 'js'],
+ 'shouldMatchCase': true
+ }],
+ // 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
+ }
+ }
+ ]
+ }
+}