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,369 @@
1
+ /**
2
+ * @fileoverview Disallows or enforces spaces inside of object literals.
3
+ * @author Jamund Ferguson
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: "object-curly-spacing",
33
+ url: "https://eslint.style/rules/object-curly-spacing",
34
+ },
35
+ },
36
+ ],
37
+ },
38
+ type: "layout",
39
+
40
+ docs: {
41
+ description: "Enforce consistent spacing inside braces",
42
+ recommended: false,
43
+ url: "https://eslint.org/docs/latest/rules/object-curly-spacing",
44
+ },
45
+
46
+ fixable: "whitespace",
47
+
48
+ schema: [
49
+ {
50
+ enum: ["always", "never"],
51
+ },
52
+ {
53
+ type: "object",
54
+ properties: {
55
+ arraysInObjects: {
56
+ type: "boolean",
57
+ },
58
+ objectsInObjects: {
59
+ type: "boolean",
60
+ },
61
+ },
62
+ additionalProperties: false,
63
+ },
64
+ ],
65
+
66
+ messages: {
67
+ requireSpaceBefore: "A space is required before '{{token}}'.",
68
+ requireSpaceAfter: "A space is required after '{{token}}'.",
69
+ unexpectedSpaceBefore:
70
+ "There should be no space before '{{token}}'.",
71
+ unexpectedSpaceAfter: "There should be no space after '{{token}}'.",
72
+ },
73
+ },
74
+
75
+ create(context) {
76
+ const spaced = context.options[0] === "always",
77
+ sourceCode = context.sourceCode;
78
+
79
+ /**
80
+ * Determines whether an option is set, relative to the spacing option.
81
+ * If spaced is "always", then check whether option is set to false.
82
+ * If spaced is "never", then check whether option is set to true.
83
+ * @param {Object} option The option to exclude.
84
+ * @returns {boolean} Whether or not the property is excluded.
85
+ */
86
+ function isOptionSet(option) {
87
+ return context.options[1]
88
+ ? context.options[1][option] === !spaced
89
+ : false;
90
+ }
91
+
92
+ const options = {
93
+ spaced,
94
+ arraysInObjectsException: isOptionSet("arraysInObjects"),
95
+ objectsInObjectsException: isOptionSet("objectsInObjects"),
96
+ };
97
+
98
+ //--------------------------------------------------------------------------
99
+ // Helpers
100
+ //--------------------------------------------------------------------------
101
+
102
+ /**
103
+ * Reports that there shouldn't be a space after the first token
104
+ * @param {ASTNode} node The node to report in the event of an error.
105
+ * @param {Token} token The token to use for the report.
106
+ * @returns {void}
107
+ */
108
+ function reportNoBeginningSpace(node, token) {
109
+ const nextToken = context.sourceCode.getTokenAfter(token, {
110
+ includeComments: true,
111
+ });
112
+
113
+ context.report({
114
+ node,
115
+ loc: { start: token.loc.end, end: nextToken.loc.start },
116
+ messageId: "unexpectedSpaceAfter",
117
+ data: {
118
+ token: token.value,
119
+ },
120
+ fix(fixer) {
121
+ return fixer.removeRange([
122
+ token.range[1],
123
+ nextToken.range[0],
124
+ ]);
125
+ },
126
+ });
127
+ }
128
+
129
+ /**
130
+ * Reports that there shouldn't be a space before the last token
131
+ * @param {ASTNode} node The node to report in the event of an error.
132
+ * @param {Token} token The token to use for the report.
133
+ * @returns {void}
134
+ */
135
+ function reportNoEndingSpace(node, token) {
136
+ const previousToken = context.sourceCode.getTokenBefore(token, {
137
+ includeComments: true,
138
+ });
139
+
140
+ context.report({
141
+ node,
142
+ loc: { start: previousToken.loc.end, end: token.loc.start },
143
+ messageId: "unexpectedSpaceBefore",
144
+ data: {
145
+ token: token.value,
146
+ },
147
+ fix(fixer) {
148
+ return fixer.removeRange([
149
+ previousToken.range[1],
150
+ token.range[0],
151
+ ]);
152
+ },
153
+ });
154
+ }
155
+
156
+ /**
157
+ * Reports that there should be a space after the first token
158
+ * @param {ASTNode} node The node to report in the event of an error.
159
+ * @param {Token} token The token to use for the report.
160
+ * @returns {void}
161
+ */
162
+ function reportRequiredBeginningSpace(node, token) {
163
+ context.report({
164
+ node,
165
+ loc: token.loc,
166
+ messageId: "requireSpaceAfter",
167
+ data: {
168
+ token: token.value,
169
+ },
170
+ fix(fixer) {
171
+ return fixer.insertTextAfter(token, " ");
172
+ },
173
+ });
174
+ }
175
+
176
+ /**
177
+ * Reports that there should be a space before the last token
178
+ * @param {ASTNode} node The node to report in the event of an error.
179
+ * @param {Token} token The token to use for the report.
180
+ * @returns {void}
181
+ */
182
+ function reportRequiredEndingSpace(node, token) {
183
+ context.report({
184
+ node,
185
+ loc: token.loc,
186
+ messageId: "requireSpaceBefore",
187
+ data: {
188
+ token: token.value,
189
+ },
190
+ fix(fixer) {
191
+ return fixer.insertTextBefore(token, " ");
192
+ },
193
+ });
194
+ }
195
+
196
+ /**
197
+ * Determines if spacing in curly braces is valid.
198
+ * @param {ASTNode} node The AST node to check.
199
+ * @param {Token} first The first token to check (should be the opening brace)
200
+ * @param {Token} second The second token to check (should be first after the opening brace)
201
+ * @param {Token} penultimate The penultimate token to check (should be last before closing brace)
202
+ * @param {Token} last The last token to check (should be closing brace)
203
+ * @returns {void}
204
+ */
205
+ function validateBraceSpacing(node, first, second, penultimate, last) {
206
+ if (astUtils.isTokenOnSameLine(first, second)) {
207
+ const firstSpaced = sourceCode.isSpaceBetween(first, second);
208
+
209
+ if (options.spaced && !firstSpaced) {
210
+ reportRequiredBeginningSpace(node, first);
211
+ }
212
+ if (!options.spaced && firstSpaced && second.type !== "Line") {
213
+ reportNoBeginningSpace(node, first);
214
+ }
215
+ }
216
+
217
+ if (astUtils.isTokenOnSameLine(penultimate, last)) {
218
+ const shouldCheckPenultimate =
219
+ (options.arraysInObjectsException &&
220
+ astUtils.isClosingBracketToken(penultimate)) ||
221
+ (options.objectsInObjectsException &&
222
+ astUtils.isClosingBraceToken(penultimate));
223
+ const penultimateType =
224
+ shouldCheckPenultimate &&
225
+ sourceCode.getNodeByRangeIndex(penultimate.range[0]).type;
226
+
227
+ const closingCurlyBraceMustBeSpaced =
228
+ (options.arraysInObjectsException &&
229
+ penultimateType === "ArrayExpression") ||
230
+ (options.objectsInObjectsException &&
231
+ (penultimateType === "ObjectExpression" ||
232
+ penultimateType === "ObjectPattern"))
233
+ ? !options.spaced
234
+ : options.spaced;
235
+
236
+ const lastSpaced = sourceCode.isSpaceBetween(penultimate, last);
237
+
238
+ if (closingCurlyBraceMustBeSpaced && !lastSpaced) {
239
+ reportRequiredEndingSpace(node, last);
240
+ }
241
+ if (!closingCurlyBraceMustBeSpaced && lastSpaced) {
242
+ reportNoEndingSpace(node, last);
243
+ }
244
+ }
245
+ }
246
+
247
+ /**
248
+ * Gets '}' token of an object node.
249
+ *
250
+ * Because the last token of object patterns might be a type annotation,
251
+ * this traverses tokens preceded by the last property, then returns the
252
+ * first '}' token.
253
+ * @param {ASTNode} node The node to get. This node is an
254
+ * ObjectExpression or an ObjectPattern. And this node has one or
255
+ * more properties.
256
+ * @returns {Token} '}' token.
257
+ */
258
+ function getClosingBraceOfObject(node) {
259
+ const lastProperty = node.properties.at(-1);
260
+
261
+ return sourceCode.getTokenAfter(
262
+ lastProperty,
263
+ astUtils.isClosingBraceToken,
264
+ );
265
+ }
266
+
267
+ /**
268
+ * Reports a given object node if spacing in curly braces is invalid.
269
+ * @param {ASTNode} node An ObjectExpression or ObjectPattern node to check.
270
+ * @returns {void}
271
+ */
272
+ function checkForObject(node) {
273
+ if (node.properties.length === 0) {
274
+ return;
275
+ }
276
+
277
+ const first = sourceCode.getFirstToken(node),
278
+ last = getClosingBraceOfObject(node),
279
+ second = sourceCode.getTokenAfter(first, {
280
+ includeComments: true,
281
+ }),
282
+ penultimate = sourceCode.getTokenBefore(last, {
283
+ includeComments: true,
284
+ });
285
+
286
+ validateBraceSpacing(node, first, second, penultimate, last);
287
+ }
288
+
289
+ /**
290
+ * Reports a given import node if spacing in curly braces is invalid.
291
+ * @param {ASTNode} node An ImportDeclaration node to check.
292
+ * @returns {void}
293
+ */
294
+ function checkForImport(node) {
295
+ if (node.specifiers.length === 0) {
296
+ return;
297
+ }
298
+
299
+ let firstSpecifier = node.specifiers[0];
300
+ const lastSpecifier = node.specifiers.at(-1);
301
+
302
+ if (lastSpecifier.type !== "ImportSpecifier") {
303
+ return;
304
+ }
305
+ if (firstSpecifier.type !== "ImportSpecifier") {
306
+ firstSpecifier = node.specifiers[1];
307
+ }
308
+
309
+ const first = sourceCode.getTokenBefore(firstSpecifier),
310
+ last = sourceCode.getTokenAfter(
311
+ lastSpecifier,
312
+ astUtils.isNotCommaToken,
313
+ ),
314
+ second = sourceCode.getTokenAfter(first, {
315
+ includeComments: true,
316
+ }),
317
+ penultimate = sourceCode.getTokenBefore(last, {
318
+ includeComments: true,
319
+ });
320
+
321
+ validateBraceSpacing(node, first, second, penultimate, last);
322
+ }
323
+
324
+ /**
325
+ * Reports a given export node if spacing in curly braces is invalid.
326
+ * @param {ASTNode} node An ExportNamedDeclaration node to check.
327
+ * @returns {void}
328
+ */
329
+ function checkForExport(node) {
330
+ if (node.specifiers.length === 0) {
331
+ return;
332
+ }
333
+
334
+ const firstSpecifier = node.specifiers[0],
335
+ lastSpecifier = node.specifiers.at(-1),
336
+ first = sourceCode.getTokenBefore(firstSpecifier),
337
+ last = sourceCode.getTokenAfter(
338
+ lastSpecifier,
339
+ astUtils.isNotCommaToken,
340
+ ),
341
+ second = sourceCode.getTokenAfter(first, {
342
+ includeComments: true,
343
+ }),
344
+ penultimate = sourceCode.getTokenBefore(last, {
345
+ includeComments: true,
346
+ });
347
+
348
+ validateBraceSpacing(node, first, second, penultimate, last);
349
+ }
350
+
351
+ //--------------------------------------------------------------------------
352
+ // Public
353
+ //--------------------------------------------------------------------------
354
+
355
+ return {
356
+ // var {x} = y;
357
+ ObjectPattern: checkForObject,
358
+
359
+ // var y = {x: 'y'}
360
+ ObjectExpression: checkForObject,
361
+
362
+ // import {y} from 'x';
363
+ ImportDeclaration: checkForImport,
364
+
365
+ // export {name} from 'yo';
366
+ ExportNamedDeclaration: checkForExport,
367
+ };
368
+ },
369
+ };
@@ -0,0 +1,151 @@
1
+ /**
2
+ * @fileoverview Rule to enforce placing object properties on separate lines.
3
+ * @author Vitor Balocco
4
+ * @deprecated in ESLint v8.53.0
5
+ */
6
+
7
+ "use strict";
8
+
9
+ //------------------------------------------------------------------------------
10
+ // Rule Definition
11
+ //------------------------------------------------------------------------------
12
+
13
+ /** @type {import('../types').Rule.RuleModule} */
14
+ module.exports = {
15
+ meta: {
16
+ deprecated: {
17
+ message: "Formatting rules are being moved out of ESLint core.",
18
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
19
+ deprecatedSince: "8.53.0",
20
+ availableUntil: "11.0.0",
21
+ replacedBy: [
22
+ {
23
+ message:
24
+ "ESLint Stylistic now maintains deprecated stylistic core rules.",
25
+ url: "https://eslint.style/guide/migration",
26
+ plugin: {
27
+ name: "@stylistic/eslint-plugin",
28
+ url: "https://eslint.style",
29
+ },
30
+ rule: {
31
+ name: "object-property-newline",
32
+ url: "https://eslint.style/rules/object-property-newline",
33
+ },
34
+ },
35
+ ],
36
+ },
37
+ type: "layout",
38
+
39
+ docs: {
40
+ description: "Enforce placing object properties on separate lines",
41
+ recommended: false,
42
+ url: "https://eslint.org/docs/latest/rules/object-property-newline",
43
+ },
44
+
45
+ schema: [
46
+ {
47
+ type: "object",
48
+ properties: {
49
+ allowAllPropertiesOnSameLine: {
50
+ type: "boolean",
51
+ default: false,
52
+ },
53
+ allowMultiplePropertiesPerLine: {
54
+ // Deprecated
55
+ type: "boolean",
56
+ default: false,
57
+ },
58
+ },
59
+ additionalProperties: false,
60
+ },
61
+ ],
62
+
63
+ fixable: "whitespace",
64
+
65
+ messages: {
66
+ propertiesOnNewlineAll:
67
+ "Object properties must go on a new line if they aren't all on the same line.",
68
+ propertiesOnNewline: "Object properties must go on a new line.",
69
+ },
70
+ },
71
+
72
+ create(context) {
73
+ const allowSameLine =
74
+ context.options[0] &&
75
+ (context.options[0].allowAllPropertiesOnSameLine ||
76
+ context.options[0]
77
+ .allowMultiplePropertiesPerLine); /* Deprecated */
78
+ const messageId = allowSameLine
79
+ ? "propertiesOnNewlineAll"
80
+ : "propertiesOnNewline";
81
+
82
+ const sourceCode = context.sourceCode;
83
+
84
+ return {
85
+ ObjectExpression(node) {
86
+ if (allowSameLine) {
87
+ if (node.properties.length > 1) {
88
+ const firstTokenOfFirstProperty =
89
+ sourceCode.getFirstToken(node.properties[0]);
90
+ const lastTokenOfLastProperty = sourceCode.getLastToken(
91
+ node.properties.at(-1),
92
+ );
93
+
94
+ if (
95
+ firstTokenOfFirstProperty.loc.end.line ===
96
+ lastTokenOfLastProperty.loc.start.line
97
+ ) {
98
+ // All keys and values are on the same line
99
+ return;
100
+ }
101
+ }
102
+ }
103
+
104
+ for (let i = 1; i < node.properties.length; i++) {
105
+ const lastTokenOfPreviousProperty = sourceCode.getLastToken(
106
+ node.properties[i - 1],
107
+ );
108
+ const firstTokenOfCurrentProperty =
109
+ sourceCode.getFirstToken(node.properties[i]);
110
+
111
+ if (
112
+ lastTokenOfPreviousProperty.loc.end.line ===
113
+ firstTokenOfCurrentProperty.loc.start.line
114
+ ) {
115
+ context.report({
116
+ node,
117
+ loc: firstTokenOfCurrentProperty.loc,
118
+ messageId,
119
+ fix(fixer) {
120
+ const comma = sourceCode.getTokenBefore(
121
+ firstTokenOfCurrentProperty,
122
+ );
123
+ const rangeAfterComma = [
124
+ comma.range[1],
125
+ firstTokenOfCurrentProperty.range[0],
126
+ ];
127
+
128
+ // Don't perform a fix if there are any comments between the comma and the next property.
129
+ if (
130
+ sourceCode.text
131
+ .slice(
132
+ rangeAfterComma[0],
133
+ rangeAfterComma[1],
134
+ )
135
+ .trim()
136
+ ) {
137
+ return null;
138
+ }
139
+
140
+ return fixer.replaceTextRange(
141
+ rangeAfterComma,
142
+ "\n",
143
+ );
144
+ },
145
+ });
146
+ }
147
+ }
148
+ },
149
+ };
150
+ },
151
+ };