You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

224 lines
6.5 KiB

const eslintConfig =
{
env :
{
es6 : true,
node : true
},
plugins : [],
settings : {},
parserOptions :
{
ecmaVersion : 2018,
sourceType : 'module',
ecmaFeatures :
{
impliedStrict : true
}
},
rules :
{
'array-bracket-spacing' : [ 2, 'always',
{
objectsInArrays : true,
arraysInArrays : true
}
],
'arrow-parens' : [ 2, 'always' ],
'arrow-spacing' : 2,
'block-spacing' : [ 2, 'always' ],
'brace-style' : [ 2, 'allman', { allowSingleLine: true } ],
'camelcase' : 2,
'comma-dangle' : 2,
'comma-spacing' : [ 2, { before: false, after: true } ],
'comma-style' : 2,
'computed-property-spacing' : 2,
'constructor-super' : 2,
'func-call-spacing' : 2,
'generator-star-spacing' : 2,
'guard-for-in' : 2,
'indent' : [ 2, 'tab', { 'SwitchCase': 1 } ],
'key-spacing' : [ 2,
{
singleLine :
{
beforeColon : false,
afterColon : true
},
multiLine :
{
beforeColon : true,
afterColon : true,
align : 'colon'
}
}
],
'keyword-spacing' : 2,
'linebreak-style' : [ 2, 'unix' ],
'lines-around-comment' : [ 2,
{
allowBlockStart : true,
allowObjectStart : true,
beforeBlockComment : false,
beforeLineComment : false
}
],
'max-len' : [ 2, 90,
{
tabWidth : 2,
comments : 90,
ignoreUrls : true,
ignoreStrings : true,
ignoreTemplateLiterals : true,
ignoreRegExpLiterals : true
}
],
'newline-after-var' : 2,
'newline-before-return' : 2,
'newline-per-chained-call' : 2,
'no-alert' : 2,
'no-caller' : 2,
'no-case-declarations' : 2,
'no-catch-shadow' : 2,
'no-class-assign' : 2,
'no-confusing-arrow' : 2,
'no-console' : 2,
'no-const-assign' : 2,
'no-debugger' : 2,
'no-dupe-args' : 2,
'no-dupe-keys' : 2,
'no-duplicate-case' : 2,
'no-div-regex' : 2,
'no-empty' : [ 2, { allowEmptyCatch: true } ],
'no-empty-pattern' : 2,
'no-else-return' : 0,
'no-eval' : 2,
'no-extend-native' : 2,
'no-ex-assign' : 2,
'no-extra-bind' : 2,
'no-extra-boolean-cast' : 2,
'no-extra-label' : 2,
'no-extra-semi' : 2,
'no-fallthrough' : 2,
'no-func-assign' : 2,
'no-global-assign' : 2,
'no-implicit-coercion' : 2,
'no-implicit-globals' : 2,
'no-inner-declarations' : 2,
'no-invalid-regexp' : 2,
'no-invalid-this' : 2,
'no-irregular-whitespace' : 2,
'no-lonely-if' : 2,
'no-mixed-operators' : 2,
'no-mixed-spaces-and-tabs' : 2,
'no-multi-spaces' : 2,
'no-multi-str' : 2,
'no-multiple-empty-lines' : [ 1, { max: 1, maxEOF: 0, maxBOF: 0 } ],
'no-native-reassign' : 2,
'no-negated-in-lhs' : 2,
'no-new' : 2,
'no-new-func' : 2,
'no-new-wrappers' : 2,
'no-obj-calls' : 2,
'no-proto' : 2,
'no-prototype-builtins' : 0,
'no-redeclare' : 2,
'no-regex-spaces' : 2,
'no-restricted-imports' : 2,
'no-return-assign' : 2,
'no-self-assign' : 2,
'no-self-compare' : 2,
'no-sequences' : 2,
'no-shadow' : 2,
'no-shadow-restricted-names' : 2,
'no-spaced-func' : 2,
'no-sparse-arrays' : 2,
'no-this-before-super' : 2,
'no-throw-literal' : 2,
'no-undef' : 2,
'no-unexpected-multiline' : 2,
'no-unmodified-loop-condition' : 2,
'no-unreachable' : 2,
'no-unused-vars' : [ 1, { vars: 'all', args: 'after-used' } ],
'no-use-before-define' : [ 2, { functions: false } ],
'no-useless-call' : 2,
'no-useless-computed-key' : 2,
'no-useless-concat' : 2,
'no-useless-rename' : 2,
'no-var' : 2,
'no-whitespace-before-property' : 2,
'object-curly-newline' : 0,
'object-curly-spacing' : [ 2, 'always' ],
'object-property-newline' : [ 2, { allowMultiplePropertiesPerLine: true } ],
'prefer-const' : 2,
'prefer-rest-params' : 2,
'prefer-spread' : 2,
'prefer-template' : 2,
'quotes' : [ 2, 'single', { avoidEscape: true } ],
'semi' : [ 2, 'always' ],
'semi-spacing' : 2,
'space-before-blocks' : 2,
'space-before-function-paren' : [ 2,
{
anonymous : 'never',
named : 'never',
asyncArrow : 'always'
}
],
'space-in-parens' : [ 2, 'never' ],
'spaced-comment' : [ 2, 'always' ],
'strict' : 2,
'valid-typeof' : 2,
'yoda' : 2
}
};
switch (process.env.MEDIASOUP_NODE_LANGUAGE)
{
case 'typescript':
{
eslintConfig.parser = '@typescript-eslint/parser';
eslintConfig.plugins =
[
...eslintConfig.plugins,
'@typescript-eslint'
];
eslintConfig.extends =
[
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended'
];
eslintConfig.rules =
{
...eslintConfig.rules,
'no-unused-vars' : 0,
'@typescript-eslint/ban-ts-ignore' : 0,
'@typescript-eslint/member-delimiter-style' : [ 2,
{
multiline : { delimiter: 'semi', requireLast: true },
singleline : { delimiter: 'semi', requireLast: false }
}
],
'@typescript-eslint/no-explicit-any' : 0,
'@typescript-eslint/no-unused-vars' : [ 2,
{
vars : 'all',
args : 'after-used',
ignoreRestSiblings : false
}
],
'@typescript-eslint/no-use-before-define' : 0
};
break;
}
default:
{
throw new TypeError('wrong/missing MEDIASOUP_NODE_LANGUAGE env');
}
}
module.exports = eslintConfig;