207 lines
5.5 KiB
JavaScript
207 lines
5.5 KiB
JavaScript
module.exports = {
|
|
extends: ['airbnb-base'],
|
|
parser: '@babel/eslint-parser',
|
|
parserOptions: {
|
|
ecmaFeatures: {
|
|
jsx: true
|
|
},
|
|
babelOptions: {
|
|
plugins: [
|
|
'@babel/plugin-syntax-import-assertions',
|
|
],
|
|
},
|
|
},
|
|
plugins: [
|
|
'@babel',
|
|
'jsdoc',
|
|
],
|
|
env: {
|
|
browser: true,
|
|
commonjs: true,
|
|
jasmine: true,
|
|
jest: true,
|
|
es6: true,
|
|
},
|
|
rules: {
|
|
'arrow-parens': [
|
|
'error',
|
|
'as-needed',
|
|
{ requireForBlockBody: true }
|
|
],
|
|
'arrow-body-style': 'off',
|
|
'class-methods-use-this': 'off',
|
|
'comma-dangle': 'off',
|
|
'consistent-return': 'off',
|
|
curly: ['error', 'all'],
|
|
'func-names': 'off',
|
|
'import/no-extraneous-dependencies': 'off',
|
|
'import/prefer-default-export': 'off',
|
|
indent: [
|
|
'error',
|
|
2,
|
|
{
|
|
SwitchCase: 1,
|
|
FunctionDeclaration: { parameters: 'first' },
|
|
FunctionExpression: { parameters: 'first' }
|
|
}
|
|
],
|
|
'max-len': [
|
|
'error',
|
|
{
|
|
code: 120,
|
|
ignoreComments: true,
|
|
ignorePattern: '^\\s*x?it\\s*\\(', // Ignore long test names (e.q: `it("something long")`).
|
|
}
|
|
],
|
|
'newline-per-chained-call': 'off',
|
|
'no-constant-condition': [
|
|
'error',
|
|
{ checkLoops: false }
|
|
],
|
|
'no-eq-null': 'error',
|
|
'no-mixed-operators': [
|
|
'error',
|
|
{ groups: [['+', '-', '*', '/', '%', '**']] }
|
|
],
|
|
'no-multiple-empty-lines': [
|
|
'error',
|
|
{ max: 1 }
|
|
],
|
|
'no-param-reassign': 'off',
|
|
'no-plusplus': [
|
|
'error',
|
|
{ allowForLoopAfterthoughts: true }
|
|
],
|
|
'no-restricted-globals': [
|
|
'error',
|
|
'Handsontable',
|
|
'window',
|
|
'document',
|
|
{
|
|
name: 'console',
|
|
message: [
|
|
'Using the `console` object is not allowed within Handsontable.',
|
|
'Please use one of the helpers from the `src/helpers/console.js` file instead.'
|
|
].join(''),
|
|
},
|
|
],
|
|
'no-underscore-dangle': 'off',
|
|
'no-use-before-define': [
|
|
'error',
|
|
{
|
|
functions: false,
|
|
classes: false
|
|
}
|
|
],
|
|
'no-void': 'off',
|
|
'padded-blocks': 'off',
|
|
quotes: ['error', 'single'],
|
|
'space-before-function-paren': ['error', 'never'],
|
|
'padding-line-between-statements': [
|
|
'error',
|
|
{ blankLine: 'always', prev: '*', next: 'return' },
|
|
{ blankLine: 'always', prev: '*', next: ['if', 'for', 'switch', 'while'] },
|
|
{ blankLine: 'any', prev: 'block-like', next: ['if', 'for', 'switch', 'while'] },
|
|
{ blankLine: 'always', prev: ['const', 'let', 'var'], next: '*' },
|
|
{ blankLine: 'any', prev: ['const', 'let', 'var'], next: ['const', 'let', 'var'] }
|
|
],
|
|
'jsdoc/check-access': 'error',
|
|
'jsdoc/check-alignment': 'error',
|
|
'jsdoc/check-examples': 'off',
|
|
'jsdoc/check-indentation': 'off',
|
|
'jsdoc/check-param-names': 'error',
|
|
'jsdoc/check-property-names': 'error',
|
|
'jsdoc/check-syntax': 'error',
|
|
'jsdoc/check-tag-names': [
|
|
'error',
|
|
{
|
|
definedTags: [
|
|
'plugin',
|
|
'util',
|
|
'experimental',
|
|
'deprecated',
|
|
'preserve',
|
|
'core',
|
|
'TODO',
|
|
'category',
|
|
'package',
|
|
'template',
|
|
]
|
|
}
|
|
],
|
|
'jsdoc/check-types': 'error',
|
|
'jsdoc/check-values': 'error',
|
|
'jsdoc/empty-tags': 'error',
|
|
'jsdoc/implements-on-classes': 'error',
|
|
'jsdoc/match-description': 'off',
|
|
'jsdoc/newline-after-description': 'error',
|
|
'jsdoc/no-bad-blocks': 'off',
|
|
'jsdoc/no-defaults': 'off',
|
|
'jsdoc/no-types': 'off',
|
|
'jsdoc/no-undefined-types': 'off',
|
|
'jsdoc/require-description-complete-sentence': 'error',
|
|
'jsdoc/require-description': 'off',
|
|
'jsdoc/require-example': 'off',
|
|
'jsdoc/require-file-overview': 'off',
|
|
'jsdoc/require-hyphen-before-param-description': 'off',
|
|
'jsdoc/require-jsdoc': 'error',
|
|
'jsdoc/require-param-description': 'error',
|
|
'jsdoc/require-param-name': 'error',
|
|
'jsdoc/require-param-type': 'error',
|
|
'jsdoc/require-param': 'error',
|
|
'jsdoc/require-property-description': 'error',
|
|
'jsdoc/require-property-name': 'error',
|
|
'jsdoc/require-property-type': 'error',
|
|
'jsdoc/require-property': 'error',
|
|
'jsdoc/require-returns-check': 'error',
|
|
'jsdoc/require-returns-description': 'off',
|
|
'jsdoc/require-returns-type': 'error',
|
|
'jsdoc/require-returns': 'error',
|
|
'jsdoc/valid-types': 'error',
|
|
// TODO: To be reviewed:
|
|
'operator-linebreak': 'off',
|
|
'object-curly-newline': 'off',
|
|
'prefer-destructuring': 'off',
|
|
'implicit-arrow-linebreak': 'off',
|
|
'function-paren-newline': 'off',
|
|
'max-classes-per-file': 'off',
|
|
'import/no-useless-path-segments': 'off',
|
|
'lines-between-class-members': 'off',
|
|
'semi-style': 'off',
|
|
'no-else-return': 'off',
|
|
'import/no-cycle': 'off',
|
|
'no-lone-blocks': 'off',
|
|
'getter-return': 'off',
|
|
'switch-colon-spacing': 'off',
|
|
'operator-assignment': 'off',
|
|
},
|
|
overrides: [
|
|
{
|
|
files: [
|
|
'scripts/**/*.mjs',
|
|
'scripts/**/*.js',
|
|
],
|
|
rules: {
|
|
'import/extensions': [
|
|
'error',
|
|
'never',
|
|
{
|
|
js: ['error', 'always'],
|
|
mjs: ['error', 'always'],
|
|
json: ['error', 'always'],
|
|
}
|
|
],
|
|
'no-restricted-globals': 'off',
|
|
'no-console': 'off',
|
|
'no-await-in-loop': 'off',
|
|
'no-restricted-syntax': [
|
|
'error',
|
|
'ForInStatement',
|
|
'LabeledStatement',
|
|
'WithStatement',
|
|
]
|
|
}
|
|
},
|
|
],
|
|
};
|