Tim van der Lippe | 33543ac | 2020-12-14 14:37:45 | [diff] [blame] | 1 | // 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ş | 5f638ba | 2022-05-05 09:30:21 | [diff] [blame] | 5 | // clang-format off |
Tim van der Lippe | 406249f | 2020-12-14 14:59:10 | [diff] [blame] | 6 | const path = require('path'); |
| 7 | const rulesDirPlugin = require('eslint-plugin-rulesdir'); |
| 8 | rulesDirPlugin.RULES_DIR = path.join(__dirname, '..', 'scripts', 'eslint_rules', 'lib'); |
| 9 | |
Tim van der Lippe | 33543ac | 2020-12-14 14:37:45 | [diff] [blame] | 10 | module.exports = { |
Simon Zünd | f6afbca | 2021-03-02 06:11:14 | [diff] [blame] | 11 | 'rules': { |
| 12 | // L10n rules are only relevant in 'front_end'. |
Jack Franklin | 18c7191 | 2021-12-01 14:58:00 | [diff] [blame] | 13 | 'rulesdir/l10n_filename_matches': [ |
| 14 | 2, { |
| 15 | rootFrontendDirectory: __dirname, |
| 16 | } |
| 17 | ], |
Simon Zünd | 8c172ce | 2021-07-20 16:56:38 | [diff] [blame] | 18 | 'rulesdir/l10n_i18nString_call_only_with_uistrings': 2, |
Simon Zünd | fb3246d | 2021-03-03 07:59:05 | [diff] [blame] | 19 | 'rulesdir/l10n_no_i18nString_calls_module_instantiation': 2, |
Simon Zünd | 333a8a0 | 2021-03-04 09:50:53 | [diff] [blame] | 20 | 'rulesdir/l10n_no_locked_or_placeholder_only_phrase': 2, |
Simon Zünd | f6afbca | 2021-03-02 06:11:14 | [diff] [blame] | 21 | 'rulesdir/l10n_no_uistrings_export': 2, |
Simon Zünd | 9c1be4e | 2021-03-05 08:21:00 | [diff] [blame] | 22 | 'rulesdir/l10n_no_unused_message': 2, |
Jack Franklin | cc2dbce | 2022-07-07 14:12:28 | [diff] [blame] | 23 | 'rulesdir/custom_element_definitions_location': [2, { |
| 24 | rootFrontendDirectory: __dirname, |
| 25 | }], |
Kriti Sapra | 2597b41 | 2021-05-07 10:11:10 | [diff] [blame] | 26 | 'rulesdir/custom_element_component_definition': 2, |
Simon Zünd | f6afbca | 2021-03-02 06:11:14 | [diff] [blame] | 27 | }, |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 28 | 'overrides': [ |
| 29 | { |
| 30 | 'files': ['*.ts'], |
| 31 | 'rules': { |
| 32 | '@typescript-eslint/explicit-function-return-type': 2, |
Jack Franklin | 3ea21da | 2022-03-08 14:44:06 | [diff] [blame] | 33 | 'rulesdir/no_importing_images_from_src': 2, |
Ergün Erdoğmuş | 5f638ba | 2022-05-05 09:30:21 | [diff] [blame] | 34 | 'rulesdir/enforce_bound_render_for_schedule_render': 2, |
Jack Franklin | b620bb4 | 2021-05-13 14:29:24 | [diff] [blame] | 35 | 'rulesdir/enforce_custom_event_names': 2, |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 36 | 'rulesdir/set_data_type_reference': 2, |
Jack Franklin | e9bf00f | 2022-04-01 11:38:03 | [diff] [blame] | 37 | 'rulesdir/no_bound_component_methods': 2, |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 38 | 'rulesdir/lit_html_data_as_type': 2, |
| 39 | 'rulesdir/lit_no_style_interpolation': 2, |
Jack Franklin | 06ee0d9 | 2021-05-11 09:05:54 | [diff] [blame] | 40 | 'rulesdir/ban_literal_devtools_component_tag_names': 2, |
Jan Scheffler | 9245dae | 2021-06-11 13:42:27 | [diff] [blame] | 41 | 'rulesdir/ban_self_closing_custom_element_tagnames': 2, |
Kriti Sapra | 9bd71c4 | 2021-06-29 12:02:43 | [diff] [blame] | 42 | 'rulesdir/ban_style_tags_in_lit_html': 2, |
Alex Rudenko | 273b9aa | 2021-10-29 12:38:03 | [diff] [blame] | 43 | 'rulesdir/ban_a_tags_in_lit_html': 2, |
Jack Franklin | e9f6258 | 2021-05-14 10:39:38 | [diff] [blame] | 44 | 'rulesdir/check_component_naming': 2, |
John Emau | 25783bc | 2021-11-11 21:23:53 | [diff] [blame] | 45 | 'rulesdir/check_css_import': 2, |
Wolfgang Beyer | b2da5bb | 2021-12-20 15:03:30 | [diff] [blame] | 46 | 'rulesdir/check_enumerated_histograms': 2, |
Kriti Sapra | b2b29f2 | 2021-06-29 12:59:56 | [diff] [blame] | 47 | 'rulesdir/check_was_shown_methods': 2, |
Jack Franklin | 2e09f04 | 2021-09-01 14:54:22 | [diff] [blame] | 48 | 'rulesdir/static_custom_event_names': 2, |
Jack Franklin | c144a55 | 2021-09-09 10:35:09 | [diff] [blame] | 49 | 'rulesdir/lit_html_host_this': 2, |
Jack Franklin | a31102b | 2021-12-03 15:01:22 | [diff] [blame] | 50 | 'rulesdir/lit_html_no_attribute_quotes': 2, |
Jack Franklin | d750830 | 2022-05-09 14:22:21 | [diff] [blame] | 51 | 'rulesdir/lit_template_result_or_nothing': 2, |
Jack Franklin | 1f19d52 | 2022-07-06 14:00:18 | [diff] [blame] | 52 | 'rulesdir/inject_checkbox_styles': 2, |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 53 | '@typescript-eslint/naming-convention': [ |
| 54 | 'error', { |
Sigurd Schneider | 17c7445 | 2021-02-15 12:14:10 | [diff] [blame] | 55 | 'selector': ['property', 'parameterProperty'], |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 56 | 'format': ['camelCase'], |
| 57 | }, |
| 58 | { |
Sigurd Schneider | cb2d456 | 2021-02-15 08:56:18 | [diff] [blame] | 59 | 'selector': 'property', |
| 60 | 'modifiers': ['public'], |
| 61 | 'format': ['camelCase'], |
| 62 | 'leadingUnderscore': 'allow', |
| 63 | }, |
| 64 | { |
| 65 | 'selector': 'classProperty', |
| 66 | 'modifiers': ['static', 'readonly'], |
Jack Franklin | 41aa9f2 | 2021-06-30 15:40:35 | [diff] [blame] | 67 | 'format': ['UPPER_CASE', 'camelCase'], |
Sigurd Schneider | cb2d456 | 2021-02-15 08:56:18 | [diff] [blame] | 68 | }, |
| 69 | { |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 70 | 'selector': 'method', |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 71 | 'format': ['camelCase'], |
| 72 | }, |
| 73 | { |
Sigurd Schneider | 91147d8 | 2021-02-15 11:00:08 | [diff] [blame] | 74 | 'selector': 'function', |
| 75 | 'format': ['camelCase'], |
| 76 | }, |
| 77 | { |
Sigurd Schneider | 17c7445 | 2021-02-15 12:14:10 | [diff] [blame] | 78 | '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 Schneider | 6c774ca | 2021-02-15 08:09:14 | [diff] [blame] | 98 | // 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 Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 111 | 'selector': 'accessor', |
| 112 | 'format': ['camelCase'], |
| 113 | }, |
| 114 | { |
Sigurd Schneider | af302d0 | 2021-02-15 09:45:35 | [diff] [blame] | 115 | 'selector': 'enumMember', |
| 116 | 'format': ['PascalCase', 'UPPER_CASE'], |
| 117 | }, |
| 118 | { |
Sigurd Schneider | 6c774ca | 2021-02-15 08:09:14 | [diff] [blame] | 119 | 'selector': ['typeLike'], |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 120 | 'format': ['PascalCase'], |
| 121 | }, |
| 122 | { |
| 123 | 'selector': 'parameter', |
| 124 | 'format': ['camelCase'], |
| 125 | 'leadingUnderscore': 'allow', |
Simon Zünd | 7a58524 | 2022-04-19 06:17:13 | [diff] [blame] | 126 | }, |
| 127 | { |
| 128 | // Ignore type properties that require quotes |
Ergün Erdoğmuş | 5f638ba | 2022-05-05 09:30:21 | [diff] [blame] | 129 | 'selector': ['typeProperty', 'enumMember'], |
Simon Zünd | 7a58524 | 2022-04-19 06:17:13 | [diff] [blame] | 130 | 'format': null, |
| 131 | 'modifiers': ['requiresQuotes'] |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 132 | } |
John Emau | a5c9866 | 2022-01-05 05:55:06 | [diff] [blame] | 133 | ] |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 134 | } |
| 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 Lippe | db15a5f | 2021-12-15 14:33:27 | [diff] [blame] | 147 | }, |
| 148 | { |
Tim van der Lippe | 12bcadb | 2021-12-16 09:57:10 | [diff] [blame] | 149 | 'files': ['panels/**/components/*.ts', 'ui/components/**/*.ts', 'entrypoints/**/*.ts'], |
Tim van der Lippe | db15a5f | 2021-12-15 14:33:27 | [diff] [blame] | 150 | 'rules': { |
| 151 | 'rulesdir/use_private_class_members': 2, |
| 152 | } |
Alex Rudenko | 128c7b3 | 2023-05-03 11:03:43 | [diff] [blame^] | 153 | }, |
| 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 Lippe | 33543ac | 2020-12-14 14:37:45 | [diff] [blame] | 163 | } |
Sigurd Schneider | c8702c9 | 2021-02-12 10:10:05 | [diff] [blame] | 164 | ] |
Tim van der Lippe | 33543ac | 2020-12-14 14:37:45 | [diff] [blame] | 165 | }; |
Ergün Erdoğmuş | 5f638ba | 2022-05-05 09:30:21 | [diff] [blame] | 166 | // clang-format on |