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,188 @@
1
+ /**
2
+ * @fileoverview Rule to define spacing before/after arrow function's arrow.
3
+ * @author Jxck
4
+ * @deprecated in ESLint v8.53.0
5
+ */
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Requirements
10
+ //------------------------------------------------------------------------------
11
+
12
+ const astUtils = require("./utils/ast-utils");
13
+
14
+ //------------------------------------------------------------------------------
15
+ // Rule Definition
16
+ //------------------------------------------------------------------------------
17
+
18
+ /** @type {import('../types').Rule.RuleModule} */
19
+ module.exports = {
20
+ meta: {
21
+ deprecated: {
22
+ message: "Formatting rules are being moved out of ESLint core.",
23
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
24
+ deprecatedSince: "8.53.0",
25
+ availableUntil: "11.0.0",
26
+ replacedBy: [
27
+ {
28
+ message:
29
+ "ESLint Stylistic now maintains deprecated stylistic core rules.",
30
+ url: "https://eslint.style/guide/migration",
31
+ plugin: {
32
+ name: "@stylistic/eslint-plugin",
33
+ url: "https://eslint.style",
34
+ },
35
+ rule: {
36
+ name: "arrow-spacing",
37
+ url: "https://eslint.style/rules/arrow-spacing",
38
+ },
39
+ },
40
+ ],
41
+ },
42
+ type: "layout",
43
+
44
+ docs: {
45
+ description:
46
+ "Enforce consistent spacing before and after the arrow in arrow functions",
47
+ recommended: false,
48
+ url: "https://eslint.org/docs/latest/rules/arrow-spacing",
49
+ },
50
+
51
+ fixable: "whitespace",
52
+
53
+ schema: [
54
+ {
55
+ type: "object",
56
+ properties: {
57
+ before: {
58
+ type: "boolean",
59
+ default: true,
60
+ },
61
+ after: {
62
+ type: "boolean",
63
+ default: true,
64
+ },
65
+ },
66
+ additionalProperties: false,
67
+ },
68
+ ],
69
+
70
+ messages: {
71
+ expectedBefore: "Missing space before =>.",
72
+ unexpectedBefore: "Unexpected space before =>.",
73
+
74
+ expectedAfter: "Missing space after =>.",
75
+ unexpectedAfter: "Unexpected space after =>.",
76
+ },
77
+ },
78
+
79
+ create(context) {
80
+ // merge rules with default
81
+ const rule = Object.assign({}, context.options[0]);
82
+
83
+ rule.before = rule.before !== false;
84
+ rule.after = rule.after !== false;
85
+
86
+ const sourceCode = context.sourceCode;
87
+
88
+ /**
89
+ * Get tokens of arrow(`=>`) and before/after arrow.
90
+ * @param {ASTNode} node The arrow function node.
91
+ * @returns {Object} Tokens of arrow and before/after arrow.
92
+ */
93
+ function getTokens(node) {
94
+ const arrow = sourceCode.getTokenBefore(
95
+ node.body,
96
+ astUtils.isArrowToken,
97
+ );
98
+
99
+ return {
100
+ before: sourceCode.getTokenBefore(arrow),
101
+ arrow,
102
+ after: sourceCode.getTokenAfter(arrow),
103
+ };
104
+ }
105
+
106
+ /**
107
+ * Count spaces before/after arrow(`=>`) token.
108
+ * @param {Object} tokens Tokens before/after arrow.
109
+ * @returns {Object} count of space before/after arrow.
110
+ */
111
+ function countSpaces(tokens) {
112
+ const before = tokens.arrow.range[0] - tokens.before.range[1];
113
+ const after = tokens.after.range[0] - tokens.arrow.range[1];
114
+
115
+ return { before, after };
116
+ }
117
+
118
+ /**
119
+ * Determines whether space(s) before after arrow(`=>`) is satisfy rule.
120
+ * if before/after value is `true`, there should be space(s).
121
+ * if before/after value is `false`, there should be no space.
122
+ * @param {ASTNode} node The arrow function node.
123
+ * @returns {void}
124
+ */
125
+ function spaces(node) {
126
+ const tokens = getTokens(node);
127
+ const countSpace = countSpaces(tokens);
128
+
129
+ if (rule.before) {
130
+ // should be space(s) before arrow
131
+ if (countSpace.before === 0) {
132
+ context.report({
133
+ node: tokens.before,
134
+ messageId: "expectedBefore",
135
+ fix(fixer) {
136
+ return fixer.insertTextBefore(tokens.arrow, " ");
137
+ },
138
+ });
139
+ }
140
+ } else {
141
+ // should be no space before arrow
142
+ if (countSpace.before > 0) {
143
+ context.report({
144
+ node: tokens.before,
145
+ messageId: "unexpectedBefore",
146
+ fix(fixer) {
147
+ return fixer.removeRange([
148
+ tokens.before.range[1],
149
+ tokens.arrow.range[0],
150
+ ]);
151
+ },
152
+ });
153
+ }
154
+ }
155
+
156
+ if (rule.after) {
157
+ // should be space(s) after arrow
158
+ if (countSpace.after === 0) {
159
+ context.report({
160
+ node: tokens.after,
161
+ messageId: "expectedAfter",
162
+ fix(fixer) {
163
+ return fixer.insertTextAfter(tokens.arrow, " ");
164
+ },
165
+ });
166
+ }
167
+ } else {
168
+ // should be no space after arrow
169
+ if (countSpace.after > 0) {
170
+ context.report({
171
+ node: tokens.after,
172
+ messageId: "unexpectedAfter",
173
+ fix(fixer) {
174
+ return fixer.removeRange([
175
+ tokens.arrow.range[1],
176
+ tokens.after.range[0],
177
+ ]);
178
+ },
179
+ });
180
+ }
181
+ }
182
+ }
183
+
184
+ return {
185
+ ArrowFunctionExpression: spaces,
186
+ };
187
+ },
188
+ };
@@ -0,0 +1,137 @@
1
+ /**
2
+ * @fileoverview Rule to check for "block scoped" variables by binding context
3
+ * @author Matt DuVall <http://www.mattduvall.com>
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Rule Definition
9
+ //------------------------------------------------------------------------------
10
+
11
+ /** @type {import('../types').Rule.RuleModule} */
12
+ module.exports = {
13
+ meta: {
14
+ type: "suggestion",
15
+
16
+ docs: {
17
+ description:
18
+ "Enforce the use of variables within the scope they are defined",
19
+ recommended: false,
20
+ url: "https://eslint.org/docs/latest/rules/block-scoped-var",
21
+ },
22
+
23
+ schema: [],
24
+
25
+ messages: {
26
+ outOfScope:
27
+ "'{{name}}' declared on line {{definitionLine}} column {{definitionColumn}} is used outside of binding context.",
28
+ },
29
+ },
30
+
31
+ create(context) {
32
+ let stack = [];
33
+ const sourceCode = context.sourceCode;
34
+
35
+ /**
36
+ * Makes a block scope.
37
+ * @param {ASTNode} node A node of a scope.
38
+ * @returns {void}
39
+ */
40
+ function enterScope(node) {
41
+ stack.push(node.range);
42
+ }
43
+
44
+ /**
45
+ * Pops the last block scope.
46
+ * @returns {void}
47
+ */
48
+ function exitScope() {
49
+ stack.pop();
50
+ }
51
+
52
+ /**
53
+ * Reports a given reference.
54
+ * @param {eslint-scope.Reference} reference A reference to report.
55
+ * @param {eslint-scope.Definition} definition A definition for which to report reference.
56
+ * @returns {void}
57
+ */
58
+ function report(reference, definition) {
59
+ const identifier = reference.identifier;
60
+ const definitionPosition = definition.name.loc.start;
61
+
62
+ context.report({
63
+ node: identifier,
64
+ messageId: "outOfScope",
65
+ data: {
66
+ name: identifier.name,
67
+ definitionLine: definitionPosition.line,
68
+ definitionColumn: definitionPosition.column + 1,
69
+ },
70
+ });
71
+ }
72
+
73
+ /**
74
+ * Finds and reports references which are outside of valid scopes.
75
+ * @param {ASTNode} node A node to get variables.
76
+ * @returns {void}
77
+ */
78
+ function checkForVariables(node) {
79
+ if (node.kind !== "var") {
80
+ return;
81
+ }
82
+
83
+ // Defines a predicate to check whether or not a given reference is outside of valid scope.
84
+ const scopeRange = stack.at(-1);
85
+
86
+ /**
87
+ * Check if a reference is out of scope
88
+ * @param {ASTNode} reference node to examine
89
+ * @returns {boolean} True is its outside the scope
90
+ * @private
91
+ */
92
+ function isOutsideOfScope(reference) {
93
+ const idRange = reference.identifier.range;
94
+
95
+ return idRange[0] < scopeRange[0] || idRange[1] > scopeRange[1];
96
+ }
97
+
98
+ // Gets declared variables, and checks its references.
99
+ const variables = sourceCode.getDeclaredVariables(node);
100
+
101
+ for (let i = 0; i < variables.length; ++i) {
102
+ // Reports.
103
+ variables[i].references.filter(isOutsideOfScope).forEach(ref =>
104
+ report(
105
+ ref,
106
+ variables[i].defs.find(def => def.parent === node),
107
+ ),
108
+ );
109
+ }
110
+ }
111
+
112
+ return {
113
+ Program(node) {
114
+ stack = [node.range];
115
+ },
116
+
117
+ // Manages scopes.
118
+ BlockStatement: enterScope,
119
+ "BlockStatement:exit": exitScope,
120
+ ForStatement: enterScope,
121
+ "ForStatement:exit": exitScope,
122
+ ForInStatement: enterScope,
123
+ "ForInStatement:exit": exitScope,
124
+ ForOfStatement: enterScope,
125
+ "ForOfStatement:exit": exitScope,
126
+ SwitchStatement: enterScope,
127
+ "SwitchStatement:exit": exitScope,
128
+ CatchClause: enterScope,
129
+ "CatchClause:exit": exitScope,
130
+ StaticBlock: enterScope,
131
+ "StaticBlock:exit": exitScope,
132
+
133
+ // Finds and reports references which are outside of valid scope.
134
+ VariableDeclaration: checkForVariables,
135
+ };
136
+ },
137
+ };
@@ -0,0 +1,202 @@
1
+ /**
2
+ * @fileoverview A rule to disallow or enforce spaces inside of single line blocks.
3
+ * @author Toru Nagashima
4
+ * @deprecated in ESLint v8.53.0
5
+ */
6
+
7
+ "use strict";
8
+
9
+ const util = require("./utils/ast-utils");
10
+
11
+ //------------------------------------------------------------------------------
12
+ // Rule Definition
13
+ //------------------------------------------------------------------------------
14
+
15
+ /** @type {import('../types').Rule.RuleModule} */
16
+ module.exports = {
17
+ meta: {
18
+ deprecated: {
19
+ message: "Formatting rules are being moved out of ESLint core.",
20
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
21
+ deprecatedSince: "8.53.0",
22
+ availableUntil: "11.0.0",
23
+ replacedBy: [
24
+ {
25
+ message:
26
+ "ESLint Stylistic now maintains deprecated stylistic core rules.",
27
+ url: "https://eslint.style/guide/migration",
28
+ plugin: {
29
+ name: "@stylistic/eslint-plugin",
30
+ url: "https://eslint.style",
31
+ },
32
+ rule: {
33
+ name: "block-spacing",
34
+ url: "https://eslint.style/rules/block-spacing",
35
+ },
36
+ },
37
+ ],
38
+ },
39
+ type: "layout",
40
+
41
+ docs: {
42
+ description:
43
+ "Disallow or enforce spaces inside of blocks after opening block and before closing block",
44
+ recommended: false,
45
+ url: "https://eslint.org/docs/latest/rules/block-spacing",
46
+ },
47
+
48
+ fixable: "whitespace",
49
+
50
+ schema: [{ enum: ["always", "never"] }],
51
+
52
+ messages: {
53
+ missing: "Requires a space {{location}} '{{token}}'.",
54
+ extra: "Unexpected space(s) {{location}} '{{token}}'.",
55
+ },
56
+ },
57
+
58
+ create(context) {
59
+ const always = context.options[0] !== "never",
60
+ messageId = always ? "missing" : "extra",
61
+ sourceCode = context.sourceCode;
62
+
63
+ /**
64
+ * Gets the open brace token from a given node.
65
+ * @param {ASTNode} node A BlockStatement/StaticBlock/SwitchStatement node to get.
66
+ * @returns {Token} The token of the open brace.
67
+ */
68
+ function getOpenBrace(node) {
69
+ if (node.type === "SwitchStatement") {
70
+ if (node.cases.length > 0) {
71
+ return sourceCode.getTokenBefore(node.cases[0]);
72
+ }
73
+ return sourceCode.getLastToken(node, 1);
74
+ }
75
+
76
+ if (node.type === "StaticBlock") {
77
+ return sourceCode.getFirstToken(node, { skip: 1 }); // skip the `static` token
78
+ }
79
+
80
+ // "BlockStatement"
81
+ return sourceCode.getFirstToken(node);
82
+ }
83
+
84
+ /**
85
+ * Checks whether or not:
86
+ * - given tokens are on same line.
87
+ * - there is/isn't a space between given tokens.
88
+ * @param {Token} left A token to check.
89
+ * @param {Token} right The token which is next to `left`.
90
+ * @returns {boolean}
91
+ * When the option is `"always"`, `true` if there are one or more spaces between given tokens.
92
+ * When the option is `"never"`, `true` if there are not any spaces between given tokens.
93
+ * If given tokens are not on same line, it's always `true`.
94
+ */
95
+ function isValid(left, right) {
96
+ return (
97
+ !util.isTokenOnSameLine(left, right) ||
98
+ sourceCode.isSpaceBetween(left, right) === always
99
+ );
100
+ }
101
+
102
+ /**
103
+ * Checks and reports invalid spacing style inside braces.
104
+ * @param {ASTNode} node A BlockStatement/StaticBlock/SwitchStatement node to check.
105
+ * @returns {void}
106
+ */
107
+ function checkSpacingInsideBraces(node) {
108
+ // Gets braces and the first/last token of content.
109
+ const openBrace = getOpenBrace(node);
110
+ const closeBrace = sourceCode.getLastToken(node);
111
+ const firstToken = sourceCode.getTokenAfter(openBrace, {
112
+ includeComments: true,
113
+ });
114
+ const lastToken = sourceCode.getTokenBefore(closeBrace, {
115
+ includeComments: true,
116
+ });
117
+
118
+ // Skip if the node is invalid or empty.
119
+ if (
120
+ openBrace.type !== "Punctuator" ||
121
+ openBrace.value !== "{" ||
122
+ closeBrace.type !== "Punctuator" ||
123
+ closeBrace.value !== "}" ||
124
+ firstToken === closeBrace
125
+ ) {
126
+ return;
127
+ }
128
+
129
+ // Skip line comments for option never
130
+ if (!always && firstToken.type === "Line") {
131
+ return;
132
+ }
133
+
134
+ // Check.
135
+ if (!isValid(openBrace, firstToken)) {
136
+ let loc = openBrace.loc;
137
+
138
+ if (messageId === "extra") {
139
+ loc = {
140
+ start: openBrace.loc.end,
141
+ end: firstToken.loc.start,
142
+ };
143
+ }
144
+
145
+ context.report({
146
+ node,
147
+ loc,
148
+ messageId,
149
+ data: {
150
+ location: "after",
151
+ token: openBrace.value,
152
+ },
153
+ fix(fixer) {
154
+ if (always) {
155
+ return fixer.insertTextBefore(firstToken, " ");
156
+ }
157
+
158
+ return fixer.removeRange([
159
+ openBrace.range[1],
160
+ firstToken.range[0],
161
+ ]);
162
+ },
163
+ });
164
+ }
165
+ if (!isValid(lastToken, closeBrace)) {
166
+ let loc = closeBrace.loc;
167
+
168
+ if (messageId === "extra") {
169
+ loc = {
170
+ start: lastToken.loc.end,
171
+ end: closeBrace.loc.start,
172
+ };
173
+ }
174
+ context.report({
175
+ node,
176
+ loc,
177
+ messageId,
178
+ data: {
179
+ location: "before",
180
+ token: closeBrace.value,
181
+ },
182
+ fix(fixer) {
183
+ if (always) {
184
+ return fixer.insertTextAfter(lastToken, " ");
185
+ }
186
+
187
+ return fixer.removeRange([
188
+ lastToken.range[1],
189
+ closeBrace.range[0],
190
+ ]);
191
+ },
192
+ });
193
+ }
194
+ }
195
+
196
+ return {
197
+ BlockStatement: checkSpacingInsideBraces,
198
+ StaticBlock: checkSpacingInsideBraces,
199
+ SwitchStatement: checkSpacingInsideBraces,
200
+ };
201
+ },
202
+ };