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