eslint 9.22.0 → 9.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -45
- package/bin/eslint.js +92 -90
- package/conf/default-cli-options.js +22 -22
- package/conf/ecma-version.js +1 -1
- package/conf/globals.js +97 -98
- package/conf/replacements.json +24 -20
- package/conf/rule-type-list.json +88 -92
- package/lib/api.js +12 -12
- package/lib/cli-engine/cli-engine.js +828 -808
- package/lib/cli-engine/file-enumerator.js +381 -387
- package/lib/cli-engine/formatters/formatters-meta.json +16 -16
- package/lib/cli-engine/formatters/html.js +107 -99
- package/lib/cli-engine/formatters/json-with-metadata.js +5 -5
- package/lib/cli-engine/formatters/json.js +2 -2
- package/lib/cli-engine/formatters/stylish.js +96 -75
- package/lib/cli-engine/hash.js +1 -1
- package/lib/cli-engine/index.js +1 -1
- package/lib/cli-engine/lint-result-cache.js +144 -145
- package/lib/cli-engine/load-rules.js +16 -16
- package/lib/cli.js +541 -457
- package/lib/config/config-loader.js +648 -618
- package/lib/config/config.js +247 -221
- package/lib/config/default-config.js +54 -45
- package/lib/config/flat-config-array.js +167 -172
- package/lib/config/flat-config-helpers.js +65 -68
- package/lib/config/flat-config-schema.js +375 -368
- package/lib/config/rule-validator.js +139 -144
- package/lib/config-api.js +2 -2
- package/lib/eslint/eslint-helpers.js +709 -679
- package/lib/eslint/eslint.js +944 -886
- package/lib/eslint/index.js +2 -2
- package/lib/eslint/legacy-eslint.js +576 -532
- package/lib/languages/js/index.js +263 -264
- package/lib/languages/js/source-code/index.js +1 -1
- package/lib/languages/js/source-code/source-code.js +1128 -1057
- package/lib/languages/js/source-code/token-store/backward-token-comment-cursor.js +39 -35
- package/lib/languages/js/source-code/token-store/backward-token-cursor.js +35 -36
- package/lib/languages/js/source-code/token-store/cursor.js +36 -36
- package/lib/languages/js/source-code/token-store/cursors.js +80 -52
- package/lib/languages/js/source-code/token-store/decorative-cursor.js +17 -18
- package/lib/languages/js/source-code/token-store/filter-cursor.js +19 -20
- package/lib/languages/js/source-code/token-store/forward-token-comment-cursor.js +40 -32
- package/lib/languages/js/source-code/token-store/forward-token-cursor.js +40 -41
- package/lib/languages/js/source-code/token-store/index.js +592 -498
- package/lib/languages/js/source-code/token-store/limit-cursor.js +17 -18
- package/lib/languages/js/source-code/token-store/padded-token-cursor.js +23 -16
- package/lib/languages/js/source-code/token-store/skip-cursor.js +19 -20
- package/lib/languages/js/source-code/token-store/utils.js +63 -60
- package/lib/languages/js/validate-language-options.js +104 -89
- package/lib/linter/apply-disable-directives.js +467 -383
- package/lib/linter/code-path-analysis/code-path-analyzer.js +650 -672
- package/lib/linter/code-path-analysis/code-path-segment.js +215 -216
- package/lib/linter/code-path-analysis/code-path-state.js +2118 -2096
- package/lib/linter/code-path-analysis/code-path.js +307 -319
- package/lib/linter/code-path-analysis/debug-helpers.js +183 -163
- package/lib/linter/code-path-analysis/fork-context.js +296 -271
- package/lib/linter/code-path-analysis/id-generator.js +22 -23
- package/lib/linter/file-context.js +119 -120
- package/lib/linter/index.js +3 -3
- package/lib/linter/interpolate.js +16 -16
- package/lib/linter/linter.js +2402 -2044
- package/lib/linter/node-event-generator.js +284 -225
- package/lib/linter/report-translator.js +256 -219
- package/lib/linter/rule-fixer.js +122 -124
- package/lib/linter/rules.js +35 -35
- package/lib/linter/safe-emitter.js +18 -18
- package/lib/linter/source-code-fixer.js +94 -92
- package/lib/linter/timing.js +104 -101
- package/lib/linter/vfile.js +70 -73
- package/lib/options.js +375 -361
- package/lib/rule-tester/index.js +1 -1
- package/lib/rule-tester/rule-tester.js +1307 -1045
- package/lib/rules/accessor-pairs.js +297 -262
- package/lib/rules/array-bracket-newline.js +249 -237
- package/lib/rules/array-bracket-spacing.js +262 -223
- package/lib/rules/array-callback-return.js +401 -355
- package/lib/rules/array-element-newline.js +357 -312
- package/lib/rules/arrow-body-style.js +399 -280
- package/lib/rules/arrow-parens.js +205 -172
- package/lib/rules/arrow-spacing.js +168 -162
- package/lib/rules/block-scoped-var.js +124 -122
- package/lib/rules/block-spacing.js +185 -175
- package/lib/rules/brace-style.js +261 -198
- package/lib/rules/callback-return.js +202 -189
- package/lib/rules/camelcase.js +402 -391
- package/lib/rules/capitalized-comments.js +252 -231
- package/lib/rules/class-methods-use-this.js +179 -171
- package/lib/rules/comma-dangle.js +378 -345
- package/lib/rules/comma-spacing.js +192 -194
- package/lib/rules/comma-style.js +374 -315
- package/lib/rules/complexity.js +172 -168
- package/lib/rules/computed-property-spacing.js +235 -210
- package/lib/rules/consistent-return.js +180 -169
- package/lib/rules/consistent-this.js +166 -146
- package/lib/rules/constructor-super.js +411 -403
- package/lib/rules/curly.js +406 -331
- package/lib/rules/default-case-last.js +37 -30
- package/lib/rules/default-case.js +88 -84
- package/lib/rules/default-param-last.js +68 -53
- package/lib/rules/dot-location.js +121 -109
- package/lib/rules/dot-notation.js +191 -155
- package/lib/rules/eol-last.js +121 -119
- package/lib/rules/eqeqeq.js +167 -154
- package/lib/rules/for-direction.js +145 -120
- package/lib/rules/func-call-spacing.js +260 -230
- package/lib/rules/func-name-matching.js +292 -208
- package/lib/rules/func-names.js +164 -163
- package/lib/rules/func-style.js +158 -126
- package/lib/rules/function-call-argument-newline.js +151 -128
- package/lib/rules/function-paren-newline.js +348 -290
- package/lib/rules/generator-star-spacing.js +228 -209
- package/lib/rules/getter-return.js +207 -171
- package/lib/rules/global-require.js +84 -73
- package/lib/rules/grouped-accessor-pairs.js +169 -149
- package/lib/rules/guard-for-in.js +71 -62
- package/lib/rules/handle-callback-err.js +107 -102
- package/lib/rules/id-blacklist.js +181 -198
- package/lib/rules/id-denylist.js +167 -186
- package/lib/rules/id-length.js +196 -170
- package/lib/rules/id-match.js +343 -288
- package/lib/rules/implicit-arrow-linebreak.js +101 -78
- package/lib/rules/indent-legacy.js +1343 -1117
- package/lib/rules/indent.js +2271 -1758
- package/lib/rules/index.js +317 -292
- package/lib/rules/init-declarations.js +115 -106
- package/lib/rules/jsx-quotes.js +93 -81
- package/lib/rules/key-spacing.js +749 -632
- package/lib/rules/keyword-spacing.js +647 -604
- package/lib/rules/line-comment-position.js +141 -127
- package/lib/rules/linebreak-style.js +106 -105
- package/lib/rules/lines-around-comment.js +539 -447
- package/lib/rules/lines-around-directive.js +232 -202
- package/lib/rules/lines-between-class-members.js +304 -233
- package/lib/rules/logical-assignment-operators.js +581 -398
- package/lib/rules/max-classes-per-file.js +68 -67
- package/lib/rules/max-depth.js +145 -142
- package/lib/rules/max-len.js +472 -433
- package/lib/rules/max-lines-per-function.js +200 -175
- package/lib/rules/max-lines.js +157 -161
- package/lib/rules/max-nested-callbacks.js +101 -103
- package/lib/rules/max-params.js +77 -75
- package/lib/rules/max-statements-per-line.js +204 -197
- package/lib/rules/max-statements.js +167 -163
- package/lib/rules/multiline-comment-style.js +636 -478
- package/lib/rules/multiline-ternary.js +240 -175
- package/lib/rules/new-cap.js +232 -212
- package/lib/rules/new-parens.js +87 -78
- package/lib/rules/newline-after-var.js +286 -249
- package/lib/rules/newline-before-return.js +228 -221
- package/lib/rules/newline-per-chained-call.js +141 -126
- package/lib/rules/no-alert.js +89 -78
- package/lib/rules/no-array-constructor.js +121 -112
- package/lib/rules/no-async-promise-executor.js +29 -23
- package/lib/rules/no-await-in-loop.js +68 -70
- package/lib/rules/no-bitwise.js +123 -99
- package/lib/rules/no-buffer-constructor.js +54 -46
- package/lib/rules/no-caller.js +38 -32
- package/lib/rules/no-case-declarations.js +60 -56
- package/lib/rules/no-catch-shadow.js +75 -72
- package/lib/rules/no-class-assign.js +50 -47
- package/lib/rules/no-compare-neg-zero.js +61 -47
- package/lib/rules/no-cond-assign.js +147 -131
- package/lib/rules/no-confusing-arrow.js +97 -80
- package/lib/rules/no-console.js +201 -198
- package/lib/rules/no-const-assign.js +46 -40
- package/lib/rules/no-constant-binary-expression.js +499 -404
- package/lib/rules/no-constant-condition.js +157 -142
- package/lib/rules/no-constructor-return.js +48 -48
- package/lib/rules/no-continue.js +24 -26
- package/lib/rules/no-control-regex.js +124 -120
- package/lib/rules/no-debugger.js +27 -29
- package/lib/rules/no-delete-var.js +28 -28
- package/lib/rules/no-div-regex.js +46 -40
- package/lib/rules/no-dupe-args.js +67 -68
- package/lib/rules/no-dupe-class-members.js +92 -88
- package/lib/rules/no-dupe-else-if.js +99 -76
- package/lib/rules/no-dupe-keys.js +132 -109
- package/lib/rules/no-duplicate-case.js +49 -42
- package/lib/rules/no-duplicate-imports.js +178 -175
- package/lib/rules/no-else-return.js +429 -384
- package/lib/rules/no-empty-character-class.js +56 -49
- package/lib/rules/no-empty-function.js +126 -127
- package/lib/rules/no-empty-pattern.js +62 -57
- package/lib/rules/no-empty-static-block.js +36 -34
- package/lib/rules/no-empty.js +97 -85
- package/lib/rules/no-eq-null.js +36 -31
- package/lib/rules/no-eval.js +255 -249
- package/lib/rules/no-ex-assign.js +41 -38
- package/lib/rules/no-extend-native.js +160 -158
- package/lib/rules/no-extra-bind.js +200 -189
- package/lib/rules/no-extra-boolean-cast.js +397 -347
- package/lib/rules/no-extra-label.js +149 -130
- package/lib/rules/no-extra-parens.js +1653 -1324
- package/lib/rules/no-extra-semi.js +145 -143
- package/lib/rules/no-fallthrough.js +198 -156
- package/lib/rules/no-floating-decimal.js +73 -65
- package/lib/rules/no-func-assign.js +53 -54
- package/lib/rules/no-global-assign.js +77 -72
- package/lib/rules/no-implicit-coercion.js +348 -292
- package/lib/rules/no-implicit-globals.js +157 -134
- package/lib/rules/no-implied-eval.js +139 -111
- package/lib/rules/no-import-assign.js +144 -158
- package/lib/rules/no-inline-comments.js +100 -94
- package/lib/rules/no-inner-declarations.js +114 -100
- package/lib/rules/no-invalid-regexp.js +221 -189
- package/lib/rules/no-invalid-this.js +122 -116
- package/lib/rules/no-irregular-whitespace.js +265 -251
- package/lib/rules/no-iterator.js +28 -32
- package/lib/rules/no-label-var.js +58 -61
- package/lib/rules/no-labels.js +137 -132
- package/lib/rules/no-lone-blocks.js +126 -122
- package/lib/rules/no-lonely-if.js +107 -76
- package/lib/rules/no-loop-func.js +233 -212
- package/lib/rules/no-loss-of-precision.js +215 -200
- package/lib/rules/no-magic-numbers.js +245 -217
- package/lib/rules/no-misleading-character-class.js +498 -445
- package/lib/rules/no-mixed-operators.js +187 -181
- package/lib/rules/no-mixed-requires.js +252 -239
- package/lib/rules/no-mixed-spaces-and-tabs.js +133 -120
- package/lib/rules/no-multi-assign.js +45 -43
- package/lib/rules/no-multi-spaces.js +162 -142
- package/lib/rules/no-multi-str.js +41 -40
- package/lib/rules/no-multiple-empty-lines.js +195 -157
- package/lib/rules/no-native-reassign.js +89 -84
- package/lib/rules/no-negated-condition.js +78 -74
- package/lib/rules/no-negated-in-lhs.js +44 -42
- package/lib/rules/no-nested-ternary.js +32 -31
- package/lib/rules/no-new-func.js +70 -61
- package/lib/rules/no-new-native-nonconstructor.js +42 -38
- package/lib/rules/no-new-object.js +47 -47
- package/lib/rules/no-new-require.js +47 -46
- package/lib/rules/no-new-symbol.js +51 -49
- package/lib/rules/no-new-wrappers.js +42 -40
- package/lib/rules/no-new.js +27 -28
- package/lib/rules/no-nonoctal-decimal-escape.js +140 -120
- package/lib/rules/no-obj-calls.js +65 -52
- package/lib/rules/no-object-constructor.js +103 -96
- package/lib/rules/no-octal-escape.js +39 -42
- package/lib/rules/no-octal.js +31 -31
- package/lib/rules/no-param-reassign.js +234 -216
- package/lib/rules/no-path-concat.js +65 -66
- package/lib/rules/no-plusplus.js +59 -60
- package/lib/rules/no-process-env.js +48 -47
- package/lib/rules/no-process-exit.js +53 -49
- package/lib/rules/no-promise-executor-return.js +213 -181
- package/lib/rules/no-proto.js +25 -28
- package/lib/rules/no-prototype-builtins.js +145 -123
- package/lib/rules/no-redeclare.js +153 -151
- package/lib/rules/no-regex-spaces.js +182 -160
- package/lib/rules/no-restricted-exports.js +207 -184
- package/lib/rules/no-restricted-globals.js +110 -111
- package/lib/rules/no-restricted-imports.js +656 -536
- package/lib/rules/no-restricted-modules.js +221 -201
- package/lib/rules/no-restricted-properties.js +180 -152
- package/lib/rules/no-restricted-syntax.js +55 -51
- package/lib/rules/no-return-assign.js +54 -49
- package/lib/rules/no-return-await.js +147 -123
- package/lib/rules/no-script-url.js +51 -44
- package/lib/rules/no-self-assign.js +147 -145
- package/lib/rules/no-self-compare.js +62 -45
- package/lib/rules/no-sequences.js +134 -115
- package/lib/rules/no-setter-return.js +184 -151
- package/lib/rules/no-shadow-restricted-names.js +60 -45
- package/lib/rules/no-shadow.js +341 -315
- package/lib/rules/no-spaced-func.js +81 -76
- package/lib/rules/no-sparse-arrays.js +53 -58
- package/lib/rules/no-sync.js +60 -59
- package/lib/rules/no-tabs.js +82 -71
- package/lib/rules/no-template-curly-in-string.js +32 -31
- package/lib/rules/no-ternary.js +24 -28
- package/lib/rules/no-this-before-super.js +320 -318
- package/lib/rules/no-throw-literal.js +30 -35
- package/lib/rules/no-trailing-spaces.js +198 -190
- package/lib/rules/no-undef-init.js +75 -60
- package/lib/rules/no-undef.js +50 -47
- package/lib/rules/no-undefined.js +72 -74
- package/lib/rules/no-underscore-dangle.js +369 -326
- package/lib/rules/no-unexpected-multiline.js +111 -101
- package/lib/rules/no-unmodified-loop-condition.js +253 -253
- package/lib/rules/no-unneeded-ternary.js +211 -146
- package/lib/rules/no-unreachable-loop.js +144 -141
- package/lib/rules/no-unreachable.js +254 -247
- package/lib/rules/no-unsafe-finally.js +92 -84
- package/lib/rules/no-unsafe-negation.js +104 -82
- package/lib/rules/no-unsafe-optional-chaining.js +191 -177
- package/lib/rules/no-unused-expressions.js +177 -161
- package/lib/rules/no-unused-labels.js +138 -123
- package/lib/rules/no-unused-private-class-members.js +205 -181
- package/lib/rules/no-unused-vars.js +1668 -1448
- package/lib/rules/no-use-before-define.js +228 -230
- package/lib/rules/no-useless-assignment.js +589 -510
- package/lib/rules/no-useless-backreference.js +211 -192
- package/lib/rules/no-useless-call.js +57 -52
- package/lib/rules/no-useless-catch.js +39 -39
- package/lib/rules/no-useless-computed-key.js +143 -114
- package/lib/rules/no-useless-concat.js +64 -59
- package/lib/rules/no-useless-constructor.js +157 -110
- package/lib/rules/no-useless-escape.js +341 -290
- package/lib/rules/no-useless-rename.js +182 -155
- package/lib/rules/no-useless-return.js +343 -311
- package/lib/rules/no-var.js +232 -211
- package/lib/rules/no-void.js +49 -47
- package/lib/rules/no-warning-comments.js +190 -185
- package/lib/rules/no-whitespace-before-property.js +130 -114
- package/lib/rules/no-with.js +23 -25
- package/lib/rules/nonblock-statement-body-position.js +148 -129
- package/lib/rules/object-curly-newline.js +305 -264
- package/lib/rules/object-curly-spacing.js +359 -313
- package/lib/rules/object-property-newline.js +136 -105
- package/lib/rules/object-shorthand.js +606 -501
- package/lib/rules/one-var-declaration-per-line.js +103 -99
- package/lib/rules/one-var.js +652 -536
- package/lib/rules/operator-assignment.js +218 -160
- package/lib/rules/operator-linebreak.js +294 -250
- package/lib/rules/padded-blocks.js +345 -307
- package/lib/rules/padding-line-between-statements.js +442 -438
- package/lib/rules/prefer-arrow-callback.js +361 -312
- package/lib/rules/prefer-const.js +417 -376
- package/lib/rules/prefer-destructuring.js +300 -278
- package/lib/rules/prefer-exponentiation-operator.js +175 -132
- package/lib/rules/prefer-named-capture-group.js +152 -139
- package/lib/rules/prefer-numeric-literals.js +120 -112
- package/lib/rules/prefer-object-has-own.js +115 -81
- package/lib/rules/prefer-object-spread.js +212 -192
- package/lib/rules/prefer-promise-reject-errors.js +139 -121
- package/lib/rules/prefer-reflect.js +126 -106
- package/lib/rules/prefer-regex-literals.js +577 -465
- package/lib/rules/prefer-rest-params.js +78 -79
- package/lib/rules/prefer-spread.js +46 -43
- package/lib/rules/prefer-template.js +265 -194
- package/lib/rules/quote-props.js +372 -306
- package/lib/rules/quotes.js +373 -325
- package/lib/rules/radix.js +151 -135
- package/lib/rules/require-atomic-updates.js +315 -284
- package/lib/rules/require-await.js +143 -115
- package/lib/rules/require-unicode-regexp.js +281 -176
- package/lib/rules/require-yield.js +52 -53
- package/lib/rules/rest-spread-spacing.js +127 -115
- package/lib/rules/semi-spacing.js +280 -249
- package/lib/rules/semi-style.js +175 -133
- package/lib/rules/semi.js +455 -435
- package/lib/rules/sort-imports.js +305 -232
- package/lib/rules/sort-keys.js +218 -187
- package/lib/rules/sort-vars.js +126 -92
- package/lib/rules/space-before-blocks.js +198 -188
- package/lib/rules/space-before-function-paren.js +185 -165
- package/lib/rules/space-in-parens.js +358 -287
- package/lib/rules/space-infix-ops.js +236 -200
- package/lib/rules/space-unary-ops.js +355 -297
- package/lib/rules/spaced-comment.js +362 -318
- package/lib/rules/strict.js +264 -229
- package/lib/rules/switch-colon-spacing.js +129 -121
- package/lib/rules/symbol-description.js +44 -47
- package/lib/rules/template-curly-spacing.js +147 -141
- package/lib/rules/template-tag-spacing.js +97 -87
- package/lib/rules/unicode-bom.js +53 -55
- package/lib/rules/use-isnan.js +236 -205
- package/lib/rules/utils/ast-utils.js +2039 -1860
- package/lib/rules/utils/char-source.js +162 -155
- package/lib/rules/utils/fix-tracker.js +83 -80
- package/lib/rules/utils/keywords.js +59 -59
- package/lib/rules/utils/lazy-loading-rule-map.js +79 -76
- package/lib/rules/utils/regular-expressions.js +32 -24
- package/lib/rules/utils/unicode/index.js +4 -4
- package/lib/rules/utils/unicode/is-combining-character.js +1 -1
- package/lib/rules/utils/unicode/is-emoji-modifier.js +1 -1
- package/lib/rules/utils/unicode/is-regional-indicator-symbol.js +1 -1
- package/lib/rules/utils/unicode/is-surrogate-pair.js +1 -1
- package/lib/rules/valid-typeof.js +152 -110
- package/lib/rules/vars-on-top.js +151 -144
- package/lib/rules/wrap-iife.js +203 -190
- package/lib/rules/wrap-regex.js +69 -57
- package/lib/rules/yield-star-spacing.js +144 -133
- package/lib/rules/yoda.js +282 -271
- package/lib/services/parser-service.js +35 -35
- package/lib/services/processor-service.js +66 -73
- package/lib/shared/ajv.js +14 -14
- package/lib/shared/assert.js +3 -4
- package/lib/shared/ast-utils.js +7 -6
- package/lib/shared/deep-merge-arrays.js +24 -22
- package/lib/shared/directives.js +3 -2
- package/lib/shared/flags.js +46 -17
- package/lib/shared/logging.js +24 -25
- package/lib/shared/option-utils.js +43 -36
- package/lib/shared/runtime-info.js +136 -127
- package/lib/shared/serialization.js +27 -27
- package/lib/shared/severity.js +22 -22
- package/lib/shared/stats.js +5 -5
- package/lib/shared/string-utils.js +16 -16
- package/lib/shared/text-table.js +28 -27
- package/lib/shared/traverser.js +153 -146
- package/lib/types/index.d.ts +2010 -1559
- package/lib/types/rules.d.ts +5253 -5140
- package/lib/types/use-at-your-own-risk.d.ts +32 -30
- package/lib/unsupported-api.js +5 -5
- package/messages/all-files-ignored.js +3 -3
- package/messages/all-matched-files-ignored.js +3 -3
- package/messages/config-file-missing.js +2 -2
- package/messages/config-plugin-missing.js +3 -3
- package/messages/config-serialize-function.js +9 -7
- package/messages/eslintrc-incompat.js +13 -15
- package/messages/eslintrc-plugins.js +3 -4
- package/messages/extend-config-missing.js +3 -3
- package/messages/failed-to-read-json.js +3 -3
- package/messages/file-not-found.js +3 -3
- package/messages/invalid-rule-options.js +2 -2
- package/messages/invalid-rule-severity.js +2 -2
- package/messages/no-config-found.js +3 -3
- package/messages/plugin-conflict.js +8 -8
- package/messages/plugin-invalid.js +3 -3
- package/messages/plugin-missing.js +3 -3
- package/messages/print-config-with-directory-path.js +2 -2
- package/messages/shared.js +6 -1
- package/messages/whitespace-found.js +3 -3
- package/package.json +11 -17
package/lib/types/index.d.ts
CHANGED
@@ -27,1388 +27,1819 @@
|
|
27
27
|
|
28
28
|
import * as ESTree from "estree";
|
29
29
|
import type {
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
30
|
+
RuleVisitor,
|
31
|
+
TextSourceCode,
|
32
|
+
Language,
|
33
|
+
SourceRange,
|
34
|
+
TraversalStep,
|
35
|
+
LanguageOptions as GenericLanguageOptions,
|
36
|
+
RuleDefinition,
|
37
|
+
RuleContext as CoreRuleContext,
|
38
|
+
RuleContextTypeOptions,
|
39
|
+
DeprecatedInfo,
|
40
40
|
} from "@eslint/core";
|
41
41
|
import { JSONSchema4 } from "json-schema";
|
42
42
|
import { LegacyESLint } from "./use-at-your-own-risk.js";
|
43
43
|
|
44
|
-
/*
|
45
|
-
* Need to extend the `RuleContext` interface to include the
|
46
|
-
* deprecated methods that have not yet been removed.
|
47
|
-
* TODO: Remove in v10.0.0.
|
48
|
-
*/
|
49
|
-
declare module "@eslint/core" {
|
50
|
-
interface RuleContext {
|
51
|
-
|
52
|
-
/** @deprecated Use `sourceCode.getAncestors()` instead */
|
53
|
-
getAncestors(): ESTree.Node[];
|
54
|
-
|
55
|
-
/** @deprecated Use `sourceCode.getDeclaredVariables()` instead */
|
56
|
-
getDeclaredVariables(node: ESTree.Node): Scope.Variable[];
|
57
|
-
|
58
|
-
/** @deprecated Use `sourceCode.getScope()` instead */
|
59
|
-
getScope(): Scope.Scope;
|
60
|
-
|
61
|
-
/** @deprecated Use `sourceCode.markVariableAsUsed()` instead */
|
62
|
-
markVariableAsUsed(name: string): boolean;
|
63
|
-
}
|
64
|
-
}
|
65
|
-
|
66
44
|
export namespace AST {
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
45
|
+
type TokenType =
|
46
|
+
| "Boolean"
|
47
|
+
| "Null"
|
48
|
+
| "Identifier"
|
49
|
+
| "Keyword"
|
50
|
+
| "Punctuator"
|
51
|
+
| "JSXIdentifier"
|
52
|
+
| "JSXText"
|
53
|
+
| "Numeric"
|
54
|
+
| "String"
|
55
|
+
| "RegularExpression";
|
56
|
+
|
57
|
+
interface Token {
|
58
|
+
type: TokenType;
|
59
|
+
value: string;
|
60
|
+
range: Range;
|
61
|
+
loc: SourceLocation;
|
62
|
+
}
|
63
|
+
|
64
|
+
interface SourceLocation {
|
65
|
+
start: ESTree.Position;
|
66
|
+
end: ESTree.Position;
|
67
|
+
}
|
68
|
+
|
69
|
+
type Range = [number, number];
|
70
|
+
|
71
|
+
interface Program extends ESTree.Program {
|
72
|
+
comments: ESTree.Comment[];
|
73
|
+
tokens: Token[];
|
74
|
+
loc: SourceLocation;
|
75
|
+
range: Range;
|
76
|
+
}
|
99
77
|
}
|
100
78
|
|
101
79
|
export namespace Scope {
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
80
|
+
interface ScopeManager {
|
81
|
+
scopes: Scope[];
|
82
|
+
globalScope: Scope | null;
|
83
|
+
|
84
|
+
acquire(node: ESTree.Node, inner?: boolean): Scope | null;
|
85
|
+
|
86
|
+
getDeclaredVariables(node: ESTree.Node): Variable[];
|
87
|
+
}
|
88
|
+
|
89
|
+
interface Scope {
|
90
|
+
type:
|
91
|
+
| "block"
|
92
|
+
| "catch"
|
93
|
+
| "class"
|
94
|
+
| "for"
|
95
|
+
| "function"
|
96
|
+
| "function-expression-name"
|
97
|
+
| "global"
|
98
|
+
| "module"
|
99
|
+
| "switch"
|
100
|
+
| "with"
|
101
|
+
| "TDZ";
|
102
|
+
isStrict: boolean;
|
103
|
+
upper: Scope | null;
|
104
|
+
childScopes: Scope[];
|
105
|
+
variableScope: Scope;
|
106
|
+
block: ESTree.Node;
|
107
|
+
variables: Variable[];
|
108
|
+
set: Map<string, Variable>;
|
109
|
+
references: Reference[];
|
110
|
+
through: Reference[];
|
111
|
+
functionExpressionScope: boolean;
|
112
|
+
}
|
113
|
+
|
114
|
+
interface Variable {
|
115
|
+
name: string;
|
116
|
+
scope: Scope;
|
117
|
+
identifiers: ESTree.Identifier[];
|
118
|
+
references: Reference[];
|
119
|
+
defs: Definition[];
|
120
|
+
}
|
121
|
+
|
122
|
+
interface Reference {
|
123
|
+
identifier: ESTree.Identifier;
|
124
|
+
from: Scope;
|
125
|
+
resolved: Variable | null;
|
126
|
+
writeExpr: ESTree.Node | null;
|
127
|
+
init: boolean;
|
128
|
+
|
129
|
+
isWrite(): boolean;
|
130
|
+
|
131
|
+
isRead(): boolean;
|
132
|
+
|
133
|
+
isWriteOnly(): boolean;
|
134
|
+
|
135
|
+
isReadOnly(): boolean;
|
136
|
+
|
137
|
+
isReadWrite(): boolean;
|
138
|
+
}
|
139
|
+
|
140
|
+
type DefinitionType =
|
141
|
+
| { type: "CatchClause"; node: ESTree.CatchClause; parent: null }
|
142
|
+
| {
|
143
|
+
type: "ClassName";
|
144
|
+
node: ESTree.ClassDeclaration | ESTree.ClassExpression;
|
145
|
+
parent: null;
|
146
|
+
}
|
147
|
+
| {
|
148
|
+
type: "FunctionName";
|
149
|
+
node: ESTree.FunctionDeclaration | ESTree.FunctionExpression;
|
150
|
+
parent: null;
|
151
|
+
}
|
152
|
+
| { type: "ImplicitGlobalVariable"; node: ESTree.Program; parent: null }
|
153
|
+
| {
|
154
|
+
type: "ImportBinding";
|
155
|
+
node:
|
156
|
+
| ESTree.ImportSpecifier
|
157
|
+
| ESTree.ImportDefaultSpecifier
|
158
|
+
| ESTree.ImportNamespaceSpecifier;
|
159
|
+
parent: ESTree.ImportDeclaration;
|
160
|
+
}
|
161
|
+
| {
|
162
|
+
type: "Parameter";
|
163
|
+
node:
|
164
|
+
| ESTree.FunctionDeclaration
|
165
|
+
| ESTree.FunctionExpression
|
166
|
+
| ESTree.ArrowFunctionExpression;
|
167
|
+
parent: null;
|
168
|
+
}
|
169
|
+
| { type: "TDZ"; node: any; parent: null }
|
170
|
+
| {
|
171
|
+
type: "Variable";
|
172
|
+
node: ESTree.VariableDeclarator;
|
173
|
+
parent: ESTree.VariableDeclaration;
|
174
|
+
};
|
175
|
+
|
176
|
+
type Definition = DefinitionType & { name: ESTree.Identifier };
|
181
177
|
}
|
182
178
|
|
183
179
|
// #region SourceCode
|
184
180
|
|
185
|
-
export class SourceCode
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
181
|
+
export class SourceCode
|
182
|
+
implements
|
183
|
+
TextSourceCode<{
|
184
|
+
LangOptions: Linter.LanguageOptions;
|
185
|
+
RootNode: AST.Program;
|
186
|
+
SyntaxElementWithLoc: AST.Token | ESTree.Node;
|
187
|
+
ConfigNode: ESTree.Comment;
|
188
|
+
}>
|
189
|
+
{
|
190
|
+
text: string;
|
191
|
+
ast: AST.Program;
|
192
|
+
lines: string[];
|
193
|
+
hasBOM: boolean;
|
194
|
+
parserServices: SourceCode.ParserServices;
|
195
|
+
scopeManager: Scope.ScopeManager;
|
196
|
+
visitorKeys: SourceCode.VisitorKeys;
|
198
197
|
|
199
|
-
|
200
|
-
|
198
|
+
constructor(text: string, ast: AST.Program);
|
199
|
+
constructor(config: SourceCode.Config);
|
201
200
|
|
202
|
-
|
201
|
+
static splitLines(text: string): string[];
|
203
202
|
|
204
|
-
|
205
|
-
|
203
|
+
getLoc(syntaxElement: AST.Token | ESTree.Node): ESTree.SourceLocation;
|
204
|
+
getRange(syntaxElement: AST.Token | ESTree.Node): SourceRange;
|
206
205
|
|
207
|
-
|
206
|
+
getText(
|
207
|
+
node?: ESTree.Node,
|
208
|
+
beforeCount?: number,
|
209
|
+
afterCount?: number,
|
210
|
+
): string;
|
208
211
|
|
209
|
-
|
212
|
+
getLines(): string[];
|
210
213
|
|
211
|
-
|
214
|
+
getAllComments(): ESTree.Comment[];
|
212
215
|
|
213
|
-
|
216
|
+
getAncestors(node: ESTree.Node): ESTree.Node[];
|
214
217
|
|
215
|
-
|
218
|
+
getDeclaredVariables(node: ESTree.Node): Scope.Variable[];
|
216
219
|
|
217
|
-
|
220
|
+
getJSDocComment(node: ESTree.Node): ESTree.Comment | null;
|
218
221
|
|
219
|
-
|
222
|
+
getNodeByRangeIndex(index: number): ESTree.Node | null;
|
220
223
|
|
221
|
-
|
224
|
+
isSpaceBetweenTokens(first: AST.Token, second: AST.Token): boolean;
|
222
225
|
|
223
|
-
|
226
|
+
getLocFromIndex(index: number): ESTree.Position;
|
224
227
|
|
225
|
-
|
228
|
+
getIndexFromLoc(location: ESTree.Position): number;
|
226
229
|
|
227
|
-
|
228
|
-
|
230
|
+
// Inherited methods from TokenStore
|
231
|
+
// ---------------------------------
|
229
232
|
|
230
|
-
|
231
|
-
|
233
|
+
getTokenByRangeStart(
|
234
|
+
offset: number,
|
235
|
+
options?: { includeComments: false },
|
236
|
+
): AST.Token | null;
|
237
|
+
getTokenByRangeStart(
|
238
|
+
offset: number,
|
239
|
+
options: { includeComments: boolean },
|
240
|
+
): AST.Token | ESTree.Comment | null;
|
232
241
|
|
233
|
-
|
242
|
+
getFirstToken: SourceCode.UnaryNodeCursorWithSkipOptions;
|
234
243
|
|
235
|
-
|
244
|
+
getFirstTokens: SourceCode.UnaryNodeCursorWithCountOptions;
|
236
245
|
|
237
|
-
|
246
|
+
getLastToken: SourceCode.UnaryNodeCursorWithSkipOptions;
|
238
247
|
|
239
|
-
|
248
|
+
getLastTokens: SourceCode.UnaryNodeCursorWithCountOptions;
|
240
249
|
|
241
|
-
|
250
|
+
getTokenBefore: SourceCode.UnaryCursorWithSkipOptions;
|
242
251
|
|
243
|
-
|
252
|
+
getTokensBefore: SourceCode.UnaryCursorWithCountOptions;
|
244
253
|
|
245
|
-
|
254
|
+
getTokenAfter: SourceCode.UnaryCursorWithSkipOptions;
|
246
255
|
|
247
|
-
|
256
|
+
getTokensAfter: SourceCode.UnaryCursorWithCountOptions;
|
248
257
|
|
249
|
-
|
258
|
+
getFirstTokenBetween: SourceCode.BinaryCursorWithSkipOptions;
|
250
259
|
|
251
|
-
|
260
|
+
getFirstTokensBetween: SourceCode.BinaryCursorWithCountOptions;
|
252
261
|
|
253
|
-
|
262
|
+
getLastTokenBetween: SourceCode.BinaryCursorWithSkipOptions;
|
254
263
|
|
255
|
-
|
264
|
+
getLastTokensBetween: SourceCode.BinaryCursorWithCountOptions;
|
256
265
|
|
257
|
-
|
266
|
+
getTokensBetween: SourceCode.BinaryCursorWithCountOptions;
|
258
267
|
|
259
|
-
|
260
|
-
|
261
|
-
|
268
|
+
getTokens: ((
|
269
|
+
node: ESTree.Node,
|
270
|
+
beforeCount?: number,
|
271
|
+
afterCount?: number,
|
272
|
+
) => AST.Token[]) &
|
273
|
+
SourceCode.UnaryNodeCursorWithCountOptions;
|
262
274
|
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
275
|
+
commentsExistBetween(
|
276
|
+
left: ESTree.Node | AST.Token | ESTree.Comment,
|
277
|
+
right: ESTree.Node | AST.Token | ESTree.Comment,
|
278
|
+
): boolean;
|
267
279
|
|
268
|
-
|
280
|
+
getCommentsBefore(nodeOrToken: ESTree.Node | AST.Token): ESTree.Comment[];
|
269
281
|
|
270
|
-
|
282
|
+
getCommentsAfter(nodeOrToken: ESTree.Node | AST.Token): ESTree.Comment[];
|
271
283
|
|
272
|
-
|
284
|
+
getCommentsInside(node: ESTree.Node): ESTree.Comment[];
|
273
285
|
|
274
|
-
|
286
|
+
getScope(node: ESTree.Node): Scope.Scope;
|
275
287
|
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
288
|
+
isSpaceBetween(
|
289
|
+
first: ESTree.Node | AST.Token,
|
290
|
+
second: ESTree.Node | AST.Token,
|
291
|
+
): boolean;
|
280
292
|
|
281
|
-
|
293
|
+
markVariableAsUsed(name: string, refNode?: ESTree.Node): boolean;
|
282
294
|
|
283
|
-
|
295
|
+
traverse(): Iterable<TraversalStep>;
|
284
296
|
}
|
285
297
|
|
286
298
|
export namespace SourceCode {
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
299
|
+
interface Config {
|
300
|
+
text: string;
|
301
|
+
ast: AST.Program;
|
302
|
+
parserServices?: ParserServices | undefined;
|
303
|
+
scopeManager?: Scope.ScopeManager | undefined;
|
304
|
+
visitorKeys?: VisitorKeys | undefined;
|
305
|
+
}
|
306
|
+
|
307
|
+
type ParserServices = any;
|
308
|
+
|
309
|
+
interface VisitorKeys {
|
310
|
+
[nodeType: string]: string[];
|
311
|
+
}
|
312
|
+
|
313
|
+
interface UnaryNodeCursorWithSkipOptions {
|
314
|
+
<T extends AST.Token>(
|
315
|
+
node: ESTree.Node,
|
316
|
+
options:
|
317
|
+
| ((token: AST.Token) => token is T)
|
318
|
+
| {
|
319
|
+
filter: (token: AST.Token) => token is T;
|
320
|
+
includeComments?: false | undefined;
|
321
|
+
skip?: number | undefined;
|
322
|
+
},
|
323
|
+
): T | null;
|
324
|
+
<T extends AST.Token | ESTree.Comment>(
|
325
|
+
node: ESTree.Node,
|
326
|
+
options: {
|
327
|
+
filter: (
|
328
|
+
tokenOrComment: AST.Token | ESTree.Comment,
|
329
|
+
) => tokenOrComment is T;
|
330
|
+
includeComments: boolean;
|
331
|
+
skip?: number | undefined;
|
332
|
+
},
|
333
|
+
): T | null;
|
334
|
+
(
|
335
|
+
node: ESTree.Node,
|
336
|
+
options?:
|
337
|
+
| {
|
338
|
+
filter?: ((token: AST.Token) => boolean) | undefined;
|
339
|
+
includeComments?: false | undefined;
|
340
|
+
skip?: number | undefined;
|
341
|
+
}
|
342
|
+
| ((token: AST.Token) => boolean)
|
343
|
+
| number,
|
344
|
+
): AST.Token | null;
|
345
|
+
(
|
346
|
+
node: ESTree.Node,
|
347
|
+
options: {
|
348
|
+
filter?:
|
349
|
+
| ((token: AST.Token | ESTree.Comment) => boolean)
|
350
|
+
| undefined;
|
351
|
+
includeComments: boolean;
|
352
|
+
skip?: number | undefined;
|
353
|
+
},
|
354
|
+
): AST.Token | ESTree.Comment | null;
|
355
|
+
}
|
356
|
+
|
357
|
+
interface UnaryNodeCursorWithCountOptions {
|
358
|
+
<T extends AST.Token>(
|
359
|
+
node: ESTree.Node,
|
360
|
+
options:
|
361
|
+
| ((token: AST.Token) => token is T)
|
362
|
+
| {
|
363
|
+
filter: (token: AST.Token) => token is T;
|
364
|
+
includeComments?: false | undefined;
|
365
|
+
count?: number | undefined;
|
366
|
+
},
|
367
|
+
): T[];
|
368
|
+
<T extends AST.Token | ESTree.Comment>(
|
369
|
+
node: ESTree.Node,
|
370
|
+
options: {
|
371
|
+
filter: (
|
372
|
+
tokenOrComment: AST.Token | ESTree.Comment,
|
373
|
+
) => tokenOrComment is T;
|
374
|
+
includeComments: boolean;
|
375
|
+
count?: number | undefined;
|
376
|
+
},
|
377
|
+
): T[];
|
378
|
+
(
|
379
|
+
node: ESTree.Node,
|
380
|
+
options?:
|
381
|
+
| {
|
382
|
+
filter?: ((token: AST.Token) => boolean) | undefined;
|
383
|
+
includeComments?: false | undefined;
|
384
|
+
count?: number | undefined;
|
385
|
+
}
|
386
|
+
| ((token: AST.Token) => boolean)
|
387
|
+
| number,
|
388
|
+
): AST.Token[];
|
389
|
+
(
|
390
|
+
node: ESTree.Node,
|
391
|
+
options: {
|
392
|
+
filter?:
|
393
|
+
| ((token: AST.Token | ESTree.Comment) => boolean)
|
394
|
+
| undefined;
|
395
|
+
includeComments: boolean;
|
396
|
+
count?: number | undefined;
|
397
|
+
},
|
398
|
+
): Array<AST.Token | ESTree.Comment>;
|
399
|
+
}
|
400
|
+
|
401
|
+
interface UnaryCursorWithSkipOptions {
|
402
|
+
<T extends AST.Token>(
|
403
|
+
node: ESTree.Node | AST.Token | ESTree.Comment,
|
404
|
+
options:
|
405
|
+
| ((token: AST.Token) => token is T)
|
406
|
+
| {
|
407
|
+
filter: (token: AST.Token) => token is T;
|
408
|
+
includeComments?: false | undefined;
|
409
|
+
skip?: number | undefined;
|
410
|
+
},
|
411
|
+
): T | null;
|
412
|
+
<T extends AST.Token | ESTree.Comment>(
|
413
|
+
node: ESTree.Node | AST.Token | ESTree.Comment,
|
414
|
+
options: {
|
415
|
+
filter: (
|
416
|
+
tokenOrComment: AST.Token | ESTree.Comment,
|
417
|
+
) => tokenOrComment is T;
|
418
|
+
includeComments: boolean;
|
419
|
+
skip?: number | undefined;
|
420
|
+
},
|
421
|
+
): T | null;
|
422
|
+
(
|
423
|
+
node: ESTree.Node | AST.Token | ESTree.Comment,
|
424
|
+
options?:
|
425
|
+
| {
|
426
|
+
filter?: ((token: AST.Token) => boolean) | undefined;
|
427
|
+
includeComments?: false | undefined;
|
428
|
+
skip?: number | undefined;
|
429
|
+
}
|
430
|
+
| ((token: AST.Token) => boolean)
|
431
|
+
| number,
|
432
|
+
): AST.Token | null;
|
433
|
+
(
|
434
|
+
node: ESTree.Node | AST.Token | ESTree.Comment,
|
435
|
+
options: {
|
436
|
+
filter?:
|
437
|
+
| ((token: AST.Token | ESTree.Comment) => boolean)
|
438
|
+
| undefined;
|
439
|
+
includeComments: boolean;
|
440
|
+
skip?: number | undefined;
|
441
|
+
},
|
442
|
+
): AST.Token | ESTree.Comment | null;
|
443
|
+
}
|
444
|
+
|
445
|
+
interface UnaryCursorWithCountOptions {
|
446
|
+
<T extends AST.Token>(
|
447
|
+
node: ESTree.Node | AST.Token | ESTree.Comment,
|
448
|
+
options:
|
449
|
+
| ((token: AST.Token) => token is T)
|
450
|
+
| {
|
451
|
+
filter: (token: AST.Token) => token is T;
|
452
|
+
includeComments?: false | undefined;
|
453
|
+
count?: number | undefined;
|
454
|
+
},
|
455
|
+
): T[];
|
456
|
+
<T extends AST.Token | ESTree.Comment>(
|
457
|
+
node: ESTree.Node | AST.Token | ESTree.Comment,
|
458
|
+
options: {
|
459
|
+
filter: (
|
460
|
+
tokenOrComment: AST.Token | ESTree.Comment,
|
461
|
+
) => tokenOrComment is T;
|
462
|
+
includeComments: boolean;
|
463
|
+
count?: number | undefined;
|
464
|
+
},
|
465
|
+
): T[];
|
466
|
+
(
|
467
|
+
node: ESTree.Node | AST.Token | ESTree.Comment,
|
468
|
+
options?:
|
469
|
+
| {
|
470
|
+
filter?: ((token: AST.Token) => boolean) | undefined;
|
471
|
+
includeComments?: false | undefined;
|
472
|
+
count?: number | undefined;
|
473
|
+
}
|
474
|
+
| ((token: AST.Token) => boolean)
|
475
|
+
| number,
|
476
|
+
): AST.Token[];
|
477
|
+
(
|
478
|
+
node: ESTree.Node | AST.Token | ESTree.Comment,
|
479
|
+
options: {
|
480
|
+
filter?:
|
481
|
+
| ((token: AST.Token | ESTree.Comment) => boolean)
|
482
|
+
| undefined;
|
483
|
+
includeComments: boolean;
|
484
|
+
count?: number | undefined;
|
485
|
+
},
|
486
|
+
): Array<AST.Token | ESTree.Comment>;
|
487
|
+
}
|
488
|
+
|
489
|
+
interface BinaryCursorWithSkipOptions {
|
490
|
+
<T extends AST.Token>(
|
491
|
+
left: ESTree.Node | AST.Token | ESTree.Comment,
|
492
|
+
right: ESTree.Node | AST.Token | ESTree.Comment,
|
493
|
+
options:
|
494
|
+
| ((token: AST.Token) => token is T)
|
495
|
+
| {
|
496
|
+
filter: (token: AST.Token) => token is T;
|
497
|
+
includeComments?: false | undefined;
|
498
|
+
skip?: number | undefined;
|
499
|
+
},
|
500
|
+
): T | null;
|
501
|
+
<T extends AST.Token | ESTree.Comment>(
|
502
|
+
left: ESTree.Node | AST.Token | ESTree.Comment,
|
503
|
+
right: ESTree.Node | AST.Token | ESTree.Comment,
|
504
|
+
options: {
|
505
|
+
filter: (
|
506
|
+
tokenOrComment: AST.Token | ESTree.Comment,
|
507
|
+
) => tokenOrComment is T;
|
508
|
+
includeComments: boolean;
|
509
|
+
skip?: number | undefined;
|
510
|
+
},
|
511
|
+
): T | null;
|
512
|
+
(
|
513
|
+
left: ESTree.Node | AST.Token | ESTree.Comment,
|
514
|
+
right: ESTree.Node | AST.Token | ESTree.Comment,
|
515
|
+
options?:
|
516
|
+
| {
|
517
|
+
filter?: ((token: AST.Token) => boolean) | undefined;
|
518
|
+
includeComments?: false | undefined;
|
519
|
+
skip?: number | undefined;
|
520
|
+
}
|
521
|
+
| ((token: AST.Token) => boolean)
|
522
|
+
| number,
|
523
|
+
): AST.Token | null;
|
524
|
+
(
|
525
|
+
left: ESTree.Node | AST.Token | ESTree.Comment,
|
526
|
+
right: ESTree.Node | AST.Token | ESTree.Comment,
|
527
|
+
options: {
|
528
|
+
filter?:
|
529
|
+
| ((token: AST.Token | ESTree.Comment) => boolean)
|
530
|
+
| undefined;
|
531
|
+
includeComments: boolean;
|
532
|
+
skip?: number | undefined;
|
533
|
+
},
|
534
|
+
): AST.Token | ESTree.Comment | null;
|
535
|
+
}
|
536
|
+
|
537
|
+
interface BinaryCursorWithCountOptions {
|
538
|
+
<T extends AST.Token>(
|
539
|
+
left: ESTree.Node | AST.Token | ESTree.Comment,
|
540
|
+
right: ESTree.Node | AST.Token | ESTree.Comment,
|
541
|
+
options:
|
542
|
+
| ((token: AST.Token) => token is T)
|
543
|
+
| {
|
544
|
+
filter: (token: AST.Token) => token is T;
|
545
|
+
includeComments?: false | undefined;
|
546
|
+
count?: number | undefined;
|
547
|
+
},
|
548
|
+
): T[];
|
549
|
+
<T extends AST.Token | ESTree.Comment>(
|
550
|
+
left: ESTree.Node | AST.Token | ESTree.Comment,
|
551
|
+
right: ESTree.Node | AST.Token | ESTree.Comment,
|
552
|
+
options: {
|
553
|
+
filter: (
|
554
|
+
tokenOrComment: AST.Token | ESTree.Comment,
|
555
|
+
) => tokenOrComment is T;
|
556
|
+
includeComments: boolean;
|
557
|
+
count?: number | undefined;
|
558
|
+
},
|
559
|
+
): T[];
|
560
|
+
(
|
561
|
+
left: ESTree.Node | AST.Token | ESTree.Comment,
|
562
|
+
right: ESTree.Node | AST.Token | ESTree.Comment,
|
563
|
+
options?:
|
564
|
+
| {
|
565
|
+
filter?: ((token: AST.Token) => boolean) | undefined;
|
566
|
+
includeComments?: false | undefined;
|
567
|
+
count?: number | undefined;
|
568
|
+
}
|
569
|
+
| ((token: AST.Token) => boolean)
|
570
|
+
| number,
|
571
|
+
): AST.Token[];
|
572
|
+
(
|
573
|
+
left: ESTree.Node | AST.Token | ESTree.Comment,
|
574
|
+
right: ESTree.Node | AST.Token | ESTree.Comment,
|
575
|
+
options: {
|
576
|
+
filter?:
|
577
|
+
| ((token: AST.Token | ESTree.Comment) => boolean)
|
578
|
+
| undefined;
|
579
|
+
includeComments: boolean;
|
580
|
+
count?: number | undefined;
|
581
|
+
},
|
582
|
+
): Array<AST.Token | ESTree.Comment>;
|
583
|
+
}
|
548
584
|
}
|
549
585
|
|
550
586
|
// #endregion
|
551
587
|
|
552
588
|
export namespace Rule {
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
589
|
+
interface RuleModule
|
590
|
+
extends RuleDefinition<{
|
591
|
+
LangOptions: Linter.LanguageOptions;
|
592
|
+
Code: SourceCode;
|
593
|
+
RuleOptions: any[];
|
594
|
+
Visitor: NodeListener;
|
595
|
+
Node: ESTree.Node;
|
596
|
+
MessageIds: string;
|
597
|
+
ExtRuleDocs: {};
|
598
|
+
}> {
|
599
|
+
create(context: RuleContext): NodeListener;
|
600
|
+
}
|
601
|
+
|
602
|
+
type NodeTypes = ESTree.Node["type"];
|
603
|
+
interface NodeListener extends RuleVisitor {
|
604
|
+
ArrayExpression?:
|
605
|
+
| ((node: ESTree.ArrayExpression & NodeParentExtension) => void)
|
606
|
+
| undefined;
|
607
|
+
"ArrayExpression:exit"?:
|
608
|
+
| ((node: ESTree.ArrayExpression & NodeParentExtension) => void)
|
609
|
+
| undefined;
|
610
|
+
ArrayPattern?:
|
611
|
+
| ((node: ESTree.ArrayPattern & NodeParentExtension) => void)
|
612
|
+
| undefined;
|
613
|
+
"ArrayPattern:exit"?:
|
614
|
+
| ((node: ESTree.ArrayPattern & NodeParentExtension) => void)
|
615
|
+
| undefined;
|
616
|
+
ArrowFunctionExpression?:
|
617
|
+
| ((
|
618
|
+
node: ESTree.ArrowFunctionExpression & NodeParentExtension,
|
619
|
+
) => void)
|
620
|
+
| undefined;
|
621
|
+
"ArrowFunctionExpression:exit"?:
|
622
|
+
| ((
|
623
|
+
node: ESTree.ArrowFunctionExpression & NodeParentExtension,
|
624
|
+
) => void)
|
625
|
+
| undefined;
|
626
|
+
AssignmentExpression?:
|
627
|
+
| ((
|
628
|
+
node: ESTree.AssignmentExpression & NodeParentExtension,
|
629
|
+
) => void)
|
630
|
+
| undefined;
|
631
|
+
"AssignmentExpression:exit"?:
|
632
|
+
| ((
|
633
|
+
node: ESTree.AssignmentExpression & NodeParentExtension,
|
634
|
+
) => void)
|
635
|
+
| undefined;
|
636
|
+
AssignmentPattern?:
|
637
|
+
| ((node: ESTree.AssignmentPattern & NodeParentExtension) => void)
|
638
|
+
| undefined;
|
639
|
+
"AssignmentPattern:exit"?:
|
640
|
+
| ((node: ESTree.AssignmentPattern & NodeParentExtension) => void)
|
641
|
+
| undefined;
|
642
|
+
AwaitExpression?:
|
643
|
+
| ((node: ESTree.AwaitExpression & NodeParentExtension) => void)
|
644
|
+
| undefined;
|
645
|
+
"AwaitExpression:exit"?:
|
646
|
+
| ((node: ESTree.AwaitExpression & NodeParentExtension) => void)
|
647
|
+
| undefined;
|
648
|
+
BinaryExpression?:
|
649
|
+
| ((node: ESTree.BinaryExpression & NodeParentExtension) => void)
|
650
|
+
| undefined;
|
651
|
+
"BinaryExpression:exit"?:
|
652
|
+
| ((node: ESTree.BinaryExpression & NodeParentExtension) => void)
|
653
|
+
| undefined;
|
654
|
+
BlockStatement?:
|
655
|
+
| ((node: ESTree.BlockStatement & NodeParentExtension) => void)
|
656
|
+
| undefined;
|
657
|
+
"BlockStatement:exit"?:
|
658
|
+
| ((node: ESTree.BlockStatement & NodeParentExtension) => void)
|
659
|
+
| undefined;
|
660
|
+
BreakStatement?:
|
661
|
+
| ((node: ESTree.BreakStatement & NodeParentExtension) => void)
|
662
|
+
| undefined;
|
663
|
+
"BreakStatement:exit"?:
|
664
|
+
| ((node: ESTree.BreakStatement & NodeParentExtension) => void)
|
665
|
+
| undefined;
|
666
|
+
CallExpression?:
|
667
|
+
| ((node: ESTree.CallExpression & NodeParentExtension) => void)
|
668
|
+
| undefined;
|
669
|
+
"CallExpression:exit"?:
|
670
|
+
| ((node: ESTree.CallExpression & NodeParentExtension) => void)
|
671
|
+
| undefined;
|
672
|
+
CatchClause?:
|
673
|
+
| ((node: ESTree.CatchClause & NodeParentExtension) => void)
|
674
|
+
| undefined;
|
675
|
+
"CatchClause:exit"?:
|
676
|
+
| ((node: ESTree.CatchClause & NodeParentExtension) => void)
|
677
|
+
| undefined;
|
678
|
+
ChainExpression?:
|
679
|
+
| ((node: ESTree.ChainExpression & NodeParentExtension) => void)
|
680
|
+
| undefined;
|
681
|
+
"ChainExpression:exit"?:
|
682
|
+
| ((node: ESTree.ChainExpression & NodeParentExtension) => void)
|
683
|
+
| undefined;
|
684
|
+
ClassBody?:
|
685
|
+
| ((node: ESTree.ClassBody & NodeParentExtension) => void)
|
686
|
+
| undefined;
|
687
|
+
"ClassBody:exit"?:
|
688
|
+
| ((node: ESTree.ClassBody & NodeParentExtension) => void)
|
689
|
+
| undefined;
|
690
|
+
ClassDeclaration?:
|
691
|
+
| ((node: ESTree.ClassDeclaration & NodeParentExtension) => void)
|
692
|
+
| undefined;
|
693
|
+
"ClassDeclaration:exit"?:
|
694
|
+
| ((node: ESTree.ClassDeclaration & NodeParentExtension) => void)
|
695
|
+
| undefined;
|
696
|
+
ClassExpression?:
|
697
|
+
| ((node: ESTree.ClassExpression & NodeParentExtension) => void)
|
698
|
+
| undefined;
|
699
|
+
"ClassExpression:exit"?:
|
700
|
+
| ((node: ESTree.ClassExpression & NodeParentExtension) => void)
|
701
|
+
| undefined;
|
702
|
+
ConditionalExpression?:
|
703
|
+
| ((
|
704
|
+
node: ESTree.ConditionalExpression & NodeParentExtension,
|
705
|
+
) => void)
|
706
|
+
| undefined;
|
707
|
+
"ConditionalExpression:exit"?:
|
708
|
+
| ((
|
709
|
+
node: ESTree.ConditionalExpression & NodeParentExtension,
|
710
|
+
) => void)
|
711
|
+
| undefined;
|
712
|
+
ContinueStatement?:
|
713
|
+
| ((node: ESTree.ContinueStatement & NodeParentExtension) => void)
|
714
|
+
| undefined;
|
715
|
+
"ContinueStatement:exit"?:
|
716
|
+
| ((node: ESTree.ContinueStatement & NodeParentExtension) => void)
|
717
|
+
| undefined;
|
718
|
+
DebuggerStatement?:
|
719
|
+
| ((node: ESTree.DebuggerStatement & NodeParentExtension) => void)
|
720
|
+
| undefined;
|
721
|
+
"DebuggerStatement:exit"?:
|
722
|
+
| ((node: ESTree.DebuggerStatement & NodeParentExtension) => void)
|
723
|
+
| undefined;
|
724
|
+
DoWhileStatement?:
|
725
|
+
| ((node: ESTree.DoWhileStatement & NodeParentExtension) => void)
|
726
|
+
| undefined;
|
727
|
+
"DoWhileStatement:exit"?:
|
728
|
+
| ((node: ESTree.DoWhileStatement & NodeParentExtension) => void)
|
729
|
+
| undefined;
|
730
|
+
EmptyStatement?:
|
731
|
+
| ((node: ESTree.EmptyStatement & NodeParentExtension) => void)
|
732
|
+
| undefined;
|
733
|
+
"EmptyStatement:exit"?:
|
734
|
+
| ((node: ESTree.EmptyStatement & NodeParentExtension) => void)
|
735
|
+
| undefined;
|
736
|
+
ExportAllDeclaration?:
|
737
|
+
| ((
|
738
|
+
node: ESTree.ExportAllDeclaration & NodeParentExtension,
|
739
|
+
) => void)
|
740
|
+
| undefined;
|
741
|
+
"ExportAllDeclaration:exit"?:
|
742
|
+
| ((
|
743
|
+
node: ESTree.ExportAllDeclaration & NodeParentExtension,
|
744
|
+
) => void)
|
745
|
+
| undefined;
|
746
|
+
ExportDefaultDeclaration?:
|
747
|
+
| ((
|
748
|
+
node: ESTree.ExportDefaultDeclaration & NodeParentExtension,
|
749
|
+
) => void)
|
750
|
+
| undefined;
|
751
|
+
"ExportDefaultDeclaration:exit"?:
|
752
|
+
| ((
|
753
|
+
node: ESTree.ExportDefaultDeclaration & NodeParentExtension,
|
754
|
+
) => void)
|
755
|
+
| undefined;
|
756
|
+
ExportNamedDeclaration?:
|
757
|
+
| ((
|
758
|
+
node: ESTree.ExportNamedDeclaration & NodeParentExtension,
|
759
|
+
) => void)
|
760
|
+
| undefined;
|
761
|
+
"ExportNamedDeclaration:exit"?:
|
762
|
+
| ((
|
763
|
+
node: ESTree.ExportNamedDeclaration & NodeParentExtension,
|
764
|
+
) => void)
|
765
|
+
| undefined;
|
766
|
+
ExportSpecifier?:
|
767
|
+
| ((node: ESTree.ExportSpecifier & NodeParentExtension) => void)
|
768
|
+
| undefined;
|
769
|
+
"ExportSpecifier:exit"?:
|
770
|
+
| ((node: ESTree.ExportSpecifier & NodeParentExtension) => void)
|
771
|
+
| undefined;
|
772
|
+
ExpressionStatement?:
|
773
|
+
| ((node: ESTree.ExpressionStatement & NodeParentExtension) => void)
|
774
|
+
| undefined;
|
775
|
+
"ExpressionStatement:exit"?:
|
776
|
+
| ((node: ESTree.ExpressionStatement & NodeParentExtension) => void)
|
777
|
+
| undefined;
|
778
|
+
ForInStatement?:
|
779
|
+
| ((node: ESTree.ForInStatement & NodeParentExtension) => void)
|
780
|
+
| undefined;
|
781
|
+
"ForInStatement:exit"?:
|
782
|
+
| ((node: ESTree.ForInStatement & NodeParentExtension) => void)
|
783
|
+
| undefined;
|
784
|
+
ForOfStatement?:
|
785
|
+
| ((node: ESTree.ForOfStatement & NodeParentExtension) => void)
|
786
|
+
| undefined;
|
787
|
+
"ForOfStatement:exit"?:
|
788
|
+
| ((node: ESTree.ForOfStatement & NodeParentExtension) => void)
|
789
|
+
| undefined;
|
790
|
+
ForStatement?:
|
791
|
+
| ((node: ESTree.ForStatement & NodeParentExtension) => void)
|
792
|
+
| undefined;
|
793
|
+
"ForStatement:exit"?:
|
794
|
+
| ((node: ESTree.ForStatement & NodeParentExtension) => void)
|
795
|
+
| undefined;
|
796
|
+
FunctionDeclaration?:
|
797
|
+
| ((node: ESTree.FunctionDeclaration & NodeParentExtension) => void)
|
798
|
+
| undefined;
|
799
|
+
"FunctionDeclaration:exit"?:
|
800
|
+
| ((node: ESTree.FunctionDeclaration & NodeParentExtension) => void)
|
801
|
+
| undefined;
|
802
|
+
FunctionExpression?:
|
803
|
+
| ((node: ESTree.FunctionExpression & NodeParentExtension) => void)
|
804
|
+
| undefined;
|
805
|
+
"FunctionExpression:exit"?:
|
806
|
+
| ((node: ESTree.FunctionExpression & NodeParentExtension) => void)
|
807
|
+
| undefined;
|
808
|
+
Identifier?:
|
809
|
+
| ((node: ESTree.Identifier & NodeParentExtension) => void)
|
810
|
+
| undefined;
|
811
|
+
"Identifier:exit"?:
|
812
|
+
| ((node: ESTree.Identifier & NodeParentExtension) => void)
|
813
|
+
| undefined;
|
814
|
+
IfStatement?:
|
815
|
+
| ((node: ESTree.IfStatement & NodeParentExtension) => void)
|
816
|
+
| undefined;
|
817
|
+
"IfStatement:exit"?:
|
818
|
+
| ((node: ESTree.IfStatement & NodeParentExtension) => void)
|
819
|
+
| undefined;
|
820
|
+
ImportDeclaration?:
|
821
|
+
| ((node: ESTree.ImportDeclaration & NodeParentExtension) => void)
|
822
|
+
| undefined;
|
823
|
+
"ImportDeclaration:exit"?:
|
824
|
+
| ((node: ESTree.ImportDeclaration & NodeParentExtension) => void)
|
825
|
+
| undefined;
|
826
|
+
ImportDefaultSpecifier?:
|
827
|
+
| ((
|
828
|
+
node: ESTree.ImportDefaultSpecifier & NodeParentExtension,
|
829
|
+
) => void)
|
830
|
+
| undefined;
|
831
|
+
"ImportDefaultSpecifier:exit"?:
|
832
|
+
| ((
|
833
|
+
node: ESTree.ImportDefaultSpecifier & NodeParentExtension,
|
834
|
+
) => void)
|
835
|
+
| undefined;
|
836
|
+
ImportExpression?:
|
837
|
+
| ((node: ESTree.ImportExpression & NodeParentExtension) => void)
|
838
|
+
| undefined;
|
839
|
+
"ImportExpression:exit"?:
|
840
|
+
| ((node: ESTree.ImportExpression & NodeParentExtension) => void)
|
841
|
+
| undefined;
|
842
|
+
ImportNamespaceSpecifier?:
|
843
|
+
| ((
|
844
|
+
node: ESTree.ImportNamespaceSpecifier & NodeParentExtension,
|
845
|
+
) => void)
|
846
|
+
| undefined;
|
847
|
+
"ImportNamespaceSpecifier:exit"?:
|
848
|
+
| ((
|
849
|
+
node: ESTree.ImportNamespaceSpecifier & NodeParentExtension,
|
850
|
+
) => void)
|
851
|
+
| undefined;
|
852
|
+
ImportSpecifier?:
|
853
|
+
| ((node: ESTree.ImportSpecifier & NodeParentExtension) => void)
|
854
|
+
| undefined;
|
855
|
+
"ImportSpecifier:exit"?:
|
856
|
+
| ((node: ESTree.ImportSpecifier & NodeParentExtension) => void)
|
857
|
+
| undefined;
|
858
|
+
LabeledStatement?:
|
859
|
+
| ((node: ESTree.LabeledStatement & NodeParentExtension) => void)
|
860
|
+
| undefined;
|
861
|
+
"LabeledStatement:exit"?:
|
862
|
+
| ((node: ESTree.LabeledStatement & NodeParentExtension) => void)
|
863
|
+
| undefined;
|
864
|
+
Literal?:
|
865
|
+
| ((node: ESTree.Literal & NodeParentExtension) => void)
|
866
|
+
| undefined;
|
867
|
+
"Literal:exit"?:
|
868
|
+
| ((node: ESTree.Literal & NodeParentExtension) => void)
|
869
|
+
| undefined;
|
870
|
+
LogicalExpression?:
|
871
|
+
| ((node: ESTree.LogicalExpression & NodeParentExtension) => void)
|
872
|
+
| undefined;
|
873
|
+
"LogicalExpression:exit"?:
|
874
|
+
| ((node: ESTree.LogicalExpression & NodeParentExtension) => void)
|
875
|
+
| undefined;
|
876
|
+
MemberExpression?:
|
877
|
+
| ((node: ESTree.MemberExpression & NodeParentExtension) => void)
|
878
|
+
| undefined;
|
879
|
+
"MemberExpression:exit"?:
|
880
|
+
| ((node: ESTree.MemberExpression & NodeParentExtension) => void)
|
881
|
+
| undefined;
|
882
|
+
MetaProperty?:
|
883
|
+
| ((node: ESTree.MetaProperty & NodeParentExtension) => void)
|
884
|
+
| undefined;
|
885
|
+
"MetaProperty:exit"?:
|
886
|
+
| ((node: ESTree.MetaProperty & NodeParentExtension) => void)
|
887
|
+
| undefined;
|
888
|
+
MethodDefinition?:
|
889
|
+
| ((node: ESTree.MethodDefinition & NodeParentExtension) => void)
|
890
|
+
| undefined;
|
891
|
+
"MethodDefinition:exit"?:
|
892
|
+
| ((node: ESTree.MethodDefinition & NodeParentExtension) => void)
|
893
|
+
| undefined;
|
894
|
+
NewExpression?:
|
895
|
+
| ((node: ESTree.NewExpression & NodeParentExtension) => void)
|
896
|
+
| undefined;
|
897
|
+
"NewExpression:exit"?:
|
898
|
+
| ((node: ESTree.NewExpression & NodeParentExtension) => void)
|
899
|
+
| undefined;
|
900
|
+
ObjectExpression?:
|
901
|
+
| ((node: ESTree.ObjectExpression & NodeParentExtension) => void)
|
902
|
+
| undefined;
|
903
|
+
"ObjectExpression:exit"?:
|
904
|
+
| ((node: ESTree.ObjectExpression & NodeParentExtension) => void)
|
905
|
+
| undefined;
|
906
|
+
ObjectPattern?:
|
907
|
+
| ((node: ESTree.ObjectPattern & NodeParentExtension) => void)
|
908
|
+
| undefined;
|
909
|
+
"ObjectPattern:exit"?:
|
910
|
+
| ((node: ESTree.ObjectPattern & NodeParentExtension) => void)
|
911
|
+
| undefined;
|
912
|
+
PrivateIdentifier?:
|
913
|
+
| ((node: ESTree.PrivateIdentifier & NodeParentExtension) => void)
|
914
|
+
| undefined;
|
915
|
+
"PrivateIdentifier:exit"?:
|
916
|
+
| ((node: ESTree.PrivateIdentifier & NodeParentExtension) => void)
|
917
|
+
| undefined;
|
918
|
+
Program?: ((node: ESTree.Program) => void) | undefined;
|
919
|
+
"Program:exit"?: ((node: ESTree.Program) => void) | undefined;
|
920
|
+
Property?:
|
921
|
+
| ((node: ESTree.Property & NodeParentExtension) => void)
|
922
|
+
| undefined;
|
923
|
+
"Property:exit"?:
|
924
|
+
| ((node: ESTree.Property & NodeParentExtension) => void)
|
925
|
+
| undefined;
|
926
|
+
PropertyDefinition?:
|
927
|
+
| ((node: ESTree.PropertyDefinition & NodeParentExtension) => void)
|
928
|
+
| undefined;
|
929
|
+
"PropertyDefinition:exit"?:
|
930
|
+
| ((node: ESTree.PropertyDefinition & NodeParentExtension) => void)
|
931
|
+
| undefined;
|
932
|
+
RestElement?:
|
933
|
+
| ((node: ESTree.RestElement & NodeParentExtension) => void)
|
934
|
+
| undefined;
|
935
|
+
"RestElement:exit"?:
|
936
|
+
| ((node: ESTree.RestElement & NodeParentExtension) => void)
|
937
|
+
| undefined;
|
938
|
+
ReturnStatement?:
|
939
|
+
| ((node: ESTree.ReturnStatement & NodeParentExtension) => void)
|
940
|
+
| undefined;
|
941
|
+
"ReturnStatement:exit"?:
|
942
|
+
| ((node: ESTree.ReturnStatement & NodeParentExtension) => void)
|
943
|
+
| undefined;
|
944
|
+
SequenceExpression?:
|
945
|
+
| ((node: ESTree.SequenceExpression & NodeParentExtension) => void)
|
946
|
+
| undefined;
|
947
|
+
"SequenceExpression:exit"?:
|
948
|
+
| ((node: ESTree.SequenceExpression & NodeParentExtension) => void)
|
949
|
+
| undefined;
|
950
|
+
SpreadElement?:
|
951
|
+
| ((node: ESTree.SpreadElement & NodeParentExtension) => void)
|
952
|
+
| undefined;
|
953
|
+
"SpreadElement:exit"?:
|
954
|
+
| ((node: ESTree.SpreadElement & NodeParentExtension) => void)
|
955
|
+
| undefined;
|
956
|
+
StaticBlock?:
|
957
|
+
| ((node: ESTree.StaticBlock & NodeParentExtension) => void)
|
958
|
+
| undefined;
|
959
|
+
"StaticBlock:exit"?:
|
960
|
+
| ((node: ESTree.StaticBlock & NodeParentExtension) => void)
|
961
|
+
| undefined;
|
962
|
+
Super?:
|
963
|
+
| ((node: ESTree.Super & NodeParentExtension) => void)
|
964
|
+
| undefined;
|
965
|
+
"Super:exit"?:
|
966
|
+
| ((node: ESTree.Super & NodeParentExtension) => void)
|
967
|
+
| undefined;
|
968
|
+
SwitchCase?:
|
969
|
+
| ((node: ESTree.SwitchCase & NodeParentExtension) => void)
|
970
|
+
| undefined;
|
971
|
+
"SwitchCase:exit"?:
|
972
|
+
| ((node: ESTree.SwitchCase & NodeParentExtension) => void)
|
973
|
+
| undefined;
|
974
|
+
SwitchStatement?:
|
975
|
+
| ((node: ESTree.SwitchStatement & NodeParentExtension) => void)
|
976
|
+
| undefined;
|
977
|
+
"SwitchStatement:exit"?:
|
978
|
+
| ((node: ESTree.SwitchStatement & NodeParentExtension) => void)
|
979
|
+
| undefined;
|
980
|
+
TaggedTemplateExpression?:
|
981
|
+
| ((
|
982
|
+
node: ESTree.TaggedTemplateExpression & NodeParentExtension,
|
983
|
+
) => void)
|
984
|
+
| undefined;
|
985
|
+
"TaggedTemplateExpression:exit"?:
|
986
|
+
| ((
|
987
|
+
node: ESTree.TaggedTemplateExpression & NodeParentExtension,
|
988
|
+
) => void)
|
989
|
+
| undefined;
|
990
|
+
TemplateElement?:
|
991
|
+
| ((node: ESTree.TemplateElement & NodeParentExtension) => void)
|
992
|
+
| undefined;
|
993
|
+
"TemplateElement:exit"?:
|
994
|
+
| ((node: ESTree.TemplateElement & NodeParentExtension) => void)
|
995
|
+
| undefined;
|
996
|
+
TemplateLiteral?:
|
997
|
+
| ((node: ESTree.TemplateLiteral & NodeParentExtension) => void)
|
998
|
+
| undefined;
|
999
|
+
"TemplateLiteral:exit"?:
|
1000
|
+
| ((node: ESTree.TemplateLiteral & NodeParentExtension) => void)
|
1001
|
+
| undefined;
|
1002
|
+
ThisExpression?:
|
1003
|
+
| ((node: ESTree.ThisExpression & NodeParentExtension) => void)
|
1004
|
+
| undefined;
|
1005
|
+
"ThisExpression:exit"?:
|
1006
|
+
| ((node: ESTree.ThisExpression & NodeParentExtension) => void)
|
1007
|
+
| undefined;
|
1008
|
+
ThrowStatement?:
|
1009
|
+
| ((node: ESTree.ThrowStatement & NodeParentExtension) => void)
|
1010
|
+
| undefined;
|
1011
|
+
"ThrowStatement:exit"?:
|
1012
|
+
| ((node: ESTree.ThrowStatement & NodeParentExtension) => void)
|
1013
|
+
| undefined;
|
1014
|
+
TryStatement?:
|
1015
|
+
| ((node: ESTree.TryStatement & NodeParentExtension) => void)
|
1016
|
+
| undefined;
|
1017
|
+
"TryStatement:exit"?:
|
1018
|
+
| ((node: ESTree.TryStatement & NodeParentExtension) => void)
|
1019
|
+
| undefined;
|
1020
|
+
UnaryExpression?:
|
1021
|
+
| ((node: ESTree.UnaryExpression & NodeParentExtension) => void)
|
1022
|
+
| undefined;
|
1023
|
+
"UnaryExpression:exit"?:
|
1024
|
+
| ((node: ESTree.UnaryExpression & NodeParentExtension) => void)
|
1025
|
+
| undefined;
|
1026
|
+
UpdateExpression?:
|
1027
|
+
| ((node: ESTree.UpdateExpression & NodeParentExtension) => void)
|
1028
|
+
| undefined;
|
1029
|
+
"UpdateExpression:exit"?:
|
1030
|
+
| ((node: ESTree.UpdateExpression & NodeParentExtension) => void)
|
1031
|
+
| undefined;
|
1032
|
+
VariableDeclaration?:
|
1033
|
+
| ((node: ESTree.VariableDeclaration & NodeParentExtension) => void)
|
1034
|
+
| undefined;
|
1035
|
+
"VariableDeclaration:exit"?:
|
1036
|
+
| ((node: ESTree.VariableDeclaration & NodeParentExtension) => void)
|
1037
|
+
| undefined;
|
1038
|
+
VariableDeclarator?:
|
1039
|
+
| ((node: ESTree.VariableDeclarator & NodeParentExtension) => void)
|
1040
|
+
| undefined;
|
1041
|
+
"VariableDeclarator:exit"?:
|
1042
|
+
| ((node: ESTree.VariableDeclarator & NodeParentExtension) => void)
|
1043
|
+
| undefined;
|
1044
|
+
WhileStatement?:
|
1045
|
+
| ((node: ESTree.WhileStatement & NodeParentExtension) => void)
|
1046
|
+
| undefined;
|
1047
|
+
"WhileStatement:exit"?:
|
1048
|
+
| ((node: ESTree.WhileStatement & NodeParentExtension) => void)
|
1049
|
+
| undefined;
|
1050
|
+
WithStatement?:
|
1051
|
+
| ((node: ESTree.WithStatement & NodeParentExtension) => void)
|
1052
|
+
| undefined;
|
1053
|
+
"WithStatement:exit"?:
|
1054
|
+
| ((node: ESTree.WithStatement & NodeParentExtension) => void)
|
1055
|
+
| undefined;
|
1056
|
+
YieldExpression?:
|
1057
|
+
| ((node: ESTree.YieldExpression & NodeParentExtension) => void)
|
1058
|
+
| undefined;
|
1059
|
+
"YieldExpression:exit"?:
|
1060
|
+
| ((node: ESTree.YieldExpression & NodeParentExtension) => void)
|
1061
|
+
| undefined;
|
1062
|
+
}
|
1063
|
+
|
1064
|
+
interface NodeParentExtension {
|
1065
|
+
parent: Node;
|
1066
|
+
}
|
1067
|
+
type Node = ESTree.Node & NodeParentExtension;
|
1068
|
+
|
1069
|
+
interface RuleListener extends NodeListener {
|
1070
|
+
onCodePathStart?(codePath: CodePath, node: Node): void;
|
1071
|
+
|
1072
|
+
onCodePathEnd?(codePath: CodePath, node: Node): void;
|
1073
|
+
|
1074
|
+
onCodePathSegmentStart?(segment: CodePathSegment, node: Node): void;
|
1075
|
+
|
1076
|
+
onCodePathSegmentEnd?(segment: CodePathSegment, node: Node): void;
|
1077
|
+
|
1078
|
+
onCodePathSegmentLoop?(
|
1079
|
+
fromSegment: CodePathSegment,
|
1080
|
+
toSegment: CodePathSegment,
|
1081
|
+
node: Node,
|
1082
|
+
): void;
|
1083
|
+
|
1084
|
+
[key: string]:
|
1085
|
+
| ((codePath: CodePath, node: Node) => void)
|
1086
|
+
| ((segment: CodePathSegment, node: Node) => void)
|
1087
|
+
| ((
|
1088
|
+
fromSegment: CodePathSegment,
|
1089
|
+
toSegment: CodePathSegment,
|
1090
|
+
node: Node,
|
1091
|
+
) => void)
|
1092
|
+
| ((node: Node) => void)
|
1093
|
+
| NodeListener[keyof NodeListener]
|
1094
|
+
| undefined;
|
1095
|
+
}
|
1096
|
+
|
1097
|
+
type CodePathOrigin =
|
1098
|
+
| "program"
|
1099
|
+
| "function"
|
1100
|
+
| "class-field-initializer"
|
1101
|
+
| "class-static-block";
|
1102
|
+
|
1103
|
+
interface CodePath {
|
1104
|
+
id: string;
|
1105
|
+
origin: CodePathOrigin;
|
1106
|
+
initialSegment: CodePathSegment;
|
1107
|
+
finalSegments: CodePathSegment[];
|
1108
|
+
returnedSegments: CodePathSegment[];
|
1109
|
+
thrownSegments: CodePathSegment[];
|
1110
|
+
upper: CodePath | null;
|
1111
|
+
childCodePaths: CodePath[];
|
1112
|
+
}
|
1113
|
+
|
1114
|
+
interface CodePathSegment {
|
1115
|
+
id: string;
|
1116
|
+
nextSegments: CodePathSegment[];
|
1117
|
+
prevSegments: CodePathSegment[];
|
1118
|
+
reachable: boolean;
|
1119
|
+
}
|
1120
|
+
|
1121
|
+
interface RuleMetaData {
|
1122
|
+
/** Properties often used for documentation generation and tooling. */
|
1123
|
+
docs?:
|
1124
|
+
| {
|
1125
|
+
/** Provides a short description of the rule. Commonly used when generating lists of rules. */
|
1126
|
+
description?: string | undefined;
|
1127
|
+
/** Historically used by some plugins that divide rules into categories in their documentation. */
|
1128
|
+
category?: string | undefined;
|
1129
|
+
/** Historically used by some plugins to indicate a rule belongs in their `recommended` configuration. */
|
1130
|
+
recommended?: boolean | undefined;
|
1131
|
+
/** Specifies the URL at which the full documentation can be accessed. Code editors often use this to provide a helpful link on highlighted rule violations. */
|
1132
|
+
url?: string | undefined;
|
1133
|
+
}
|
1134
|
+
| undefined;
|
1135
|
+
/** Violation and suggestion messages. */
|
1136
|
+
messages?: { [messageId: string]: string } | undefined;
|
1137
|
+
/**
|
1138
|
+
* Specifies if the `--fix` option on the command line automatically fixes problems reported by the rule.
|
1139
|
+
* Mandatory for fixable rules.
|
1140
|
+
*/
|
1141
|
+
fixable?: "code" | "whitespace" | undefined;
|
1142
|
+
/**
|
1143
|
+
* Specifies the [options](https://eslint.org/docs/latest/extend/custom-rules#options-schemas)
|
1144
|
+
* so ESLint can prevent invalid [rule configurations](https://eslint.org/docs/latest/use/configure/rules#configuring-rules).
|
1145
|
+
* Mandatory for rules with options.
|
1146
|
+
*/
|
1147
|
+
schema?: JSONSchema4 | JSONSchema4[] | false | undefined;
|
1148
|
+
|
1149
|
+
/** Any default options to be recursively merged on top of any user-provided options. */
|
1150
|
+
defaultOptions?: unknown[];
|
1151
|
+
|
1152
|
+
/** Indicates whether the rule has been deprecated or provides additional metadata about the deprecation. Omit if not deprecated. */
|
1153
|
+
deprecated?: boolean | DeprecatedInfo | undefined;
|
1154
|
+
/**
|
1155
|
+
* @deprecated Use deprecated.replacedBy instead.
|
1156
|
+
* The name of the rule(s) this rule was replaced by, if it was deprecated.
|
1157
|
+
*/
|
1158
|
+
replacedBy?: readonly string[];
|
1159
|
+
|
1160
|
+
/**
|
1161
|
+
* Indicates the type of rule:
|
1162
|
+
* - `"problem"` means the rule is identifying code that either will cause an error or may cause a confusing behavior. Developers should consider this a high priority to resolve.
|
1163
|
+
* - `"suggestion"` means the rule is identifying something that could be done in a better way but no errors will occur if the code isn’t changed.
|
1164
|
+
* - `"layout"` means the rule cares primarily about whitespace, semicolons, commas, and parentheses,
|
1165
|
+
* all the parts of the program that determine how the code looks rather than how it executes.
|
1166
|
+
* These rules work on parts of the code that aren’t specified in the AST.
|
1167
|
+
*/
|
1168
|
+
type?: "problem" | "suggestion" | "layout" | undefined;
|
1169
|
+
/**
|
1170
|
+
* Specifies whether the rule can return suggestions (defaults to `false` if omitted).
|
1171
|
+
* Mandatory for rules that provide suggestions.
|
1172
|
+
*/
|
1173
|
+
hasSuggestions?: boolean | undefined;
|
1174
|
+
}
|
1175
|
+
|
1176
|
+
interface RuleContext
|
1177
|
+
extends CoreRuleContext<
|
1178
|
+
RuleContextTypeOptions & {
|
1179
|
+
LangOptions: Linter.LanguageOptions;
|
1180
|
+
Code: SourceCode;
|
1181
|
+
Node: ESTree.Node;
|
1182
|
+
}
|
1183
|
+
> {
|
1184
|
+
/*
|
1185
|
+
* Need to extend the `RuleContext` interface to include the
|
1186
|
+
* deprecated methods that have not yet been removed.
|
1187
|
+
* TODO: Remove in v10.0.0.
|
1188
|
+
*/
|
1189
|
+
|
1190
|
+
/** @deprecated Use `sourceCode.getAncestors()` instead */
|
1191
|
+
getAncestors(): ESTree.Node[];
|
1192
|
+
|
1193
|
+
/** @deprecated Use `sourceCode.getDeclaredVariables()` instead */
|
1194
|
+
getDeclaredVariables(node: ESTree.Node): Scope.Variable[];
|
1195
|
+
|
1196
|
+
/** @deprecated Use `sourceCode.getScope()` instead */
|
1197
|
+
getScope(): Scope.Scope;
|
1198
|
+
|
1199
|
+
/** @deprecated Use `sourceCode.markVariableAsUsed()` instead */
|
1200
|
+
markVariableAsUsed(name: string): boolean;
|
1201
|
+
}
|
1202
|
+
|
1203
|
+
type ReportFixer = (
|
1204
|
+
fixer: RuleFixer,
|
1205
|
+
) => null | Fix | IterableIterator<Fix> | Fix[];
|
1206
|
+
|
1207
|
+
interface ReportDescriptorOptionsBase {
|
1208
|
+
data?: { [key: string]: string };
|
1209
|
+
|
1210
|
+
fix?: null | ReportFixer;
|
1211
|
+
}
|
1212
|
+
|
1213
|
+
interface SuggestionReportOptions {
|
1214
|
+
data?: { [key: string]: string };
|
1215
|
+
|
1216
|
+
fix: ReportFixer;
|
1217
|
+
}
|
1218
|
+
|
1219
|
+
type SuggestionDescriptorMessage = { desc: string } | { messageId: string };
|
1220
|
+
type SuggestionReportDescriptor = SuggestionDescriptorMessage &
|
1221
|
+
SuggestionReportOptions;
|
1222
|
+
|
1223
|
+
interface ReportDescriptorOptions extends ReportDescriptorOptionsBase {
|
1224
|
+
suggest?: SuggestionReportDescriptor[] | null | undefined;
|
1225
|
+
}
|
1226
|
+
|
1227
|
+
type ReportDescriptor = ReportDescriptorMessage &
|
1228
|
+
ReportDescriptorLocation &
|
1229
|
+
ReportDescriptorOptions;
|
1230
|
+
type ReportDescriptorMessage = { message: string } | { messageId: string };
|
1231
|
+
type ReportDescriptorLocation =
|
1232
|
+
| { node: ESTree.Node }
|
1233
|
+
| { loc: AST.SourceLocation | { line: number; column: number } };
|
1234
|
+
|
1235
|
+
interface RuleFixer {
|
1236
|
+
insertTextAfter(
|
1237
|
+
nodeOrToken: ESTree.Node | AST.Token,
|
1238
|
+
text: string,
|
1239
|
+
): Fix;
|
1240
|
+
|
1241
|
+
insertTextAfterRange(range: AST.Range, text: string): Fix;
|
1242
|
+
|
1243
|
+
insertTextBefore(
|
1244
|
+
nodeOrToken: ESTree.Node | AST.Token,
|
1245
|
+
text: string,
|
1246
|
+
): Fix;
|
1247
|
+
|
1248
|
+
insertTextBeforeRange(range: AST.Range, text: string): Fix;
|
1249
|
+
|
1250
|
+
remove(nodeOrToken: ESTree.Node | AST.Token): Fix;
|
1251
|
+
|
1252
|
+
removeRange(range: AST.Range): Fix;
|
1253
|
+
|
1254
|
+
replaceText(nodeOrToken: ESTree.Node | AST.Token, text: string): Fix;
|
1255
|
+
|
1256
|
+
replaceTextRange(range: AST.Range, text: string): Fix;
|
1257
|
+
}
|
1258
|
+
|
1259
|
+
interface Fix {
|
1260
|
+
range: AST.Range;
|
1261
|
+
text: string;
|
1262
|
+
}
|
864
1263
|
}
|
865
1264
|
|
866
1265
|
// #region Linter
|
867
1266
|
|
868
1267
|
export class Linter {
|
869
|
-
|
1268
|
+
static readonly version: string;
|
870
1269
|
|
871
|
-
|
1270
|
+
version: string;
|
872
1271
|
|
873
|
-
|
1272
|
+
constructor(options?: {
|
1273
|
+
cwd?: string | undefined;
|
1274
|
+
configType?: "flat" | "eslintrc";
|
1275
|
+
});
|
874
1276
|
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
1277
|
+
verify(
|
1278
|
+
code: SourceCode | string,
|
1279
|
+
config: Linter.LegacyConfig | Linter.Config | Linter.Config[],
|
1280
|
+
filename?: string,
|
1281
|
+
): Linter.LintMessage[];
|
1282
|
+
verify(
|
1283
|
+
code: SourceCode | string,
|
1284
|
+
config: Linter.LegacyConfig | Linter.Config | Linter.Config[],
|
1285
|
+
options: Linter.LintOptions,
|
1286
|
+
): Linter.LintMessage[];
|
885
1287
|
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
1288
|
+
verifyAndFix(
|
1289
|
+
code: string,
|
1290
|
+
config: Linter.LegacyConfig | Linter.Config | Linter.Config[],
|
1291
|
+
filename?: string,
|
1292
|
+
): Linter.FixReport;
|
1293
|
+
verifyAndFix(
|
1294
|
+
code: string,
|
1295
|
+
config: Linter.LegacyConfig | Linter.Config | Linter.Config[],
|
1296
|
+
options: Linter.FixOptions,
|
1297
|
+
): Linter.FixReport;
|
896
1298
|
|
897
|
-
|
1299
|
+
getSourceCode(): SourceCode;
|
898
1300
|
|
899
|
-
|
1301
|
+
defineRule(name: string, rule: Rule.RuleModule): void;
|
900
1302
|
|
901
|
-
|
1303
|
+
defineRules(rules: { [name: string]: Rule.RuleModule }): void;
|
902
1304
|
|
903
|
-
|
1305
|
+
getRules(): Map<string, Rule.RuleModule>;
|
904
1306
|
|
905
|
-
|
1307
|
+
defineParser(name: string, parser: Linter.Parser): void;
|
906
1308
|
|
907
|
-
|
1309
|
+
getTimes(): Linter.Stats["times"];
|
908
1310
|
|
909
|
-
|
1311
|
+
getFixPassCount(): Linter.Stats["fixPasses"];
|
910
1312
|
}
|
911
1313
|
|
912
1314
|
export namespace Linter {
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1354
|
-
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1397
|
-
|
1398
|
-
|
1399
|
-
|
1400
|
-
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
1411
|
-
|
1315
|
+
/**
|
1316
|
+
* The numeric severity level for a rule.
|
1317
|
+
*
|
1318
|
+
* - `0` means off.
|
1319
|
+
* - `1` means warn.
|
1320
|
+
* - `2` means error.
|
1321
|
+
*
|
1322
|
+
* @see [Rule Severities](https://eslint.org/docs/latest/use/configure/rules#rule-severities)
|
1323
|
+
*/
|
1324
|
+
type Severity = 0 | 1 | 2;
|
1325
|
+
|
1326
|
+
/**
|
1327
|
+
* The human readable severity level for a rule.
|
1328
|
+
*
|
1329
|
+
* @see [Rule Severities](https://eslint.org/docs/latest/use/configure/rules#rule-severities)
|
1330
|
+
*/
|
1331
|
+
type StringSeverity = "off" | "warn" | "error";
|
1332
|
+
|
1333
|
+
/**
|
1334
|
+
* The numeric or human readable severity level for a rule.
|
1335
|
+
*
|
1336
|
+
* @see [Rule Severities](https://eslint.org/docs/latest/use/configure/rules#rule-severities)
|
1337
|
+
*/
|
1338
|
+
type RuleSeverity = Severity | StringSeverity;
|
1339
|
+
|
1340
|
+
/**
|
1341
|
+
* An array containing the rule severity level, followed by the rule options.
|
1342
|
+
*
|
1343
|
+
* @see [Rules](https://eslint.org/docs/latest/use/configure/rules)
|
1344
|
+
*/
|
1345
|
+
type RuleSeverityAndOptions<Options extends any[] = any[]> = [
|
1346
|
+
RuleSeverity,
|
1347
|
+
...Partial<Options>,
|
1348
|
+
];
|
1349
|
+
|
1350
|
+
/**
|
1351
|
+
* The severity level for the rule or an array containing the rule severity level, followed by the rule options.
|
1352
|
+
*
|
1353
|
+
* @see [Rules](https://eslint.org/docs/latest/use/configure/rules)
|
1354
|
+
*/
|
1355
|
+
type RuleEntry<Options extends any[] = any[]> =
|
1356
|
+
| RuleSeverity
|
1357
|
+
| RuleSeverityAndOptions<Options>;
|
1358
|
+
|
1359
|
+
/**
|
1360
|
+
* The rules config object is a key/value map of rule names and their severity and options.
|
1361
|
+
*/
|
1362
|
+
interface RulesRecord {
|
1363
|
+
[rule: string]: RuleEntry;
|
1364
|
+
}
|
1365
|
+
|
1366
|
+
/**
|
1367
|
+
* A configuration object that may have a `rules` block.
|
1368
|
+
*/
|
1369
|
+
interface HasRules<Rules extends RulesRecord = RulesRecord> {
|
1370
|
+
rules?: Partial<Rules> | undefined;
|
1371
|
+
}
|
1372
|
+
|
1373
|
+
/**
|
1374
|
+
* The ECMAScript version of the code being linted.
|
1375
|
+
*/
|
1376
|
+
type EcmaVersion =
|
1377
|
+
| 3
|
1378
|
+
| 5
|
1379
|
+
| 6
|
1380
|
+
| 7
|
1381
|
+
| 8
|
1382
|
+
| 9
|
1383
|
+
| 10
|
1384
|
+
| 11
|
1385
|
+
| 12
|
1386
|
+
| 13
|
1387
|
+
| 14
|
1388
|
+
| 15
|
1389
|
+
| 16
|
1390
|
+
| 2015
|
1391
|
+
| 2016
|
1392
|
+
| 2017
|
1393
|
+
| 2018
|
1394
|
+
| 2019
|
1395
|
+
| 2020
|
1396
|
+
| 2021
|
1397
|
+
| 2022
|
1398
|
+
| 2023
|
1399
|
+
| 2024
|
1400
|
+
| 2025
|
1401
|
+
| "latest";
|
1402
|
+
|
1403
|
+
/**
|
1404
|
+
* The type of JavaScript source code.
|
1405
|
+
*/
|
1406
|
+
type SourceType = "script" | "module" | "commonjs";
|
1407
|
+
|
1408
|
+
/**
|
1409
|
+
* ESLint legacy configuration.
|
1410
|
+
*
|
1411
|
+
* @see [ESLint Legacy Configuration](https://eslint.org/docs/latest/use/configure/)
|
1412
|
+
*/
|
1413
|
+
interface BaseConfig<
|
1414
|
+
Rules extends RulesRecord = RulesRecord,
|
1415
|
+
OverrideRules extends RulesRecord = Rules,
|
1416
|
+
> extends HasRules<Rules> {
|
1417
|
+
$schema?: string | undefined;
|
1418
|
+
|
1419
|
+
/**
|
1420
|
+
* An environment provides predefined global variables.
|
1421
|
+
*
|
1422
|
+
* @see [Environments](https://eslint.org/docs/latest/use/configure/language-options-deprecated#specifying-environments)
|
1423
|
+
*/
|
1424
|
+
env?: { [name: string]: boolean } | undefined;
|
1425
|
+
|
1426
|
+
/**
|
1427
|
+
* Extending configuration files.
|
1428
|
+
*
|
1429
|
+
* @see [Extends](https://eslint.org/docs/latest/use/configure/configuration-files-deprecated#extending-configuration-files)
|
1430
|
+
*/
|
1431
|
+
extends?: string | string[] | undefined;
|
1432
|
+
|
1433
|
+
/**
|
1434
|
+
* Specifying globals.
|
1435
|
+
*
|
1436
|
+
* @see [Globals](https://eslint.org/docs/latest/use/configure/language-options-deprecated#specifying-globals)
|
1437
|
+
*/
|
1438
|
+
globals?: Linter.Globals | undefined;
|
1439
|
+
|
1440
|
+
/**
|
1441
|
+
* Disable processing of inline comments.
|
1442
|
+
*
|
1443
|
+
* @see [Disabling Inline Comments](https://eslint.org/docs/latest/use/configure/rules-deprecated#disabling-inline-comments)
|
1444
|
+
*/
|
1445
|
+
noInlineConfig?: boolean | undefined;
|
1446
|
+
|
1447
|
+
/**
|
1448
|
+
* Overrides can be used to use a differing configuration for matching sub-directories and files.
|
1449
|
+
*
|
1450
|
+
* @see [How do overrides work](https://eslint.org/docs/latest/use/configure/configuration-files-deprecated#how-do-overrides-work)
|
1451
|
+
*/
|
1452
|
+
overrides?: Array<ConfigOverride<OverrideRules>> | undefined;
|
1453
|
+
|
1454
|
+
/**
|
1455
|
+
* Parser.
|
1456
|
+
*
|
1457
|
+
* @see [Working with Custom Parsers](https://eslint.org/docs/latest/extend/custom-parsers)
|
1458
|
+
* @see [Specifying Parser](https://eslint.org/docs/latest/use/configure/parser-deprecated)
|
1459
|
+
*/
|
1460
|
+
parser?: string | undefined;
|
1461
|
+
|
1462
|
+
/**
|
1463
|
+
* Parser options.
|
1464
|
+
*
|
1465
|
+
* @see [Working with Custom Parsers](https://eslint.org/docs/latest/extend/custom-parsers)
|
1466
|
+
* @see [Specifying Parser Options](https://eslint.org/docs/latest/use/configure/language-options-deprecated#specifying-parser-options)
|
1467
|
+
*/
|
1468
|
+
parserOptions?: ParserOptions | undefined;
|
1469
|
+
|
1470
|
+
/**
|
1471
|
+
* Which third-party plugins define additional rules, environments, configs, etc. for ESLint to use.
|
1472
|
+
*
|
1473
|
+
* @see [Configuring Plugins](https://eslint.org/docs/latest/use/configure/plugins-deprecated#configure-plugins)
|
1474
|
+
*/
|
1475
|
+
plugins?: string[] | undefined;
|
1476
|
+
|
1477
|
+
/**
|
1478
|
+
* Specifying processor.
|
1479
|
+
*
|
1480
|
+
* @see [processor](https://eslint.org/docs/latest/use/configure/plugins-deprecated#specify-a-processor)
|
1481
|
+
*/
|
1482
|
+
processor?: string | undefined;
|
1483
|
+
|
1484
|
+
/**
|
1485
|
+
* Report unused eslint-disable comments as warning.
|
1486
|
+
*
|
1487
|
+
* @see [Report unused eslint-disable comments](https://eslint.org/docs/latest/use/configure/rules-deprecated#report-unused-eslint-disable-comments)
|
1488
|
+
*/
|
1489
|
+
reportUnusedDisableDirectives?: boolean | undefined;
|
1490
|
+
|
1491
|
+
/**
|
1492
|
+
* Settings.
|
1493
|
+
*
|
1494
|
+
* @see [Settings](https://eslint.org/docs/latest/use/configure/configuration-files-deprecated#adding-shared-settings)
|
1495
|
+
*/
|
1496
|
+
settings?: { [name: string]: any } | undefined;
|
1497
|
+
}
|
1498
|
+
|
1499
|
+
/**
|
1500
|
+
* The overwrites that apply more differing configuration to specific files or directories.
|
1501
|
+
*/
|
1502
|
+
interface ConfigOverride<Rules extends RulesRecord = RulesRecord>
|
1503
|
+
extends BaseConfig<Rules> {
|
1504
|
+
/**
|
1505
|
+
* The glob patterns for excluded files.
|
1506
|
+
*/
|
1507
|
+
excludedFiles?: string | string[] | undefined;
|
1508
|
+
|
1509
|
+
/**
|
1510
|
+
* The glob patterns for target files.
|
1511
|
+
*/
|
1512
|
+
files: string | string[];
|
1513
|
+
}
|
1514
|
+
|
1515
|
+
/**
|
1516
|
+
* ESLint legacy configuration.
|
1517
|
+
*
|
1518
|
+
* @see [ESLint Legacy Configuration](https://eslint.org/docs/latest/use/configure/)
|
1519
|
+
*/
|
1520
|
+
// https://github.com/eslint/eslint/blob/v8.57.0/conf/config-schema.js
|
1521
|
+
interface LegacyConfig<
|
1522
|
+
Rules extends RulesRecord = RulesRecord,
|
1523
|
+
OverrideRules extends RulesRecord = Rules,
|
1524
|
+
> extends BaseConfig<Rules, OverrideRules> {
|
1525
|
+
/**
|
1526
|
+
* Tell ESLint to ignore specific files and directories.
|
1527
|
+
*
|
1528
|
+
* @see [Ignore Patterns](https://eslint.org/docs/latest/use/configure/ignore-deprecated#ignorepatterns-in-config-files)
|
1529
|
+
*/
|
1530
|
+
ignorePatterns?: string | string[] | undefined;
|
1531
|
+
|
1532
|
+
/**
|
1533
|
+
* @see [Using Configuration Files](https://eslint.org/docs/latest/use/configure/configuration-files-deprecated#using-configuration-files)
|
1534
|
+
*/
|
1535
|
+
root?: boolean | undefined;
|
1536
|
+
}
|
1537
|
+
|
1538
|
+
/**
|
1539
|
+
* Parser options.
|
1540
|
+
*
|
1541
|
+
* @see [Specifying Parser Options](https://eslint.org/docs/latest/use/configure/language-options-deprecated#specifying-parser-options)
|
1542
|
+
*/
|
1543
|
+
interface ParserOptions {
|
1544
|
+
/**
|
1545
|
+
* Accepts any valid ECMAScript version number or `'latest'`:
|
1546
|
+
*
|
1547
|
+
* - A version: es3, es5, es6, es7, es8, es9, es10, es11, es12, es13, es14, ..., or
|
1548
|
+
* - A year: es2015, es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, ..., or
|
1549
|
+
* - `'latest'`
|
1550
|
+
*
|
1551
|
+
* When it's a version or a year, the value must be a number - so do not include the `es` prefix.
|
1552
|
+
*
|
1553
|
+
* Specifies the version of ECMAScript syntax you want to use. This is used by the parser to determine how to perform scope analysis, and it affects the default
|
1554
|
+
*
|
1555
|
+
* @default 5
|
1556
|
+
*/
|
1557
|
+
ecmaVersion?: EcmaVersion | undefined;
|
1558
|
+
|
1559
|
+
/**
|
1560
|
+
* The type of JavaScript source code. Possible values are "script" for
|
1561
|
+
* traditional script files, "module" for ECMAScript modules (ESM), and
|
1562
|
+
* "commonjs" for CommonJS files.
|
1563
|
+
*
|
1564
|
+
* @default 'script'
|
1565
|
+
*
|
1566
|
+
* @see https://eslint.org/docs/latest/use/configure/language-options-deprecated#specifying-parser-options
|
1567
|
+
*/
|
1568
|
+
sourceType?: SourceType | undefined;
|
1569
|
+
|
1570
|
+
/**
|
1571
|
+
* An object indicating which additional language features you'd like to use.
|
1572
|
+
*
|
1573
|
+
* @see https://eslint.org/docs/latest/use/configure/language-options-deprecated#specifying-parser-options
|
1574
|
+
*/
|
1575
|
+
ecmaFeatures?:
|
1576
|
+
| {
|
1577
|
+
globalReturn?: boolean | undefined;
|
1578
|
+
impliedStrict?: boolean | undefined;
|
1579
|
+
jsx?: boolean | undefined;
|
1580
|
+
experimentalObjectRestSpread?: boolean | undefined;
|
1581
|
+
[key: string]: any;
|
1582
|
+
}
|
1583
|
+
| undefined;
|
1584
|
+
[key: string]: any;
|
1585
|
+
}
|
1586
|
+
|
1587
|
+
interface LintOptions {
|
1588
|
+
filename?: string | undefined;
|
1589
|
+
preprocess?: ((code: string) => string[]) | undefined;
|
1590
|
+
postprocess?:
|
1591
|
+
| ((problemLists: LintMessage[][]) => LintMessage[])
|
1592
|
+
| undefined;
|
1593
|
+
filterCodeBlock?: boolean | undefined;
|
1594
|
+
disableFixes?: boolean | undefined;
|
1595
|
+
allowInlineConfig?: boolean | undefined;
|
1596
|
+
reportUnusedDisableDirectives?: boolean | undefined;
|
1597
|
+
}
|
1598
|
+
|
1599
|
+
interface LintSuggestion {
|
1600
|
+
desc: string;
|
1601
|
+
fix: Rule.Fix;
|
1602
|
+
messageId?: string | undefined;
|
1603
|
+
}
|
1604
|
+
|
1605
|
+
interface LintMessage {
|
1606
|
+
column: number;
|
1607
|
+
line: number;
|
1608
|
+
endColumn?: number | undefined;
|
1609
|
+
endLine?: number | undefined;
|
1610
|
+
ruleId: string | null;
|
1611
|
+
message: string;
|
1612
|
+
messageId?: string | undefined;
|
1613
|
+
/**
|
1614
|
+
* @deprecated `nodeType` is deprecated and will be removed in the next major version.
|
1615
|
+
*/
|
1616
|
+
nodeType?: string | undefined;
|
1617
|
+
fatal?: true | undefined;
|
1618
|
+
severity: Exclude<Severity, 0>;
|
1619
|
+
fix?: Rule.Fix | undefined;
|
1620
|
+
suggestions?: LintSuggestion[] | undefined;
|
1621
|
+
}
|
1622
|
+
|
1623
|
+
interface LintSuppression {
|
1624
|
+
kind: string;
|
1625
|
+
justification: string;
|
1626
|
+
}
|
1627
|
+
|
1628
|
+
interface SuppressedLintMessage extends LintMessage {
|
1629
|
+
suppressions: LintSuppression[];
|
1630
|
+
}
|
1631
|
+
|
1632
|
+
interface FixOptions extends LintOptions {
|
1633
|
+
fix?: boolean | undefined;
|
1634
|
+
}
|
1635
|
+
|
1636
|
+
interface FixReport {
|
1637
|
+
fixed: boolean;
|
1638
|
+
output: string;
|
1639
|
+
messages: LintMessage[];
|
1640
|
+
}
|
1641
|
+
|
1642
|
+
// Temporarily loosen type for just flat config files (see #68232)
|
1643
|
+
type NonESTreeParser = Omit<ESTreeParser, "parseForESLint"> &
|
1644
|
+
(
|
1645
|
+
| {
|
1646
|
+
parse(text: string, options?: any): unknown;
|
1647
|
+
}
|
1648
|
+
| {
|
1649
|
+
parseForESLint(
|
1650
|
+
text: string,
|
1651
|
+
options?: any,
|
1652
|
+
): Omit<ESLintParseResult, "ast" | "scopeManager"> & {
|
1653
|
+
ast: unknown;
|
1654
|
+
scopeManager?: unknown;
|
1655
|
+
};
|
1656
|
+
}
|
1657
|
+
);
|
1658
|
+
|
1659
|
+
type ESTreeParser = ESLint.ObjectMetaProperties &
|
1660
|
+
(
|
1661
|
+
| { parse(text: string, options?: any): AST.Program }
|
1662
|
+
| { parseForESLint(text: string, options?: any): ESLintParseResult }
|
1663
|
+
);
|
1664
|
+
|
1665
|
+
type Parser = NonESTreeParser | ESTreeParser;
|
1666
|
+
|
1667
|
+
interface ESLintParseResult {
|
1668
|
+
ast: AST.Program;
|
1669
|
+
parserServices?: SourceCode.ParserServices | undefined;
|
1670
|
+
scopeManager?: Scope.ScopeManager | undefined;
|
1671
|
+
visitorKeys?: SourceCode.VisitorKeys | undefined;
|
1672
|
+
}
|
1673
|
+
|
1674
|
+
interface ProcessorFile {
|
1675
|
+
text: string;
|
1676
|
+
filename: string;
|
1677
|
+
}
|
1678
|
+
|
1679
|
+
// https://eslint.org/docs/latest/extend/plugins#processors-in-plugins
|
1680
|
+
interface Processor<
|
1681
|
+
T extends string | ProcessorFile = string | ProcessorFile,
|
1682
|
+
> extends ESLint.ObjectMetaProperties {
|
1683
|
+
supportsAutofix?: boolean | undefined;
|
1684
|
+
preprocess?(text: string, filename: string): T[];
|
1685
|
+
postprocess?(
|
1686
|
+
messages: LintMessage[][],
|
1687
|
+
filename: string,
|
1688
|
+
): LintMessage[];
|
1689
|
+
}
|
1690
|
+
|
1691
|
+
interface Config<Rules extends RulesRecord = RulesRecord> {
|
1692
|
+
/**
|
1693
|
+
* An string to identify the configuration object. Used in error messages and
|
1694
|
+
* inspection tools.
|
1695
|
+
*/
|
1696
|
+
name?: string;
|
1697
|
+
|
1698
|
+
/**
|
1699
|
+
* An array of glob patterns indicating the files that the configuration
|
1700
|
+
* object should apply to. If not specified, the configuration object applies
|
1701
|
+
* to all files
|
1702
|
+
*/
|
1703
|
+
files?: Array<string | string[]>;
|
1704
|
+
|
1705
|
+
/**
|
1706
|
+
* An array of glob patterns indicating the files that the configuration
|
1707
|
+
* object should not apply to. If not specified, the configuration object
|
1708
|
+
* applies to all files matched by files
|
1709
|
+
*/
|
1710
|
+
ignores?: string[];
|
1711
|
+
|
1712
|
+
/**
|
1713
|
+
* The name of the language used for linting. This is used to determine the
|
1714
|
+
* parser and other language-specific settings.
|
1715
|
+
* @since 9.7.0
|
1716
|
+
*/
|
1717
|
+
language?: string;
|
1718
|
+
|
1719
|
+
/**
|
1720
|
+
* An object containing settings related to how JavaScript is configured for
|
1721
|
+
* linting.
|
1722
|
+
*/
|
1723
|
+
languageOptions?: LanguageOptions;
|
1724
|
+
|
1725
|
+
/**
|
1726
|
+
* An object containing settings related to the linting process
|
1727
|
+
*/
|
1728
|
+
linterOptions?: LinterOptions;
|
1729
|
+
|
1730
|
+
/**
|
1731
|
+
* Either an object containing preprocess() and postprocess() methods or a
|
1732
|
+
* string indicating the name of a processor inside of a plugin
|
1733
|
+
* (i.e., "pluginName/processorName").
|
1734
|
+
*/
|
1735
|
+
processor?: string | Processor;
|
1736
|
+
|
1737
|
+
/**
|
1738
|
+
* An object containing a name-value mapping of plugin names to plugin objects.
|
1739
|
+
* When files is specified, these plugins are only available to the matching files.
|
1740
|
+
*/
|
1741
|
+
plugins?: Record<string, ESLint.Plugin>;
|
1742
|
+
|
1743
|
+
/**
|
1744
|
+
* An object containing the configured rules. When files or ignores are specified,
|
1745
|
+
* these rule configurations are only available to the matching files.
|
1746
|
+
*/
|
1747
|
+
rules?: Partial<Rules>;
|
1748
|
+
|
1749
|
+
/**
|
1750
|
+
* An object containing name-value pairs of information that should be
|
1751
|
+
* available to all rules.
|
1752
|
+
*/
|
1753
|
+
settings?: Record<string, unknown>;
|
1754
|
+
}
|
1755
|
+
|
1756
|
+
/** @deprecated Use `Config` instead of `FlatConfig` */
|
1757
|
+
type FlatConfig = Config;
|
1758
|
+
|
1759
|
+
type GlobalConf =
|
1760
|
+
| boolean
|
1761
|
+
| "off"
|
1762
|
+
| "readable"
|
1763
|
+
| "readonly"
|
1764
|
+
| "writable"
|
1765
|
+
| "writeable";
|
1766
|
+
|
1767
|
+
interface Globals {
|
1768
|
+
[name: string]: GlobalConf;
|
1769
|
+
}
|
1770
|
+
|
1771
|
+
interface LanguageOptions extends GenericLanguageOptions {
|
1772
|
+
/**
|
1773
|
+
* The version of ECMAScript to support. May be any year (i.e., 2022) or
|
1774
|
+
* version (i.e., 5). Set to "latest" for the most recent supported version.
|
1775
|
+
* @default "latest"
|
1776
|
+
*/
|
1777
|
+
ecmaVersion?: EcmaVersion | undefined;
|
1778
|
+
|
1779
|
+
/**
|
1780
|
+
* The type of JavaScript source code. Possible values are "script" for
|
1781
|
+
* traditional script files, "module" for ECMAScript modules (ESM), and
|
1782
|
+
* "commonjs" for CommonJS files. (default: "module" for .js and .mjs
|
1783
|
+
* files; "commonjs" for .cjs files)
|
1784
|
+
*/
|
1785
|
+
sourceType?: SourceType | undefined;
|
1786
|
+
|
1787
|
+
/**
|
1788
|
+
* An object specifying additional objects that should be added to the
|
1789
|
+
* global scope during linting.
|
1790
|
+
*/
|
1791
|
+
globals?: Globals | undefined;
|
1792
|
+
|
1793
|
+
/**
|
1794
|
+
* An object containing a parse() or parseForESLint() method.
|
1795
|
+
* If not configured, the default ESLint parser (Espree) will be used.
|
1796
|
+
*/
|
1797
|
+
parser?: Parser | undefined;
|
1798
|
+
|
1799
|
+
/**
|
1800
|
+
* An object specifying additional options that are passed directly to the
|
1801
|
+
* parser() method on the parser. The available options are parser-dependent
|
1802
|
+
*/
|
1803
|
+
parserOptions?: Linter.ParserOptions | undefined;
|
1804
|
+
}
|
1805
|
+
|
1806
|
+
interface LinterOptions {
|
1807
|
+
/**
|
1808
|
+
* A boolean value indicating if inline configuration is allowed.
|
1809
|
+
*/
|
1810
|
+
noInlineConfig?: boolean;
|
1811
|
+
|
1812
|
+
/**
|
1813
|
+
* A severity value indicating if and how unused disable directives should be
|
1814
|
+
* tracked and reported.
|
1815
|
+
*/
|
1816
|
+
reportUnusedDisableDirectives?: Severity | StringSeverity | boolean;
|
1817
|
+
|
1818
|
+
/**
|
1819
|
+
* A severity value indicating if and how unused inline configs should be
|
1820
|
+
* tracked and reported.
|
1821
|
+
*/
|
1822
|
+
reportUnusedInlineConfigs?: Severity | StringSeverity;
|
1823
|
+
}
|
1824
|
+
|
1825
|
+
interface Stats {
|
1826
|
+
/**
|
1827
|
+
* The number of times ESLint has applied at least one fix after linting.
|
1828
|
+
*/
|
1829
|
+
fixPasses: number;
|
1830
|
+
|
1831
|
+
/**
|
1832
|
+
* The times spent on (parsing, fixing, linting) a file, where the linting refers to the timing information for each rule.
|
1833
|
+
*/
|
1834
|
+
times: { passes: TimePass[] };
|
1835
|
+
}
|
1836
|
+
|
1837
|
+
interface TimePass {
|
1838
|
+
parse: { total: number };
|
1839
|
+
rules?: Record<string, { total: number }>;
|
1840
|
+
fix: { total: number };
|
1841
|
+
total: number;
|
1842
|
+
}
|
1412
1843
|
}
|
1413
1844
|
|
1414
1845
|
// #endregion
|
@@ -1416,286 +1847,306 @@ export namespace Linter {
|
|
1416
1847
|
// #region ESLint
|
1417
1848
|
|
1418
1849
|
export class ESLint {
|
1419
|
-
|
1850
|
+
static configType: "flat";
|
1420
1851
|
|
1421
|
-
|
1852
|
+
static readonly version: string;
|
1422
1853
|
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1854
|
+
/**
|
1855
|
+
* The default configuration that ESLint uses internally. This is provided for tooling that wants to calculate configurations using the same defaults as ESLint.
|
1856
|
+
* Keep in mind that the default configuration may change from version to version, so you shouldn't rely on any particular keys or values to be present.
|
1857
|
+
*/
|
1858
|
+
static readonly defaultConfig: Linter.Config[];
|
1428
1859
|
|
1429
|
-
|
1860
|
+
static outputFixes(results: ESLint.LintResult[]): Promise<void>;
|
1430
1861
|
|
1431
|
-
|
1862
|
+
static getErrorResults(results: ESLint.LintResult[]): ESLint.LintResult[];
|
1432
1863
|
|
1433
|
-
|
1864
|
+
constructor(options?: ESLint.Options);
|
1434
1865
|
|
1435
|
-
|
1866
|
+
lintFiles(patterns: string | string[]): Promise<ESLint.LintResult[]>;
|
1436
1867
|
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1868
|
+
lintText(
|
1869
|
+
code: string,
|
1870
|
+
options?: {
|
1871
|
+
filePath?: string | undefined;
|
1872
|
+
warnIgnored?: boolean | undefined;
|
1873
|
+
},
|
1874
|
+
): Promise<ESLint.LintResult[]>;
|
1441
1875
|
|
1442
|
-
|
1876
|
+
getRulesMetaForResults(
|
1877
|
+
results: ESLint.LintResult[],
|
1878
|
+
): ESLint.LintResultData["rulesMeta"];
|
1443
1879
|
|
1444
|
-
|
1880
|
+
hasFlag(flag: string): boolean;
|
1445
1881
|
|
1446
|
-
|
1882
|
+
calculateConfigForFile(filePath: string): Promise<any>;
|
1447
1883
|
|
1448
|
-
|
1884
|
+
findConfigFile(): Promise<string | undefined>;
|
1449
1885
|
|
1450
|
-
|
1886
|
+
isPathIgnored(filePath: string): Promise<boolean>;
|
1451
1887
|
|
1452
|
-
|
1888
|
+
loadFormatter(nameOrPath?: string): Promise<ESLint.LoadedFormatter>;
|
1453
1889
|
}
|
1454
1890
|
|
1455
1891
|
export namespace ESLint {
|
1456
|
-
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1469
|
-
|
1470
|
-
|
1471
|
-
|
1472
|
-
|
1473
|
-
|
1474
|
-
|
1475
|
-
|
1476
|
-
|
1477
|
-
|
1478
|
-
|
1479
|
-
|
1480
|
-
|
1481
|
-
|
1482
|
-
|
1483
|
-
|
1484
|
-
|
1485
|
-
|
1486
|
-
|
1487
|
-
|
1488
|
-
|
1489
|
-
|
1490
|
-
|
1491
|
-
|
1492
|
-
|
1493
|
-
|
1494
|
-
|
1495
|
-
|
1496
|
-
|
1497
|
-
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1501
|
-
|
1502
|
-
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1510
|
-
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1515
|
-
|
1516
|
-
|
1517
|
-
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1521
|
-
|
1522
|
-
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1528
|
-
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
|
1538
|
-
|
1539
|
-
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1546
|
-
|
1547
|
-
|
1548
|
-
|
1549
|
-
|
1550
|
-
|
1551
|
-
|
1552
|
-
|
1553
|
-
|
1554
|
-
|
1555
|
-
|
1556
|
-
|
1557
|
-
|
1558
|
-
|
1559
|
-
|
1560
|
-
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1564
|
-
|
1565
|
-
|
1566
|
-
|
1567
|
-
|
1568
|
-
|
1569
|
-
|
1570
|
-
|
1571
|
-
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1575
|
-
|
1576
|
-
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
|
1587
|
-
|
1588
|
-
|
1589
|
-
|
1590
|
-
|
1591
|
-
|
1592
|
-
|
1593
|
-
|
1594
|
-
|
1595
|
-
|
1596
|
-
|
1597
|
-
|
1598
|
-
|
1599
|
-
|
1600
|
-
|
1601
|
-
|
1602
|
-
|
1603
|
-
|
1604
|
-
|
1605
|
-
|
1606
|
-
|
1607
|
-
|
1608
|
-
|
1609
|
-
|
1610
|
-
|
1611
|
-
|
1612
|
-
|
1613
|
-
|
1614
|
-
|
1615
|
-
|
1616
|
-
|
1617
|
-
|
1618
|
-
|
1619
|
-
|
1620
|
-
|
1621
|
-
|
1622
|
-
|
1623
|
-
|
1624
|
-
|
1625
|
-
|
1626
|
-
|
1627
|
-
|
1628
|
-
|
1892
|
+
type ConfigData<Rules extends Linter.RulesRecord = Linter.RulesRecord> =
|
1893
|
+
Omit<Linter.LegacyConfig<Rules>, "$schema">;
|
1894
|
+
|
1895
|
+
interface Environment {
|
1896
|
+
globals?: Linter.Globals | undefined;
|
1897
|
+
parserOptions?: Linter.ParserOptions | undefined;
|
1898
|
+
}
|
1899
|
+
|
1900
|
+
interface ObjectMetaProperties {
|
1901
|
+
/** @deprecated Use `meta.name` instead. */
|
1902
|
+
name?: string | undefined;
|
1903
|
+
|
1904
|
+
/** @deprecated Use `meta.version` instead. */
|
1905
|
+
version?: string | undefined;
|
1906
|
+
|
1907
|
+
meta?: {
|
1908
|
+
name?: string | undefined;
|
1909
|
+
version?: string | undefined;
|
1910
|
+
};
|
1911
|
+
}
|
1912
|
+
|
1913
|
+
interface Plugin extends ObjectMetaProperties {
|
1914
|
+
configs?:
|
1915
|
+
| Record<
|
1916
|
+
string,
|
1917
|
+
Linter.LegacyConfig | Linter.Config | Linter.Config[]
|
1918
|
+
>
|
1919
|
+
| undefined;
|
1920
|
+
environments?: Record<string, Environment> | undefined;
|
1921
|
+
languages?: Record<string, Language> | undefined;
|
1922
|
+
processors?: Record<string, Linter.Processor> | undefined;
|
1923
|
+
rules?: Record<string, RuleDefinition> | undefined;
|
1924
|
+
}
|
1925
|
+
|
1926
|
+
type FixType = "directive" | "problem" | "suggestion" | "layout";
|
1927
|
+
|
1928
|
+
type CacheStrategy = "content" | "metadata";
|
1929
|
+
|
1930
|
+
interface Options {
|
1931
|
+
// File enumeration
|
1932
|
+
cwd?: string | undefined;
|
1933
|
+
errorOnUnmatchedPattern?: boolean | undefined;
|
1934
|
+
globInputPaths?: boolean | undefined;
|
1935
|
+
ignore?: boolean | undefined;
|
1936
|
+
ignorePatterns?: string[] | null | undefined;
|
1937
|
+
passOnNoPatterns?: boolean | undefined;
|
1938
|
+
warnIgnored?: boolean | undefined;
|
1939
|
+
|
1940
|
+
// Linting
|
1941
|
+
allowInlineConfig?: boolean | undefined;
|
1942
|
+
baseConfig?: Linter.Config | Linter.Config[] | null | undefined;
|
1943
|
+
overrideConfig?: Linter.Config | Linter.Config[] | null | undefined;
|
1944
|
+
overrideConfigFile?: string | true | null | undefined;
|
1945
|
+
plugins?: Record<string, Plugin> | null | undefined;
|
1946
|
+
ruleFilter?:
|
1947
|
+
| ((arg: {
|
1948
|
+
ruleId: string;
|
1949
|
+
severity: Exclude<Linter.Severity, 0>;
|
1950
|
+
}) => boolean)
|
1951
|
+
| undefined;
|
1952
|
+
stats?: boolean | undefined;
|
1953
|
+
|
1954
|
+
// Autofix
|
1955
|
+
fix?: boolean | ((message: Linter.LintMessage) => boolean) | undefined;
|
1956
|
+
fixTypes?: FixType[] | undefined;
|
1957
|
+
|
1958
|
+
// Cache-related
|
1959
|
+
cache?: boolean | undefined;
|
1960
|
+
cacheLocation?: string | undefined;
|
1961
|
+
cacheStrategy?: CacheStrategy | undefined;
|
1962
|
+
|
1963
|
+
// Other Options
|
1964
|
+
flags?: string[] | undefined;
|
1965
|
+
}
|
1966
|
+
|
1967
|
+
interface LegacyOptions {
|
1968
|
+
// File enumeration
|
1969
|
+
cwd?: string | undefined;
|
1970
|
+
errorOnUnmatchedPattern?: boolean | undefined;
|
1971
|
+
extensions?: string[] | undefined;
|
1972
|
+
globInputPaths?: boolean | undefined;
|
1973
|
+
ignore?: boolean | undefined;
|
1974
|
+
ignorePath?: string | undefined;
|
1975
|
+
|
1976
|
+
// Linting
|
1977
|
+
allowInlineConfig?: boolean | undefined;
|
1978
|
+
baseConfig?: Linter.LegacyConfig | undefined;
|
1979
|
+
overrideConfig?: Linter.LegacyConfig | undefined;
|
1980
|
+
overrideConfigFile?: string | undefined;
|
1981
|
+
plugins?: Record<string, Plugin> | undefined;
|
1982
|
+
reportUnusedDisableDirectives?: Linter.StringSeverity | undefined;
|
1983
|
+
resolvePluginsRelativeTo?: string | undefined;
|
1984
|
+
rulePaths?: string[] | undefined;
|
1985
|
+
useEslintrc?: boolean | undefined;
|
1986
|
+
|
1987
|
+
// Autofix
|
1988
|
+
fix?: boolean | ((message: Linter.LintMessage) => boolean) | undefined;
|
1989
|
+
fixTypes?: FixType[] | undefined;
|
1990
|
+
|
1991
|
+
// Cache-related
|
1992
|
+
cache?: boolean | undefined;
|
1993
|
+
cacheLocation?: string | undefined;
|
1994
|
+
cacheStrategy?: CacheStrategy | undefined;
|
1995
|
+
|
1996
|
+
// Other Options
|
1997
|
+
flags?: string[] | undefined;
|
1998
|
+
}
|
1999
|
+
|
2000
|
+
interface LintResult {
|
2001
|
+
filePath: string;
|
2002
|
+
messages: Linter.LintMessage[];
|
2003
|
+
suppressedMessages: Linter.SuppressedLintMessage[];
|
2004
|
+
errorCount: number;
|
2005
|
+
fatalErrorCount: number;
|
2006
|
+
warningCount: number;
|
2007
|
+
fixableErrorCount: number;
|
2008
|
+
fixableWarningCount: number;
|
2009
|
+
output?: string | undefined;
|
2010
|
+
source?: string | undefined;
|
2011
|
+
stats?: Linter.Stats | undefined;
|
2012
|
+
usedDeprecatedRules: DeprecatedRuleUse[];
|
2013
|
+
}
|
2014
|
+
|
2015
|
+
interface MaxWarningsExceeded {
|
2016
|
+
/**
|
2017
|
+
* Number of warnings to trigger nonzero exit code.
|
2018
|
+
*/
|
2019
|
+
maxWarnings: number;
|
2020
|
+
|
2021
|
+
/**
|
2022
|
+
* Number of warnings found while linting.
|
2023
|
+
*/
|
2024
|
+
foundWarnings: number;
|
2025
|
+
}
|
2026
|
+
|
2027
|
+
interface LintResultData {
|
2028
|
+
cwd: string;
|
2029
|
+
maxWarningsExceeded?: MaxWarningsExceeded | undefined;
|
2030
|
+
rulesMeta: {
|
2031
|
+
[ruleId: string]: Rule.RuleMetaData;
|
2032
|
+
};
|
2033
|
+
}
|
2034
|
+
|
2035
|
+
interface DeprecatedRuleUse {
|
2036
|
+
ruleId: string;
|
2037
|
+
replacedBy: string[];
|
2038
|
+
}
|
2039
|
+
|
2040
|
+
interface ResultsMeta {
|
2041
|
+
maxWarningsExceeded?: MaxWarningsExceeded | undefined;
|
2042
|
+
}
|
2043
|
+
|
2044
|
+
/** The type of an object resolved by {@link ESLint.loadFormatter}. */
|
2045
|
+
interface LoadedFormatter {
|
2046
|
+
/**
|
2047
|
+
* Used to call the underlying formatter.
|
2048
|
+
* @param results An array of lint results to format.
|
2049
|
+
* @param resultsMeta An object with an optional `maxWarningsExceeded` property that will be
|
2050
|
+
* passed to the underlying formatter function along with other properties set by ESLint.
|
2051
|
+
* This argument can be omitted if `maxWarningsExceeded` is not needed.
|
2052
|
+
* @return The formatter output.
|
2053
|
+
*/
|
2054
|
+
format(
|
2055
|
+
results: LintResult[],
|
2056
|
+
resultsMeta?: ResultsMeta,
|
2057
|
+
): string | Promise<string>;
|
2058
|
+
}
|
2059
|
+
|
2060
|
+
// The documented type name is `LoadedFormatter`, but `Formatter` has been historically more used.
|
2061
|
+
type Formatter = LoadedFormatter;
|
2062
|
+
|
2063
|
+
/**
|
2064
|
+
* The expected signature of a custom formatter.
|
2065
|
+
* @param results An array of lint results to format.
|
2066
|
+
* @param context Additional information for the formatter.
|
2067
|
+
* @return The formatter output.
|
2068
|
+
*/
|
2069
|
+
type FormatterFunction = (
|
2070
|
+
results: LintResult[],
|
2071
|
+
context: LintResultData,
|
2072
|
+
) => string | Promise<string>;
|
2073
|
+
|
2074
|
+
// Docs reference the types by those name
|
2075
|
+
type EditInfo = Rule.Fix;
|
1629
2076
|
}
|
1630
2077
|
|
1631
2078
|
// #endregion
|
1632
2079
|
|
1633
|
-
export function loadESLint(options: {
|
1634
|
-
|
1635
|
-
|
1636
|
-
|
1637
|
-
|
2080
|
+
export function loadESLint(options: {
|
2081
|
+
useFlatConfig: true;
|
2082
|
+
}): Promise<typeof ESLint>;
|
2083
|
+
export function loadESLint(options: {
|
2084
|
+
useFlatConfig: false;
|
2085
|
+
}): Promise<typeof LegacyESLint>;
|
2086
|
+
export function loadESLint(options?: {
|
2087
|
+
useFlatConfig?: boolean | undefined;
|
2088
|
+
}): Promise<typeof ESLint | typeof LegacyESLint>;
|
1638
2089
|
|
1639
2090
|
// #region RuleTester
|
1640
2091
|
|
1641
2092
|
export class RuleTester {
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1649
|
-
|
1650
|
-
|
1651
|
-
|
1652
|
-
|
1653
|
-
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1657
|
-
|
1658
|
-
|
1659
|
-
|
2093
|
+
static describe: ((...args: any) => any) | null;
|
2094
|
+
static it: ((...args: any) => any) | null;
|
2095
|
+
static itOnly: ((...args: any) => any) | null;
|
2096
|
+
|
2097
|
+
constructor(config?: Linter.Config);
|
2098
|
+
|
2099
|
+
run(
|
2100
|
+
name: string,
|
2101
|
+
rule: Rule.RuleModule,
|
2102
|
+
tests: {
|
2103
|
+
valid: Array<string | RuleTester.ValidTestCase>;
|
2104
|
+
invalid: RuleTester.InvalidTestCase[];
|
2105
|
+
},
|
2106
|
+
): void;
|
2107
|
+
|
2108
|
+
static only(
|
2109
|
+
item: string | RuleTester.ValidTestCase | RuleTester.InvalidTestCase,
|
2110
|
+
): RuleTester.ValidTestCase | RuleTester.InvalidTestCase;
|
1660
2111
|
}
|
1661
2112
|
|
1662
2113
|
export namespace RuleTester {
|
1663
|
-
|
1664
|
-
|
1665
|
-
|
1666
|
-
|
1667
|
-
|
1668
|
-
|
1669
|
-
|
1670
|
-
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
1680
|
-
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1688
|
-
|
1689
|
-
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
|
2114
|
+
interface ValidTestCase {
|
2115
|
+
name?: string;
|
2116
|
+
code: string;
|
2117
|
+
options?: any;
|
2118
|
+
filename?: string | undefined;
|
2119
|
+
only?: boolean;
|
2120
|
+
languageOptions?: Linter.LanguageOptions | undefined;
|
2121
|
+
settings?: { [name: string]: any } | undefined;
|
2122
|
+
}
|
2123
|
+
|
2124
|
+
interface SuggestionOutput {
|
2125
|
+
messageId?: string;
|
2126
|
+
desc?: string;
|
2127
|
+
data?: Record<string, unknown> | undefined;
|
2128
|
+
output: string;
|
2129
|
+
}
|
2130
|
+
|
2131
|
+
interface InvalidTestCase extends ValidTestCase {
|
2132
|
+
errors: number | Array<TestCaseError | string>;
|
2133
|
+
output?: string | null | undefined;
|
2134
|
+
}
|
2135
|
+
|
2136
|
+
interface TestCaseError {
|
2137
|
+
message?: string | RegExp;
|
2138
|
+
messageId?: string;
|
2139
|
+
/**
|
2140
|
+
* @deprecated `type` is deprecated and will be removed in the next major version.
|
2141
|
+
*/
|
2142
|
+
type?: string | undefined;
|
2143
|
+
data?: any;
|
2144
|
+
line?: number | undefined;
|
2145
|
+
column?: number | undefined;
|
2146
|
+
endLine?: number | undefined;
|
2147
|
+
endColumn?: number | undefined;
|
2148
|
+
suggestions?: SuggestionOutput[] | undefined;
|
2149
|
+
}
|
1699
2150
|
}
|
1700
2151
|
|
1701
2152
|
// #endregion
|