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,257 @@
1
+ /**
2
+ * @fileoverview Enforce newlines between operands of ternary expressions
3
+ * @author Kai Cataldo
4
+ * @deprecated in ESLint v8.53.0
5
+ */
6
+
7
+ "use strict";
8
+
9
+ const astUtils = 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: "multiline-ternary",
34
+ url: "https://eslint.style/rules/multiline-ternary",
35
+ },
36
+ },
37
+ ],
38
+ },
39
+ type: "layout",
40
+
41
+ docs: {
42
+ description:
43
+ "Enforce newlines between operands of ternary expressions",
44
+ recommended: false,
45
+ url: "https://eslint.org/docs/latest/rules/multiline-ternary",
46
+ },
47
+
48
+ schema: [
49
+ {
50
+ enum: ["always", "always-multiline", "never"],
51
+ },
52
+ ],
53
+
54
+ messages: {
55
+ expectedTestCons:
56
+ "Expected newline between test and consequent of ternary expression.",
57
+ expectedConsAlt:
58
+ "Expected newline between consequent and alternate of ternary expression.",
59
+ unexpectedTestCons:
60
+ "Unexpected newline between test and consequent of ternary expression.",
61
+ unexpectedConsAlt:
62
+ "Unexpected newline between consequent and alternate of ternary expression.",
63
+ },
64
+
65
+ fixable: "whitespace",
66
+ },
67
+
68
+ create(context) {
69
+ const sourceCode = context.sourceCode;
70
+ const option = context.options[0];
71
+ const multiline = option !== "never";
72
+ const allowSingleLine = option === "always-multiline";
73
+
74
+ //--------------------------------------------------------------------------
75
+ // Public
76
+ //--------------------------------------------------------------------------
77
+
78
+ return {
79
+ ConditionalExpression(node) {
80
+ const questionToken = sourceCode.getTokenAfter(
81
+ node.test,
82
+ astUtils.isNotClosingParenToken,
83
+ );
84
+ const colonToken = sourceCode.getTokenAfter(
85
+ node.consequent,
86
+ astUtils.isNotClosingParenToken,
87
+ );
88
+
89
+ const firstTokenOfTest = sourceCode.getFirstToken(node);
90
+ const lastTokenOfTest =
91
+ sourceCode.getTokenBefore(questionToken);
92
+ const firstTokenOfConsequent =
93
+ sourceCode.getTokenAfter(questionToken);
94
+ const lastTokenOfConsequent =
95
+ sourceCode.getTokenBefore(colonToken);
96
+ const firstTokenOfAlternate =
97
+ sourceCode.getTokenAfter(colonToken);
98
+
99
+ const areTestAndConsequentOnSameLine =
100
+ astUtils.isTokenOnSameLine(
101
+ lastTokenOfTest,
102
+ firstTokenOfConsequent,
103
+ );
104
+ const areConsequentAndAlternateOnSameLine =
105
+ astUtils.isTokenOnSameLine(
106
+ lastTokenOfConsequent,
107
+ firstTokenOfAlternate,
108
+ );
109
+
110
+ const hasComments = !!sourceCode.getCommentsInside(node).length;
111
+
112
+ if (!multiline) {
113
+ if (!areTestAndConsequentOnSameLine) {
114
+ context.report({
115
+ node: node.test,
116
+ loc: {
117
+ start: firstTokenOfTest.loc.start,
118
+ end: lastTokenOfTest.loc.end,
119
+ },
120
+ messageId: "unexpectedTestCons",
121
+ fix(fixer) {
122
+ if (hasComments) {
123
+ return null;
124
+ }
125
+ const fixers = [];
126
+ const areTestAndQuestionOnSameLine =
127
+ astUtils.isTokenOnSameLine(
128
+ lastTokenOfTest,
129
+ questionToken,
130
+ );
131
+ const areQuestionAndConsOnSameLine =
132
+ astUtils.isTokenOnSameLine(
133
+ questionToken,
134
+ firstTokenOfConsequent,
135
+ );
136
+
137
+ if (!areTestAndQuestionOnSameLine) {
138
+ fixers.push(
139
+ fixer.removeRange([
140
+ lastTokenOfTest.range[1],
141
+ questionToken.range[0],
142
+ ]),
143
+ );
144
+ }
145
+ if (!areQuestionAndConsOnSameLine) {
146
+ fixers.push(
147
+ fixer.removeRange([
148
+ questionToken.range[1],
149
+ firstTokenOfConsequent.range[0],
150
+ ]),
151
+ );
152
+ }
153
+
154
+ return fixers;
155
+ },
156
+ });
157
+ }
158
+
159
+ if (!areConsequentAndAlternateOnSameLine) {
160
+ context.report({
161
+ node: node.consequent,
162
+ loc: {
163
+ start: firstTokenOfConsequent.loc.start,
164
+ end: lastTokenOfConsequent.loc.end,
165
+ },
166
+ messageId: "unexpectedConsAlt",
167
+ fix(fixer) {
168
+ if (hasComments) {
169
+ return null;
170
+ }
171
+ const fixers = [];
172
+ const areConsAndColonOnSameLine =
173
+ astUtils.isTokenOnSameLine(
174
+ lastTokenOfConsequent,
175
+ colonToken,
176
+ );
177
+ const areColonAndAltOnSameLine =
178
+ astUtils.isTokenOnSameLine(
179
+ colonToken,
180
+ firstTokenOfAlternate,
181
+ );
182
+
183
+ if (!areConsAndColonOnSameLine) {
184
+ fixers.push(
185
+ fixer.removeRange([
186
+ lastTokenOfConsequent.range[1],
187
+ colonToken.range[0],
188
+ ]),
189
+ );
190
+ }
191
+ if (!areColonAndAltOnSameLine) {
192
+ fixers.push(
193
+ fixer.removeRange([
194
+ colonToken.range[1],
195
+ firstTokenOfAlternate.range[0],
196
+ ]),
197
+ );
198
+ }
199
+
200
+ return fixers;
201
+ },
202
+ });
203
+ }
204
+ } else {
205
+ if (
206
+ allowSingleLine &&
207
+ node.loc.start.line === node.loc.end.line
208
+ ) {
209
+ return;
210
+ }
211
+
212
+ if (areTestAndConsequentOnSameLine) {
213
+ context.report({
214
+ node: node.test,
215
+ loc: {
216
+ start: firstTokenOfTest.loc.start,
217
+ end: lastTokenOfTest.loc.end,
218
+ },
219
+ messageId: "expectedTestCons",
220
+ fix: fixer =>
221
+ hasComments
222
+ ? null
223
+ : fixer.replaceTextRange(
224
+ [
225
+ lastTokenOfTest.range[1],
226
+ questionToken.range[0],
227
+ ],
228
+ "\n",
229
+ ),
230
+ });
231
+ }
232
+
233
+ if (areConsequentAndAlternateOnSameLine) {
234
+ context.report({
235
+ node: node.consequent,
236
+ loc: {
237
+ start: firstTokenOfConsequent.loc.start,
238
+ end: lastTokenOfConsequent.loc.end,
239
+ },
240
+ messageId: "expectedConsAlt",
241
+ fix: fixer =>
242
+ hasComments
243
+ ? null
244
+ : fixer.replaceTextRange(
245
+ [
246
+ lastTokenOfConsequent.range[1],
247
+ colonToken.range[0],
248
+ ],
249
+ "\n",
250
+ ),
251
+ });
252
+ }
253
+ }
254
+ },
255
+ };
256
+ },
257
+ };
@@ -0,0 +1,277 @@
1
+ /**
2
+ * @fileoverview Rule to flag use of constructors without capital letters
3
+ * @author Nicholas C. Zakas
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Requirements
10
+ //------------------------------------------------------------------------------
11
+
12
+ const astUtils = require("./utils/ast-utils");
13
+
14
+ //------------------------------------------------------------------------------
15
+ // Helpers
16
+ //------------------------------------------------------------------------------
17
+
18
+ const CAPS_ALLOWED = [
19
+ "Array",
20
+ "Boolean",
21
+ "Date",
22
+ "Error",
23
+ "Function",
24
+ "Number",
25
+ "Object",
26
+ "RegExp",
27
+ "String",
28
+ "Symbol",
29
+ "BigInt",
30
+ ];
31
+
32
+ /**
33
+ * A reducer function to invert an array to an Object mapping the string form of the key, to `true`.
34
+ * @param {Object} map Accumulator object for the reduce.
35
+ * @param {string} key Object key to set to `true`.
36
+ * @returns {Object} Returns the updated Object for further reduction.
37
+ */
38
+ function invert(map, key) {
39
+ map[key] = true;
40
+ return map;
41
+ }
42
+
43
+ /**
44
+ * Creates an object with the cap is new exceptions as its keys and true as their values.
45
+ * @param {Object} config Rule configuration
46
+ * @returns {Object} Object with cap is new exceptions.
47
+ */
48
+ function calculateCapIsNewExceptions(config) {
49
+ const capIsNewExceptions = Array.from(
50
+ new Set([...config.capIsNewExceptions, ...CAPS_ALLOWED]),
51
+ );
52
+
53
+ return capIsNewExceptions.reduce(invert, {});
54
+ }
55
+
56
+ //------------------------------------------------------------------------------
57
+ // Rule Definition
58
+ //------------------------------------------------------------------------------
59
+
60
+ /** @type {import('../types').Rule.RuleModule} */
61
+ module.exports = {
62
+ meta: {
63
+ type: "suggestion",
64
+
65
+ docs: {
66
+ description:
67
+ "Require constructor names to begin with a capital letter",
68
+ recommended: false,
69
+ url: "https://eslint.org/docs/latest/rules/new-cap",
70
+ },
71
+
72
+ schema: [
73
+ {
74
+ type: "object",
75
+ properties: {
76
+ newIsCap: {
77
+ type: "boolean",
78
+ },
79
+ capIsNew: {
80
+ type: "boolean",
81
+ },
82
+ newIsCapExceptions: {
83
+ type: "array",
84
+ items: {
85
+ type: "string",
86
+ },
87
+ },
88
+ newIsCapExceptionPattern: {
89
+ type: "string",
90
+ },
91
+ capIsNewExceptions: {
92
+ type: "array",
93
+ items: {
94
+ type: "string",
95
+ },
96
+ },
97
+ capIsNewExceptionPattern: {
98
+ type: "string",
99
+ },
100
+ properties: {
101
+ type: "boolean",
102
+ },
103
+ },
104
+ additionalProperties: false,
105
+ },
106
+ ],
107
+
108
+ defaultOptions: [
109
+ {
110
+ capIsNew: true,
111
+ capIsNewExceptions: CAPS_ALLOWED,
112
+ newIsCap: true,
113
+ newIsCapExceptions: [],
114
+ properties: true,
115
+ },
116
+ ],
117
+
118
+ messages: {
119
+ upper: "A function with a name starting with an uppercase letter should only be used as a constructor.",
120
+ lower: "A constructor name should not start with a lowercase letter.",
121
+ },
122
+ },
123
+
124
+ create(context) {
125
+ const [config] = context.options;
126
+ const skipProperties = !config.properties;
127
+
128
+ const newIsCapExceptions = config.newIsCapExceptions.reduce(invert, {});
129
+ const newIsCapExceptionPattern = config.newIsCapExceptionPattern
130
+ ? new RegExp(config.newIsCapExceptionPattern, "u")
131
+ : null;
132
+
133
+ const capIsNewExceptions = calculateCapIsNewExceptions(config);
134
+ const capIsNewExceptionPattern = config.capIsNewExceptionPattern
135
+ ? new RegExp(config.capIsNewExceptionPattern, "u")
136
+ : null;
137
+
138
+ const listeners = {};
139
+
140
+ const sourceCode = context.sourceCode;
141
+
142
+ //--------------------------------------------------------------------------
143
+ // Helpers
144
+ //--------------------------------------------------------------------------
145
+
146
+ /**
147
+ * Get exact callee name from expression
148
+ * @param {ASTNode} node CallExpression or NewExpression node
149
+ * @returns {string} name
150
+ */
151
+ function extractNameFromExpression(node) {
152
+ return node.callee.type === "Identifier"
153
+ ? node.callee.name
154
+ : astUtils.getStaticPropertyName(node.callee) || "";
155
+ }
156
+
157
+ /**
158
+ * Returns the capitalization state of the string -
159
+ * Whether the first character is uppercase, lowercase, or non-alphabetic
160
+ * @param {string} str String
161
+ * @returns {string} capitalization state: "non-alpha", "lower", or "upper"
162
+ */
163
+ function getCap(str) {
164
+ const firstChar = str.charAt(0);
165
+
166
+ const firstCharLower = firstChar.toLowerCase();
167
+ const firstCharUpper = firstChar.toUpperCase();
168
+
169
+ if (firstCharLower === firstCharUpper) {
170
+ // char has no uppercase variant, so it's non-alphabetic
171
+ return "non-alpha";
172
+ }
173
+ if (firstChar === firstCharLower) {
174
+ return "lower";
175
+ }
176
+ return "upper";
177
+ }
178
+
179
+ /**
180
+ * Check if capitalization is allowed for a CallExpression
181
+ * @param {Object} allowedMap Object mapping calleeName to a Boolean
182
+ * @param {ASTNode} node CallExpression node
183
+ * @param {string} calleeName Capitalized callee name from a CallExpression
184
+ * @param {Object} pattern RegExp object from options pattern
185
+ * @returns {boolean} Returns true if the callee may be capitalized
186
+ */
187
+ function isCapAllowed(allowedMap, node, calleeName, pattern) {
188
+ const sourceText = sourceCode.getText(node.callee);
189
+
190
+ if (allowedMap[calleeName] || allowedMap[sourceText]) {
191
+ return true;
192
+ }
193
+
194
+ if (pattern && pattern.test(sourceText)) {
195
+ return true;
196
+ }
197
+
198
+ const callee = astUtils.skipChainExpression(node.callee);
199
+
200
+ if (calleeName === "UTC" && callee.type === "MemberExpression") {
201
+ // allow if callee is Date.UTC
202
+ return (
203
+ callee.object.type === "Identifier" &&
204
+ callee.object.name === "Date"
205
+ );
206
+ }
207
+
208
+ return skipProperties && callee.type === "MemberExpression";
209
+ }
210
+
211
+ /**
212
+ * Reports the given messageId for the given node. The location will be the start of the property or the callee.
213
+ * @param {ASTNode} node CallExpression or NewExpression node.
214
+ * @param {string} messageId The messageId to report.
215
+ * @returns {void}
216
+ */
217
+ function report(node, messageId) {
218
+ let callee = astUtils.skipChainExpression(node.callee);
219
+
220
+ if (callee.type === "MemberExpression") {
221
+ callee = callee.property;
222
+ }
223
+
224
+ context.report({ node, loc: callee.loc, messageId });
225
+ }
226
+
227
+ //--------------------------------------------------------------------------
228
+ // Public
229
+ //--------------------------------------------------------------------------
230
+
231
+ if (config.newIsCap) {
232
+ listeners.NewExpression = function (node) {
233
+ const constructorName = extractNameFromExpression(node);
234
+
235
+ if (constructorName) {
236
+ const capitalization = getCap(constructorName);
237
+ const isAllowed =
238
+ capitalization !== "lower" ||
239
+ isCapAllowed(
240
+ newIsCapExceptions,
241
+ node,
242
+ constructorName,
243
+ newIsCapExceptionPattern,
244
+ );
245
+
246
+ if (!isAllowed) {
247
+ report(node, "lower");
248
+ }
249
+ }
250
+ };
251
+ }
252
+
253
+ if (config.capIsNew) {
254
+ listeners.CallExpression = function (node) {
255
+ const calleeName = extractNameFromExpression(node);
256
+
257
+ if (calleeName) {
258
+ const capitalization = getCap(calleeName);
259
+ const isAllowed =
260
+ capitalization !== "upper" ||
261
+ isCapAllowed(
262
+ capIsNewExceptions,
263
+ node,
264
+ calleeName,
265
+ capIsNewExceptionPattern,
266
+ );
267
+
268
+ if (!isAllowed) {
269
+ report(node, "upper");
270
+ }
271
+ }
272
+ };
273
+ }
274
+
275
+ return listeners;
276
+ },
277
+ };
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @fileoverview Rule to flag when using constructor without parentheses
3
+ * @author Ilya Volodin
4
+ * @deprecated in ESLint v8.53.0
5
+ */
6
+
7
+ "use strict";
8
+
9
+ //------------------------------------------------------------------------------
10
+ // Requirements
11
+ //------------------------------------------------------------------------------
12
+
13
+ const astUtils = require("./utils/ast-utils");
14
+
15
+ //------------------------------------------------------------------------------
16
+ // Helpers
17
+ //------------------------------------------------------------------------------
18
+
19
+ //------------------------------------------------------------------------------
20
+ // Rule Definition
21
+ //------------------------------------------------------------------------------
22
+
23
+ /** @type {import('../types').Rule.RuleModule} */
24
+ module.exports = {
25
+ meta: {
26
+ deprecated: {
27
+ message: "Formatting rules are being moved out of ESLint core.",
28
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
29
+ deprecatedSince: "8.53.0",
30
+ availableUntil: "11.0.0",
31
+ replacedBy: [
32
+ {
33
+ message:
34
+ "ESLint Stylistic now maintains deprecated stylistic core rules.",
35
+ url: "https://eslint.style/guide/migration",
36
+ plugin: {
37
+ name: "@stylistic/eslint-plugin",
38
+ url: "https://eslint.style",
39
+ },
40
+ rule: {
41
+ name: "new-parens",
42
+ url: "https://eslint.style/rules/new-parens",
43
+ },
44
+ },
45
+ ],
46
+ },
47
+ type: "layout",
48
+
49
+ docs: {
50
+ description:
51
+ "Enforce or disallow parentheses when invoking a constructor with no arguments",
52
+ recommended: false,
53
+ url: "https://eslint.org/docs/latest/rules/new-parens",
54
+ },
55
+
56
+ fixable: "code",
57
+ schema: [
58
+ {
59
+ enum: ["always", "never"],
60
+ },
61
+ ],
62
+ messages: {
63
+ missing: "Missing '()' invoking a constructor.",
64
+ unnecessary:
65
+ "Unnecessary '()' invoking a constructor with no arguments.",
66
+ },
67
+ },
68
+
69
+ create(context) {
70
+ const options = context.options;
71
+ const always = options[0] !== "never"; // Default is always
72
+
73
+ const sourceCode = context.sourceCode;
74
+
75
+ return {
76
+ NewExpression(node) {
77
+ if (node.arguments.length !== 0) {
78
+ return; // if there are arguments, there have to be parens
79
+ }
80
+
81
+ const lastToken = sourceCode.getLastToken(node);
82
+ const hasLastParen =
83
+ lastToken && astUtils.isClosingParenToken(lastToken);
84
+
85
+ // `hasParens` is true only if the new expression ends with its own parens, e.g., new new foo() does not end with its own parens
86
+ const hasParens =
87
+ hasLastParen &&
88
+ astUtils.isOpeningParenToken(
89
+ sourceCode.getTokenBefore(lastToken),
90
+ ) &&
91
+ node.callee.range[1] < node.range[1];
92
+
93
+ if (always) {
94
+ if (!hasParens) {
95
+ context.report({
96
+ node,
97
+ messageId: "missing",
98
+ fix: fixer => fixer.insertTextAfter(node, "()"),
99
+ });
100
+ }
101
+ } else {
102
+ if (hasParens) {
103
+ context.report({
104
+ node,
105
+ messageId: "unnecessary",
106
+ fix: fixer => [
107
+ fixer.remove(
108
+ sourceCode.getTokenBefore(lastToken),
109
+ ),
110
+ fixer.remove(lastToken),
111
+ fixer.insertTextBefore(node, "("),
112
+ fixer.insertTextAfter(node, ")"),
113
+ ],
114
+ });
115
+ }
116
+ }
117
+ },
118
+ };
119
+ },
120
+ };