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,365 @@
1
+ /**
2
+ * @fileoverview A rule to disallow using `this`/`super` before `super()`.
3
+ * @author Toru Nagashima
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
+ /**
19
+ * Checks whether or not a given node is a constructor.
20
+ * @param {ASTNode} node A node to check. This node type is one of
21
+ * `Program`, `FunctionDeclaration`, `FunctionExpression`, and
22
+ * `ArrowFunctionExpression`.
23
+ * @returns {boolean} `true` if the node is a constructor.
24
+ */
25
+ function isConstructorFunction(node) {
26
+ return (
27
+ node.type === "FunctionExpression" &&
28
+ node.parent.type === "MethodDefinition" &&
29
+ node.parent.kind === "constructor"
30
+ );
31
+ }
32
+
33
+ /*
34
+ * Information for each code path segment.
35
+ * - superCalled: The flag which shows `super()` called in all code paths.
36
+ * - invalidNodes: The array of invalid ThisExpression and Super nodes.
37
+ */
38
+ /**
39
+ *
40
+ */
41
+ class SegmentInfo {
42
+ /**
43
+ * Indicates whether `super()` is called in all code paths.
44
+ * @type {boolean}
45
+ */
46
+ superCalled = false;
47
+
48
+ /**
49
+ * The array of invalid ThisExpression and Super nodes.
50
+ * @type {ASTNode[]}
51
+ */
52
+ invalidNodes = [];
53
+ }
54
+
55
+ //------------------------------------------------------------------------------
56
+ // Rule Definition
57
+ //------------------------------------------------------------------------------
58
+
59
+ /** @type {import('../types').Rule.RuleModule} */
60
+ module.exports = {
61
+ meta: {
62
+ type: "problem",
63
+
64
+ docs: {
65
+ description:
66
+ "Disallow `this`/`super` before calling `super()` in constructors",
67
+ recommended: true,
68
+ url: "https://eslint.org/docs/latest/rules/no-this-before-super",
69
+ },
70
+
71
+ schema: [],
72
+
73
+ messages: {
74
+ noBeforeSuper: "'{{kind}}' is not allowed before 'super()'.",
75
+ },
76
+ },
77
+
78
+ create(context) {
79
+ /*
80
+ * Information for each constructor.
81
+ * - upper: Information of the upper constructor.
82
+ * - hasExtends: A flag which shows whether the owner class has a valid
83
+ * `extends` part.
84
+ * - scope: The scope of the owner class.
85
+ * - codePath: The code path of this constructor.
86
+ */
87
+ let funcInfo = null;
88
+
89
+ /** @type {Record<string, SegmentInfo>} */
90
+ let segInfoMap = Object.create(null);
91
+
92
+ /**
93
+ * Gets whether or not `super()` is called in a given code path segment.
94
+ * @param {CodePathSegment} segment A code path segment to get.
95
+ * @returns {boolean} `true` if `super()` is called.
96
+ */
97
+ function isCalled(segment) {
98
+ return !segment.reachable || segInfoMap[segment.id]?.superCalled;
99
+ }
100
+
101
+ /**
102
+ * Checks whether or not this is in a constructor.
103
+ * @returns {boolean} `true` if this is in a constructor.
104
+ */
105
+ function isInConstructorOfDerivedClass() {
106
+ return Boolean(
107
+ funcInfo && funcInfo.isConstructor && funcInfo.hasExtends,
108
+ );
109
+ }
110
+
111
+ /**
112
+ * Determines if every segment in a set has been called.
113
+ * @param {Set<CodePathSegment>} segments The segments to search.
114
+ * @returns {boolean} True if every segment has been called; false otherwise.
115
+ */
116
+ function isEverySegmentCalled(segments) {
117
+ for (const segment of segments) {
118
+ if (!isCalled(segment)) {
119
+ return false;
120
+ }
121
+ }
122
+
123
+ return true;
124
+ }
125
+
126
+ /**
127
+ * Checks whether or not this is before `super()` is called.
128
+ * @returns {boolean} `true` if this is before `super()` is called.
129
+ */
130
+ function isBeforeCallOfSuper() {
131
+ return (
132
+ isInConstructorOfDerivedClass() &&
133
+ !isEverySegmentCalled(funcInfo.currentSegments)
134
+ );
135
+ }
136
+
137
+ /**
138
+ * Sets a given node as invalid.
139
+ * @param {ASTNode} node A node to set as invalid. This is one of
140
+ * a ThisExpression and a Super.
141
+ * @returns {void}
142
+ */
143
+ function setInvalid(node) {
144
+ const segments = funcInfo.currentSegments;
145
+
146
+ for (const segment of segments) {
147
+ if (segment.reachable) {
148
+ segInfoMap[segment.id].invalidNodes.push(node);
149
+ }
150
+ }
151
+ }
152
+
153
+ /**
154
+ * Sets the current segment as `super` was called.
155
+ * @returns {void}
156
+ */
157
+ function setSuperCalled() {
158
+ const segments = funcInfo.currentSegments;
159
+
160
+ for (const segment of segments) {
161
+ if (segment.reachable) {
162
+ segInfoMap[segment.id].superCalled = true;
163
+ }
164
+ }
165
+ }
166
+
167
+ return {
168
+ /**
169
+ * Adds information of a constructor into the stack.
170
+ * @param {CodePath} codePath A code path which was started.
171
+ * @param {ASTNode} node The current node.
172
+ * @returns {void}
173
+ */
174
+ onCodePathStart(codePath, node) {
175
+ if (isConstructorFunction(node)) {
176
+ // Class > ClassBody > MethodDefinition > FunctionExpression
177
+ const classNode = node.parent.parent.parent;
178
+
179
+ funcInfo = {
180
+ upper: funcInfo,
181
+ isConstructor: true,
182
+ hasExtends: Boolean(
183
+ classNode.superClass &&
184
+ !astUtils.isNullOrUndefined(
185
+ classNode.superClass,
186
+ ),
187
+ ),
188
+ codePath,
189
+ currentSegments: new Set(),
190
+ };
191
+ } else {
192
+ funcInfo = {
193
+ upper: funcInfo,
194
+ isConstructor: false,
195
+ hasExtends: false,
196
+ codePath,
197
+ currentSegments: new Set(),
198
+ };
199
+ }
200
+ },
201
+
202
+ /**
203
+ * Removes the top of stack item.
204
+ *
205
+ * And this traverses all segments of this code path then reports every
206
+ * invalid node.
207
+ * @param {CodePath} codePath A code path which was ended.
208
+ * @returns {void}
209
+ */
210
+ onCodePathEnd(codePath) {
211
+ const isDerivedClass = funcInfo.hasExtends;
212
+
213
+ funcInfo = funcInfo.upper;
214
+ if (!isDerivedClass) {
215
+ return;
216
+ }
217
+
218
+ /**
219
+ * A collection of nodes to avoid duplicate reports.
220
+ * @type {Set<ASTNode>}
221
+ */
222
+ const reported = new Set();
223
+
224
+ codePath.traverseSegments((segment, controller) => {
225
+ const info = segInfoMap[segment.id];
226
+ const invalidNodes = info.invalidNodes.filter(
227
+ /*
228
+ * Avoid duplicate reports.
229
+ * When there is a `finally`, invalidNodes may contain already reported node.
230
+ */
231
+ node => !reported.has(node),
232
+ );
233
+
234
+ for (const invalidNode of invalidNodes) {
235
+ reported.add(invalidNode);
236
+
237
+ context.report({
238
+ messageId: "noBeforeSuper",
239
+ node: invalidNode,
240
+ data: {
241
+ kind:
242
+ invalidNode.type === "Super"
243
+ ? "super"
244
+ : "this",
245
+ },
246
+ });
247
+ }
248
+
249
+ if (info.superCalled) {
250
+ controller.skip();
251
+ }
252
+ });
253
+ },
254
+
255
+ /**
256
+ * Initialize information of a given code path segment.
257
+ * @param {CodePathSegment} segment A code path segment to initialize.
258
+ * @returns {void}
259
+ */
260
+ onCodePathSegmentStart(segment) {
261
+ funcInfo.currentSegments.add(segment);
262
+
263
+ if (!isInConstructorOfDerivedClass()) {
264
+ return;
265
+ }
266
+
267
+ // Initialize info.
268
+ segInfoMap[segment.id] = {
269
+ superCalled:
270
+ segment.prevSegments.length > 0 &&
271
+ segment.prevSegments.every(isCalled),
272
+ invalidNodes: [],
273
+ };
274
+ },
275
+
276
+ onUnreachableCodePathSegmentStart(segment) {
277
+ funcInfo.currentSegments.add(segment);
278
+ },
279
+
280
+ onUnreachableCodePathSegmentEnd(segment) {
281
+ funcInfo.currentSegments.delete(segment);
282
+ },
283
+
284
+ onCodePathSegmentEnd(segment) {
285
+ funcInfo.currentSegments.delete(segment);
286
+ },
287
+
288
+ /**
289
+ * Update information of the code path segment when a code path was
290
+ * looped.
291
+ * @param {CodePathSegment} fromSegment The code path segment of the
292
+ * end of a loop.
293
+ * @param {CodePathSegment} toSegment A code path segment of the head
294
+ * of a loop.
295
+ * @returns {void}
296
+ */
297
+ onCodePathSegmentLoop(fromSegment, toSegment) {
298
+ if (!isInConstructorOfDerivedClass()) {
299
+ return;
300
+ }
301
+
302
+ // Update information inside of the loop.
303
+ funcInfo.codePath.traverseSegments(
304
+ { first: toSegment, last: fromSegment },
305
+ (segment, controller) => {
306
+ const info =
307
+ segInfoMap[segment.id] ?? new SegmentInfo();
308
+
309
+ if (info.superCalled) {
310
+ controller.skip();
311
+ } else if (
312
+ segment.prevSegments.length > 0 &&
313
+ segment.prevSegments.every(isCalled)
314
+ ) {
315
+ info.superCalled = true;
316
+ }
317
+
318
+ segInfoMap[segment.id] = info;
319
+ },
320
+ );
321
+ },
322
+
323
+ /**
324
+ * Reports if this is before `super()`.
325
+ * @param {ASTNode} node A target node.
326
+ * @returns {void}
327
+ */
328
+ ThisExpression(node) {
329
+ if (isBeforeCallOfSuper()) {
330
+ setInvalid(node);
331
+ }
332
+ },
333
+
334
+ /**
335
+ * Reports if this is before `super()`.
336
+ * @param {ASTNode} node A target node.
337
+ * @returns {void}
338
+ */
339
+ Super(node) {
340
+ if (!astUtils.isCallee(node) && isBeforeCallOfSuper()) {
341
+ setInvalid(node);
342
+ }
343
+ },
344
+
345
+ /**
346
+ * Marks `super()` called.
347
+ * @param {ASTNode} node A target node.
348
+ * @returns {void}
349
+ */
350
+ "CallExpression:exit"(node) {
351
+ if (node.callee.type === "Super" && isBeforeCallOfSuper()) {
352
+ setSuperCalled();
353
+ }
354
+ },
355
+
356
+ /**
357
+ * Resets state.
358
+ * @returns {void}
359
+ */
360
+ "Program:exit"() {
361
+ segInfoMap = Object.create(null);
362
+ },
363
+ };
364
+ },
365
+ };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @fileoverview Rule to restrict what can be thrown as an exception.
3
+ * @author Dieter Oberkofler
4
+ */
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
+ type: "suggestion",
18
+
19
+ docs: {
20
+ description: "Disallow throwing literals as exceptions",
21
+ recommended: false,
22
+ url: "https://eslint.org/docs/latest/rules/no-throw-literal",
23
+ },
24
+
25
+ schema: [],
26
+
27
+ messages: {
28
+ object: "Expected an error object to be thrown.",
29
+ undef: "Do not throw undefined.",
30
+ },
31
+ },
32
+
33
+ create(context) {
34
+ return {
35
+ ThrowStatement(node) {
36
+ if (!astUtils.couldBeError(node.argument)) {
37
+ context.report({ node, messageId: "object" });
38
+ } else if (node.argument.type === "Identifier") {
39
+ if (node.argument.name === "undefined") {
40
+ context.report({ node, messageId: "undef" });
41
+ }
42
+ }
43
+ },
44
+ };
45
+ },
46
+ };
@@ -0,0 +1,227 @@
1
+ /**
2
+ * @fileoverview Disallow trailing spaces at the end of lines.
3
+ * @author Nodeca Team <https://github.com/nodeca>
4
+ * @deprecated in ESLint v8.53.0
5
+ */
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Typedefs
10
+ //------------------------------------------------------------------------------
11
+
12
+ /**
13
+ * @import { SourceLocation, SourceRange } from "@eslint/core";
14
+ */
15
+
16
+ //------------------------------------------------------------------------------
17
+ // Requirements
18
+ //------------------------------------------------------------------------------
19
+
20
+ const astUtils = require("./utils/ast-utils");
21
+
22
+ //------------------------------------------------------------------------------
23
+ // Rule Definition
24
+ //------------------------------------------------------------------------------
25
+
26
+ /** @type {import('../types').Rule.RuleModule} */
27
+ module.exports = {
28
+ meta: {
29
+ deprecated: {
30
+ message: "Formatting rules are being moved out of ESLint core.",
31
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
32
+ deprecatedSince: "8.53.0",
33
+ availableUntil: "11.0.0",
34
+ replacedBy: [
35
+ {
36
+ message:
37
+ "ESLint Stylistic now maintains deprecated stylistic core rules.",
38
+ url: "https://eslint.style/guide/migration",
39
+ plugin: {
40
+ name: "@stylistic/eslint-plugin",
41
+ url: "https://eslint.style",
42
+ },
43
+ rule: {
44
+ name: "no-trailing-spaces",
45
+ url: "https://eslint.style/rules/no-trailing-spaces",
46
+ },
47
+ },
48
+ ],
49
+ },
50
+ type: "layout",
51
+
52
+ docs: {
53
+ description: "Disallow trailing whitespace at the end of lines",
54
+ recommended: false,
55
+ url: "https://eslint.org/docs/latest/rules/no-trailing-spaces",
56
+ },
57
+
58
+ fixable: "whitespace",
59
+
60
+ schema: [
61
+ {
62
+ type: "object",
63
+ properties: {
64
+ skipBlankLines: {
65
+ type: "boolean",
66
+ default: false,
67
+ },
68
+ ignoreComments: {
69
+ type: "boolean",
70
+ default: false,
71
+ },
72
+ },
73
+ additionalProperties: false,
74
+ },
75
+ ],
76
+
77
+ messages: {
78
+ trailingSpace: "Trailing spaces not allowed.",
79
+ },
80
+ },
81
+
82
+ create(context) {
83
+ const sourceCode = context.sourceCode;
84
+
85
+ const BLANK_CLASS =
86
+ "[ \t\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u3000]",
87
+ SKIP_BLANK = `^${BLANK_CLASS}*$`,
88
+ NONBLANK = `${BLANK_CLASS}+$`;
89
+
90
+ const options = context.options[0] || {},
91
+ skipBlankLines = options.skipBlankLines || false,
92
+ ignoreComments = options.ignoreComments || false;
93
+
94
+ /**
95
+ * Report the error message
96
+ * @param {ASTNode} node node to report
97
+ * @param {SourceLocation} location range information
98
+ * @param {SourceRange} fixRange Range based on the whole program
99
+ * @returns {void}
100
+ */
101
+ function report(node, location, fixRange) {
102
+ /*
103
+ * Passing node is a bit dirty, because message data will contain big
104
+ * text in `source`. But... who cares :) ?
105
+ * One more kludge will not make worse the bloody wizardry of this
106
+ * plugin.
107
+ */
108
+ context.report({
109
+ node,
110
+ loc: location,
111
+ messageId: "trailingSpace",
112
+ fix(fixer) {
113
+ return fixer.removeRange(fixRange);
114
+ },
115
+ });
116
+ }
117
+
118
+ /**
119
+ * Given a list of comment nodes, return the line numbers for those comments.
120
+ * @param {Array} comments An array of comment nodes.
121
+ * @returns {number[]} An array of line numbers containing comments.
122
+ */
123
+ function getCommentLineNumbers(comments) {
124
+ const lines = new Set();
125
+
126
+ comments.forEach(comment => {
127
+ const endLine =
128
+ comment.type === "Block"
129
+ ? comment.loc.end.line - 1
130
+ : comment.loc.end.line;
131
+
132
+ for (let i = comment.loc.start.line; i <= endLine; i++) {
133
+ lines.add(i);
134
+ }
135
+ });
136
+
137
+ return lines;
138
+ }
139
+
140
+ //--------------------------------------------------------------------------
141
+ // Public
142
+ //--------------------------------------------------------------------------
143
+
144
+ return {
145
+ Program: function checkTrailingSpaces(node) {
146
+ /*
147
+ * Let's hack. Since Espree does not return whitespace nodes,
148
+ * fetch the source code and do matching via regexps.
149
+ */
150
+
151
+ const re = new RegExp(NONBLANK, "u"),
152
+ skipMatch = new RegExp(SKIP_BLANK, "u"),
153
+ lines = sourceCode.lines,
154
+ linebreaks = sourceCode
155
+ .getText()
156
+ .match(astUtils.createGlobalLinebreakMatcher()),
157
+ comments = sourceCode.getAllComments(),
158
+ commentLineNumbers = getCommentLineNumbers(comments);
159
+
160
+ let totalLength = 0;
161
+
162
+ for (let i = 0, ii = lines.length; i < ii; i++) {
163
+ const lineNumber = i + 1;
164
+
165
+ /*
166
+ * Always add linebreak length to line length to accommodate for line break (\n or \r\n)
167
+ * Because during the fix time they also reserve one spot in the array.
168
+ * Usually linebreak length is 2 for \r\n (CRLF) and 1 for \n (LF)
169
+ */
170
+ const linebreakLength =
171
+ linebreaks && linebreaks[i] ? linebreaks[i].length : 1;
172
+ const lineLength = lines[i].length + linebreakLength;
173
+
174
+ const matches = re.exec(lines[i]);
175
+
176
+ if (matches) {
177
+ const location = {
178
+ start: {
179
+ line: lineNumber,
180
+ column: matches.index,
181
+ },
182
+ end: {
183
+ line: lineNumber,
184
+ column: lineLength - linebreakLength,
185
+ },
186
+ };
187
+
188
+ const rangeStart = totalLength + location.start.column;
189
+ const rangeEnd = totalLength + location.end.column;
190
+ const containingNode =
191
+ sourceCode.getNodeByRangeIndex(rangeStart);
192
+
193
+ if (
194
+ containingNode &&
195
+ containingNode.type === "TemplateElement" &&
196
+ rangeStart > containingNode.parent.range[0] &&
197
+ rangeEnd < containingNode.parent.range[1]
198
+ ) {
199
+ totalLength += lineLength;
200
+ continue;
201
+ }
202
+
203
+ /*
204
+ * If the line has only whitespace, and skipBlankLines
205
+ * is true, don't report it
206
+ */
207
+ if (skipBlankLines && skipMatch.test(lines[i])) {
208
+ totalLength += lineLength;
209
+ continue;
210
+ }
211
+
212
+ const fixRange = [rangeStart, rangeEnd];
213
+
214
+ if (
215
+ !ignoreComments ||
216
+ !commentLineNumbers.has(lineNumber)
217
+ ) {
218
+ report(node, location, fixRange);
219
+ }
220
+ }
221
+
222
+ totalLength += lineLength;
223
+ }
224
+ },
225
+ };
226
+ },
227
+ };
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @fileoverview Rule to flag variables that are never assigned
3
+ * @author Jacob Bandes-Storch <https://github.com/jtbandes>
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Rule Definition
9
+ //------------------------------------------------------------------------------
10
+
11
+ /** @type {import('../types').Rule.RuleModule} */
12
+ module.exports = {
13
+ meta: {
14
+ type: "problem",
15
+ dialects: ["typescript", "javascript"],
16
+ language: "javascript",
17
+
18
+ docs: {
19
+ description:
20
+ "Disallow `let` or `var` variables that are read but never assigned",
21
+ recommended: true,
22
+ url: "https://eslint.org/docs/latest/rules/no-unassigned-vars",
23
+ },
24
+
25
+ schema: [],
26
+ messages: {
27
+ unassigned:
28
+ "'{{name}}' is always 'undefined' because it's never assigned.",
29
+ },
30
+ },
31
+
32
+ create(context) {
33
+ const sourceCode = context.sourceCode;
34
+ let insideDeclareModule = false;
35
+
36
+ return {
37
+ "TSModuleDeclaration[declare=true]"() {
38
+ insideDeclareModule = true;
39
+ },
40
+ "TSModuleDeclaration[declare=true]:exit"() {
41
+ insideDeclareModule = false;
42
+ },
43
+ VariableDeclarator(node) {
44
+ /** @type {import('estree').VariableDeclaration} */
45
+ const declaration = node.parent;
46
+ const shouldSkip =
47
+ node.init ||
48
+ node.id.type !== "Identifier" ||
49
+ declaration.kind === "const" ||
50
+ declaration.declare ||
51
+ insideDeclareModule;
52
+ if (shouldSkip) {
53
+ return;
54
+ }
55
+ const [variable] = sourceCode.getDeclaredVariables(node);
56
+ if (!variable) {
57
+ return;
58
+ }
59
+ let hasRead = false;
60
+ for (const reference of variable.references) {
61
+ if (reference.isWrite()) {
62
+ return;
63
+ }
64
+ if (reference.isRead()) {
65
+ hasRead = true;
66
+ }
67
+ }
68
+ if (!hasRead) {
69
+ // Variables that are never read should be flagged by no-unused-vars instead
70
+ return;
71
+ }
72
+ context.report({
73
+ node,
74
+ messageId: "unassigned",
75
+ data: { name: node.id.name },
76
+ });
77
+ },
78
+ };
79
+ },
80
+ };