242 lines
6.1 KiB
JavaScript
242 lines
6.1 KiB
JavaScript
|
var OFF = 0,
|
||
|
WARN = 1,
|
||
|
ERROR = 2;
|
||
|
|
||
|
module.exports = {
|
||
|
env: {
|
||
|
browser: true,
|
||
|
es2021: true,
|
||
|
},
|
||
|
extends: ['eslint:recommended'],
|
||
|
parser: '@typescript-eslint/parser',
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 'latest',
|
||
|
sourceType: 'module',
|
||
|
},
|
||
|
plugins: ['@typescript-eslint'],
|
||
|
rules: {
|
||
|
// Possible Errors (overrides from recommended set)
|
||
|
'no-extra-parens': ERROR,
|
||
|
'no-unexpected-multiline': ERROR,
|
||
|
// All JSDoc comments must be valid
|
||
|
'valid-jsdoc': [
|
||
|
OFF,
|
||
|
{
|
||
|
requireReturn: false,
|
||
|
requireReturnDescription: false,
|
||
|
requireParamDescription: true,
|
||
|
prefer: {
|
||
|
return: 'returns',
|
||
|
},
|
||
|
},
|
||
|
],
|
||
|
|
||
|
// Best Practices
|
||
|
|
||
|
// Allowed a getter without setter, but all setters require getters
|
||
|
'accessor-pairs': [
|
||
|
OFF,
|
||
|
{
|
||
|
getWithoutSet: false,
|
||
|
setWithoutGet: true,
|
||
|
},
|
||
|
],
|
||
|
'block-scoped-var': WARN,
|
||
|
'consistent-return': OFF,
|
||
|
curly: ERROR,
|
||
|
'default-case': WARN,
|
||
|
// the dot goes with the property when doing multiline
|
||
|
'dot-location': [WARN, 'property'],
|
||
|
'dot-notation': WARN,
|
||
|
eqeqeq: [ERROR, 'smart'],
|
||
|
'guard-for-in': WARN,
|
||
|
'no-alert': ERROR,
|
||
|
'no-caller': ERROR,
|
||
|
'no-case-declarations': WARN,
|
||
|
'no-div-regex': WARN,
|
||
|
'no-else-return': WARN,
|
||
|
'no-empty-pattern': WARN,
|
||
|
'no-eq-null': ERROR,
|
||
|
'no-eval': ERROR,
|
||
|
'no-extend-native': ERROR,
|
||
|
'no-extra-bind': WARN,
|
||
|
'no-floating-decimal': WARN,
|
||
|
'no-implicit-coercion': [
|
||
|
WARN,
|
||
|
{
|
||
|
boolean: true,
|
||
|
number: true,
|
||
|
string: true,
|
||
|
},
|
||
|
],
|
||
|
'no-implied-eval': ERROR,
|
||
|
'no-invalid-this': ERROR,
|
||
|
'no-iterator': ERROR,
|
||
|
'no-labels': WARN,
|
||
|
'no-lone-blocks': WARN,
|
||
|
'no-loop-func': ERROR,
|
||
|
'no-magic-numbers': OFF,
|
||
|
'no-multi-spaces': ERROR,
|
||
|
'no-multi-str': WARN,
|
||
|
'no-native-reassign': ERROR,
|
||
|
'no-new-func': ERROR,
|
||
|
'no-new-wrappers': ERROR,
|
||
|
'no-new': ERROR,
|
||
|
'no-octal-escape': ERROR,
|
||
|
'no-param-reassign': ERROR,
|
||
|
'no-process-env': WARN,
|
||
|
'no-proto': ERROR,
|
||
|
'no-redeclare': ERROR,
|
||
|
'no-return-assign': ERROR,
|
||
|
'no-script-url': ERROR,
|
||
|
'no-self-compare': ERROR,
|
||
|
'no-throw-literal': ERROR,
|
||
|
'no-unused-expressions': ERROR,
|
||
|
'no-useless-call': ERROR,
|
||
|
'no-useless-concat': ERROR,
|
||
|
'no-void': WARN,
|
||
|
// Produce warnings when something is commented as TODO or FIXME
|
||
|
'no-warning-comments': [
|
||
|
WARN,
|
||
|
{
|
||
|
terms: ['TODO', 'FIXME'],
|
||
|
location: 'start',
|
||
|
},
|
||
|
],
|
||
|
'no-with': WARN,
|
||
|
radix: WARN,
|
||
|
'vars-on-top': ERROR,
|
||
|
// Enforces the style of wrapped functions
|
||
|
'wrap-iife': [ERROR, 'outside'],
|
||
|
yoda: ERROR,
|
||
|
|
||
|
// Strict Mode - for ES6, never use strict.
|
||
|
strict: [ERROR, 'never'],
|
||
|
|
||
|
// Variables
|
||
|
'init-declarations': [OFF, 'always'],
|
||
|
'no-catch-shadow': WARN,
|
||
|
'no-delete-var': ERROR,
|
||
|
'no-label-var': ERROR,
|
||
|
'no-shadow-restricted-names': ERROR,
|
||
|
'no-shadow': WARN,
|
||
|
// We require all vars to be initialized (see init-declarations)
|
||
|
// If we NEED a var to be initialized to undefined, it needs to be explicit
|
||
|
'no-undef-init': OFF,
|
||
|
'no-undef': ERROR,
|
||
|
'no-undefined': OFF,
|
||
|
'no-unused-vars': OFF,
|
||
|
// Disallow hoisting - let & const don't allow hoisting anyhow
|
||
|
'no-use-before-define': ERROR,
|
||
|
|
||
|
// Node.js and CommonJS
|
||
|
'callback-return': [WARN, ['callback', 'next']],
|
||
|
'global-require': ERROR,
|
||
|
'handle-callback-err': WARN,
|
||
|
'no-mixed-requires': WARN,
|
||
|
'no-new-require': ERROR,
|
||
|
// Use path.concat instead
|
||
|
'no-path-concat': ERROR,
|
||
|
'no-process-exit': ERROR,
|
||
|
'no-restricted-modules': OFF,
|
||
|
'no-sync': WARN,
|
||
|
|
||
|
// ECMAScript 6 support
|
||
|
'arrow-body-style': [ERROR, 'always'],
|
||
|
'arrow-parens': [ERROR, 'always'],
|
||
|
'arrow-spacing': [ERROR, { before: true, after: true }],
|
||
|
'constructor-super': ERROR,
|
||
|
'generator-star-spacing': [ERROR, 'before'],
|
||
|
'no-confusing-arrow': ERROR,
|
||
|
'no-class-assign': ERROR,
|
||
|
'no-const-assign': ERROR,
|
||
|
'no-dupe-class-members': ERROR,
|
||
|
'no-this-before-super': ERROR,
|
||
|
'no-var': WARN,
|
||
|
'object-shorthand': [WARN, 'never'],
|
||
|
'prefer-arrow-callback': WARN,
|
||
|
'prefer-spread': WARN,
|
||
|
'prefer-template': WARN,
|
||
|
'require-yield': ERROR,
|
||
|
|
||
|
// Stylistic - everything here is a warning because of style.
|
||
|
'array-bracket-spacing': [WARN, 'always'],
|
||
|
'block-spacing': [WARN, 'always'],
|
||
|
'brace-style': [WARN, '1tbs', { allowSingleLine: false }],
|
||
|
camelcase: WARN,
|
||
|
'comma-spacing': [WARN, { before: false, after: true }],
|
||
|
'comma-style': [WARN, 'last'],
|
||
|
'computed-property-spacing': [WARN, 'never'],
|
||
|
'consistent-this': [WARN, 'self'],
|
||
|
'eol-last': WARN,
|
||
|
'func-names': WARN,
|
||
|
'func-style': [WARN, 'declaration'],
|
||
|
'id-length': [WARN, { min: 2, max: 32 }],
|
||
|
indent: [WARN, 'spaces'],
|
||
|
'jsx-quotes': [WARN, 'prefer-double'],
|
||
|
'linebreak-style': [WARN, 'unix'],
|
||
|
'lines-around-comment': [OFF, { beforeBlockComment: true }],
|
||
|
'max-depth': [WARN, 8],
|
||
|
'max-len': [WARN, 182],
|
||
|
'max-nested-callbacks': [WARN, 8],
|
||
|
'max-params': [WARN, 10],
|
||
|
'new-cap': OFF,
|
||
|
'new-parens': WARN,
|
||
|
'no-array-constructor': WARN,
|
||
|
'no-bitwise': OFF,
|
||
|
'no-continue': OFF,
|
||
|
'no-inline-comments': OFF,
|
||
|
'no-lonely-if': OFF,
|
||
|
'no-mixed-spaces-and-tabs': OFF,
|
||
|
'no-multiple-empty-lines': WARN,
|
||
|
'no-negated-condition': OFF,
|
||
|
'no-nested-ternary': WARN,
|
||
|
'no-new-object': WARN,
|
||
|
'no-plusplus': OFF,
|
||
|
'no-spaced-func': WARN,
|
||
|
'no-ternary': OFF,
|
||
|
'no-trailing-spaces': WARN,
|
||
|
'no-underscore-dangle': WARN,
|
||
|
'no-unneeded-ternary': WARN,
|
||
|
'object-curly-spacing': [WARN, 'always'],
|
||
|
'one-var': OFF,
|
||
|
'operator-assignment': [WARN, 'never'],
|
||
|
'operator-linebreak': [WARN, 'after'],
|
||
|
'padded-blocks': [WARN, 'never'],
|
||
|
'quote-props': [WARN, 'consistent-as-needed'],
|
||
|
quotes: [WARN, 'single'],
|
||
|
'require-jsdoc': [
|
||
|
OFF,
|
||
|
{
|
||
|
require: {
|
||
|
FunctionDeclaration: true,
|
||
|
MethodDefinition: true,
|
||
|
ClassDeclaration: false,
|
||
|
},
|
||
|
},
|
||
|
],
|
||
|
'semi-spacing': [WARN, { before: false, after: true }],
|
||
|
semi: [ERROR, 'always'],
|
||
|
'sort-vars': OFF,
|
||
|
'keyword-spacing': [
|
||
|
WARN,
|
||
|
{
|
||
|
overrides: {
|
||
|
if: { after: false },
|
||
|
for: { after: false },
|
||
|
while: { after: false },
|
||
|
static: { after: false },
|
||
|
as: { after: false },
|
||
|
},
|
||
|
},
|
||
|
],
|
||
|
'space-before-blocks': [WARN, 'always'],
|
||
|
'space-before-function-paren': [WARN, 'never'],
|
||
|
'space-in-parens': [WARN, 'never'],
|
||
|
'space-infix-ops': [WARN, { int32Hint: true }],
|
||
|
'space-unary-ops': ERROR,
|
||
|
'spaced-comment': [WARN, 'always'],
|
||
|
'wrap-regex': WARN,
|
||
|
},
|
||
|
};
|