blob: deadff1f9c3188ddc4c9dd5431a1b8734e02c378 [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,
Tim van der Lippe194c45f2021-05-06 12:03:4323 'rulesdir/custom_element_definitions_location': 2,
Kriti Sapra2597b412021-05-07 10:11:1024 'rulesdir/custom_element_component_definition': 2,
Simon Zündf6afbca2021-03-02 06:11:1425 },
Sigurd Schneiderc8702c92021-02-12 10:10:0526 'overrides': [
27 {
28 'files': ['*.ts'],
29 'rules': {
30 '@typescript-eslint/explicit-function-return-type': 2,
Jack Franklin3ea21da2022-03-08 14:44:0631 'rulesdir/no_importing_images_from_src': 2,
Ergün Erdoğmuş5f638ba2022-05-05 09:30:2132 'rulesdir/enforce_bound_render_for_schedule_render': 2,
Jack Franklinb620bb42021-05-13 14:29:2433 'rulesdir/enforce_custom_event_names': 2,
Sigurd Schneiderc8702c92021-02-12 10:10:0534 'rulesdir/set_data_type_reference': 2,
Jack Frankline9bf00f2022-04-01 11:38:0335 'rulesdir/no_bound_component_methods': 2,
Sigurd Schneiderc8702c92021-02-12 10:10:0536 'rulesdir/lit_html_data_as_type': 2,
37 'rulesdir/lit_no_style_interpolation': 2,
Jack Franklin06ee0d92021-05-11 09:05:5438 'rulesdir/ban_literal_devtools_component_tag_names': 2,
Jan Scheffler9245dae2021-06-11 13:42:2739 'rulesdir/ban_self_closing_custom_element_tagnames': 2,
Kriti Sapra9bd71c42021-06-29 12:02:4340 'rulesdir/ban_style_tags_in_lit_html': 2,
Alex Rudenko273b9aa2021-10-29 12:38:0341 'rulesdir/ban_a_tags_in_lit_html': 2,
Jack Frankline9f62582021-05-14 10:39:3842 'rulesdir/check_component_naming': 2,
John Emau25783bc2021-11-11 21:23:5343 'rulesdir/check_css_import': 2,
Wolfgang Beyerb2da5bb2021-12-20 15:03:3044 'rulesdir/check_enumerated_histograms': 2,
Kriti Saprab2b29f22021-06-29 12:59:5645 'rulesdir/check_was_shown_methods': 2,
Jack Franklin2e09f042021-09-01 14:54:2246 'rulesdir/static_custom_event_names': 2,
Jack Franklinc144a552021-09-09 10:35:0947 'rulesdir/lit_html_host_this': 2,
Jack Franklina31102b2021-12-03 15:01:2248 'rulesdir/lit_html_no_attribute_quotes': 2,
Sigurd Schneiderc8702c92021-02-12 10:10:0549 '@typescript-eslint/naming-convention': [
50 'error', {
Sigurd Schneider17c74452021-02-15 12:14:1051 'selector': ['property', 'parameterProperty'],
Sigurd Schneiderc8702c92021-02-12 10:10:0552 'format': ['camelCase'],
53 },
54 {
Sigurd Schneidercb2d4562021-02-15 08:56:1855 'selector': 'property',
56 'modifiers': ['public'],
57 'format': ['camelCase'],
58 'leadingUnderscore': 'allow',
59 },
60 {
61 'selector': 'classProperty',
62 'modifiers': ['static', 'readonly'],
Jack Franklin41aa9f22021-06-30 15:40:3563 'format': ['UPPER_CASE', 'camelCase'],
Sigurd Schneidercb2d4562021-02-15 08:56:1864 },
65 {
Sigurd Schneiderc8702c92021-02-12 10:10:0566 'selector': 'method',
Sigurd Schneiderc8702c92021-02-12 10:10:0567 'format': ['camelCase'],
68 },
69 {
Sigurd Schneider91147d82021-02-15 11:00:0870 'selector': 'function',
71 'format': ['camelCase'],
72 },
73 {
Sigurd Schneider17c74452021-02-15 12:14:1074 'selector': 'variable',
75 'filter': {
76 // Ignore localization variables.
77 'regex': '^(UIStrings|str_)$',
78 'match': false
79 },
80 'format': ['camelCase'],
81 },
82 {
83 // We are using camelCase, PascalCase and UPPER_CASE for top-level constants, allow the for now.
84 'selector': 'variable',
85 'modifiers': ['const'],
86 'filter': {
87 // Ignore localization variables.
88 'regex': '^(UIStrings|str_)$',
89 'match': false
90 },
91 'format': ['camelCase', 'UPPER_CASE', 'PascalCase'],
92 },
93 {
Sigurd Schneider6c774ca2021-02-15 08:09:1494 // Public methods are currently in transition and may still have leading underscores.
95 'selector': 'method',
96 'modifiers': ['public'],
97 'format': ['camelCase'],
98 'leadingUnderscore': 'allow',
99 },
100 {
101 // Object literals may be constructed as arguments to external libraries which follow different styles.
102 'selector': ['objectLiteralMethod', 'objectLiteralProperty'],
103 'modifiers': ['public'],
104 'format': null,
105 },
106 {
Sigurd Schneiderc8702c92021-02-12 10:10:05107 'selector': 'accessor',
108 'format': ['camelCase'],
109 },
110 {
Sigurd Schneideraf302d02021-02-15 09:45:35111 'selector': 'enumMember',
112 'format': ['PascalCase', 'UPPER_CASE'],
113 },
114 {
Sigurd Schneider6c774ca2021-02-15 08:09:14115 'selector': ['typeLike'],
Sigurd Schneiderc8702c92021-02-12 10:10:05116 'format': ['PascalCase'],
117 },
118 {
119 'selector': 'parameter',
120 'format': ['camelCase'],
121 'leadingUnderscore': 'allow',
Simon Zünd7a585242022-04-19 06:17:13122 },
123 {
124 // Ignore type properties that require quotes
Ergün Erdoğmuş5f638ba2022-05-05 09:30:21125 'selector': ['typeProperty', 'enumMember'],
Simon Zünd7a585242022-04-19 06:17:13126 'format': null,
127 'modifiers': ['requiresQuotes']
Sigurd Schneiderc8702c92021-02-12 10:10:05128 }
John Emaua5c98662022-01-05 05:55:06129 ]
Sigurd Schneiderc8702c92021-02-12 10:10:05130 }
131 },
132 {
133 'files': ['*-meta.ts'],
134 'rules': {
135 '@typescript-eslint/naming-convention': [
136 'error', {
137 'selector': 'parameter',
138 'format': ['camelCase', 'PascalCase'],
139 'leadingUnderscore': 'allow',
140 }
141 ]
142 }
Tim van der Lippedb15a5f2021-12-15 14:33:27143 },
144 {
Tim van der Lippe12bcadb2021-12-16 09:57:10145 'files': ['panels/**/components/*.ts', 'ui/components/**/*.ts', 'entrypoints/**/*.ts'],
Tim van der Lippedb15a5f2021-12-15 14:33:27146 'rules': {
147 'rulesdir/use_private_class_members': 2,
148 }
Tim van der Lippe33543ac2020-12-14 14:37:45149 }
Sigurd Schneiderc8702c92021-02-12 10:10:05150 ]
Tim van der Lippe33543ac2020-12-14 14:37:45151};
Ergün Erdoğmuş5f638ba2022-05-05 09:30:21152// clang-format on