bahlint 28.58.6934

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.
Files changed (420) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +370 -0
  3. package/bin/eslint.js +195 -0
  4. package/conf/ecma-version.js +16 -0
  5. package/conf/globals.js +169 -0
  6. package/conf/replacements.json +26 -0
  7. package/conf/rule-type-list.json +91 -0
  8. package/lib/api.js +39 -0
  9. package/lib/cli-engine/formatters/formatters-meta.json +22 -0
  10. package/lib/cli-engine/formatters/gasoline.js +168 -0
  11. package/lib/cli-engine/formatters/html.js +359 -0
  12. package/lib/cli-engine/formatters/json-with-metadata.js +16 -0
  13. package/lib/cli-engine/formatters/json.js +13 -0
  14. package/lib/cli-engine/formatters/stylish.js +153 -0
  15. package/lib/cli-engine/hash.js +35 -0
  16. package/lib/cli-engine/lint-result-cache.js +220 -0
  17. package/lib/cli.js +607 -0
  18. package/lib/config/config-loader.js +683 -0
  19. package/lib/config/config.js +674 -0
  20. package/lib/config/default-config.js +78 -0
  21. package/lib/config/flat-config-array.js +217 -0
  22. package/lib/config/flat-config-schema.js +598 -0
  23. package/lib/config-api.js +12 -0
  24. package/lib/eslint/eslint-helpers.js +1462 -0
  25. package/lib/eslint/eslint.js +1364 -0
  26. package/lib/eslint/index.js +7 -0
  27. package/lib/eslint/worker.js +173 -0
  28. package/lib/languages/js/index.js +336 -0
  29. package/lib/languages/js/source-code/index.js +7 -0
  30. package/lib/languages/js/source-code/source-code.js +1178 -0
  31. package/lib/languages/js/source-code/token-store/backward-token-comment-cursor.js +61 -0
  32. package/lib/languages/js/source-code/token-store/backward-token-cursor.js +57 -0
  33. package/lib/languages/js/source-code/token-store/cursor.js +76 -0
  34. package/lib/languages/js/source-code/token-store/cursors.js +120 -0
  35. package/lib/languages/js/source-code/token-store/decorative-cursor.js +38 -0
  36. package/lib/languages/js/source-code/token-store/filter-cursor.js +42 -0
  37. package/lib/languages/js/source-code/token-store/forward-token-comment-cursor.js +65 -0
  38. package/lib/languages/js/source-code/token-store/forward-token-cursor.js +62 -0
  39. package/lib/languages/js/source-code/token-store/index.js +695 -0
  40. package/lib/languages/js/source-code/token-store/limit-cursor.js +39 -0
  41. package/lib/languages/js/source-code/token-store/padded-token-cursor.js +45 -0
  42. package/lib/languages/js/source-code/token-store/skip-cursor.js +41 -0
  43. package/lib/languages/js/source-code/token-store/utils.js +131 -0
  44. package/lib/languages/js/validate-language-options.js +196 -0
  45. package/lib/linter/apply-disable-directives.js +583 -0
  46. package/lib/linter/code-path-analysis/code-path-analyzer.js +828 -0
  47. package/lib/linter/code-path-analysis/code-path-segment.js +262 -0
  48. package/lib/linter/code-path-analysis/code-path-state.js +2370 -0
  49. package/lib/linter/code-path-analysis/code-path.js +332 -0
  50. package/lib/linter/code-path-analysis/debug-helpers.js +223 -0
  51. package/lib/linter/code-path-analysis/fork-context.js +374 -0
  52. package/lib/linter/code-path-analysis/id-generator.js +44 -0
  53. package/lib/linter/esquery.js +332 -0
  54. package/lib/linter/file-context.js +88 -0
  55. package/lib/linter/file-report.js +604 -0
  56. package/lib/linter/index.js +11 -0
  57. package/lib/linter/interpolate.js +50 -0
  58. package/lib/linter/linter.js +1614 -0
  59. package/lib/linter/rule-fixer.js +199 -0
  60. package/lib/linter/source-code-fixer.js +154 -0
  61. package/lib/linter/source-code-traverser.js +333 -0
  62. package/lib/linter/source-code-visitor.js +81 -0
  63. package/lib/linter/timing.js +209 -0
  64. package/lib/linter/vfile.js +115 -0
  65. package/lib/options.js +416 -0
  66. package/lib/rule-tester/index.js +7 -0
  67. package/lib/rule-tester/rule-tester.js +1817 -0
  68. package/lib/rules/accessor-pairs.js +420 -0
  69. package/lib/rules/array-bracket-newline.js +291 -0
  70. package/lib/rules/array-bracket-spacing.js +301 -0
  71. package/lib/rules/array-callback-return.js +493 -0
  72. package/lib/rules/array-element-newline.js +374 -0
  73. package/lib/rules/arrow-body-style.js +418 -0
  74. package/lib/rules/arrow-parens.js +237 -0
  75. package/lib/rules/arrow-spacing.js +188 -0
  76. package/lib/rules/block-scoped-var.js +137 -0
  77. package/lib/rules/block-spacing.js +202 -0
  78. package/lib/rules/brace-style.js +278 -0
  79. package/lib/rules/callback-return.js +216 -0
  80. package/lib/rules/camelcase.js +422 -0
  81. package/lib/rules/capitalized-comments.js +325 -0
  82. package/lib/rules/class-methods-use-this.js +250 -0
  83. package/lib/rules/comma-dangle.js +424 -0
  84. package/lib/rules/comma-spacing.js +205 -0
  85. package/lib/rules/comma-style.js +391 -0
  86. package/lib/rules/complexity.js +201 -0
  87. package/lib/rules/computed-property-spacing.js +251 -0
  88. package/lib/rules/consistent-return.js +221 -0
  89. package/lib/rules/consistent-this.js +179 -0
  90. package/lib/rules/constructor-super.js +453 -0
  91. package/lib/rules/curly.js +425 -0
  92. package/lib/rules/default-case-last.js +51 -0
  93. package/lib/rules/default-case.js +103 -0
  94. package/lib/rules/default-param-last.js +78 -0
  95. package/lib/rules/dot-location.js +138 -0
  96. package/lib/rules/dot-notation.js +216 -0
  97. package/lib/rules/eol-last.js +135 -0
  98. package/lib/rules/eqeqeq.js +210 -0
  99. package/lib/rules/for-direction.js +168 -0
  100. package/lib/rules/func-call-spacing.js +281 -0
  101. package/lib/rules/func-name-matching.js +338 -0
  102. package/lib/rules/func-names.js +194 -0
  103. package/lib/rules/func-style.js +221 -0
  104. package/lib/rules/function-call-argument-newline.js +166 -0
  105. package/lib/rules/function-paren-newline.js +368 -0
  106. package/lib/rules/generator-star-spacing.js +246 -0
  107. package/lib/rules/getter-return.js +242 -0
  108. package/lib/rules/global-require.js +117 -0
  109. package/lib/rules/grouped-accessor-pairs.js +268 -0
  110. package/lib/rules/guard-for-in.js +85 -0
  111. package/lib/rules/handle-callback-err.js +122 -0
  112. package/lib/rules/id-blacklist.js +241 -0
  113. package/lib/rules/id-denylist.js +223 -0
  114. package/lib/rules/id-length.js +217 -0
  115. package/lib/rules/id-match.js +363 -0
  116. package/lib/rules/implicit-arrow-linebreak.js +125 -0
  117. package/lib/rules/indent-legacy.js +1369 -0
  118. package/lib/rules/indent.js +2334 -0
  119. package/lib/rules/index.js +332 -0
  120. package/lib/rules/init-declarations.js +172 -0
  121. package/lib/rules/jsx-quotes.js +128 -0
  122. package/lib/rules/key-spacing.js +822 -0
  123. package/lib/rules/keyword-spacing.js +701 -0
  124. package/lib/rules/line-comment-position.js +157 -0
  125. package/lib/rules/linebreak-style.js +135 -0
  126. package/lib/rules/lines-around-comment.js +581 -0
  127. package/lib/rules/lines-around-directive.js +249 -0
  128. package/lib/rules/lines-between-class-members.js +358 -0
  129. package/lib/rules/logical-assignment-operators.js +688 -0
  130. package/lib/rules/max-classes-per-file.js +90 -0
  131. package/lib/rules/max-depth.js +159 -0
  132. package/lib/rules/max-len.js +497 -0
  133. package/lib/rules/max-lines-per-function.js +238 -0
  134. package/lib/rules/max-lines.js +189 -0
  135. package/lib/rules/max-nested-callbacks.js +115 -0
  136. package/lib/rules/max-params.js +148 -0
  137. package/lib/rules/max-statements-per-line.js +224 -0
  138. package/lib/rules/max-statements.js +188 -0
  139. package/lib/rules/multiline-comment-style.js +652 -0
  140. package/lib/rules/multiline-ternary.js +257 -0
  141. package/lib/rules/new-cap.js +277 -0
  142. package/lib/rules/new-parens.js +120 -0
  143. package/lib/rules/newline-after-var.js +307 -0
  144. package/lib/rules/newline-before-return.js +242 -0
  145. package/lib/rules/newline-per-chained-call.js +159 -0
  146. package/lib/rules/no-alert.js +149 -0
  147. package/lib/rules/no-array-constructor.js +195 -0
  148. package/lib/rules/no-async-promise-executor.js +45 -0
  149. package/lib/rules/no-await-in-loop.js +115 -0
  150. package/lib/rules/no-bitwise.js +145 -0
  151. package/lib/rules/no-buffer-constructor.js +74 -0
  152. package/lib/rules/no-caller.js +52 -0
  153. package/lib/rules/no-case-declarations.js +80 -0
  154. package/lib/rules/no-catch-shadow.js +96 -0
  155. package/lib/rules/no-class-assign.js +66 -0
  156. package/lib/rules/no-compare-neg-zero.js +74 -0
  157. package/lib/rules/no-cond-assign.js +175 -0
  158. package/lib/rules/no-confusing-arrow.js +127 -0
  159. package/lib/rules/no-console.js +221 -0
  160. package/lib/rules/no-const-assign.js +73 -0
  161. package/lib/rules/no-constant-binary-expression.js +603 -0
  162. package/lib/rules/no-constant-condition.js +177 -0
  163. package/lib/rules/no-constructor-return.js +62 -0
  164. package/lib/rules/no-continue.js +38 -0
  165. package/lib/rules/no-control-regex.js +142 -0
  166. package/lib/rules/no-debugger.js +41 -0
  167. package/lib/rules/no-delete-var.js +42 -0
  168. package/lib/rules/no-div-regex.js +60 -0
  169. package/lib/rules/no-dupe-args.js +92 -0
  170. package/lib/rules/no-dupe-class-members.js +117 -0
  171. package/lib/rules/no-dupe-else-if.js +145 -0
  172. package/lib/rules/no-dupe-keys.js +165 -0
  173. package/lib/rules/no-duplicate-case.js +78 -0
  174. package/lib/rules/no-duplicate-imports.js +368 -0
  175. package/lib/rules/no-else-return.js +450 -0
  176. package/lib/rules/no-empty-character-class.js +83 -0
  177. package/lib/rules/no-empty-function.js +236 -0
  178. package/lib/rules/no-empty-pattern.js +85 -0
  179. package/lib/rules/no-empty-static-block.js +73 -0
  180. package/lib/rules/no-empty.js +153 -0
  181. package/lib/rules/no-eq-null.js +51 -0
  182. package/lib/rules/no-eval.js +295 -0
  183. package/lib/rules/no-ex-assign.js +57 -0
  184. package/lib/rules/no-extend-native.js +180 -0
  185. package/lib/rules/no-extra-bind.js +224 -0
  186. package/lib/rules/no-extra-boolean-cast.js +420 -0
  187. package/lib/rules/no-extra-label.js +169 -0
  188. package/lib/rules/no-extra-parens.js +1669 -0
  189. package/lib/rules/no-extra-semi.js +167 -0
  190. package/lib/rules/no-fallthrough.js +260 -0
  191. package/lib/rules/no-floating-decimal.js +99 -0
  192. package/lib/rules/no-func-assign.js +77 -0
  193. package/lib/rules/no-global-assign.js +101 -0
  194. package/lib/rules/no-implicit-coercion.js +468 -0
  195. package/lib/rules/no-implicit-globals.js +187 -0
  196. package/lib/rules/no-implied-eval.js +170 -0
  197. package/lib/rules/no-import-assign.js +227 -0
  198. package/lib/rules/no-inline-comments.js +115 -0
  199. package/lib/rules/no-inner-declarations.js +147 -0
  200. package/lib/rules/no-invalid-regexp.js +244 -0
  201. package/lib/rules/no-invalid-this.js +178 -0
  202. package/lib/rules/no-irregular-whitespace.js +292 -0
  203. package/lib/rules/no-iterator.js +48 -0
  204. package/lib/rules/no-label-var.js +78 -0
  205. package/lib/rules/no-labels.js +156 -0
  206. package/lib/rules/no-lone-blocks.js +140 -0
  207. package/lib/rules/no-lonely-if.js +126 -0
  208. package/lib/rules/no-loop-func.js +267 -0
  209. package/lib/rules/no-loss-of-precision.js +249 -0
  210. package/lib/rules/no-magic-numbers.js +365 -0
  211. package/lib/rules/no-misleading-character-class.js +595 -0
  212. package/lib/rules/no-mixed-operators.js +253 -0
  213. package/lib/rules/no-mixed-requires.js +267 -0
  214. package/lib/rules/no-mixed-spaces-and-tabs.js +148 -0
  215. package/lib/rules/no-multi-assign.js +66 -0
  216. package/lib/rules/no-multi-spaces.js +179 -0
  217. package/lib/rules/no-multi-str.js +67 -0
  218. package/lib/rules/no-multiple-empty-lines.js +210 -0
  219. package/lib/rules/no-native-reassign.js +114 -0
  220. package/lib/rules/no-negated-condition.js +100 -0
  221. package/lib/rules/no-negated-in-lhs.js +59 -0
  222. package/lib/rules/no-nested-ternary.js +46 -0
  223. package/lib/rules/no-new-func.js +96 -0
  224. package/lib/rules/no-new-native-nonconstructor.js +70 -0
  225. package/lib/rules/no-new-object.js +76 -0
  226. package/lib/rules/no-new-require.js +67 -0
  227. package/lib/rules/no-new-symbol.js +74 -0
  228. package/lib/rules/no-new-wrappers.js +62 -0
  229. package/lib/rules/no-new.js +42 -0
  230. package/lib/rules/no-nonoctal-decimal-escape.js +176 -0
  231. package/lib/rules/no-obj-calls.js +99 -0
  232. package/lib/rules/no-object-constructor.js +124 -0
  233. package/lib/rules/no-octal-escape.js +53 -0
  234. package/lib/rules/no-octal.js +42 -0
  235. package/lib/rules/no-param-reassign.js +248 -0
  236. package/lib/rules/no-path-concat.js +79 -0
  237. package/lib/rules/no-plusplus.js +102 -0
  238. package/lib/rules/no-process-env.js +68 -0
  239. package/lib/rules/no-process-exit.js +67 -0
  240. package/lib/rules/no-promise-executor-return.js +264 -0
  241. package/lib/rules/no-proto.js +45 -0
  242. package/lib/rules/no-prototype-builtins.js +181 -0
  243. package/lib/rules/no-redeclare.js +173 -0
  244. package/lib/rules/no-regex-spaces.js +219 -0
  245. package/lib/rules/no-restricted-exports.js +227 -0
  246. package/lib/rules/no-restricted-globals.js +266 -0
  247. package/lib/rules/no-restricted-imports.js +892 -0
  248. package/lib/rules/no-restricted-modules.js +249 -0
  249. package/lib/rules/no-restricted-properties.js +233 -0
  250. package/lib/rules/no-restricted-syntax.js +74 -0
  251. package/lib/rules/no-return-assign.js +87 -0
  252. package/lib/rules/no-return-await.js +162 -0
  253. package/lib/rules/no-script-url.js +68 -0
  254. package/lib/rules/no-self-assign.js +186 -0
  255. package/lib/rules/no-self-compare.js +77 -0
  256. package/lib/rules/no-sequences.js +158 -0
  257. package/lib/rules/no-setter-return.js +224 -0
  258. package/lib/rules/no-shadow-restricted-names.js +113 -0
  259. package/lib/rules/no-shadow.js +624 -0
  260. package/lib/rules/no-spaced-func.js +105 -0
  261. package/lib/rules/no-sparse-arrays.js +68 -0
  262. package/lib/rules/no-sync.js +81 -0
  263. package/lib/rules/no-tabs.js +110 -0
  264. package/lib/rules/no-template-curly-in-string.js +45 -0
  265. package/lib/rules/no-ternary.js +38 -0
  266. package/lib/rules/no-this-before-super.js +365 -0
  267. package/lib/rules/no-throw-literal.js +46 -0
  268. package/lib/rules/no-trailing-spaces.js +227 -0
  269. package/lib/rules/no-unassigned-vars.js +80 -0
  270. package/lib/rules/no-undef-init.js +101 -0
  271. package/lib/rules/no-undef.js +84 -0
  272. package/lib/rules/no-undefined.js +85 -0
  273. package/lib/rules/no-underscore-dangle.js +383 -0
  274. package/lib/rules/no-unexpected-multiline.js +130 -0
  275. package/lib/rules/no-unmodified-loop-condition.js +360 -0
  276. package/lib/rules/no-unneeded-ternary.js +232 -0
  277. package/lib/rules/no-unreachable-loop.js +190 -0
  278. package/lib/rules/no-unreachable.js +300 -0
  279. package/lib/rules/no-unsafe-finally.js +119 -0
  280. package/lib/rules/no-unsafe-negation.js +152 -0
  281. package/lib/rules/no-unsafe-optional-chaining.js +221 -0
  282. package/lib/rules/no-unused-expressions.js +227 -0
  283. package/lib/rules/no-unused-labels.js +158 -0
  284. package/lib/rules/no-unused-private-class-members.js +219 -0
  285. package/lib/rules/no-unused-vars.js +1739 -0
  286. package/lib/rules/no-use-before-define.js +446 -0
  287. package/lib/rules/no-useless-assignment.js +657 -0
  288. package/lib/rules/no-useless-backreference.js +263 -0
  289. package/lib/rules/no-useless-call.js +95 -0
  290. package/lib/rules/no-useless-catch.js +57 -0
  291. package/lib/rules/no-useless-computed-key.js +204 -0
  292. package/lib/rules/no-useless-concat.js +121 -0
  293. package/lib/rules/no-useless-constructor.js +262 -0
  294. package/lib/rules/no-useless-escape.js +406 -0
  295. package/lib/rules/no-useless-rename.js +202 -0
  296. package/lib/rules/no-useless-return.js +401 -0
  297. package/lib/rules/no-var.js +367 -0
  298. package/lib/rules/no-void.js +69 -0
  299. package/lib/rules/no-warning-comments.js +209 -0
  300. package/lib/rules/no-whitespace-before-property.js +150 -0
  301. package/lib/rules/no-with.js +37 -0
  302. package/lib/rules/nonblock-statement-body-position.js +164 -0
  303. package/lib/rules/object-curly-newline.js +383 -0
  304. package/lib/rules/object-curly-spacing.js +369 -0
  305. package/lib/rules/object-property-newline.js +151 -0
  306. package/lib/rules/object-shorthand.js +652 -0
  307. package/lib/rules/one-var-declaration-per-line.js +117 -0
  308. package/lib/rules/one-var.js +717 -0
  309. package/lib/rules/operator-assignment.js +270 -0
  310. package/lib/rules/operator-linebreak.js +315 -0
  311. package/lib/rules/padded-blocks.js +366 -0
  312. package/lib/rules/padding-line-between-statements.js +612 -0
  313. package/lib/rules/prefer-arrow-callback.js +437 -0
  314. package/lib/rules/prefer-const.js +546 -0
  315. package/lib/rules/prefer-destructuring.js +332 -0
  316. package/lib/rules/prefer-exponentiation-operator.js +235 -0
  317. package/lib/rules/prefer-named-capture-group.js +197 -0
  318. package/lib/rules/prefer-numeric-literals.js +157 -0
  319. package/lib/rules/prefer-object-has-own.js +148 -0
  320. package/lib/rules/prefer-object-spread.js +319 -0
  321. package/lib/rules/prefer-promise-reject-errors.js +154 -0
  322. package/lib/rules/prefer-reflect.js +150 -0
  323. package/lib/rules/prefer-regex-literals.js +605 -0
  324. package/lib/rules/prefer-rest-params.js +117 -0
  325. package/lib/rules/prefer-spread.js +91 -0
  326. package/lib/rules/prefer-template.js +347 -0
  327. package/lib/rules/preserve-caught-error.js +535 -0
  328. package/lib/rules/quote-props.js +394 -0
  329. package/lib/rules/quotes.js +416 -0
  330. package/lib/rules/radix.js +193 -0
  331. package/lib/rules/require-atomic-updates.js +365 -0
  332. package/lib/rules/require-await.js +184 -0
  333. package/lib/rules/require-unicode-regexp.js +317 -0
  334. package/lib/rules/require-yield.js +86 -0
  335. package/lib/rules/rest-spread-spacing.js +150 -0
  336. package/lib/rules/semi-spacing.js +297 -0
  337. package/lib/rules/semi-style.js +218 -0
  338. package/lib/rules/semi.js +476 -0
  339. package/lib/rules/sort-imports.js +319 -0
  340. package/lib/rules/sort-keys.js +268 -0
  341. package/lib/rules/sort-vars.js +140 -0
  342. package/lib/rules/space-before-blocks.js +232 -0
  343. package/lib/rules/space-before-function-paren.js +202 -0
  344. package/lib/rules/space-in-parens.js +374 -0
  345. package/lib/rules/space-infix-ops.js +249 -0
  346. package/lib/rules/space-unary-ops.js +400 -0
  347. package/lib/rules/spaced-comment.js +447 -0
  348. package/lib/rules/strict.js +314 -0
  349. package/lib/rules/switch-colon-spacing.js +158 -0
  350. package/lib/rules/symbol-description.js +70 -0
  351. package/lib/rules/template-curly-spacing.js +168 -0
  352. package/lib/rules/template-tag-spacing.js +121 -0
  353. package/lib/rules/unicode-bom.js +73 -0
  354. package/lib/rules/use-isnan.js +268 -0
  355. package/lib/rules/utils/ast-utils.js +2828 -0
  356. package/lib/rules/utils/char-source.js +247 -0
  357. package/lib/rules/utils/fix-tracker.js +125 -0
  358. package/lib/rules/utils/keywords.js +67 -0
  359. package/lib/rules/utils/lazy-loading-rule-map.js +118 -0
  360. package/lib/rules/utils/regular-expressions.js +58 -0
  361. package/lib/rules/utils/unicode/index.js +16 -0
  362. package/lib/rules/utils/unicode/is-combining-character.js +13 -0
  363. package/lib/rules/utils/unicode/is-emoji-modifier.js +13 -0
  364. package/lib/rules/utils/unicode/is-regional-indicator-symbol.js +13 -0
  365. package/lib/rules/utils/unicode/is-surrogate-pair.js +14 -0
  366. package/lib/rules/valid-typeof.js +171 -0
  367. package/lib/rules/vars-on-top.js +165 -0
  368. package/lib/rules/wrap-iife.js +238 -0
  369. package/lib/rules/wrap-regex.js +91 -0
  370. package/lib/rules/yield-star-spacing.js +158 -0
  371. package/lib/rules/yoda.js +362 -0
  372. package/lib/services/parser-service.js +64 -0
  373. package/lib/services/processor-service.js +100 -0
  374. package/lib/services/suppressions-service.js +302 -0
  375. package/lib/services/warning-service.js +87 -0
  376. package/lib/shared/ajv.js +34 -0
  377. package/lib/shared/assert.js +21 -0
  378. package/lib/shared/ast-utils.js +30 -0
  379. package/lib/shared/deep-merge-arrays.js +62 -0
  380. package/lib/shared/directives.js +16 -0
  381. package/lib/shared/flags.js +89 -0
  382. package/lib/shared/logging.js +38 -0
  383. package/lib/shared/naming.js +109 -0
  384. package/lib/shared/option-utils.js +63 -0
  385. package/lib/shared/relative-module-resolver.js +28 -0
  386. package/lib/shared/runtime-info.js +177 -0
  387. package/lib/shared/serialization.js +78 -0
  388. package/lib/shared/severity.js +49 -0
  389. package/lib/shared/stats.js +30 -0
  390. package/lib/shared/string-utils.js +58 -0
  391. package/lib/shared/text-table.js +68 -0
  392. package/lib/shared/translate-cli-options.js +223 -0
  393. package/lib/shared/traverser.js +202 -0
  394. package/lib/types/config-api.d.ts +12 -0
  395. package/lib/types/index.d.ts +1482 -0
  396. package/lib/types/rules.d.ts +5603 -0
  397. package/lib/types/universal.d.ts +6 -0
  398. package/lib/types/use-at-your-own-risk.d.ts +34 -0
  399. package/lib/universal.js +10 -0
  400. package/lib/unsupported-api.js +26 -0
  401. package/messages/all-files-ignored.js +16 -0
  402. package/messages/all-matched-files-ignored.js +21 -0
  403. package/messages/config-file-missing.js +16 -0
  404. package/messages/config-plugin-missing.js +14 -0
  405. package/messages/config-serialize-function.js +30 -0
  406. package/messages/eslintrc-incompat.js +117 -0
  407. package/messages/eslintrc-plugins.js +27 -0
  408. package/messages/extend-config-missing.js +13 -0
  409. package/messages/failed-to-read-json.js +11 -0
  410. package/messages/file-not-found.js +10 -0
  411. package/messages/invalid-rule-options.js +17 -0
  412. package/messages/invalid-rule-severity.js +13 -0
  413. package/messages/no-config-found.js +15 -0
  414. package/messages/plugin-conflict.js +22 -0
  415. package/messages/plugin-invalid.js +16 -0
  416. package/messages/plugin-missing.js +19 -0
  417. package/messages/print-config-with-directory-path.js +8 -0
  418. package/messages/shared.js +23 -0
  419. package/messages/whitespace-found.js +11 -0
  420. package/package.json +220 -0
