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,81 @@
1
+ /**
2
+ * @fileoverview SourceCodeVisitor class
3
+ * @author Nicholas C. Zakas
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //-----------------------------------------------------------------------------
9
+ // Helpers
10
+ //-----------------------------------------------------------------------------
11
+
12
+ const emptyArray = Object.freeze([]);
13
+
14
+ //------------------------------------------------------------------------------
15
+ // Exports
16
+ //------------------------------------------------------------------------------
17
+
18
+ /**
19
+ * A structure to hold a list of functions to call for a given name.
20
+ * This is used to allow multiple rules to register functions for a given name
21
+ * without having to know about each other.
22
+ */
23
+ class SourceCodeVisitor {
24
+ /**
25
+ * The functions to call for a given name.
26
+ * @type {Map<string, Function[]>}
27
+ */
28
+ #functions = new Map();
29
+
30
+ /**
31
+ * Adds a function to the list of functions to call for a given name.
32
+ * @param {string} name The name of the function to call.
33
+ * @param {Function} func The function to call.
34
+ * @returns {void}
35
+ */
36
+ add(name, func) {
37
+ if (this.#functions.has(name)) {
38
+ this.#functions.get(name).push(func);
39
+ } else {
40
+ this.#functions.set(name, [func]);
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Gets the list of functions to call for a given name.
46
+ * @param {string} name The name of the function to call.
47
+ * @returns {Function[]} The list of functions to call.
48
+ */
49
+ get(name) {
50
+ if (this.#functions.has(name)) {
51
+ return this.#functions.get(name);
52
+ }
53
+
54
+ return emptyArray;
55
+ }
56
+
57
+ /**
58
+ * Iterates over all names and calls the callback with the name.
59
+ * @param {(name:string) => void} callback The callback to call for each name.
60
+ * @returns {void}
61
+ */
62
+ forEachName(callback) {
63
+ this.#functions.forEach((funcs, name) => {
64
+ callback(name);
65
+ });
66
+ }
67
+
68
+ /**
69
+ * Calls the functions for a given name with the given arguments.
70
+ * @param {string} name The name of the function to call.
71
+ * @param {any[]} args The arguments to pass to the function.
72
+ * @returns {void}
73
+ */
74
+ callSync(name, ...args) {
75
+ if (this.#functions.has(name)) {
76
+ this.#functions.get(name).forEach(func => func(...args));
77
+ }
78
+ }
79
+ }
80
+
81
+ module.exports = { SourceCodeVisitor };
@@ -0,0 +1,209 @@
1
+ /**
2
+ * @fileoverview Tracks performance of individual rules.
3
+ * @author Brandon Mills
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const { startTime, endTime } = require("../shared/stats");
9
+
10
+ //------------------------------------------------------------------------------
11
+ // Helpers
12
+ //------------------------------------------------------------------------------
13
+
14
+ /* c8 ignore next */
15
+ /**
16
+ * Align the string to left
17
+ * @param {string} str string to evaluate
18
+ * @param {number} len length of the string
19
+ * @param {string} ch delimiter character
20
+ * @returns {string} modified string
21
+ * @private
22
+ */
23
+ function alignLeft(str, len, ch) {
24
+ return str + new Array(len - str.length + 1).join(ch || " ");
25
+ }
26
+
27
+ /* c8 ignore next */
28
+ /**
29
+ * Align the string to right
30
+ * @param {string} str string to evaluate
31
+ * @param {number} len length of the string
32
+ * @param {string} ch delimiter character
33
+ * @returns {string} modified string
34
+ * @private
35
+ */
36
+ function alignRight(str, len, ch) {
37
+ return new Array(len - str.length + 1).join(ch || " ") + str;
38
+ }
39
+
40
+ //------------------------------------------------------------------------------
41
+ // Module definition
42
+ //------------------------------------------------------------------------------
43
+
44
+ const enabled = !!process.env.TIMING;
45
+
46
+ const HEADERS = ["Rule", "Time (ms)", "Relative"];
47
+ const ALIGN = [alignLeft, alignRight, alignRight];
48
+
49
+ /**
50
+ * Decide how many rules to show in the output list.
51
+ * @returns {number} the number of rules to show
52
+ */
53
+ function getListSize() {
54
+ const MINIMUM_SIZE = 10;
55
+
56
+ if (typeof process.env.TIMING !== "string") {
57
+ return MINIMUM_SIZE;
58
+ }
59
+
60
+ if (process.env.TIMING.toLowerCase() === "all") {
61
+ return Number.POSITIVE_INFINITY;
62
+ }
63
+
64
+ const TIMING_ENV_VAR_AS_INTEGER = Number.parseInt(process.env.TIMING, 10);
65
+
66
+ return TIMING_ENV_VAR_AS_INTEGER > 10
67
+ ? TIMING_ENV_VAR_AS_INTEGER
68
+ : MINIMUM_SIZE;
69
+ }
70
+
71
+ /* c8 ignore next */
72
+ /**
73
+ * display the data
74
+ * @param {Object} data Data object to be displayed
75
+ * @returns {void} prints modified string with console.log
76
+ * @private
77
+ */
78
+ function display(data) {
79
+ let total = 0;
80
+ const rows = Object.keys(data)
81
+ .map(key => {
82
+ const time = data[key];
83
+
84
+ total += time;
85
+ return [key, time];
86
+ })
87
+ .sort((a, b) => b[1] - a[1])
88
+ .slice(0, getListSize());
89
+
90
+ rows.forEach(row => {
91
+ row.push(`${((row[1] * 100) / total).toFixed(1)}%`);
92
+ row[1] = row[1].toFixed(3);
93
+ });
94
+
95
+ rows.unshift(HEADERS);
96
+
97
+ const widths = [];
98
+
99
+ rows.forEach(row => {
100
+ const len = row.length;
101
+
102
+ for (let i = 0; i < len; i++) {
103
+ const n = row[i].length;
104
+
105
+ if (!widths[i] || n > widths[i]) {
106
+ widths[i] = n;
107
+ }
108
+ }
109
+ });
110
+
111
+ const table = rows.map(row =>
112
+ row.map((cell, index) => ALIGN[index](cell, widths[index])).join(" | "),
113
+ );
114
+
115
+ table.splice(
116
+ 1,
117
+ 0,
118
+ widths
119
+ .map((width, index) => {
120
+ const extraAlignment =
121
+ index !== 0 && index !== widths.length - 1 ? 2 : 1;
122
+
123
+ return ALIGN[index](":", width + extraAlignment, "-");
124
+ })
125
+ .join("|"),
126
+ );
127
+
128
+ console.log(table.join("\n")); // eslint-disable-line no-console -- Debugging function
129
+ }
130
+
131
+ /* c8 ignore next */
132
+ module.exports = (function () {
133
+ const data = Object.create(null);
134
+ let displayEnabled = true;
135
+
136
+ /**
137
+ * Time the run
138
+ * @param {any} key key from the data object
139
+ * @param {Function} fn function to be called
140
+ * @param {boolean} stats if 'stats' is true, return the result and the time difference
141
+ * @returns {Function} function to be executed
142
+ * @private
143
+ */
144
+ function time(key, fn, stats) {
145
+ return function (...args) {
146
+ const t = startTime();
147
+ const result = fn(...args);
148
+ const tdiff = endTime(t);
149
+
150
+ if (enabled) {
151
+ if (typeof data[key] === "undefined") {
152
+ data[key] = 0;
153
+ }
154
+
155
+ data[key] += tdiff;
156
+ }
157
+
158
+ return stats ? { result, tdiff } : result;
159
+ };
160
+ }
161
+
162
+ /**
163
+ * Returns a shallow copy of the collected timings data.
164
+ * @returns {Record<string, number>} mapping of ruleId to total time in ms
165
+ */
166
+ function getData() {
167
+ return { ...data };
168
+ }
169
+
170
+ /**
171
+ * Merges rule timing totals collected elsewhere into this process' totals.
172
+ * @param {Record<string, number>} dataToMerge mapping of ruleId to total time in ms
173
+ * @returns {void}
174
+ */
175
+ function mergeData(dataToMerge) {
176
+ for (const [key, value] of Object.entries(dataToMerge)) {
177
+ if (typeof data[key] === "undefined") {
178
+ data[key] = 0;
179
+ }
180
+ data[key] += value;
181
+ }
182
+ }
183
+
184
+ /**
185
+ * Disables printing of timing data on process exit.
186
+ * Intended for worker threads or non-main contexts.
187
+ * @returns {void}
188
+ */
189
+ function disableDisplay() {
190
+ displayEnabled = false;
191
+ }
192
+
193
+ if (enabled) {
194
+ process.on("exit", () => {
195
+ if (displayEnabled && Object.keys(data).length > 0) {
196
+ display(data);
197
+ }
198
+ });
199
+ }
200
+
201
+ return {
202
+ time,
203
+ enabled,
204
+ getListSize,
205
+ getData,
206
+ mergeData,
207
+ disableDisplay,
208
+ };
209
+ })();
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @fileoverview Virtual file
3
+ * @author Nicholas C. Zakas
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //-----------------------------------------------------------------------------
9
+ // Type Definitions
10
+ //-----------------------------------------------------------------------------
11
+
12
+ /** @typedef {import("@eslint/core").File} File */
13
+
14
+ //------------------------------------------------------------------------------
15
+ // Helpers
16
+ //------------------------------------------------------------------------------
17
+
18
+ /**
19
+ * Determines if a given value has a byte order mark (BOM).
20
+ * @param {string|Uint8Array} value The value to check.
21
+ * @returns {boolean} `true` if the value has a BOM, `false` otherwise.
22
+ */
23
+ function hasUnicodeBOM(value) {
24
+ return typeof value === "string"
25
+ ? value.charCodeAt(0) === 0xfeff
26
+ : value[0] === 0xef && value[1] === 0xbb && value[2] === 0xbf;
27
+ }
28
+
29
+ /**
30
+ * Strips Unicode BOM from the given value.
31
+ * @param {string|Uint8Array} value The value to remove the BOM from.
32
+ * @returns {string|Uint8Array} The stripped value.
33
+ */
34
+ function stripUnicodeBOM(value) {
35
+ if (!hasUnicodeBOM(value)) {
36
+ return value;
37
+ }
38
+
39
+ if (typeof value === "string") {
40
+ /*
41
+ * Check Unicode BOM.
42
+ * In JavaScript, string data is stored as UTF-16, so BOM is 0xFEFF.
43
+ * http://www.ecma-international.org/ecma-262/6.0/#sec-unicode-format-control-characters
44
+ */
45
+ return value.slice(1);
46
+ }
47
+
48
+ /*
49
+ * In a Uint8Array, the BOM is represented by three bytes: 0xEF, 0xBB, and 0xBF,
50
+ * so we can just remove the first three bytes.
51
+ */
52
+ return value.slice(3);
53
+ }
54
+
55
+ //------------------------------------------------------------------------------
56
+ // Exports
57
+ //------------------------------------------------------------------------------
58
+
59
+ /**
60
+ * Represents a virtual file inside of ESLint.
61
+ * @implements {File}
62
+ */
63
+ class VFile {
64
+ /**
65
+ * The file path including any processor-created virtual path.
66
+ * @type {string}
67
+ * @readonly
68
+ */
69
+ path;
70
+
71
+ /**
72
+ * The file path on disk.
73
+ * @type {string}
74
+ * @readonly
75
+ */
76
+ physicalPath;
77
+
78
+ /**
79
+ * The file contents.
80
+ * @type {string|Uint8Array}
81
+ * @readonly
82
+ */
83
+ body;
84
+
85
+ /**
86
+ * The raw body of the file, including a BOM if present.
87
+ * @type {string|Uint8Array}
88
+ * @readonly
89
+ */
90
+ rawBody;
91
+
92
+ /**
93
+ * Indicates whether the file has a byte order mark (BOM).
94
+ * @type {boolean}
95
+ * @readonly
96
+ */
97
+ bom;
98
+
99
+ /**
100
+ * Creates a new instance.
101
+ * @param {string} path The file path.
102
+ * @param {string|Uint8Array} body The file contents.
103
+ * @param {Object} [options] Additional options.
104
+ * @param {string} [options.physicalPath] The file path on disk.
105
+ */
106
+ constructor(path, body, { physicalPath } = {}) {
107
+ this.path = path;
108
+ this.physicalPath = physicalPath ?? path;
109
+ this.bom = hasUnicodeBOM(body);
110
+ this.body = stripUnicodeBOM(body);
111
+ this.rawBody = body;
112
+ }
113
+ }
114
+
115
+ module.exports = { VFile };