eslint 8.57.1 → 9.39.1
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 +165 -115
- package/bin/eslint.js +112 -89
- package/conf/default-cli-options.js +22 -22
- package/conf/ecma-version.js +16 -0
- package/conf/globals.js +109 -94
- package/conf/replacements.json +24 -20
- package/conf/rule-type-list.json +89 -26
- package/lib/api.js +16 -20
- package/lib/cli-engine/cli-engine.js +841 -810
- package/lib/cli-engine/file-enumerator.js +384 -390
- package/lib/cli-engine/formatters/formatters-meta.json +17 -45
- package/lib/cli-engine/formatters/html.js +110 -102
- 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 +97 -76
- package/lib/cli-engine/hash.js +1 -1
- package/lib/cli-engine/index.js +1 -1
- package/lib/cli-engine/lint-result-cache.js +165 -148
- package/lib/cli-engine/load-rules.js +17 -17
- package/lib/cli.js +481 -399
- package/lib/config/config-loader.js +816 -0
- package/lib/config/config.js +674 -0
- package/lib/config/default-config.js +57 -46
- package/lib/config/flat-config-array.js +170 -333
- package/lib/config/flat-config-schema.js +389 -389
- package/lib/config-api.js +12 -0
- package/lib/eslint/eslint-helpers.js +1196 -663
- package/lib/eslint/eslint.js +1262 -607
- package/lib/eslint/index.js +3 -3
- package/lib/eslint/legacy-eslint.js +786 -0
- package/lib/eslint/worker.js +173 -0
- package/lib/languages/js/index.js +336 -0
- package/lib/languages/js/source-code/index.js +7 -0
- package/lib/languages/js/source-code/source-code.js +1364 -0
- package/lib/languages/js/source-code/token-store/backward-token-comment-cursor.js +61 -0
- package/lib/languages/js/source-code/token-store/backward-token-cursor.js +57 -0
- package/lib/{source-code → languages/js/source-code}/token-store/cursor.js +36 -36
- package/lib/languages/js/source-code/token-store/cursors.js +120 -0
- package/lib/{source-code → languages/js/source-code}/token-store/decorative-cursor.js +17 -18
- package/lib/{source-code → languages/js/source-code}/token-store/filter-cursor.js +19 -20
- package/lib/languages/js/source-code/token-store/forward-token-comment-cursor.js +65 -0
- package/lib/languages/js/source-code/token-store/forward-token-cursor.js +62 -0
- package/lib/languages/js/source-code/token-store/index.js +721 -0
- package/lib/{source-code → languages/js/source-code}/token-store/limit-cursor.js +17 -18
- package/lib/languages/js/source-code/token-store/padded-token-cursor.js +45 -0
- package/lib/{source-code → languages/js/source-code}/token-store/skip-cursor.js +19 -20
- package/lib/languages/js/source-code/token-store/utils.js +110 -0
- package/lib/languages/js/validate-language-options.js +196 -0
- package/lib/linter/apply-disable-directives.js +490 -371
- package/lib/linter/code-path-analysis/code-path-analyzer.js +650 -674
- 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 -317
- package/lib/linter/code-path-analysis/debug-helpers.js +183 -163
- package/lib/linter/code-path-analysis/fork-context.js +297 -272
- package/lib/linter/code-path-analysis/id-generator.js +22 -23
- package/lib/linter/esquery.js +332 -0
- package/lib/linter/file-context.js +144 -0
- package/lib/linter/file-report.js +608 -0
- package/lib/linter/index.js +3 -5
- package/lib/linter/interpolate.js +38 -16
- package/lib/linter/linter.js +2328 -1785
- package/lib/linter/rule-fixer.js +136 -107
- package/lib/linter/rules.js +37 -46
- package/lib/linter/source-code-fixer.js +96 -94
- package/lib/linter/source-code-traverser.js +333 -0
- package/lib/linter/source-code-visitor.js +81 -0
- package/lib/linter/timing.js +145 -97
- package/lib/linter/vfile.js +115 -0
- package/lib/options.js +464 -326
- package/lib/rule-tester/index.js +3 -1
- package/lib/rule-tester/rule-tester.js +1371 -998
- package/lib/rules/accessor-pairs.js +333 -259
- package/lib/rules/array-bracket-newline.js +250 -220
- package/lib/rules/array-bracket-spacing.js +286 -229
- package/lib/rules/array-callback-return.js +401 -354
- package/lib/rules/array-element-newline.js +358 -295
- package/lib/rules/arrow-body-style.js +400 -278
- package/lib/rules/arrow-parens.js +206 -155
- package/lib/rules/arrow-spacing.js +169 -145
- package/lib/rules/block-scoped-var.js +125 -123
- package/lib/rules/block-spacing.js +186 -158
- package/lib/rules/brace-style.js +262 -181
- package/lib/rules/callback-return.js +203 -174
- package/lib/rules/camelcase.js +403 -380
- package/lib/rules/capitalized-comments.js +253 -228
- package/lib/rules/class-methods-use-this.js +231 -168
- package/lib/rules/comma-dangle.js +379 -328
- package/lib/rules/comma-spacing.js +193 -177
- package/lib/rules/comma-style.js +375 -298
- package/lib/rules/complexity.js +180 -144
- package/lib/rules/computed-property-spacing.js +236 -193
- package/lib/rules/consistent-return.js +181 -170
- package/lib/rules/consistent-this.js +167 -141
- package/lib/rules/constructor-super.js +418 -411
- package/lib/rules/curly.js +407 -468
- package/lib/rules/default-case-last.js +39 -32
- package/lib/rules/default-case.js +89 -83
- package/lib/rules/default-param-last.js +69 -53
- package/lib/rules/dot-location.js +122 -92
- package/lib/rules/dot-notation.js +193 -153
- package/lib/rules/eol-last.js +122 -102
- package/lib/rules/eqeqeq.js +191 -155
- package/lib/rules/for-direction.js +150 -122
- package/lib/rules/func-call-spacing.js +261 -213
- package/lib/rules/func-name-matching.js +294 -209
- package/lib/rules/func-names.js +165 -164
- package/lib/rules/func-style.js +209 -86
- package/lib/rules/function-call-argument-newline.js +152 -111
- package/lib/rules/function-paren-newline.js +349 -273
- package/lib/rules/generator-star-spacing.js +229 -192
- package/lib/rules/getter-return.js +208 -170
- package/lib/rules/global-require.js +85 -58
- package/lib/rules/grouped-accessor-pairs.js +201 -148
- package/lib/rules/guard-for-in.js +72 -63
- package/lib/rules/handle-callback-err.js +108 -87
- package/lib/rules/id-blacklist.js +182 -187
- package/lib/rules/id-denylist.js +174 -179
- package/lib/rules/id-length.js +197 -157
- package/lib/rules/id-match.js +350 -286
- package/lib/rules/implicit-arrow-linebreak.js +102 -61
- package/lib/rules/indent-legacy.js +1345 -1102
- package/lib/rules/indent.js +2272 -1741
- package/lib/rules/index.js +320 -294
- package/lib/rules/init-declarations.js +139 -106
- package/lib/rules/jsx-quotes.js +94 -64
- package/lib/rules/key-spacing.js +750 -615
- package/lib/rules/keyword-spacing.js +648 -587
- package/lib/rules/line-comment-position.js +143 -108
- package/lib/rules/linebreak-style.js +115 -88
- package/lib/rules/lines-around-comment.js +540 -430
- package/lib/rules/lines-around-directive.js +233 -185
- package/lib/rules/lines-between-class-members.js +305 -216
- package/lib/rules/logical-assignment-operators.js +582 -398
- package/lib/rules/max-classes-per-file.js +69 -68
- package/lib/rules/max-depth.js +146 -143
- package/lib/rules/max-len.js +473 -416
- package/lib/rules/max-lines-per-function.js +201 -176
- package/lib/rules/max-lines.js +158 -162
- package/lib/rules/max-nested-callbacks.js +102 -104
- package/lib/rules/max-params.js +102 -75
- package/lib/rules/max-statements-per-line.js +205 -180
- package/lib/rules/max-statements.js +168 -164
- package/lib/rules/multiline-comment-style.js +638 -460
- package/lib/rules/multiline-ternary.js +241 -158
- package/lib/rules/new-cap.js +233 -232
- package/lib/rules/new-parens.js +88 -61
- package/lib/rules/newline-after-var.js +287 -233
- package/lib/rules/newline-before-return.js +229 -204
- package/lib/rules/newline-per-chained-call.js +142 -109
- package/lib/rules/no-alert.js +90 -79
- package/lib/rules/no-array-constructor.js +175 -113
- package/lib/rules/no-async-promise-executor.js +30 -24
- package/lib/rules/no-await-in-loop.js +79 -70
- package/lib/rules/no-bitwise.js +113 -87
- package/lib/rules/no-buffer-constructor.js +61 -37
- package/lib/rules/no-caller.js +39 -33
- package/lib/rules/no-case-declarations.js +61 -45
- package/lib/rules/no-catch-shadow.js +76 -62
- package/lib/rules/no-class-assign.js +51 -48
- package/lib/rules/no-compare-neg-zero.js +62 -48
- package/lib/rules/no-cond-assign.js +148 -132
- package/lib/rules/no-confusing-arrow.js +98 -63
- package/lib/rules/no-console.js +202 -188
- package/lib/rules/no-const-assign.js +58 -41
- package/lib/rules/no-constant-binary-expression.js +501 -407
- package/lib/rules/no-constant-condition.js +158 -131
- package/lib/rules/no-constructor-return.js +49 -49
- package/lib/rules/no-continue.js +25 -26
- package/lib/rules/no-control-regex.js +125 -121
- package/lib/rules/no-debugger.js +28 -30
- package/lib/rules/no-delete-var.js +29 -29
- package/lib/rules/no-div-regex.js +47 -40
- package/lib/rules/no-dupe-args.js +79 -69
- package/lib/rules/no-dupe-class-members.js +102 -89
- package/lib/rules/no-dupe-else-if.js +100 -77
- package/lib/rules/no-dupe-keys.js +133 -110
- package/lib/rules/no-duplicate-case.js +50 -43
- package/lib/rules/no-duplicate-imports.js +266 -188
- package/lib/rules/no-else-return.js +430 -385
- package/lib/rules/no-empty-character-class.js +57 -50
- package/lib/rules/no-empty-function.js +197 -128
- package/lib/rules/no-empty-pattern.js +63 -56
- package/lib/rules/no-empty-static-block.js +61 -35
- package/lib/rules/no-empty.js +135 -85
- package/lib/rules/no-eq-null.js +37 -32
- package/lib/rules/no-eval.js +258 -249
- package/lib/rules/no-ex-assign.js +42 -39
- package/lib/rules/no-extend-native.js +161 -160
- package/lib/rules/no-extra-bind.js +201 -190
- package/lib/rules/no-extra-boolean-cast.js +398 -295
- package/lib/rules/no-extra-label.js +150 -130
- package/lib/rules/no-extra-parens.js +1654 -1307
- package/lib/rules/no-extra-semi.js +146 -126
- package/lib/rules/no-fallthrough.js +200 -136
- package/lib/rules/no-floating-decimal.js +74 -48
- package/lib/rules/no-func-assign.js +54 -55
- package/lib/rules/no-global-assign.js +78 -72
- package/lib/rules/no-implicit-coercion.js +350 -262
- package/lib/rules/no-implicit-globals.js +174 -133
- package/lib/rules/no-implied-eval.js +150 -112
- package/lib/rules/no-import-assign.js +145 -159
- package/lib/rules/no-inline-comments.js +101 -96
- package/lib/rules/no-inner-declarations.js +115 -78
- package/lib/rules/no-invalid-regexp.js +223 -174
- package/lib/rules/no-invalid-this.js +145 -117
- package/lib/rules/no-irregular-whitespace.js +266 -250
- package/lib/rules/no-iterator.js +29 -33
- package/lib/rules/no-label-var.js +59 -61
- package/lib/rules/no-labels.js +138 -131
- package/lib/rules/no-lone-blocks.js +127 -123
- package/lib/rules/no-lonely-if.js +105 -67
- package/lib/rules/no-loop-func.js +245 -184
- package/lib/rules/no-loss-of-precision.js +236 -201
- package/lib/rules/no-magic-numbers.js +339 -217
- package/lib/rules/no-misleading-character-class.js +548 -253
- package/lib/rules/no-mixed-operators.js +188 -164
- package/lib/rules/no-mixed-requires.js +253 -224
- package/lib/rules/no-mixed-spaces-and-tabs.js +135 -103
- package/lib/rules/no-multi-assign.js +46 -47
- package/lib/rules/no-multi-spaces.js +163 -125
- package/lib/rules/no-multi-str.js +42 -40
- package/lib/rules/no-multiple-empty-lines.js +196 -140
- package/lib/rules/no-native-reassign.js +90 -74
- package/lib/rules/no-negated-condition.js +79 -74
- package/lib/rules/no-negated-in-lhs.js +45 -32
- package/lib/rules/no-nested-ternary.js +33 -31
- package/lib/rules/no-new-func.js +71 -62
- package/lib/rules/no-new-native-nonconstructor.js +43 -39
- package/lib/rules/no-new-object.js +48 -39
- package/lib/rules/no-new-require.js +48 -31
- package/lib/rules/no-new-symbol.js +61 -43
- package/lib/rules/no-new-wrappers.js +43 -41
- package/lib/rules/no-new.js +28 -29
- package/lib/rules/no-nonoctal-decimal-escape.js +149 -121
- package/lib/rules/no-obj-calls.js +66 -53
- package/lib/rules/no-object-constructor.js +104 -97
- package/lib/rules/no-octal-escape.js +40 -43
- package/lib/rules/no-octal.js +29 -32
- package/lib/rules/no-param-reassign.js +236 -218
- package/lib/rules/no-path-concat.js +66 -51
- package/lib/rules/no-plusplus.js +60 -63
- package/lib/rules/no-process-env.js +49 -32
- package/lib/rules/no-process-exit.js +48 -28
- package/lib/rules/no-promise-executor-return.js +205 -204
- package/lib/rules/no-proto.js +26 -29
- package/lib/rules/no-prototype-builtins.js +146 -124
- package/lib/rules/no-redeclare.js +154 -155
- package/lib/rules/no-regex-spaces.js +183 -161
- package/lib/rules/no-restricted-exports.js +208 -174
- package/lib/rules/no-restricted-globals.js +254 -112
- package/lib/rules/no-restricted-imports.js +824 -384
- package/lib/rules/no-restricted-modules.js +222 -186
- package/lib/rules/no-restricted-properties.js +218 -153
- package/lib/rules/no-restricted-syntax.js +56 -52
- package/lib/rules/no-return-assign.js +56 -49
- package/lib/rules/no-return-await.js +147 -120
- package/lib/rules/no-script-url.js +53 -46
- package/lib/rules/no-self-assign.js +148 -145
- package/lib/rules/no-self-compare.js +63 -46
- package/lib/rules/no-sequences.js +135 -115
- package/lib/rules/no-setter-return.js +176 -178
- package/lib/rules/no-shadow-restricted-names.js +84 -36
- package/lib/rules/no-shadow.js +598 -310
- package/lib/rules/no-spaced-func.js +82 -60
- package/lib/rules/no-sparse-arrays.js +46 -28
- package/lib/rules/no-sync.js +61 -44
- package/lib/rules/no-tabs.js +83 -54
- package/lib/rules/no-template-curly-in-string.js +33 -32
- package/lib/rules/no-ternary.js +25 -28
- package/lib/rules/no-this-before-super.js +332 -298
- package/lib/rules/no-throw-literal.js +31 -36
- package/lib/rules/no-trailing-spaces.js +208 -174
- package/lib/rules/no-unassigned-vars.js +80 -0
- package/lib/rules/no-undef-init.js +86 -60
- package/lib/rules/no-undef.js +52 -47
- package/lib/rules/no-undefined.js +73 -74
- package/lib/rules/no-underscore-dangle.js +370 -322
- package/lib/rules/no-unexpected-multiline.js +112 -102
- package/lib/rules/no-unmodified-loop-condition.js +254 -254
- package/lib/rules/no-unneeded-ternary.js +212 -146
- package/lib/rules/no-unreachable-loop.js +145 -140
- package/lib/rules/no-unreachable.js +255 -248
- package/lib/rules/no-unsafe-finally.js +93 -85
- package/lib/rules/no-unsafe-negation.js +105 -81
- package/lib/rules/no-unsafe-optional-chaining.js +193 -177
- package/lib/rules/no-unused-expressions.js +199 -158
- package/lib/rules/no-unused-labels.js +139 -124
- package/lib/rules/no-unused-private-class-members.js +206 -182
- package/lib/rules/no-unused-vars.js +1708 -687
- package/lib/rules/no-use-before-define.js +327 -229
- package/lib/rules/no-useless-assignment.js +654 -0
- package/lib/rules/no-useless-backreference.js +212 -143
- package/lib/rules/no-useless-call.js +58 -53
- package/lib/rules/no-useless-catch.js +40 -40
- package/lib/rules/no-useless-computed-key.js +144 -108
- package/lib/rules/no-useless-concat.js +65 -59
- package/lib/rules/no-useless-constructor.js +160 -97
- package/lib/rules/no-useless-escape.js +364 -291
- package/lib/rules/no-useless-rename.js +183 -153
- package/lib/rules/no-useless-return.js +344 -307
- package/lib/rules/no-var.js +245 -212
- package/lib/rules/no-void.js +51 -46
- package/lib/rules/no-warning-comments.js +191 -183
- package/lib/rules/no-whitespace-before-property.js +131 -97
- package/lib/rules/no-with.js +24 -26
- package/lib/rules/nonblock-statement-body-position.js +149 -112
- package/lib/rules/object-curly-newline.js +306 -247
- package/lib/rules/object-curly-spacing.js +360 -296
- package/lib/rules/object-property-newline.js +137 -88
- package/lib/rules/object-shorthand.js +632 -500
- package/lib/rules/one-var-declaration-per-line.js +104 -82
- package/lib/rules/one-var.js +686 -536
- package/lib/rules/operator-assignment.js +219 -158
- package/lib/rules/operator-linebreak.js +295 -233
- package/lib/rules/padded-blocks.js +346 -290
- package/lib/rules/padding-line-between-statements.js +443 -421
- package/lib/rules/prefer-arrow-callback.js +371 -315
- package/lib/rules/prefer-const.js +418 -373
- package/lib/rules/prefer-destructuring.js +309 -278
- package/lib/rules/prefer-exponentiation-operator.js +176 -132
- package/lib/rules/prefer-named-capture-group.js +160 -141
- package/lib/rules/prefer-numeric-literals.js +121 -112
- package/lib/rules/prefer-object-has-own.js +116 -82
- package/lib/rules/prefer-object-spread.js +214 -193
- package/lib/rules/prefer-promise-reject-errors.js +140 -118
- package/lib/rules/prefer-reflect.js +126 -103
- package/lib/rules/prefer-regex-literals.js +561 -463
- package/lib/rules/prefer-rest-params.js +79 -80
- package/lib/rules/prefer-spread.js +47 -43
- package/lib/rules/prefer-template.js +266 -194
- package/lib/rules/preserve-caught-error.js +535 -0
- package/lib/rules/quote-props.js +373 -289
- package/lib/rules/quotes.js +374 -308
- package/lib/rules/radix.js +152 -134
- package/lib/rules/require-atomic-updates.js +316 -282
- package/lib/rules/require-await.js +153 -82
- package/lib/rules/require-unicode-regexp.js +296 -108
- package/lib/rules/require-yield.js +53 -54
- package/lib/rules/rest-spread-spacing.js +128 -98
- package/lib/rules/semi-spacing.js +281 -232
- package/lib/rules/semi-style.js +176 -116
- package/lib/rules/semi.js +456 -418
- package/lib/rules/sort-imports.js +307 -229
- package/lib/rules/sort-keys.js +219 -181
- package/lib/rules/sort-vars.js +127 -91
- package/lib/rules/space-before-blocks.js +199 -171
- package/lib/rules/space-before-function-paren.js +186 -148
- package/lib/rules/space-in-parens.js +359 -270
- package/lib/rules/space-infix-ops.js +237 -183
- package/lib/rules/space-unary-ops.js +356 -280
- package/lib/rules/spaced-comment.js +363 -301
- package/lib/rules/strict.js +266 -229
- package/lib/rules/switch-colon-spacing.js +130 -104
- package/lib/rules/symbol-description.js +45 -48
- package/lib/rules/template-curly-spacing.js +148 -124
- package/lib/rules/template-tag-spacing.js +98 -70
- package/lib/rules/unicode-bom.js +54 -54
- package/lib/rules/use-isnan.js +237 -110
- package/lib/rules/utils/ast-utils.js +2139 -1688
- package/lib/rules/utils/char-source.js +247 -0
- package/lib/rules/utils/fix-tracker.js +99 -88
- package/lib/rules/utils/keywords.js +59 -59
- package/lib/rules/utils/lazy-loading-rule-map.js +81 -78
- package/lib/rules/utils/regular-expressions.js +35 -19
- package/lib/rules/utils/unicode/index.js +9 -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 +153 -109
- package/lib/rules/vars-on-top.js +152 -144
- package/lib/rules/wrap-iife.js +204 -173
- package/lib/rules/wrap-regex.js +77 -47
- package/lib/rules/yield-star-spacing.js +145 -116
- package/lib/rules/yoda.js +283 -274
- package/lib/services/parser-service.js +65 -0
- package/lib/services/processor-service.js +101 -0
- package/lib/services/suppressions-service.js +302 -0
- package/lib/services/warning-service.js +98 -0
- package/lib/shared/ajv.js +14 -14
- package/lib/shared/assert.js +21 -0
- package/lib/shared/ast-utils.js +7 -6
- package/lib/shared/deep-merge-arrays.js +62 -0
- package/lib/shared/directives.js +3 -2
- package/lib/shared/flags.js +108 -0
- package/lib/shared/logging.js +24 -16
- package/lib/shared/naming.js +109 -0
- package/lib/shared/option-utils.js +63 -0
- package/lib/shared/relative-module-resolver.js +18 -40
- package/lib/shared/runtime-info.js +138 -128
- package/lib/shared/serialization.js +78 -0
- package/lib/shared/severity.js +22 -22
- package/lib/shared/stats.js +30 -0
- package/lib/shared/string-utils.js +19 -21
- package/lib/shared/text-table.js +68 -0
- package/lib/shared/translate-cli-options.js +281 -0
- package/lib/shared/traverser.js +153 -146
- package/lib/types/config-api.d.ts +12 -0
- package/lib/types/index.d.ts +1473 -0
- package/lib/types/rules.d.ts +5589 -0
- package/lib/types/universal.d.ts +6 -0
- package/lib/types/use-at-your-own-risk.d.ts +87 -0
- package/lib/universal.js +10 -0
- package/lib/unsupported-api.js +8 -9
- package/messages/all-files-ignored.js +3 -3
- package/messages/all-matched-files-ignored.js +21 -0
- package/messages/config-file-missing.js +16 -0
- package/messages/config-plugin-missing.js +14 -0
- package/messages/config-serialize-function.js +30 -0
- package/messages/eslintrc-incompat.js +35 -16
- package/messages/eslintrc-plugins.js +8 -5
- 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 +4 -4
- package/messages/plugin-conflict.js +9 -9
- package/messages/plugin-invalid.js +4 -4
- package/messages/plugin-missing.js +4 -4
- 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 +105 -60
- package/conf/config-schema.js +0 -93
- package/lib/cli-engine/formatters/checkstyle.js +0 -60
- package/lib/cli-engine/formatters/compact.js +0 -60
- package/lib/cli-engine/formatters/jslint-xml.js +0 -41
- package/lib/cli-engine/formatters/junit.js +0 -82
- package/lib/cli-engine/formatters/tap.js +0 -95
- package/lib/cli-engine/formatters/unix.js +0 -58
- package/lib/cli-engine/formatters/visualstudio.js +0 -63
- package/lib/cli-engine/xml-escape.js +0 -34
- package/lib/config/flat-config-helpers.js +0 -111
- package/lib/config/rule-validator.js +0 -158
- package/lib/eslint/flat-eslint.js +0 -1159
- package/lib/linter/config-comment-parser.js +0 -185
- package/lib/linter/node-event-generator.js +0 -354
- package/lib/linter/report-translator.js +0 -369
- package/lib/linter/safe-emitter.js +0 -52
- package/lib/rule-tester/flat-rule-tester.js +0 -1131
- package/lib/rules/require-jsdoc.js +0 -122
- package/lib/rules/utils/patterns/letters.js +0 -36
- package/lib/rules/valid-jsdoc.js +0 -516
- package/lib/shared/config-validator.js +0 -347
- package/lib/shared/deprecation-warnings.js +0 -58
- package/lib/shared/types.js +0 -216
- package/lib/source-code/index.js +0 -5
- package/lib/source-code/source-code.js +0 -1055
- package/lib/source-code/token-store/backward-token-comment-cursor.js +0 -57
- package/lib/source-code/token-store/backward-token-cursor.js +0 -58
- package/lib/source-code/token-store/cursors.js +0 -90
- package/lib/source-code/token-store/forward-token-comment-cursor.js +0 -57
- package/lib/source-code/token-store/forward-token-cursor.js +0 -63
- package/lib/source-code/token-store/index.js +0 -627
- package/lib/source-code/token-store/padded-token-cursor.js +0 -38
- package/lib/source-code/token-store/utils.js +0 -107
|
@@ -15,53 +15,64 @@ const Rules = require("../rules");
|
|
|
15
15
|
// Helpers
|
|
16
16
|
//-----------------------------------------------------------------------------
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
const sharedDefaultConfig = [
|
|
19
|
+
// intentionally empty config to ensure these files are globbed by default
|
|
20
|
+
{
|
|
21
|
+
files: ["**/*.js", "**/*.mjs"],
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
files: ["**/*.cjs"],
|
|
25
|
+
languageOptions: {
|
|
26
|
+
sourceType: "commonjs",
|
|
27
|
+
ecmaVersion: "latest",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
];
|
|
22
31
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
get(target, property) {
|
|
31
|
-
return Rules.get(property);
|
|
32
|
-
},
|
|
32
|
+
exports.defaultConfig = Object.freeze([
|
|
33
|
+
{
|
|
34
|
+
plugins: {
|
|
35
|
+
"@": {
|
|
36
|
+
languages: {
|
|
37
|
+
js: require("../languages/js"),
|
|
38
|
+
},
|
|
33
39
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
},
|
|
40
|
+
/*
|
|
41
|
+
* Because we try to delay loading rules until absolutely
|
|
42
|
+
* necessary, a proxy allows us to hook into the lazy-loading
|
|
43
|
+
* aspect of the rules map while still keeping all of the
|
|
44
|
+
* relevant configuration inside of the config array.
|
|
45
|
+
*/
|
|
46
|
+
rules: new Proxy(
|
|
47
|
+
{},
|
|
48
|
+
{
|
|
49
|
+
get(target, property) {
|
|
50
|
+
return Rules.get(property);
|
|
51
|
+
},
|
|
47
52
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
has(target, property) {
|
|
54
|
+
return Rules.has(property);
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
),
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
language: "@/js",
|
|
61
|
+
linterOptions: {
|
|
62
|
+
reportUnusedDisableDirectives: 1,
|
|
63
|
+
},
|
|
64
|
+
},
|
|
55
65
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
// default ignores are listed here
|
|
67
|
+
{
|
|
68
|
+
ignores: ["**/node_modules/", ".git/"],
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
...sharedDefaultConfig,
|
|
72
|
+
]);
|
|
73
|
+
|
|
74
|
+
exports.defaultRuleTesterConfig = Object.freeze([
|
|
75
|
+
{ files: ["**"] }, // Make sure the default config matches for all files
|
|
76
|
+
|
|
77
|
+
...sharedDefaultConfig,
|
|
78
|
+
]);
|
|
@@ -9,11 +9,10 @@
|
|
|
9
9
|
// Requirements
|
|
10
10
|
//-----------------------------------------------------------------------------
|
|
11
11
|
|
|
12
|
-
const { ConfigArray, ConfigArraySymbol } = require("@
|
|
12
|
+
const { ConfigArray, ConfigArraySymbol } = require("@eslint/config-array");
|
|
13
13
|
const { flatConfigSchema } = require("./flat-config-schema");
|
|
14
|
-
const { RuleValidator } = require("./rule-validator");
|
|
15
14
|
const { defaultConfig } = require("./default-config");
|
|
16
|
-
const
|
|
15
|
+
const { Config } = require("./config");
|
|
17
16
|
|
|
18
17
|
//-----------------------------------------------------------------------------
|
|
19
18
|
// Helpers
|
|
@@ -22,63 +21,7 @@ const jsPlugin = require("@eslint/js");
|
|
|
22
21
|
/**
|
|
23
22
|
* Fields that are considered metadata and not part of the config object.
|
|
24
23
|
*/
|
|
25
|
-
const META_FIELDS = new Set(["name"]);
|
|
26
|
-
|
|
27
|
-
const ruleValidator = new RuleValidator();
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Splits a plugin identifier in the form a/b/c into two parts: a/b and c.
|
|
31
|
-
* @param {string} identifier The identifier to parse.
|
|
32
|
-
* @returns {{objectName: string, pluginName: string}} The parts of the plugin
|
|
33
|
-
* name.
|
|
34
|
-
*/
|
|
35
|
-
function splitPluginIdentifier(identifier) {
|
|
36
|
-
const parts = identifier.split("/");
|
|
37
|
-
|
|
38
|
-
return {
|
|
39
|
-
objectName: parts.pop(),
|
|
40
|
-
pluginName: parts.join("/")
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Returns the name of an object in the config by reading its `meta` key.
|
|
46
|
-
* @param {Object} object The object to check.
|
|
47
|
-
* @returns {string?} The name of the object if found or `null` if there
|
|
48
|
-
* is no name.
|
|
49
|
-
*/
|
|
50
|
-
function getObjectId(object) {
|
|
51
|
-
|
|
52
|
-
// first check old-style name
|
|
53
|
-
let name = object.name;
|
|
54
|
-
|
|
55
|
-
if (!name) {
|
|
56
|
-
|
|
57
|
-
if (!object.meta) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
name = object.meta.name;
|
|
62
|
-
|
|
63
|
-
if (!name) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// now check for old-style version
|
|
69
|
-
let version = object.version;
|
|
70
|
-
|
|
71
|
-
if (!version) {
|
|
72
|
-
version = object.meta && object.meta.version;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// if there's a version then append that
|
|
76
|
-
if (version) {
|
|
77
|
-
return `${name}@${version}`;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return name;
|
|
81
|
-
}
|
|
24
|
+
const META_FIELDS = new Set(["name", "basePath"]);
|
|
82
25
|
|
|
83
26
|
/**
|
|
84
27
|
* Wraps a config error with details about where the error occurred.
|
|
@@ -88,40 +31,39 @@ function getObjectId(object) {
|
|
|
88
31
|
* @returns {TypeError} The new error with details.
|
|
89
32
|
*/
|
|
90
33
|
function wrapConfigErrorWithDetails(error, originalLength, baseLength) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
);
|
|
34
|
+
let location = "user-defined";
|
|
35
|
+
let configIndex = error.index;
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
* A config array is set up in this order:
|
|
39
|
+
* 1. Base config
|
|
40
|
+
* 2. Original configs
|
|
41
|
+
* 3. User-defined configs
|
|
42
|
+
* 4. CLI-defined configs
|
|
43
|
+
*
|
|
44
|
+
* So we need to adjust the index to account for the base config.
|
|
45
|
+
*
|
|
46
|
+
* - If the index is less than the base length, it's in the base config
|
|
47
|
+
* (as specified by `baseConfig` argument to `FlatConfigArray` constructor).
|
|
48
|
+
* - If the index is greater than the base length but less than the original
|
|
49
|
+
* length + base length, it's in the original config. The original config
|
|
50
|
+
* is passed to the `FlatConfigArray` constructor as the first argument.
|
|
51
|
+
* - Otherwise, it's in the user-defined config, which is loaded from the
|
|
52
|
+
* config file and merged with any command-line options.
|
|
53
|
+
*/
|
|
54
|
+
if (error.index < baseLength) {
|
|
55
|
+
location = "base";
|
|
56
|
+
} else if (error.index < originalLength + baseLength) {
|
|
57
|
+
location = "original";
|
|
58
|
+
configIndex = error.index - baseLength;
|
|
59
|
+
} else {
|
|
60
|
+
configIndex = error.index - originalLength - baseLength;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return new TypeError(
|
|
64
|
+
`${error.message.slice(0, -1)} at ${location} index ${configIndex}.`,
|
|
65
|
+
{ cause: error },
|
|
66
|
+
);
|
|
125
67
|
}
|
|
126
68
|
|
|
127
69
|
const originalBaseConfig = Symbol("originalBaseConfig");
|
|
@@ -136,245 +78,140 @@ const baseLength = Symbol("baseLength");
|
|
|
136
78
|
* Represents an array containing configuration information for ESLint.
|
|
137
79
|
*/
|
|
138
80
|
class FlatConfigArray extends ConfigArray {
|
|
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
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
) {
|
|
274
|
-
/* eslint-disable-next-line no-unused-vars -- need to strip off other keys */
|
|
275
|
-
const { ignores, ...otherKeys } = config;
|
|
276
|
-
|
|
277
|
-
return otherKeys;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
return config;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
/**
|
|
284
|
-
* Finalizes the config by replacing plugin references with their objects
|
|
285
|
-
* and validating rule option schemas.
|
|
286
|
-
* @param {Object} config The config to finalize.
|
|
287
|
-
* @returns {Object} The finalized config.
|
|
288
|
-
* @throws {TypeError} If the config is invalid.
|
|
289
|
-
*/
|
|
290
|
-
[ConfigArraySymbol.finalizeConfig](config) {
|
|
291
|
-
|
|
292
|
-
const { plugins, languageOptions, processor } = config;
|
|
293
|
-
let parserName, processorName;
|
|
294
|
-
let invalidParser = false,
|
|
295
|
-
invalidProcessor = false;
|
|
296
|
-
|
|
297
|
-
// Check parser value
|
|
298
|
-
if (languageOptions && languageOptions.parser) {
|
|
299
|
-
const { parser } = languageOptions;
|
|
300
|
-
|
|
301
|
-
if (typeof parser === "object") {
|
|
302
|
-
parserName = getObjectId(parser);
|
|
303
|
-
|
|
304
|
-
if (!parserName) {
|
|
305
|
-
invalidParser = true;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
} else {
|
|
309
|
-
invalidParser = true;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
// Check processor value
|
|
314
|
-
if (processor) {
|
|
315
|
-
if (typeof processor === "string") {
|
|
316
|
-
const { pluginName, objectName: localProcessorName } = splitPluginIdentifier(processor);
|
|
317
|
-
|
|
318
|
-
processorName = processor;
|
|
319
|
-
|
|
320
|
-
if (!plugins || !plugins[pluginName] || !plugins[pluginName].processors || !plugins[pluginName].processors[localProcessorName]) {
|
|
321
|
-
throw new TypeError(`Key "processor": Could not find "${localProcessorName}" in plugin "${pluginName}".`);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
config.processor = plugins[pluginName].processors[localProcessorName];
|
|
325
|
-
} else if (typeof processor === "object") {
|
|
326
|
-
processorName = getObjectId(processor);
|
|
327
|
-
|
|
328
|
-
if (!processorName) {
|
|
329
|
-
invalidProcessor = true;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
} else {
|
|
333
|
-
invalidProcessor = true;
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
ruleValidator.validate(config);
|
|
338
|
-
|
|
339
|
-
// apply special logic for serialization into JSON
|
|
340
|
-
/* eslint-disable object-shorthand -- shorthand would change "this" value */
|
|
341
|
-
Object.defineProperty(config, "toJSON", {
|
|
342
|
-
value: function() {
|
|
343
|
-
|
|
344
|
-
if (invalidParser) {
|
|
345
|
-
throw new Error("Could not serialize parser object (missing 'meta' object).");
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
if (invalidProcessor) {
|
|
349
|
-
throw new Error("Could not serialize processor object (missing 'meta' object).");
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
return {
|
|
353
|
-
...this,
|
|
354
|
-
plugins: Object.entries(plugins).map(([namespace, plugin]) => {
|
|
355
|
-
|
|
356
|
-
const pluginId = getObjectId(plugin);
|
|
357
|
-
|
|
358
|
-
if (!pluginId) {
|
|
359
|
-
return namespace;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
return `${namespace}:${pluginId}`;
|
|
363
|
-
}),
|
|
364
|
-
languageOptions: {
|
|
365
|
-
...languageOptions,
|
|
366
|
-
parser: parserName
|
|
367
|
-
},
|
|
368
|
-
processor: processorName
|
|
369
|
-
};
|
|
370
|
-
}
|
|
371
|
-
});
|
|
372
|
-
/* eslint-enable object-shorthand -- ok to enable now */
|
|
373
|
-
|
|
374
|
-
return config;
|
|
375
|
-
}
|
|
376
|
-
/* eslint-enable class-methods-use-this -- Desired as instance method */
|
|
377
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Creates a new instance.
|
|
83
|
+
* @param {*[]} configs An array of configuration information.
|
|
84
|
+
* @param {{basePath: string, shouldIgnore: boolean, baseConfig: FlatConfig}} options The options
|
|
85
|
+
* to use for the config array instance.
|
|
86
|
+
*/
|
|
87
|
+
constructor(
|
|
88
|
+
configs,
|
|
89
|
+
{ basePath, shouldIgnore = true, baseConfig = defaultConfig } = {},
|
|
90
|
+
) {
|
|
91
|
+
super(configs, {
|
|
92
|
+
basePath,
|
|
93
|
+
schema: flatConfigSchema,
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The original length of the array before any modifications.
|
|
98
|
+
* @type {number}
|
|
99
|
+
*/
|
|
100
|
+
this[originalLength] = this.length;
|
|
101
|
+
|
|
102
|
+
if (baseConfig[Symbol.iterator]) {
|
|
103
|
+
this.unshift(...baseConfig);
|
|
104
|
+
} else {
|
|
105
|
+
this.unshift(baseConfig);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* The length of the array after applying the base config.
|
|
110
|
+
* @type {number}
|
|
111
|
+
*/
|
|
112
|
+
this[baseLength] = this.length - this[originalLength];
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* The base config used to build the config array.
|
|
116
|
+
* @type {Array<FlatConfig>}
|
|
117
|
+
*/
|
|
118
|
+
this[originalBaseConfig] = baseConfig;
|
|
119
|
+
Object.defineProperty(this, originalBaseConfig, { writable: false });
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Determines if `ignores` fields should be honored.
|
|
123
|
+
* If true, then all `ignores` fields are honored.
|
|
124
|
+
* if false, then only `ignores` fields in the baseConfig are honored.
|
|
125
|
+
* @type {boolean}
|
|
126
|
+
*/
|
|
127
|
+
this.shouldIgnore = shouldIgnore;
|
|
128
|
+
Object.defineProperty(this, "shouldIgnore", { writable: false });
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Normalizes the array by calling the superclass method and catching/rethrowing
|
|
133
|
+
* any ConfigError exceptions with additional details.
|
|
134
|
+
* @param {any} [context] The context to use to normalize the array.
|
|
135
|
+
* @returns {Promise<FlatConfigArray>} A promise that resolves when the array is normalized.
|
|
136
|
+
*/
|
|
137
|
+
normalize(context) {
|
|
138
|
+
return super.normalize(context).catch(error => {
|
|
139
|
+
if (error.name === "ConfigError") {
|
|
140
|
+
throw wrapConfigErrorWithDetails(
|
|
141
|
+
error,
|
|
142
|
+
this[originalLength],
|
|
143
|
+
this[baseLength],
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
throw error;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Normalizes the array by calling the superclass method and catching/rethrowing
|
|
153
|
+
* any ConfigError exceptions with additional details.
|
|
154
|
+
* @param {any} [context] The context to use to normalize the array.
|
|
155
|
+
* @returns {FlatConfigArray} The current instance.
|
|
156
|
+
* @throws {TypeError} If the config is invalid.
|
|
157
|
+
*/
|
|
158
|
+
normalizeSync(context) {
|
|
159
|
+
try {
|
|
160
|
+
return super.normalizeSync(context);
|
|
161
|
+
} catch (error) {
|
|
162
|
+
if (error.name === "ConfigError") {
|
|
163
|
+
throw wrapConfigErrorWithDetails(
|
|
164
|
+
error,
|
|
165
|
+
this[originalLength],
|
|
166
|
+
this[baseLength],
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* eslint-disable class-methods-use-this -- Desired as instance method */
|
|
175
|
+
/**
|
|
176
|
+
* Replaces a config with another config to allow us to put strings
|
|
177
|
+
* in the config array that will be replaced by objects before
|
|
178
|
+
* normalization.
|
|
179
|
+
* @param {Object} config The config to preprocess.
|
|
180
|
+
* @returns {Object} The preprocessed config.
|
|
181
|
+
*/
|
|
182
|
+
[ConfigArraySymbol.preprocessConfig](config) {
|
|
183
|
+
/*
|
|
184
|
+
* If a config object has `ignores` and no other non-meta fields, then it's an object
|
|
185
|
+
* for global ignores. If `shouldIgnore` is false, that object shouldn't apply,
|
|
186
|
+
* so we'll remove its `ignores`.
|
|
187
|
+
*/
|
|
188
|
+
if (
|
|
189
|
+
!this.shouldIgnore &&
|
|
190
|
+
!this[originalBaseConfig].includes(config) &&
|
|
191
|
+
config.ignores &&
|
|
192
|
+
Object.keys(config).filter(key => !META_FIELDS.has(key)).length ===
|
|
193
|
+
1
|
|
194
|
+
) {
|
|
195
|
+
/* eslint-disable-next-line no-unused-vars -- need to strip off other keys */
|
|
196
|
+
const { ignores, ...otherKeys } = config;
|
|
197
|
+
|
|
198
|
+
return otherKeys;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return config;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Finalizes the config by replacing plugin references with their objects
|
|
206
|
+
* and validating rule option schemas.
|
|
207
|
+
* @param {Object} config The config to finalize.
|
|
208
|
+
* @returns {Object} The finalized config.
|
|
209
|
+
* @throws {TypeError} If the config is invalid.
|
|
210
|
+
*/
|
|
211
|
+
[ConfigArraySymbol.finalizeConfig](config) {
|
|
212
|
+
return new Config(config);
|
|
213
|
+
}
|
|
214
|
+
/* eslint-enable class-methods-use-this -- Desired as instance method */
|
|
378
215
|
}
|
|
379
216
|
|
|
380
217
|
exports.FlatConfigArray = FlatConfigArray;
|