blob: d5136d29f3c1860ad0828aa350b8a485d57e5059 [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
Tim van der Lippe406249f2020-12-14 14:59:105const path = require('path');
6const rulesDirPlugin = require('eslint-plugin-rulesdir');
7rulesDirPlugin.RULES_DIR = path.join(__dirname, '..', 'scripts', 'eslint_rules', 'lib');
8
Tim van der Lippe33543ac2020-12-14 14:37:459module.exports = {
Simon Zündf6afbca2021-03-02 06:11:1410 'rules': {
11 // L10n rules are only relevant in 'front_end'.
Jack Franklin18c71912021-12-01 14:58:0012 'rulesdir/l10n_filename_matches': [
13 2, {
14 rootFrontendDirectory: __dirname,
15 }
16 ],
Simon Zünd8c172ce2021-07-20 16:56:3817 'rulesdir/l10n_i18nString_call_only_with_uistrings': 2,
Simon Zündfb3246d2021-03-03 07:59:0518 'rulesdir/l10n_no_i18nString_calls_module_instantiation': 2,
Simon Zünd333a8a02021-03-04 09:50:5319 'rulesdir/l10n_no_locked_or_placeholder_only_phrase': 2,
Simon Zündf6afbca2021-03-02 06:11:1420 'rulesdir/l10n_no_uistrings_export': 2,
Simon Zünd9c1be4e2021-03-05 08:21:0021 'rulesdir/l10n_no_unused_message': 2,
Tim van der Lippe194c45f2021-05-06 12:03:4322 'rulesdir/custom_element_definitions_location': 2,
Kriti Sapra2597b412021-05-07 10:11:1023 'rulesdir/custom_element_component_definition': 2,
Simon Zündf6afbca2021-03-02 06:11:1424 },
Sigurd Schneiderc8702c92021-02-12 10:10:0525 'overrides': [
26 {
27 'files': ['*.ts'],
28 'rules': {
29 '@typescript-eslint/explicit-function-return-type': 2,
Jack Franklin3ea21da2022-03-08 14:44:0630 'rulesdir/no_importing_images_from_src': 2,
Jack Franklinb620bb42021-05-13 14:29:2431 'rulesdir/enforce_custom_event_names': 2,
Sigurd Schneiderc8702c92021-02-12 10:10:0532 'rulesdir/set_data_type_reference': 2,
Jack Frankline9bf00f2022-04-01 11:38:0333 'rulesdir/no_bound_component_methods': 2,
Sigurd Schneiderc8702c92021-02-12 10:10:0534 'rulesdir/lit_html_data_as_type': 2,
35 'rulesdir/lit_no_style_interpolation': 2,
Jack Franklin06ee0d92021-05-11 09:05:5436 'rulesdir/ban_literal_devtools_component_tag_names': 2,
Jan Scheffler9245dae2021-06-11 13:42:2737 'rulesdir/ban_self_closing_custom_element_tagnames': 2,
Kriti Sapra9bd71c42021-06-29 12:02:4338 'rulesdir/ban_style_tags_in_lit_html': 2,
Alex Rudenko273b9aa2021-10-29 12:38:0339 'rulesdir/ban_a_tags_in_lit_html': 2,
Jack Frankline9f62582021-05-14 10:39:3840 'rulesdir/check_component_naming': 2,
John Emau25783bc2021-11-11 21:23:5341 'rulesdir/check_css_import': 2,
Wolfgang Beyerb2da5bb2021-12-20 15:03:3042 'rulesdir/check_enumerated_histograms': 2,
Kriti Saprab2b29f22021-06-29 12:59:5643 'rulesdir/check_was_shown_methods': 2,
Jack Franklin2e09f042021-09-01 14:54:2244 'rulesdir/static_custom_event_names': 2,
Jack Franklinc144a552021-09-09 10:35:0945 'rulesdir/lit_html_host_this': 2,
Jack Franklina31102b2021-12-03 15:01:2246 'rulesdir/lit_html_no_attribute_quotes': 2,
Sigurd Schneiderc8702c92021-02-12 10:10:0547 '@typescript-eslint/naming-convention': [
48 'error', {
Sigurd Schneider17c74452021-02-15 12:14:1049 'selector': ['property', 'parameterProperty'],
Sigurd Schneiderc8702c92021-02-12 10:10:0550 'format': ['camelCase'],
51 },
52 {
Sigurd Schneidercb2d4562021-02-15 08:56:1853 'selector': 'property',
54 'modifiers': ['public'],
55 'format': ['camelCase'],
56 'leadingUnderscore': 'allow',
57 },
58 {
59 'selector': 'classProperty',
60 'modifiers': ['static', 'readonly'],
Jack Franklin41aa9f22021-06-30 15:40:3561 'format': ['UPPER_CASE', 'camelCase'],
Sigurd Schneidercb2d4562021-02-15 08:56:1862 },
63 {
Sigurd Schneiderc8702c92021-02-12 10:10:0564 'selector': 'method',
Sigurd Schneiderc8702c92021-02-12 10:10:0565 'format': ['camelCase'],
66 },
67 {
Sigurd Schneider91147d82021-02-15 11:00:0868 'selector': 'function',
69 'format': ['camelCase'],
70 },
71 {
Sigurd Schneider17c74452021-02-15 12:14:1072 'selector': 'variable',
73 'filter': {
74 // Ignore localization variables.
75 'regex': '^(UIStrings|str_)$',
76 'match': false
77 },
78 'format': ['camelCase'],
79 },
80 {
81 // We are using camelCase, PascalCase and UPPER_CASE for top-level constants, allow the for now.
82 'selector': 'variable',
83 'modifiers': ['const'],
84 'filter': {
85 // Ignore localization variables.
86 'regex': '^(UIStrings|str_)$',
87 'match': false
88 },
89 'format': ['camelCase', 'UPPER_CASE', 'PascalCase'],
90 },
91 {
Sigurd Schneider6c774ca2021-02-15 08:09:1492 // Public methods are currently in transition and may still have leading underscores.
93 'selector': 'method',
94 'modifiers': ['public'],
95 'format': ['camelCase'],
96 'leadingUnderscore': 'allow',
97 },
98 {
99 // Object literals may be constructed as arguments to external libraries which follow different styles.
100 'selector': ['objectLiteralMethod', 'objectLiteralProperty'],
101 'modifiers': ['public'],
102 'format': null,
103 },
104 {
Sigurd Schneiderc8702c92021-02-12 10:10:05105 'selector': 'accessor',
106 'format': ['camelCase'],
107 },
108 {
Sigurd Schneideraf302d02021-02-15 09:45:35109 'selector': 'enumMember',
110 'format': ['PascalCase', 'UPPER_CASE'],
111 },
112 {
Sigurd Schneider6c774ca2021-02-15 08:09:14113 'selector': ['typeLike'],
Sigurd Schneiderc8702c92021-02-12 10:10:05114 'format': ['PascalCase'],
115 },
116 {
117 'selector': 'parameter',
118 'format': ['camelCase'],
119 'leadingUnderscore': 'allow',
Simon Zünd7a585242022-04-19 06:17:13120 },
121 {
122 // Ignore type properties that require quotes
123 'selector': [
124 'typeProperty',
125 'enumMember'
126 ],
127 'format': null,
128 'modifiers': ['requiresQuotes']
Sigurd Schneiderc8702c92021-02-12 10:10:05129 }
John Emaua5c98662022-01-05 05:55:06130 ]
Sigurd Schneiderc8702c92021-02-12 10:10:05131 }
132 },
133 {
134 'files': ['*-meta.ts'],
135 'rules': {
136 '@typescript-eslint/naming-convention': [
137 'error', {
138 'selector': 'parameter',
139 'format': ['camelCase', 'PascalCase'],
140 'leadingUnderscore': 'allow',
141 }
142 ]
143 }
Tim van der Lippedb15a5f2021-12-15 14:33:27144 },
145 {
Tim van der Lippe12bcadb2021-12-16 09:57:10146 'files': ['panels/**/components/*.ts', 'ui/components/**/*.ts', 'entrypoints/**/*.ts'],
Tim van der Lippedb15a5f2021-12-15 14:33:27147 'rules': {
148 'rulesdir/use_private_class_members': 2,
149 }
Tim van der Lippe33543ac2020-12-14 14:37:45150 }
Sigurd Schneiderc8702c92021-02-12 10:10:05151 ]
Tim van der Lippe33543ac2020-12-14 14:37:45152};