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
|
@@ -1,46 +1,18 @@
|
|
|
1
1
|
[
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"name": "json-with-metadata",
|
|
20
|
-
"description": "Outputs JSON-serialized results. The `json-with-metadata` provides the same linting results as the [`json`](#json) formatter with additional metadata about the rules applied. The linting results are included in the `results` property and the rules metadata is included in the `metadata` property.\n\nAlternatively, you can use the [ESLint Node.js API](../../integrate/nodejs-api) to programmatically use ESLint."
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"name": "json",
|
|
24
|
-
"description": "Outputs JSON-serialized results. The `json` formatter is useful when you want to programmatically work with the CLI's linting results.\n\nAlternatively, you can use the [ESLint Node.js API](../../integrate/nodejs-api) to programmatically use ESLint."
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"name": "junit",
|
|
28
|
-
"description": "Outputs results to format compatible with the [JUnit Jenkins plugin](https://plugins.jenkins.io/junit/)."
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"name": "stylish",
|
|
32
|
-
"description": "Human-readable output format. This is the default formatter."
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"name": "tap",
|
|
36
|
-
"description": "Outputs results to the [Test Anything Protocol (TAP)](https://testanything.org/) specification format."
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"name": "unix",
|
|
40
|
-
"description": "Outputs results to a format similar to many commands in UNIX-like systems. Parsable with tools such as [grep](https://www.gnu.org/software/grep/manual/grep.html), [sed](https://www.gnu.org/software/sed/manual/sed.html), and [awk](https://www.gnu.org/software/gawk/manual/gawk.html)."
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"name": "visualstudio",
|
|
44
|
-
"description": "Outputs results to format compatible with the integrated terminal of the [Visual Studio](https://visualstudio.microsoft.com/) IDE. When using Visual Studio, you can click on the linting results in the integrated terminal to go to the issue in the source code."
|
|
45
|
-
}
|
|
46
|
-
]
|
|
2
|
+
{
|
|
3
|
+
"name": "html",
|
|
4
|
+
"description": "Outputs results to HTML. The `html` formatter is useful for visual presentation in the browser."
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"name": "json-with-metadata",
|
|
8
|
+
"description": "Outputs JSON-serialized results. The `json-with-metadata` provides the same linting results as the [`json`](#json) formatter with additional metadata about the rules applied. The linting results are included in the `results` property and the rules metadata is included in the `metadata` property.\n\nAlternatively, you can use the [ESLint Node.js API](../../integrate/nodejs-api) to programmatically use ESLint."
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "json",
|
|
12
|
+
"description": "Outputs JSON-serialized results. The `json` formatter is useful when you want to programmatically work with the CLI's linting results.\n\nAlternatively, you can use the [ESLint Node.js API](../../integrate/nodejs-api) to programmatically use ESLint."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "stylish",
|
|
16
|
+
"description": "Human-readable output format. This is the default formatter."
|
|
17
|
+
}
|
|
18
|
+
]
|
|
@@ -8,22 +8,22 @@
|
|
|
8
8
|
// Helpers
|
|
9
9
|
//------------------------------------------------------------------------------
|
|
10
10
|
|
|
11
|
-
const encodeHTML = (function() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}()
|
|
11
|
+
const encodeHTML = (function () {
|
|
12
|
+
const encodeHTMLRules = {
|
|
13
|
+
"&": "&",
|
|
14
|
+
"<": "<",
|
|
15
|
+
">": ">",
|
|
16
|
+
'"': """,
|
|
17
|
+
"'": "'",
|
|
18
|
+
};
|
|
19
|
+
const matchHTML = /[&<>"']/gu;
|
|
20
|
+
|
|
21
|
+
return function (code) {
|
|
22
|
+
return code
|
|
23
|
+
? code.toString().replace(matchHTML, m => encodeHTMLRules[m] || m)
|
|
24
|
+
: "";
|
|
25
|
+
};
|
|
26
|
+
})();
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
29
|
* Get the final HTML document.
|
|
@@ -31,9 +31,9 @@ const encodeHTML = (function() {
|
|
|
31
31
|
* @returns {string} HTML document.
|
|
32
32
|
*/
|
|
33
33
|
function pageTemplate(it) {
|
|
34
|
-
|
|
34
|
+
const { reportColor, reportSummary, date, results } = it;
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
return `
|
|
37
37
|
<!DOCTYPE html>
|
|
38
38
|
<html>
|
|
39
39
|
<head>
|
|
@@ -182,11 +182,11 @@ function pageTemplate(it) {
|
|
|
182
182
|
/**
|
|
183
183
|
* Given a word and a count, append an s if count is not one.
|
|
184
184
|
* @param {string} word A word in its singular form.
|
|
185
|
-
* @param {
|
|
185
|
+
* @param {number} count A number controlling whether word should be pluralized.
|
|
186
186
|
* @returns {string} The original word with an s on the end if count is not one.
|
|
187
187
|
*/
|
|
188
188
|
function pluralize(word, count) {
|
|
189
|
-
|
|
189
|
+
return count === 1 ? word : `${word}s`;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
/**
|
|
@@ -196,29 +196,29 @@ function pluralize(word, count) {
|
|
|
196
196
|
* @returns {string} The formatted string, pluralized where necessary
|
|
197
197
|
*/
|
|
198
198
|
function renderSummary(totalErrors, totalWarnings) {
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
const totalProblems = totalErrors + totalWarnings;
|
|
200
|
+
let renderedText = `${totalProblems} ${pluralize("problem", totalProblems)}`;
|
|
201
201
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
202
|
+
if (totalProblems !== 0) {
|
|
203
|
+
renderedText += ` (${totalErrors} ${pluralize("error", totalErrors)}, ${totalWarnings} ${pluralize("warning", totalWarnings)})`;
|
|
204
|
+
}
|
|
205
|
+
return renderedText;
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
/**
|
|
209
209
|
* Get the color based on whether there are errors/warnings...
|
|
210
210
|
* @param {string} totalErrors Total errors
|
|
211
211
|
* @param {string} totalWarnings Total warnings
|
|
212
|
-
* @returns {
|
|
212
|
+
* @returns {number} The color code (0 = green, 1 = yellow, 2 = red)
|
|
213
213
|
*/
|
|
214
214
|
function renderColor(totalErrors, totalWarnings) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
215
|
+
if (totalErrors !== 0) {
|
|
216
|
+
return 2;
|
|
217
|
+
}
|
|
218
|
+
if (totalWarnings !== 0) {
|
|
219
|
+
return 1;
|
|
220
|
+
}
|
|
221
|
+
return 0;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
/**
|
|
@@ -227,18 +227,18 @@ function renderColor(totalErrors, totalWarnings) {
|
|
|
227
227
|
* @returns {string} HTML (table row) describing the message.
|
|
228
228
|
*/
|
|
229
229
|
function messageTemplate(it) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
230
|
+
const {
|
|
231
|
+
parentIndex,
|
|
232
|
+
lineNumber,
|
|
233
|
+
columnNumber,
|
|
234
|
+
severityNumber,
|
|
235
|
+
severityName,
|
|
236
|
+
message,
|
|
237
|
+
ruleUrl,
|
|
238
|
+
ruleId,
|
|
239
|
+
} = it;
|
|
240
|
+
|
|
241
|
+
return `
|
|
242
242
|
<tr style="display: none;" class="f-${parentIndex}">
|
|
243
243
|
<td>${lineNumber}:${columnNumber}</td>
|
|
244
244
|
<td class="clr-${severityNumber}">${severityName}</td>
|
|
@@ -253,41 +253,42 @@ function messageTemplate(it) {
|
|
|
253
253
|
/**
|
|
254
254
|
* Get HTML (table rows) describing the messages.
|
|
255
255
|
* @param {Array} messages Messages.
|
|
256
|
-
* @param {
|
|
256
|
+
* @param {number} parentIndex Index of the parent HTML row.
|
|
257
257
|
* @param {Object} rulesMeta Dictionary containing metadata for each rule executed by the analysis.
|
|
258
258
|
* @returns {string} HTML (table rows) describing the messages.
|
|
259
259
|
*/
|
|
260
260
|
function renderMessages(messages, parentIndex, rulesMeta) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
261
|
+
/**
|
|
262
|
+
* Get HTML (table row) describing a message.
|
|
263
|
+
* @param {Object} message Message.
|
|
264
|
+
* @returns {string} HTML (table row) describing a message.
|
|
265
|
+
*/
|
|
266
|
+
return messages
|
|
267
|
+
.map(message => {
|
|
268
|
+
const lineNumber = message.line || 0;
|
|
269
|
+
const columnNumber = message.column || 0;
|
|
270
|
+
let ruleUrl;
|
|
271
|
+
|
|
272
|
+
if (rulesMeta) {
|
|
273
|
+
const meta = rulesMeta[message.ruleId];
|
|
274
|
+
|
|
275
|
+
if (meta && meta.docs && meta.docs.url) {
|
|
276
|
+
ruleUrl = meta.docs.url;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
return messageTemplate({
|
|
281
|
+
parentIndex,
|
|
282
|
+
lineNumber,
|
|
283
|
+
columnNumber,
|
|
284
|
+
severityNumber: message.severity,
|
|
285
|
+
severityName: message.severity === 1 ? "Warning" : "Error",
|
|
286
|
+
message: message.message,
|
|
287
|
+
ruleId: message.ruleId,
|
|
288
|
+
ruleUrl,
|
|
289
|
+
});
|
|
290
|
+
})
|
|
291
|
+
.join("\n");
|
|
291
292
|
}
|
|
292
293
|
|
|
293
294
|
/**
|
|
@@ -296,9 +297,9 @@ function renderMessages(messages, parentIndex, rulesMeta) {
|
|
|
296
297
|
* @returns {string} HTML (table row) describing the result for the file.
|
|
297
298
|
*/
|
|
298
299
|
function resultTemplate(it) {
|
|
299
|
-
|
|
300
|
+
const { color, index, filePath, summary } = it;
|
|
300
301
|
|
|
301
|
-
|
|
302
|
+
return `
|
|
302
303
|
<tr class="bg-${color}" data-group="f-${index}">
|
|
303
304
|
<th colspan="4">
|
|
304
305
|
[+] ${encodeHTML(filePath)}
|
|
@@ -315,37 +316,44 @@ function resultTemplate(it) {
|
|
|
315
316
|
* @returns {string} HTML string describing the results.
|
|
316
317
|
*/
|
|
317
318
|
function renderResults(results, rulesMeta) {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
319
|
+
return results
|
|
320
|
+
.map(
|
|
321
|
+
(result, index) =>
|
|
322
|
+
resultTemplate({
|
|
323
|
+
index,
|
|
324
|
+
color: renderColor(result.errorCount, result.warningCount),
|
|
325
|
+
filePath: result.filePath,
|
|
326
|
+
summary: renderSummary(
|
|
327
|
+
result.errorCount,
|
|
328
|
+
result.warningCount,
|
|
329
|
+
),
|
|
330
|
+
}) + renderMessages(result.messages, index, rulesMeta),
|
|
331
|
+
)
|
|
332
|
+
.join("\n");
|
|
324
333
|
}
|
|
325
334
|
|
|
326
335
|
//------------------------------------------------------------------------------
|
|
327
336
|
// Public Interface
|
|
328
337
|
//------------------------------------------------------------------------------
|
|
329
338
|
|
|
330
|
-
module.exports = function(results, data) {
|
|
331
|
-
|
|
332
|
-
totalWarnings;
|
|
339
|
+
module.exports = function (results, data) {
|
|
340
|
+
let totalErrors, totalWarnings;
|
|
333
341
|
|
|
334
|
-
|
|
342
|
+
const metaData = data ? data.rulesMeta : {};
|
|
335
343
|
|
|
336
|
-
|
|
337
|
-
|
|
344
|
+
totalErrors = 0;
|
|
345
|
+
totalWarnings = 0;
|
|
338
346
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
347
|
+
// Iterate over results to get totals
|
|
348
|
+
results.forEach(result => {
|
|
349
|
+
totalErrors += result.errorCount;
|
|
350
|
+
totalWarnings += result.warningCount;
|
|
351
|
+
});
|
|
344
352
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
353
|
+
return pageTemplate({
|
|
354
|
+
date: new Date(),
|
|
355
|
+
reportColor: renderColor(totalErrors, totalWarnings),
|
|
356
|
+
reportSummary: renderSummary(totalErrors, totalWarnings),
|
|
357
|
+
results: renderResults(results, metaData),
|
|
358
|
+
});
|
|
351
359
|
};
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
// Public Interface
|
|
9
9
|
//------------------------------------------------------------------------------
|
|
10
10
|
|
|
11
|
-
module.exports = function(results, data) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
module.exports = function (results, data) {
|
|
12
|
+
return JSON.stringify({
|
|
13
|
+
results,
|
|
14
|
+
metadata: data,
|
|
15
|
+
});
|
|
16
16
|
};
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
7
|
const chalk = require("chalk"),
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
util = require("node:util"),
|
|
9
|
+
table = require("../../shared/text-table");
|
|
10
10
|
|
|
11
11
|
//------------------------------------------------------------------------------
|
|
12
12
|
// Helpers
|
|
@@ -15,87 +15,108 @@ const chalk = require("chalk"),
|
|
|
15
15
|
/**
|
|
16
16
|
* Given a word and a count, append an s if count is not one.
|
|
17
17
|
* @param {string} word A word in its singular form.
|
|
18
|
-
* @param {
|
|
18
|
+
* @param {number} count A number controlling whether word should be pluralized.
|
|
19
19
|
* @returns {string} The original word with an s on the end if count is not one.
|
|
20
20
|
*/
|
|
21
21
|
function pluralize(word, count) {
|
|
22
|
-
|
|
22
|
+
return count === 1 ? word : `${word}s`;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
//------------------------------------------------------------------------------
|
|
26
26
|
// Public Interface
|
|
27
27
|
//------------------------------------------------------------------------------
|
|
28
28
|
|
|
29
|
-
module.exports = function(results) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
99
|
-
|
|
100
|
-
|
|
29
|
+
module.exports = function (results) {
|
|
30
|
+
let output = "\n",
|
|
31
|
+
errorCount = 0,
|
|
32
|
+
warningCount = 0,
|
|
33
|
+
fixableErrorCount = 0,
|
|
34
|
+
fixableWarningCount = 0,
|
|
35
|
+
summaryColor = "yellow";
|
|
36
|
+
|
|
37
|
+
results.forEach(result => {
|
|
38
|
+
const messages = result.messages;
|
|
39
|
+
|
|
40
|
+
if (messages.length === 0) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
errorCount += result.errorCount;
|
|
45
|
+
warningCount += result.warningCount;
|
|
46
|
+
fixableErrorCount += result.fixableErrorCount;
|
|
47
|
+
fixableWarningCount += result.fixableWarningCount;
|
|
48
|
+
|
|
49
|
+
output += `${chalk.underline(result.filePath)}\n`;
|
|
50
|
+
|
|
51
|
+
output += `${table(
|
|
52
|
+
messages.map(message => {
|
|
53
|
+
let messageType;
|
|
54
|
+
|
|
55
|
+
if (message.fatal || message.severity === 2) {
|
|
56
|
+
messageType = chalk.red("error");
|
|
57
|
+
summaryColor = "red";
|
|
58
|
+
} else {
|
|
59
|
+
messageType = chalk.yellow("warning");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return [
|
|
63
|
+
"",
|
|
64
|
+
String(message.line || 0),
|
|
65
|
+
String(message.column || 0),
|
|
66
|
+
messageType,
|
|
67
|
+
message.message.replace(/([^ ])\.$/u, "$1"),
|
|
68
|
+
chalk.dim(message.ruleId || ""),
|
|
69
|
+
];
|
|
70
|
+
}),
|
|
71
|
+
{
|
|
72
|
+
align: ["", "r", "l"],
|
|
73
|
+
stringLength(str) {
|
|
74
|
+
return util.stripVTControlCharacters(str).length;
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
)
|
|
78
|
+
.split("\n")
|
|
79
|
+
.map(el =>
|
|
80
|
+
el.replace(/(\d+)\s+(\d+)/u, (m, p1, p2) =>
|
|
81
|
+
chalk.dim(`${p1}:${p2}`),
|
|
82
|
+
),
|
|
83
|
+
)
|
|
84
|
+
.join("\n")}\n\n`;
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
const total = errorCount + warningCount;
|
|
88
|
+
|
|
89
|
+
if (total > 0) {
|
|
90
|
+
output += chalk[summaryColor].bold(
|
|
91
|
+
[
|
|
92
|
+
"\u2716 ",
|
|
93
|
+
total,
|
|
94
|
+
pluralize(" problem", total),
|
|
95
|
+
" (",
|
|
96
|
+
errorCount,
|
|
97
|
+
pluralize(" error", errorCount),
|
|
98
|
+
", ",
|
|
99
|
+
warningCount,
|
|
100
|
+
pluralize(" warning", warningCount),
|
|
101
|
+
")\n",
|
|
102
|
+
].join(""),
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
if (fixableErrorCount > 0 || fixableWarningCount > 0) {
|
|
106
|
+
output += chalk[summaryColor].bold(
|
|
107
|
+
[
|
|
108
|
+
" ",
|
|
109
|
+
fixableErrorCount,
|
|
110
|
+
pluralize(" error", fixableErrorCount),
|
|
111
|
+
" and ",
|
|
112
|
+
fixableWarningCount,
|
|
113
|
+
pluralize(" warning", fixableWarningCount),
|
|
114
|
+
" potentially fixable with the `--fix` option.\n",
|
|
115
|
+
].join(""),
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Resets output color, for prevent change on top level
|
|
121
|
+
return total > 0 ? chalk.reset(output) : "";
|
|
101
122
|
};
|
package/lib/cli-engine/hash.js
CHANGED
|
@@ -25,7 +25,7 @@ const murmur = require("imurmurhash");
|
|
|
25
25
|
* @returns {string} the hash
|
|
26
26
|
*/
|
|
27
27
|
function hash(str) {
|
|
28
|
-
|
|
28
|
+
return murmur(str).result().toString(36);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
//------------------------------------------------------------------------------
|
package/lib/cli-engine/index.js
CHANGED