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,374 @@
1
+ /**
2
+ * @fileoverview Disallows or enforces spaces inside of parentheses.
3
+ * @author Jonathan Rajavuori
4
+ * @deprecated in ESLint v8.53.0
5
+ */
6
+ "use strict";
7
+
8
+ const astUtils = require("./utils/ast-utils");
9
+
10
+ //------------------------------------------------------------------------------
11
+ // Rule Definition
12
+ //------------------------------------------------------------------------------
13
+
14
+ /** @type {import('../types').Rule.RuleModule} */
15
+ module.exports = {
16
+ meta: {
17
+ deprecated: {
18
+ message: "Formatting rules are being moved out of ESLint core.",
19
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
20
+ deprecatedSince: "8.53.0",
21
+ availableUntil: "11.0.0",
22
+ replacedBy: [
23
+ {
24
+ message:
25
+ "ESLint Stylistic now maintains deprecated stylistic core rules.",
26
+ url: "https://eslint.style/guide/migration",
27
+ plugin: {
28
+ name: "@stylistic/eslint-plugin",
29
+ url: "https://eslint.style",
30
+ },
31
+ rule: {
32
+ name: "space-in-parens",
33
+ url: "https://eslint.style/rules/space-in-parens",
34
+ },
35
+ },
36
+ ],
37
+ },
38
+ type: "layout",
39
+
40
+ docs: {
41
+ description: "Enforce consistent spacing inside parentheses",
42
+ recommended: false,
43
+ url: "https://eslint.org/docs/latest/rules/space-in-parens",
44
+ },
45
+
46
+ fixable: "whitespace",
47
+
48
+ schema: [
49
+ {
50
+ enum: ["always", "never"],
51
+ },
52
+ {
53
+ type: "object",
54
+ properties: {
55
+ exceptions: {
56
+ type: "array",
57
+ items: {
58
+ enum: ["{}", "[]", "()", "empty"],
59
+ },
60
+ uniqueItems: true,
61
+ },
62
+ },
63
+ additionalProperties: false,
64
+ },
65
+ ],
66
+
67
+ messages: {
68
+ missingOpeningSpace: "There must be a space after this paren.",
69
+ missingClosingSpace: "There must be a space before this paren.",
70
+ rejectedOpeningSpace: "There should be no space after this paren.",
71
+ rejectedClosingSpace: "There should be no space before this paren.",
72
+ },
73
+ },
74
+
75
+ create(context) {
76
+ const ALWAYS = context.options[0] === "always",
77
+ exceptionsArrayOptions =
78
+ (context.options[1] && context.options[1].exceptions) || [],
79
+ options = {};
80
+
81
+ let exceptions;
82
+
83
+ if (exceptionsArrayOptions.length) {
84
+ options.braceException = exceptionsArrayOptions.includes("{}");
85
+ options.bracketException = exceptionsArrayOptions.includes("[]");
86
+ options.parenException = exceptionsArrayOptions.includes("()");
87
+ options.empty = exceptionsArrayOptions.includes("empty");
88
+ }
89
+
90
+ /**
91
+ * Produces an object with the opener and closer exception values
92
+ * @returns {Object} `openers` and `closers` exception values
93
+ * @private
94
+ */
95
+ function getExceptions() {
96
+ const openers = [],
97
+ closers = [];
98
+
99
+ if (options.braceException) {
100
+ openers.push("{");
101
+ closers.push("}");
102
+ }
103
+
104
+ if (options.bracketException) {
105
+ openers.push("[");
106
+ closers.push("]");
107
+ }
108
+
109
+ if (options.parenException) {
110
+ openers.push("(");
111
+ closers.push(")");
112
+ }
113
+
114
+ if (options.empty) {
115
+ openers.push(")");
116
+ closers.push("(");
117
+ }
118
+
119
+ return {
120
+ openers,
121
+ closers,
122
+ };
123
+ }
124
+
125
+ //--------------------------------------------------------------------------
126
+ // Helpers
127
+ //--------------------------------------------------------------------------
128
+ const sourceCode = context.sourceCode;
129
+
130
+ /**
131
+ * Determines if a token is one of the exceptions for the opener paren
132
+ * @param {Object} token The token to check
133
+ * @returns {boolean} True if the token is one of the exceptions for the opener paren
134
+ */
135
+ function isOpenerException(token) {
136
+ return exceptions.openers.includes(token.value);
137
+ }
138
+
139
+ /**
140
+ * Determines if a token is one of the exceptions for the closer paren
141
+ * @param {Object} token The token to check
142
+ * @returns {boolean} True if the token is one of the exceptions for the closer paren
143
+ */
144
+ function isCloserException(token) {
145
+ return exceptions.closers.includes(token.value);
146
+ }
147
+
148
+ /**
149
+ * Determines if an opening paren is immediately followed by a required space
150
+ * @param {Object} openingParenToken The paren token
151
+ * @param {Object} tokenAfterOpeningParen The token after it
152
+ * @returns {boolean} True if the opening paren is missing a required space
153
+ */
154
+ function openerMissingSpace(openingParenToken, tokenAfterOpeningParen) {
155
+ if (
156
+ sourceCode.isSpaceBetween(
157
+ openingParenToken,
158
+ tokenAfterOpeningParen,
159
+ )
160
+ ) {
161
+ return false;
162
+ }
163
+
164
+ if (
165
+ !options.empty &&
166
+ astUtils.isClosingParenToken(tokenAfterOpeningParen)
167
+ ) {
168
+ return false;
169
+ }
170
+
171
+ if (ALWAYS) {
172
+ return !isOpenerException(tokenAfterOpeningParen);
173
+ }
174
+ return isOpenerException(tokenAfterOpeningParen);
175
+ }
176
+
177
+ /**
178
+ * Determines if an opening paren is immediately followed by a disallowed space
179
+ * @param {Object} openingParenToken The paren token
180
+ * @param {Object} tokenAfterOpeningParen The token after it
181
+ * @returns {boolean} True if the opening paren has a disallowed space
182
+ */
183
+ function openerRejectsSpace(openingParenToken, tokenAfterOpeningParen) {
184
+ if (
185
+ !astUtils.isTokenOnSameLine(
186
+ openingParenToken,
187
+ tokenAfterOpeningParen,
188
+ )
189
+ ) {
190
+ return false;
191
+ }
192
+
193
+ if (tokenAfterOpeningParen.type === "Line") {
194
+ return false;
195
+ }
196
+
197
+ if (
198
+ !sourceCode.isSpaceBetween(
199
+ openingParenToken,
200
+ tokenAfterOpeningParen,
201
+ )
202
+ ) {
203
+ return false;
204
+ }
205
+
206
+ if (ALWAYS) {
207
+ return isOpenerException(tokenAfterOpeningParen);
208
+ }
209
+ return !isOpenerException(tokenAfterOpeningParen);
210
+ }
211
+
212
+ /**
213
+ * Determines if a closing paren is immediately preceded by a required space
214
+ * @param {Object} tokenBeforeClosingParen The token before the paren
215
+ * @param {Object} closingParenToken The paren token
216
+ * @returns {boolean} True if the closing paren is missing a required space
217
+ */
218
+ function closerMissingSpace(
219
+ tokenBeforeClosingParen,
220
+ closingParenToken,
221
+ ) {
222
+ if (
223
+ sourceCode.isSpaceBetween(
224
+ tokenBeforeClosingParen,
225
+ closingParenToken,
226
+ )
227
+ ) {
228
+ return false;
229
+ }
230
+
231
+ if (
232
+ !options.empty &&
233
+ astUtils.isOpeningParenToken(tokenBeforeClosingParen)
234
+ ) {
235
+ return false;
236
+ }
237
+
238
+ if (ALWAYS) {
239
+ return !isCloserException(tokenBeforeClosingParen);
240
+ }
241
+ return isCloserException(tokenBeforeClosingParen);
242
+ }
243
+
244
+ /**
245
+ * Determines if a closer paren is immediately preceded by a disallowed space
246
+ * @param {Object} tokenBeforeClosingParen The token before the paren
247
+ * @param {Object} closingParenToken The paren token
248
+ * @returns {boolean} True if the closing paren has a disallowed space
249
+ */
250
+ function closerRejectsSpace(
251
+ tokenBeforeClosingParen,
252
+ closingParenToken,
253
+ ) {
254
+ if (
255
+ !astUtils.isTokenOnSameLine(
256
+ tokenBeforeClosingParen,
257
+ closingParenToken,
258
+ )
259
+ ) {
260
+ return false;
261
+ }
262
+
263
+ if (
264
+ !sourceCode.isSpaceBetween(
265
+ tokenBeforeClosingParen,
266
+ closingParenToken,
267
+ )
268
+ ) {
269
+ return false;
270
+ }
271
+
272
+ if (ALWAYS) {
273
+ return isCloserException(tokenBeforeClosingParen);
274
+ }
275
+ return !isCloserException(tokenBeforeClosingParen);
276
+ }
277
+
278
+ //--------------------------------------------------------------------------
279
+ // Public
280
+ //--------------------------------------------------------------------------
281
+
282
+ return {
283
+ Program: function checkParenSpaces(node) {
284
+ exceptions = getExceptions();
285
+ const tokens = sourceCode.tokensAndComments;
286
+
287
+ tokens.forEach((token, i) => {
288
+ const prevToken = tokens[i - 1];
289
+ const nextToken = tokens[i + 1];
290
+
291
+ // if token is not an opening or closing paren token, do nothing
292
+ if (
293
+ !astUtils.isOpeningParenToken(token) &&
294
+ !astUtils.isClosingParenToken(token)
295
+ ) {
296
+ return;
297
+ }
298
+
299
+ // if token is an opening paren and is not followed by a required space
300
+ if (
301
+ token.value === "(" &&
302
+ openerMissingSpace(token, nextToken)
303
+ ) {
304
+ context.report({
305
+ node,
306
+ loc: token.loc,
307
+ messageId: "missingOpeningSpace",
308
+ fix(fixer) {
309
+ return fixer.insertTextAfter(token, " ");
310
+ },
311
+ });
312
+ }
313
+
314
+ // if token is an opening paren and is followed by a disallowed space
315
+ if (
316
+ token.value === "(" &&
317
+ openerRejectsSpace(token, nextToken)
318
+ ) {
319
+ context.report({
320
+ node,
321
+ loc: {
322
+ start: token.loc.end,
323
+ end: nextToken.loc.start,
324
+ },
325
+ messageId: "rejectedOpeningSpace",
326
+ fix(fixer) {
327
+ return fixer.removeRange([
328
+ token.range[1],
329
+ nextToken.range[0],
330
+ ]);
331
+ },
332
+ });
333
+ }
334
+
335
+ // if token is a closing paren and is not preceded by a required space
336
+ if (
337
+ token.value === ")" &&
338
+ closerMissingSpace(prevToken, token)
339
+ ) {
340
+ context.report({
341
+ node,
342
+ loc: token.loc,
343
+ messageId: "missingClosingSpace",
344
+ fix(fixer) {
345
+ return fixer.insertTextBefore(token, " ");
346
+ },
347
+ });
348
+ }
349
+
350
+ // if token is a closing paren and is preceded by a disallowed space
351
+ if (
352
+ token.value === ")" &&
353
+ closerRejectsSpace(prevToken, token)
354
+ ) {
355
+ context.report({
356
+ node,
357
+ loc: {
358
+ start: prevToken.loc.end,
359
+ end: token.loc.start,
360
+ },
361
+ messageId: "rejectedClosingSpace",
362
+ fix(fixer) {
363
+ return fixer.removeRange([
364
+ prevToken.range[1],
365
+ token.range[0],
366
+ ]);
367
+ },
368
+ });
369
+ }
370
+ });
371
+ },
372
+ };
373
+ },
374
+ };
@@ -0,0 +1,249 @@
1
+ /**
2
+ * @fileoverview Require spaces around infix operators
3
+ * @author Michael Ficarra
4
+ * @deprecated in ESLint v8.53.0
5
+ */
6
+ "use strict";
7
+
8
+ const { isEqToken } = require("./utils/ast-utils");
9
+
10
+ //------------------------------------------------------------------------------
11
+ // Rule Definition
12
+ //------------------------------------------------------------------------------
13
+
14
+ /** @type {import('../types').Rule.RuleModule} */
15
+ module.exports = {
16
+ meta: {
17
+ deprecated: {
18
+ message: "Formatting rules are being moved out of ESLint core.",
19
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
20
+ deprecatedSince: "8.53.0",
21
+ availableUntil: "11.0.0",
22
+ replacedBy: [
23
+ {
24
+ message:
25
+ "ESLint Stylistic now maintains deprecated stylistic core rules.",
26
+ url: "https://eslint.style/guide/migration",
27
+ plugin: {
28
+ name: "@stylistic/eslint-plugin",
29
+ url: "https://eslint.style",
30
+ },
31
+ rule: {
32
+ name: "space-infix-ops",
33
+ url: "https://eslint.style/rules/space-infix-ops",
34
+ },
35
+ },
36
+ ],
37
+ },
38
+ type: "layout",
39
+
40
+ docs: {
41
+ description: "Require spacing around infix operators",
42
+ recommended: false,
43
+ url: "https://eslint.org/docs/latest/rules/space-infix-ops",
44
+ },
45
+
46
+ fixable: "whitespace",
47
+
48
+ schema: [
49
+ {
50
+ type: "object",
51
+ properties: {
52
+ int32Hint: {
53
+ type: "boolean",
54
+ default: false,
55
+ },
56
+ },
57
+ additionalProperties: false,
58
+ },
59
+ ],
60
+
61
+ messages: {
62
+ missingSpace: "Operator '{{operator}}' must be spaced.",
63
+ },
64
+ },
65
+
66
+ create(context) {
67
+ const int32Hint = context.options[0]
68
+ ? context.options[0].int32Hint === true
69
+ : false;
70
+ const sourceCode = context.sourceCode;
71
+
72
+ /**
73
+ * Returns the first token which violates the rule
74
+ * @param {ASTNode} left The left node of the main node
75
+ * @param {ASTNode} right The right node of the main node
76
+ * @param {string} op The operator of the main node
77
+ * @returns {Object} The violator token or null
78
+ * @private
79
+ */
80
+ function getFirstNonSpacedToken(left, right, op) {
81
+ const operator = sourceCode.getFirstTokenBetween(
82
+ left,
83
+ right,
84
+ token => token.value === op,
85
+ );
86
+ const prev = sourceCode.getTokenBefore(operator);
87
+ const next = sourceCode.getTokenAfter(operator);
88
+
89
+ if (
90
+ !sourceCode.isSpaceBetween(prev, operator) ||
91
+ !sourceCode.isSpaceBetween(operator, next)
92
+ ) {
93
+ return operator;
94
+ }
95
+
96
+ return null;
97
+ }
98
+
99
+ /**
100
+ * Reports an AST node as a rule violation
101
+ * @param {ASTNode} mainNode The node to report
102
+ * @param {Object} culpritToken The token which has a problem
103
+ * @returns {void}
104
+ * @private
105
+ */
106
+ function report(mainNode, culpritToken) {
107
+ context.report({
108
+ node: mainNode,
109
+ loc: culpritToken.loc,
110
+ messageId: "missingSpace",
111
+ data: {
112
+ operator: culpritToken.value,
113
+ },
114
+ fix(fixer) {
115
+ const previousToken =
116
+ sourceCode.getTokenBefore(culpritToken);
117
+ const afterToken = sourceCode.getTokenAfter(culpritToken);
118
+ let fixString = "";
119
+
120
+ if (culpritToken.range[0] - previousToken.range[1] === 0) {
121
+ fixString = " ";
122
+ }
123
+
124
+ fixString += culpritToken.value;
125
+
126
+ if (afterToken.range[0] - culpritToken.range[1] === 0) {
127
+ fixString += " ";
128
+ }
129
+
130
+ return fixer.replaceText(culpritToken, fixString);
131
+ },
132
+ });
133
+ }
134
+
135
+ /**
136
+ * Check if the node is binary then report
137
+ * @param {ASTNode} node node to evaluate
138
+ * @returns {void}
139
+ * @private
140
+ */
141
+ function checkBinary(node) {
142
+ const leftNode = node.left.typeAnnotation
143
+ ? node.left.typeAnnotation
144
+ : node.left;
145
+ const rightNode = node.right;
146
+
147
+ // search for = in AssignmentPattern nodes
148
+ const operator = node.operator || "=";
149
+
150
+ const nonSpacedNode = getFirstNonSpacedToken(
151
+ leftNode,
152
+ rightNode,
153
+ operator,
154
+ );
155
+
156
+ if (nonSpacedNode) {
157
+ if (!(int32Hint && sourceCode.getText(node).endsWith("|0"))) {
158
+ report(node, nonSpacedNode);
159
+ }
160
+ }
161
+ }
162
+
163
+ /**
164
+ * Check if the node is conditional
165
+ * @param {ASTNode} node node to evaluate
166
+ * @returns {void}
167
+ * @private
168
+ */
169
+ function checkConditional(node) {
170
+ const nonSpacedConsequentNode = getFirstNonSpacedToken(
171
+ node.test,
172
+ node.consequent,
173
+ "?",
174
+ );
175
+ const nonSpacedAlternateNode = getFirstNonSpacedToken(
176
+ node.consequent,
177
+ node.alternate,
178
+ ":",
179
+ );
180
+
181
+ if (nonSpacedConsequentNode) {
182
+ report(node, nonSpacedConsequentNode);
183
+ }
184
+
185
+ if (nonSpacedAlternateNode) {
186
+ report(node, nonSpacedAlternateNode);
187
+ }
188
+ }
189
+
190
+ /**
191
+ * Check if the node is a variable
192
+ * @param {ASTNode} node node to evaluate
193
+ * @returns {void}
194
+ * @private
195
+ */
196
+ function checkVar(node) {
197
+ const leftNode = node.id.typeAnnotation
198
+ ? node.id.typeAnnotation
199
+ : node.id;
200
+ const rightNode = node.init;
201
+
202
+ if (rightNode) {
203
+ const nonSpacedNode = getFirstNonSpacedToken(
204
+ leftNode,
205
+ rightNode,
206
+ "=",
207
+ );
208
+
209
+ if (nonSpacedNode) {
210
+ report(node, nonSpacedNode);
211
+ }
212
+ }
213
+ }
214
+
215
+ return {
216
+ AssignmentExpression: checkBinary,
217
+ AssignmentPattern: checkBinary,
218
+ BinaryExpression: checkBinary,
219
+ LogicalExpression: checkBinary,
220
+ ConditionalExpression: checkConditional,
221
+ VariableDeclarator: checkVar,
222
+
223
+ PropertyDefinition(node) {
224
+ if (!node.value) {
225
+ return;
226
+ }
227
+
228
+ /*
229
+ * Because of computed properties and type annotations, some
230
+ * tokens may exist between `node.key` and `=`.
231
+ * Therefore, find the `=` from the right.
232
+ */
233
+ const operatorToken = sourceCode.getTokenBefore(
234
+ node.value,
235
+ isEqToken,
236
+ );
237
+ const leftToken = sourceCode.getTokenBefore(operatorToken);
238
+ const rightToken = sourceCode.getTokenAfter(operatorToken);
239
+
240
+ if (
241
+ !sourceCode.isSpaceBetween(leftToken, operatorToken) ||
242
+ !sourceCode.isSpaceBetween(operatorToken, rightToken)
243
+ ) {
244
+ report(node, operatorToken);
245
+ }
246
+ },
247
+ };
248
+ },
249
+ };