@@ -0,0 +1,223 @@
1
+ /**
2
+ * @fileoverview Translates CLI options into ESLint constructor options.
3
+ * @author Nicholas C. Zakas
4
+ * @author Francesco Trotta
5
+ */
6
+
7
+ "use strict";
8
+
9
+ //------------------------------------------------------------------------------
10
+ // Requirements
11
+ //------------------------------------------------------------------------------
12
+
13
+ const { normalizeSeverityToString } = require("./severity");
14
+ const { getShorthandName, normalizePackageName } = require("./naming");
15
+ const { ModuleImporter } = require("@humanwhocodes/module-importer");
16
+
17
+ //------------------------------------------------------------------------------
18
+ // Types
19
+ //------------------------------------------------------------------------------
20
+
21
+ /** @typedef {import("../types").ESLint.Options} ESLintOptions */
22
+ /** @typedef {import("../types").Linter.LintMessage} LintMessage */
23
+ /** @typedef {import("../options").ParsedCLIOptions} ParsedCLIOptions */
24
+ /** @typedef {import("../types").ESLint.Plugin} Plugin */
25
+
26
+ //------------------------------------------------------------------------------
27
+ // Helpers
28
+ //------------------------------------------------------------------------------
29
+
30
+ /**
31
+ * Loads plugins with the specified names.
32
+ * @param {{ "import": (name: string) => Promise<any> }} importer An object with an `import` method called once for each plugin.
33
+ * @param {string[]} pluginNames The names of the plugins to be loaded, with or without the "eslint-plugin-" prefix.
34
+ * @returns {Promise<Record<string, Plugin>>} A mapping of plugin short names to implementations.
35
+ */
36
+ async function loadPlugins(importer, pluginNames) {
37
+ const plugins = {};
38
+
39
+ await Promise.all(
40
+ pluginNames.map(async pluginName => {
41
+ const longName = normalizePackageName(pluginName, "eslint-plugin");
42
+ const module = await importer.import(longName);
43
+
44
+ if (!("default" in module)) {
45
+ throw new Error(
46
+ `"${longName}" cannot be used with the \`--plugin\` option because its default module does not provide a \`default\` export`,
47
+ );
48
+ }
49
+
50
+ const shortName = getShorthandName(pluginName, "eslint-plugin");
51
+
52
+ plugins[shortName] = module.default;
53
+ }),
54
+ );
55
+
56
+ return plugins;
57
+ }
58
+
59
+ /**
60
+ * Predicate function for whether or not to apply fixes in quiet mode.
61
+ * If a message is a warning, do not apply a fix.
62
+ * @param {LintMessage} message The lint result.
63
+ * @returns {boolean} True if the lint message is an error (and thus should be
64
+ * autofixed), false otherwise.
65
+ */
66
+ function quietFixPredicate(message) {
67
+ return message.severity === 2;
68
+ }
69
+
70
+ /**
71
+ * Predicate function for whether or not to run a rule in quiet mode.
72
+ * If a rule is set to warning, do not run it.
73
+ * @param {{ ruleId: string; severity: number; }} rule The rule id and severity.
74
+ * @returns {boolean} True if the lint rule should run, false otherwise.
75
+ */
76
+ function quietRuleFilter(rule) {
77
+ return rule.severity === 2;
78
+ }
79
+
80
+ //------------------------------------------------------------------------------
81
+ // Public Interface
82
+ //------------------------------------------------------------------------------
83
+
84
+ /**
85
+ * Translates the CLI options into the options expected by the ESLint constructor.
86
+ * @param {ParsedCLIOptions} cliOptions The CLI options to translate.
87
+ * @returns {Promise<ESLintOptions>} The options object for the ESLint constructor.
88
+ */
89
+ async function translateOptions({
90
+ cache,
91
+ cacheFile,
92
+ cacheLocation,
93
+ cacheStrategy,
94
+ concurrency,
95
+ config,
96
+ configLookup,
97
+ errorOnUnmatchedPattern,
98
+ ext,
99
+ fix,
100
+ fixDryRun,
101
+ fixType,
102
+ flag,
103
+ global,
104
+ ignore,
105
+ ignorePattern,
106
+ inlineConfig,
107
+ parser,
108
+ parserOptions,
109
+ plugin,
110
+ quiet,
111
+ reportUnusedDisableDirectives,
112
+ reportUnusedDisableDirectivesSeverity,
113
+ reportUnusedInlineConfigs,
114
+ rule,
115
+ stats,
116
+ warnIgnored,
117
+ passOnNoPatterns,
118
+ maxWarnings,
119
+ }) {
120
+ const importer = new ModuleImporter();
121
+
122
+ let overrideConfigFile =
123
+ typeof config === "string" ? config : !configLookup;
124
+ if (overrideConfigFile === false) {
125
+ overrideConfigFile = void 0;
126
+ }
127
+
128
+ const languageOptions = {};
129
+
130
+ if (global) {
131
+ languageOptions.globals = global.reduce((obj, name) => {
132
+ if (name.endsWith(":true")) {
133
+ obj[name.slice(0, -5)] = "writable";
134
+ } else {
135
+ obj[name] = "readonly";
136
+ }
137
+ return obj;
138
+ }, {});
139
+ }
140
+
141
+ if (parserOptions) {
142
+ languageOptions.parserOptions = parserOptions;
143
+ }
144
+
145
+ if (parser) {
146
+ languageOptions.parser = await importer.import(parser);
147
+ }
148
+
149
+ const overrideConfig = [
150
+ {
151
+ ...(Object.keys(languageOptions).length > 0
152
+ ? { languageOptions }
153
+ : {}),
154
+ rules: rule ? rule : {},
155
+ },
156
+ ];
157
+
158
+ if (
159
+ reportUnusedDisableDirectives ||
160
+ reportUnusedDisableDirectivesSeverity !== void 0
161
+ ) {
162
+ overrideConfig[0].linterOptions = {
163
+ reportUnusedDisableDirectives: reportUnusedDisableDirectives
164
+ ? "error"
165
+ : normalizeSeverityToString(
166
+ reportUnusedDisableDirectivesSeverity,
167
+ ),
168
+ };
169
+ }
170
+
171
+ if (reportUnusedInlineConfigs !== void 0) {
172
+ overrideConfig[0].linterOptions = {
173
+ ...overrideConfig[0].linterOptions,
174
+ reportUnusedInlineConfigs: normalizeSeverityToString(
175
+ reportUnusedInlineConfigs,
176
+ ),
177
+ };
178
+ }
179
+
180
+ if (plugin) {
181
+ overrideConfig[0].plugins = await loadPlugins(importer, plugin);
182
+ }
183
+
184
+ if (ext) {
185
+ overrideConfig.push({
186
+ files: ext.map(
187
+ extension =>
188
+ `**/*${extension.startsWith(".") ? "" : "."}${extension}`,
189
+ ),
190
+ });
191
+ }
192
+
193
+ /*
194
+ * For performance reasons rules not marked as 'error' are filtered out in quiet mode. As maxWarnings
195
+ * requires rules set to 'warn' to be run, we only filter out 'warn' rules if maxWarnings is not specified.
196
+ */
197
+ const ruleFilter =
198
+ quiet && maxWarnings === -1 ? quietRuleFilter : () => true;
199
+
200
+ const options = {
201
+ allowInlineConfig: inlineConfig,
202
+ cache,
203
+ cacheLocation: cacheLocation || cacheFile,
204
+ cacheStrategy,
205
+ concurrency,
206
+ errorOnUnmatchedPattern,
207
+ fix: (fix || fixDryRun) && (quiet ? quietFixPredicate : true),
208
+ fixTypes: fixType,
209
+ flags: flag,
210
+ ignore,
211
+ ignorePatterns: ignorePattern,
212
+ overrideConfig,
213
+ overrideConfigFile,
214
+ passOnNoPatterns,
215
+ ruleFilter,
216
+ stats,
217
+ warnIgnored,
218
+ };
219
+
220
+ return options;
221
+ }
222
+
223
+ module.exports = translateOptions;
@@ -0,0 +1,202 @@
1
+ /**
2
+ * @fileoverview Traverser to traverse AST trees.
3
+ * @author Nicholas C. Zakas
4
+ * @author Toru Nagashima
5
+ */
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Requirements
10
+ //------------------------------------------------------------------------------
11
+
12
+ const vk = require("eslint-visitor-keys");
13
+ const debug = require("debug")("eslint:traverser");
14
+
15
+ //------------------------------------------------------------------------------
16
+ // Helpers
17
+ //------------------------------------------------------------------------------
18
+
19
+ /**
20
+ * Do nothing.
21
+ * @returns {void}
22
+ */
23
+ function noop() {
24
+ // do nothing.
25
+ }
26
+
27
+ /**
28
+ * Check whether the given value is an ASTNode or not.
29
+ * @param {any} x The value to check.
30
+ * @returns {boolean} `true` if the value is an ASTNode.
31
+ */
32
+ function isNode(x) {
33
+ return x !== null && typeof x === "object" && typeof x.type === "string";
34
+ }
35
+
36
+ /**
37
+ * Get the visitor keys of a given node.
38
+ * @param {Object} visitorKeys The map of visitor keys.
39
+ * @param {ASTNode} node The node to get their visitor keys.
40
+ * @returns {string[]} The visitor keys of the node.
41
+ */
42
+ function getVisitorKeys(visitorKeys, node) {
43
+ let keys = visitorKeys[node.type];
44
+
45
+ if (!keys) {
46
+ keys = vk.getKeys(node);
47
+ debug(
48
+ 'Unknown node type "%s": Estimated visitor keys %j',
49
+ node.type,
50
+ keys,
51
+ );
52
+ }
53
+
54
+ return keys;
55
+ }
56
+
57
+ /**
58
+ * The traverser class to traverse AST trees.
59
+ */
60
+ class Traverser {
61
+ constructor() {
62
+ this._current = null;
63
+ this._parents = [];
64
+ this._skipped = false;
65
+ this._broken = false;
66
+ this._visitorKeys = null;
67
+ this._enter = null;
68
+ this._leave = null;
69
+ }
70
+
71
+ /**
72
+ * Gives current node.
73
+ * @returns {ASTNode} The current node.
74
+ */
75
+ current() {
76
+ return this._current;
77
+ }
78
+
79
+ /**
80
+ * Gives a copy of the ancestor nodes.
81
+ * @returns {ASTNode[]} The ancestor nodes.
82
+ */
83
+ parents() {
84
+ return this._parents.slice(0);
85
+ }
86
+
87
+ /**
88
+ * Break the current traversal.
89
+ * @returns {void}
90
+ */
91
+ break() {
92
+ this._broken = true;
93
+ }
94
+
95
+ /**
96
+ * Skip child nodes for the current traversal.
97
+ * @returns {void}
98
+ */
99
+ skip() {
100
+ this._skipped = true;
101
+ }
102
+
103
+ /**
104
+ * Traverse the given AST tree.
105
+ * @param {ASTNode} node The root node to traverse.
106
+ * @param {Object} options The option object.
107
+ * @param {Object} [options.visitorKeys=DEFAULT_VISITOR_KEYS] The keys of each node types to traverse child nodes. Default is `./default-visitor-keys.json`.
108
+ * @param {Function} [options.enter=noop] The callback function which is called on entering each node.
109
+ * @param {Function} [options.leave=noop] The callback function which is called on leaving each node.
110
+ * @returns {void}
111
+ */
112
+ traverse(node, options) {
113
+ this._current = null;
114
+ this._parents = [];
115
+ this._skipped = false;
116
+ this._broken = false;
117
+ this._visitorKeys = options.visitorKeys || vk.KEYS;
118
+ this._enter = options.enter || noop;
119
+ this._leave = options.leave || noop;
120
+ this._traverse(node, null);
121
+ }
122
+
123
+ /**
124
+ * Traverse the given AST tree recursively.
125
+ * @param {ASTNode} node The current node.
126
+ * @param {ASTNode|null} parent The parent node.
127
+ * @returns {void}
128
+ * @private
129
+ */
130
+ _traverse(node, parent) {
131
+ if (!isNode(node)) {
132
+ return;
133
+ }
134
+
135
+ this._current = node;
136
+ this._skipped = false;
137
+ this._enter(node, parent);
138
+
139
+ if (!this._skipped && !this._broken) {
140
+ const keys = getVisitorKeys(this._visitorKeys, node);
141
+
142
+ if (keys.length >= 1) {
143
+ this._parents.push(node);
144
+ for (let i = 0; i < keys.length && !this._broken; ++i) {
145
+ const child = node[keys[i]];
146
+
147
+ if (Array.isArray(child)) {
148
+ for (
149
+ let j = 0;
150
+ j < child.length && !this._broken;
151
+ ++j
152
+ ) {
153
+ this._traverse(child[j], node);
154
+ }
155
+ } else {
156
+ this._traverse(child, node);
157
+ }
158
+ }
159
+ this._parents.pop();
160
+ }
161
+ }
162
+
163
+ if (!this._broken) {
164
+ this._leave(node, parent);
165
+ }
166
+
167
+ this._current = parent;
168
+ }
169
+
170
+ /**
171
+ * Calculates the keys to use for traversal.
172
+ * @param {ASTNode} node The node to read keys from.
173
+ * @returns {string[]} An array of keys to visit on the node.
174
+ * @private
175
+ */
176
+ static getKeys(node) {
177
+ return vk.getKeys(node);
178
+ }
179
+
180
+ /**
181
+ * Traverse the given AST tree.
182
+ * @param {ASTNode} node The root node to traverse.
183
+ * @param {Object} options The option object.
184
+ * @param {Object} [options.visitorKeys=DEFAULT_VISITOR_KEYS] The keys of each node types to traverse child nodes. Default is `./default-visitor-keys.json`.
185
+ * @param {Function} [options.enter=noop] The callback function which is called on entering each node.
186
+ * @param {Function} [options.leave=noop] The callback function which is called on leaving each node.
187
+ * @returns {void}
188
+ */
189
+ static traverse(node, options) {
190
+ new Traverser().traverse(node, options);
191
+ }
192
+
193
+ /**
194
+ * The default visitor keys.
195
+ * @type {Object}
196
+ */
197
+ static get DEFAULT_VISITOR_KEYS() {
198
+ return vk.KEYS;
199
+ }
200
+ }
201
+
202
+ module.exports = Traverser;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @fileoverview typings for "eslint/config" module
3
+ * @author Nicholas C. Zakas
4
+ */
5
+
6
+ import {
7
+ type Config,
8
+ defineConfig,
9
+ globalIgnores,
10
+ } from "@eslint/config-helpers";
11
+
12
+ export { type Config, defineConfig, globalIgnores };