72 lines
2.3 KiB
JavaScript
72 lines
2.3 KiB
JavaScript
module.exports = {
|
|
'env': {
|
|
'browser': true,
|
|
'es2021': true,
|
|
'node': true,
|
|
},
|
|
'extends': [
|
|
'google',
|
|
],
|
|
'parser': '@typescript-eslint/parser',
|
|
'parserOptions': {
|
|
'ecmaVersion': 'latest',
|
|
'sourceType': 'module',
|
|
},
|
|
'plugins': [
|
|
'@typescript-eslint',
|
|
],
|
|
'rules': {
|
|
// We don't want to enforce jsdoc everywhere:
|
|
'require-jsdoc': 'off',
|
|
|
|
// Max line length is 80 with 2 space tabs. This must match the
|
|
// ui/.clang-format definition:
|
|
'max-len': [
|
|
'error',
|
|
{
|
|
'code': 80,
|
|
'tabWidth': 2,
|
|
'ignoreUrls': true,
|
|
'ignoreTemplateLiterals': true,
|
|
'ignoreStrings': true,
|
|
},
|
|
],
|
|
|
|
// Indentation handled by clang-format --js:
|
|
'indent': 'off',
|
|
|
|
// clang-format --js formats EOL comments after (e.g.) an if like:
|
|
// if (foo) { // insightful comment
|
|
// with two spaces between the slash and the brace. Turn
|
|
// ignoreEOLComments on to allow that. We still want
|
|
// no-multi-spaces turned on in general as it fixes issues like:
|
|
// if (a === b)
|
|
'no-multi-spaces': ['error', {ignoreEOLComments: true}],
|
|
|
|
// Default no-unused-vars doesn't understand TypeScript enums. See:
|
|
// https://github.com/typescript-eslint/typescript-eslint/issues/2621
|
|
'no-unused-vars': 'off',
|
|
'@typescript-eslint/no-unused-vars':
|
|
['error', {'argsIgnorePattern': '^_.*', 'varsIgnorePattern': '^_.*'}],
|
|
|
|
// new Array() is banned (use [] instead) but new Array<Foo>() is
|
|
// allowed since it can be clearer to put the type by the
|
|
// construtor.
|
|
'no-array-constructor': 'off',
|
|
'@typescript-eslint/no-array-constructor': ['error'],
|
|
|
|
// Rest parameters are not equivalent to 'arguments'.
|
|
// Rest parameters are arrays: https://developer.mozilla.org/en-US/docs/Web/
|
|
// JavaScript/Reference/Functions/rest_parameters
|
|
// 'arguments' are objects: https://developer.mozilla.org/en-US/docs/Web/
|
|
// JavaScript/Reference/Functions/arguments
|
|
'prefer-rest-params': 'off',
|
|
|
|
// We have a lot normal functions which are capitalised.
|
|
// TODO(hjd): Switch these to be lowercase and remove capIsNew.
|
|
// There are also some properties like: foo.factory these should
|
|
// stay.
|
|
'new-cap': ['error', {'capIsNew': false, 'properties': false}],
|
|
},
|
|
};
|