blob: d5300792c2ba4db8ca17245195efbf736dae526a [file] [log] [blame]
Tim van der Lippe33543ac2020-12-14 14:37:451// Copyright 2020 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Ergün Erdoğmuş5f638ba2022-05-05 09:30:215// clang-format off
Tim van der Lippe406249f2020-12-14 14:59:106const path = require('path');
7const rulesDirPlugin = require('eslint-plugin-rulesdir');
8rulesDirPlugin.RULES_DIR = path.join(__dirname, '..', 'scripts', 'eslint_rules', 'lib');
9
Tim van der Lippe33543ac2020-12-14 14:37:4510module.exports = {
Simon Zündf6afbca2021-03-02 06:11:1411 'rules': {
12 // L10n rules are only relevant in 'front_end'.
Jack Franklin18c71912021-12-01 14:58:0013 'rulesdir/l10n_filename_matches': [
14 2, {
15 rootFrontendDirectory: __dirname,
16 }
17 ],
Simon Zünd8c172ce2021-07-20 16:56:3818 'rulesdir/l10n_i18nString_call_only_with_uistrings': 2,
Simon Zündfb3246d2021-03-03 07:59:0519 'rulesdir/l10n_no_i18nString_calls_module_instantiation': 2,
Simon Zünd333a8a02021-03-04 09:50:5320 'rulesdir/l10n_no_locked_or_placeholder_only_phrase': 2,
Simon Zündf6afbca2021-03-02 06:11:1421 'rulesdir/l10n_no_uistrings_export': 2,
Simon Zünd9c1be4e2021-03-05 08:21:0022 'rulesdir/l10n_no_unused_message': 2,
Jack Franklincc2dbce2022-07-07 14:12:2823 'rulesdir/custom_element_definitions_location': [2, {
24 rootFrontendDirectory: __dirname,
25 }],
Kriti Sapra2597b412021-05-07 10:11:1026 'rulesdir/custom_element_component_definition': 2,
Simon Zündf6afbca2021-03-02 06:11:1427 },
Sigurd Schneiderc8702c92021-02-12 10:10:0528 'overrides': [
29 {
30 'files': ['*.ts'],
31 'rules': {
32 '@typescript-eslint/explicit-function-return-type': 2,
Jack Franklin3ea21da2022-03-08 14:44:0633 'rulesdir/no_importing_images_from_src': 2,
Ergün Erdoğmuş5f638ba2022-05-05 09:30:2134 'rulesdir/enforce_bound_render_for_schedule_render': 2,
Jack Franklinb620bb42021-05-13 14:29:2435 'rulesdir/enforce_custom_event_names': 2,
Sigurd Schneiderc8702c92021-02-12 10:10:0536 'rulesdir/set_data_type_reference': 2,
Jack Frankline9bf00f2022-04-01 11:38:0337 'rulesdir/no_bound_component_methods': 2,
Sigurd Schneiderc8702c92021-02-12 10:10:0538 'rulesdir/lit_html_data_as_type': 2,
39 'rulesdir/lit_no_style_interpolation': 2,
Jack Franklin06ee0d92021-05-11 09:05:5440 'rulesdir/ban_literal_devtools_component_tag_names': 2,
Jan Scheffler9245dae2021-06-11 13:42:2741 'rulesdir/ban_self_closing_custom_element_tagnames': 2,
Kriti Sapra9bd71c42021-06-29 12:02:4342 'rulesdir/ban_style_tags_in_lit_html': 2,
Alex Rudenko273b9aa2021-10-29 12:38:0343 'rulesdir/ban_a_tags_in_lit_html': 2,
Jack Frankline9f62582021-05-14 10:39:3844 'rulesdir/check_component_naming': 2,
John Emau25783bc2021-11-11 21:23:5345 'rulesdir/check_css_import': 2,
Wolfgang Beyerb2da5bb2021-12-20 15:03:3046 'rulesdir/check_enumerated_histograms': 2,
Kriti Saprab2b29f22021-06-29 12:59:5647 'rulesdir/check_was_shown_methods': 2,
Jack Franklin2e09f042021-09-01 14:54:2248 'rulesdir/static_custom_event_names': 2,
Jack Franklinc144a552021-09-09 10:35:0949 'rulesdir/lit_html_host_this': 2,
Jack Franklina31102b2021-12-03 15:01:2250 'rulesdir/lit_html_no_attribute_quotes': 2,
Jack Franklind7508302022-05-09 14:22:2151 'rulesdir/lit_template_result_or_nothing': 2,
Jack Franklin1f19d522022-07-06 14:00:1852 'rulesdir/inject_checkbox_styles': 2,
Sigurd Schneiderc8702c92021-02-12 10:10:0553 '@typescript-eslint/naming-convention': [
54 'error', {
Sigurd Schneider17c74452021-02-15 12:14:1055 'selector': ['property', 'parameterProperty'],
Sigurd Schneiderc8702c92021-02-12 10:10:0556 'format': ['camelCase'],
57 },
58 {
Sigurd Schneidercb2d4562021-02-15 08:56:1859 'selector': 'property',
60 'modifiers': ['public'],
61 'format': ['camelCase'],
62 'leadingUnderscore': 'allow',
63 },
64 {
65 'selector': 'classProperty',
66 'modifiers': ['static', 'readonly'],
Jack Franklin41aa9f22021-06-30 15:40:3567 'format': ['UPPER_CASE', 'camelCase'],
Sigurd Schneidercb2d4562021-02-15 08:56:1868 },
69 {
Sigurd Schneiderc8702c92021-02-12 10:10:0570 'selector': 'method',
Sigurd Schneiderc8702c92021-02-12 10:10:0571 'format': ['camelCase'],
72 },
73 {
Sigurd Schneider91147d82021-02-15 11:00:0874 'selector': 'function',
75 'format': ['camelCase'],
76 },
77 {
Sigurd Schneider17c74452021-02-15 12:14:1078 'selector': 'variable',
79 'filter': {
80 // Ignore localization variables.
81 'regex': '^(UIStrings|str_)$',
82 'match': false
83 },
84 'format': ['camelCase'],
85 },
86 {
87 // We are using camelCase, PascalCase and UPPER_CASE for top-level constants, allow the for now.
88 'selector': 'variable',
89 'modifiers': ['const'],
90 'filter': {
91 // Ignore localization variables.
92 'regex': '^(UIStrings|str_)$',
93 'match': false
94 },
95 'format': ['camelCase', 'UPPER_CASE', 'PascalCase'],
96 },
97 {
Sigurd Schneider6c774ca2021-02-15 08:09:1498 // Public methods are currently in transition and may still have leading underscores.
99 'selector': 'method',
100 'modifiers': ['public'],
101 'format': ['camelCase'],
102 'leadingUnderscore': 'allow',
103 },
104 {
105 // Object literals may be constructed as arguments to external libraries which follow different styles.
106 'selector': ['objectLiteralMethod', 'objectLiteralProperty'],
107 'modifiers': ['public'],
108 'format': null,
109 },
110 {
Sigurd Schneiderc8702c92021-02-12 10:10:05111 'selector': 'accessor',
112 'format': ['camelCase'],
113 },
114 {
Sigurd Schneideraf302d02021-02-15 09:45:35115 'selector': 'enumMember',
116 'format': ['PascalCase', 'UPPER_CASE'],
117 },
118 {
Sigurd Schneider6c774ca2021-02-15 08:09:14119 'selector': ['typeLike'],
Sigurd Schneiderc8702c92021-02-12 10:10:05120 'format': ['PascalCase'],
121 },
122 {
123 'selector': 'parameter',
124 'format': ['camelCase'],
125 'leadingUnderscore': 'allow',
Simon Zünd7a585242022-04-19 06:17:13126 },
127 {
128 // Ignore type properties that require quotes
Ergün Erdoğmuş5f638ba2022-05-05 09:30:21129 'selector': ['typeProperty', 'enumMember'],
Simon Zünd7a585242022-04-19 06:17:13130 'format': null,
131 'modifiers': ['requiresQuotes']
Sigurd Schneiderc8702c92021-02-12 10:10:05132 }
John Emaua5c98662022-01-05 05:55:06133 ]
Sigurd Schneiderc8702c92021-02-12 10:10:05134 }
135 },
136 {
137 'files': ['*-meta.ts'],
138 'rules': {
139 '@typescript-eslint/naming-convention': [
140 'error', {
141 'selector': 'parameter',
142 'format': ['camelCase', 'PascalCase'],
143 'leadingUnderscore': 'allow',
144 }
145 ]
146 }
Tim van der Lippedb15a5f2021-12-15 14:33:27147 },
148 {
Tim van der Lippe12bcadb2021-12-16 09:57:10149 'files': ['panels/**/components/*.ts', 'ui/components/**/*.ts', 'entrypoints/**/*.ts'],
Tim van der Lippedb15a5f2021-12-15 14:33:27150 'rules': {
151 'rulesdir/use_private_class_members': 2,
152 }
Alex Rudenko128c7b32023-05-03 11:03:43153 },
154 // TODO(crbug/1402569): Remove once LitElement is fully adopted.
155 {
156 'files': ['panels/recorder/**/*.ts'],
157 'rules': {
158 'rulesdir/check_component_naming': 0,
159 'rulesdir/ban_literal_devtools_component_tag_names': 0,
160 // TODO(crbug/1402569): Reenable once https://github.com/microsoft/TypeScript/issues/48885 is closed.
161 'rulesdir/use_private_class_members': 0,
162 }
Tim van der Lippe33543ac2020-12-14 14:37:45163 }
Sigurd Schneiderc8702c92021-02-12 10:10:05164 ]
Tim van der Lippe33543ac2020-12-14 14:37:45165};
Ergün Erdoğmuş5f638ba2022-05-05 09:30:21166// clang-format on