blob: 34605df324ef89fcc74844201702faae2c36d9a2 [file] [log] [blame]
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}],
// Don't allow new introduction of any it is most always a mistake.
'@typescript-eslint/no-explicit-any': 'error',
},
};