xref: /aosp_15_r20/external/perfetto/ui/.eslintrc.js (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
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