1*6dbdd20aSAndroid Build Coastguard Workermodule.exports = { 2*6dbdd20aSAndroid Build Coastguard Worker 'env': { 3*6dbdd20aSAndroid Build Coastguard Worker 'browser': true, 4*6dbdd20aSAndroid Build Coastguard Worker 'es2021': true, 5*6dbdd20aSAndroid Build Coastguard Worker 'node': true, 6*6dbdd20aSAndroid Build Coastguard Worker }, 7*6dbdd20aSAndroid Build Coastguard Worker 'extends': [ 8*6dbdd20aSAndroid Build Coastguard Worker 'google', 9*6dbdd20aSAndroid Build Coastguard Worker ], 10*6dbdd20aSAndroid Build Coastguard Worker 'parser': '@typescript-eslint/parser', 11*6dbdd20aSAndroid Build Coastguard Worker 'parserOptions': { 12*6dbdd20aSAndroid Build Coastguard Worker 'ecmaVersion': 'latest', 13*6dbdd20aSAndroid Build Coastguard Worker 'sourceType': 'module', 14*6dbdd20aSAndroid Build Coastguard Worker 'project': './tsconfig.json', 15*6dbdd20aSAndroid Build Coastguard Worker }, 16*6dbdd20aSAndroid Build Coastguard Worker 'plugins': [ 17*6dbdd20aSAndroid Build Coastguard Worker '@typescript-eslint', 18*6dbdd20aSAndroid Build Coastguard Worker ], 19*6dbdd20aSAndroid Build Coastguard Worker 'rules': { 20*6dbdd20aSAndroid Build Coastguard Worker // We don't want to enforce jsdoc everywhere: 21*6dbdd20aSAndroid Build Coastguard Worker 'require-jsdoc': 'off', 22*6dbdd20aSAndroid Build Coastguard Worker 23*6dbdd20aSAndroid Build Coastguard Worker // Relax jsdoc requirements 24*6dbdd20aSAndroid Build Coastguard Worker 'valid-jsdoc': ['error', { 25*6dbdd20aSAndroid Build Coastguard Worker 'requireParamType': false, 26*6dbdd20aSAndroid Build Coastguard Worker 'requireReturnType': false, 27*6dbdd20aSAndroid Build Coastguard Worker 'requireReturn': false, 28*6dbdd20aSAndroid Build Coastguard Worker }], 29*6dbdd20aSAndroid Build Coastguard Worker 30*6dbdd20aSAndroid Build Coastguard Worker // Formatting handled by prettier 31*6dbdd20aSAndroid Build Coastguard Worker 'indent': 'off', 32*6dbdd20aSAndroid Build Coastguard Worker 'max-len': 'off', 33*6dbdd20aSAndroid Build Coastguard Worker 'operator-linebreak': 'off', 34*6dbdd20aSAndroid Build Coastguard Worker 'quotes': 'off', 35*6dbdd20aSAndroid Build Coastguard Worker 'brace-style': 'off', 36*6dbdd20aSAndroid Build Coastguard Worker 'space-before-function-paren': 'off', 37*6dbdd20aSAndroid Build Coastguard Worker 'generator-star-spacing': 'off', 38*6dbdd20aSAndroid Build Coastguard Worker 'semi-spacing': 'off', 39*6dbdd20aSAndroid Build Coastguard Worker 40*6dbdd20aSAndroid Build Coastguard Worker // clang-format --js used to format EOL comments after (e.g.) an if like: 41*6dbdd20aSAndroid Build Coastguard Worker // if (foo) { // insightful comment 42*6dbdd20aSAndroid Build Coastguard Worker // with two spaces between the slash and the brace. Turn 43*6dbdd20aSAndroid Build Coastguard Worker // ignoreEOLComments on to allow that. We still want 44*6dbdd20aSAndroid Build Coastguard Worker // no-multi-spaces turned on in general as it fixes issues like: 45*6dbdd20aSAndroid Build Coastguard Worker // if (a === b) 46*6dbdd20aSAndroid Build Coastguard Worker 'no-multi-spaces': ['error', {ignoreEOLComments: true}], 47*6dbdd20aSAndroid Build Coastguard Worker 48*6dbdd20aSAndroid Build Coastguard Worker // Default no-unused-vars doesn't understand TypeScript enums. See: 49*6dbdd20aSAndroid Build Coastguard Worker // https://github.com/typescript-eslint/typescript-eslint/issues/2621 50*6dbdd20aSAndroid Build Coastguard Worker 'no-unused-vars': 'off', 51*6dbdd20aSAndroid Build Coastguard Worker '@typescript-eslint/no-unused-vars': 52*6dbdd20aSAndroid Build Coastguard Worker ['error', {'argsIgnorePattern': '^_.*', 'varsIgnorePattern': '^_.*'}], 53*6dbdd20aSAndroid Build Coastguard Worker 54*6dbdd20aSAndroid Build Coastguard Worker // new Array() is banned (use [] instead) but new Array<Foo>() is 55*6dbdd20aSAndroid Build Coastguard Worker // allowed since it can be clearer to put the type by the 56*6dbdd20aSAndroid Build Coastguard Worker // construtor. 57*6dbdd20aSAndroid Build Coastguard Worker 'no-array-constructor': 'off', 58*6dbdd20aSAndroid Build Coastguard Worker '@typescript-eslint/no-array-constructor': ['error'], 59*6dbdd20aSAndroid Build Coastguard Worker 60*6dbdd20aSAndroid Build Coastguard Worker // Rest parameters are not equivalent to 'arguments'. 61*6dbdd20aSAndroid Build Coastguard Worker // Rest parameters are arrays: https://developer.mozilla.org/en-US/docs/Web/ 62*6dbdd20aSAndroid Build Coastguard Worker // JavaScript/Reference/Functions/rest_parameters 63*6dbdd20aSAndroid Build Coastguard Worker // 'arguments' are objects: https://developer.mozilla.org/en-US/docs/Web/ 64*6dbdd20aSAndroid Build Coastguard Worker // JavaScript/Reference/Functions/arguments 65*6dbdd20aSAndroid Build Coastguard Worker 'prefer-rest-params': 'off', 66*6dbdd20aSAndroid Build Coastguard Worker 67*6dbdd20aSAndroid Build Coastguard Worker // We have a lot normal functions which are capitalised. 68*6dbdd20aSAndroid Build Coastguard Worker // TODO(hjd): Switch these to be lowercase and remove capIsNew. 69*6dbdd20aSAndroid Build Coastguard Worker // There are also some properties like: foo.factory these should 70*6dbdd20aSAndroid Build Coastguard Worker // stay. 71*6dbdd20aSAndroid Build Coastguard Worker 'new-cap': ['error', {'capIsNew': false, 'properties': false}], 72*6dbdd20aSAndroid Build Coastguard Worker 73*6dbdd20aSAndroid Build Coastguard Worker // Don't allow new introduction of any it is most always a mistake. 74*6dbdd20aSAndroid Build Coastguard Worker '@typescript-eslint/no-explicit-any': 'error', 75*6dbdd20aSAndroid Build Coastguard Worker 76*6dbdd20aSAndroid Build Coastguard Worker // Prohibit numbers and strings from being used in boolean expressions. 77*6dbdd20aSAndroid Build Coastguard Worker '@typescript-eslint/strict-boolean-expressions': [ 78*6dbdd20aSAndroid Build Coastguard Worker 'error', 79*6dbdd20aSAndroid Build Coastguard Worker { 80*6dbdd20aSAndroid Build Coastguard Worker // Eventually we probably want to enable all of these, for now this 81*6dbdd20aSAndroid Build Coastguard Worker // tackles numbers and keeps the error count manageable. 82*6dbdd20aSAndroid Build Coastguard Worker allowAny: true, 83*6dbdd20aSAndroid Build Coastguard Worker allowNullableBoolean: true, 84*6dbdd20aSAndroid Build Coastguard Worker allowNullableString: true, 85*6dbdd20aSAndroid Build Coastguard Worker allowNumber: true, 86*6dbdd20aSAndroid Build Coastguard Worker allowString: true, 87*6dbdd20aSAndroid Build Coastguard Worker }, 88*6dbdd20aSAndroid Build Coastguard Worker ], 89*6dbdd20aSAndroid Build Coastguard Worker }, 90*6dbdd20aSAndroid Build Coastguard Worker}; 91