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,251 @@
1
+ /**
2
+ * @fileoverview Disallows or enforces spaces inside computed properties.
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: "computed-property-spacing",
33
+ url: "https://eslint.style/rules/computed-property-spacing",
34
+ },
35
+ },
36
+ ],
37
+ },
38
+ type: "layout",
39
+
40
+ docs: {
41
+ description:
42
+ "Enforce consistent spacing inside computed property brackets",
43
+ recommended: false,
44
+ url: "https://eslint.org/docs/latest/rules/computed-property-spacing",
45
+ },
46
+
47
+ fixable: "whitespace",
48
+
49
+ schema: [
50
+ {
51
+ enum: ["always", "never"],
52
+ },
53
+ {
54
+ type: "object",
55
+ properties: {
56
+ enforceForClassMembers: {
57
+ type: "boolean",
58
+ default: true,
59
+ },
60
+ },
61
+ additionalProperties: false,
62
+ },
63
+ ],
64
+
65
+ messages: {
66
+ unexpectedSpaceBefore:
67
+ "There should be no space before '{{tokenValue}}'.",
68
+ unexpectedSpaceAfter:
69
+ "There should be no space after '{{tokenValue}}'.",
70
+
71
+ missingSpaceBefore: "A space is required before '{{tokenValue}}'.",
72
+ missingSpaceAfter: "A space is required after '{{tokenValue}}'.",
73
+ },
74
+ },
75
+
76
+ create(context) {
77
+ const sourceCode = context.sourceCode;
78
+ const propertyNameMustBeSpaced = context.options[0] === "always"; // default is "never"
79
+ const enforceForClassMembers =
80
+ !context.options[1] || context.options[1].enforceForClassMembers;
81
+
82
+ //--------------------------------------------------------------------------
83
+ // Helpers
84
+ //--------------------------------------------------------------------------
85
+
86
+ /**
87
+ * Reports that there shouldn't be a space after the first token
88
+ * @param {ASTNode} node The node to report in the event of an error.
89
+ * @param {Token} token The token to use for the report.
90
+ * @param {Token} tokenAfter The token after `token`.
91
+ * @returns {void}
92
+ */
93
+ function reportNoBeginningSpace(node, token, tokenAfter) {
94
+ context.report({
95
+ node,
96
+ loc: { start: token.loc.end, end: tokenAfter.loc.start },
97
+ messageId: "unexpectedSpaceAfter",
98
+ data: {
99
+ tokenValue: token.value,
100
+ },
101
+ fix(fixer) {
102
+ return fixer.removeRange([
103
+ token.range[1],
104
+ tokenAfter.range[0],
105
+ ]);
106
+ },
107
+ });
108
+ }
109
+
110
+ /**
111
+ * Reports that there shouldn't be a space before the last token
112
+ * @param {ASTNode} node The node to report in the event of an error.
113
+ * @param {Token} token The token to use for the report.
114
+ * @param {Token} tokenBefore The token before `token`.
115
+ * @returns {void}
116
+ */
117
+ function reportNoEndingSpace(node, token, tokenBefore) {
118
+ context.report({
119
+ node,
120
+ loc: { start: tokenBefore.loc.end, end: token.loc.start },
121
+ messageId: "unexpectedSpaceBefore",
122
+ data: {
123
+ tokenValue: token.value,
124
+ },
125
+ fix(fixer) {
126
+ return fixer.removeRange([
127
+ tokenBefore.range[1],
128
+ token.range[0],
129
+ ]);
130
+ },
131
+ });
132
+ }
133
+
134
+ /**
135
+ * Reports that there should be a space after the first token
136
+ * @param {ASTNode} node The node to report in the event of an error.
137
+ * @param {Token} token The token to use for the report.
138
+ * @returns {void}
139
+ */
140
+ function reportRequiredBeginningSpace(node, token) {
141
+ context.report({
142
+ node,
143
+ loc: token.loc,
144
+ messageId: "missingSpaceAfter",
145
+ data: {
146
+ tokenValue: token.value,
147
+ },
148
+ fix(fixer) {
149
+ return fixer.insertTextAfter(token, " ");
150
+ },
151
+ });
152
+ }
153
+
154
+ /**
155
+ * Reports that there should be a space before the last token
156
+ * @param {ASTNode} node The node to report in the event of an error.
157
+ * @param {Token} token The token to use for the report.
158
+ * @returns {void}
159
+ */
160
+ function reportRequiredEndingSpace(node, token) {
161
+ context.report({
162
+ node,
163
+ loc: token.loc,
164
+ messageId: "missingSpaceBefore",
165
+ data: {
166
+ tokenValue: token.value,
167
+ },
168
+ fix(fixer) {
169
+ return fixer.insertTextBefore(token, " ");
170
+ },
171
+ });
172
+ }
173
+
174
+ /**
175
+ * Returns a function that checks the spacing of a node on the property name
176
+ * that was passed in.
177
+ * @param {string} propertyName The property on the node to check for spacing
178
+ * @returns {Function} A function that will check spacing on a node
179
+ */
180
+ function checkSpacing(propertyName) {
181
+ return function (node) {
182
+ if (!node.computed) {
183
+ return;
184
+ }
185
+
186
+ const property = node[propertyName];
187
+
188
+ const before = sourceCode.getTokenBefore(
189
+ property,
190
+ astUtils.isOpeningBracketToken,
191
+ ),
192
+ first = sourceCode.getTokenAfter(before, {
193
+ includeComments: true,
194
+ }),
195
+ after = sourceCode.getTokenAfter(
196
+ property,
197
+ astUtils.isClosingBracketToken,
198
+ ),
199
+ last = sourceCode.getTokenBefore(after, {
200
+ includeComments: true,
201
+ });
202
+
203
+ if (astUtils.isTokenOnSameLine(before, first)) {
204
+ if (propertyNameMustBeSpaced) {
205
+ if (
206
+ !sourceCode.isSpaceBetween(before, first) &&
207
+ astUtils.isTokenOnSameLine(before, first)
208
+ ) {
209
+ reportRequiredBeginningSpace(node, before);
210
+ }
211
+ } else {
212
+ if (sourceCode.isSpaceBetween(before, first)) {
213
+ reportNoBeginningSpace(node, before, first);
214
+ }
215
+ }
216
+ }
217
+
218
+ if (astUtils.isTokenOnSameLine(last, after)) {
219
+ if (propertyNameMustBeSpaced) {
220
+ if (
221
+ !sourceCode.isSpaceBetween(last, after) &&
222
+ astUtils.isTokenOnSameLine(last, after)
223
+ ) {
224
+ reportRequiredEndingSpace(node, after);
225
+ }
226
+ } else {
227
+ if (sourceCode.isSpaceBetween(last, after)) {
228
+ reportNoEndingSpace(node, after, last);
229
+ }
230
+ }
231
+ }
232
+ };
233
+ }
234
+
235
+ //--------------------------------------------------------------------------
236
+ // Public
237
+ //--------------------------------------------------------------------------
238
+
239
+ const listeners = {
240
+ Property: checkSpacing("key"),
241
+ MemberExpression: checkSpacing("property"),
242
+ };
243
+
244
+ if (enforceForClassMembers) {
245
+ listeners.MethodDefinition = listeners.PropertyDefinition =
246
+ listeners.Property;
247
+ }
248
+
249
+ return listeners;
250
+ },
251
+ };
@@ -0,0 +1,221 @@
1
+ /**
2
+ * @fileoverview Rule to flag consistent return values
3
+ * @author Nicholas C. Zakas
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Requirements
9
+ //------------------------------------------------------------------------------
10
+
11
+ const astUtils = require("./utils/ast-utils");
12
+ const { upperCaseFirst } = require("../shared/string-utils");
13
+
14
+ //------------------------------------------------------------------------------
15
+ // Helpers
16
+ //------------------------------------------------------------------------------
17
+
18
+ /**
19
+ * Checks all segments in a set and returns true if all are unreachable.
20
+ * @param {Set<CodePathSegment>} segments The segments to check.
21
+ * @returns {boolean} True if all segments are unreachable; false otherwise.
22
+ */
23
+ function areAllSegmentsUnreachable(segments) {
24
+ for (const segment of segments) {
25
+ if (segment.reachable) {
26
+ return false;
27
+ }
28
+ }
29
+
30
+ return true;
31
+ }
32
+
33
+ /**
34
+ * Checks whether a given node is a `constructor` method in an ES6 class
35
+ * @param {ASTNode} node A node to check
36
+ * @returns {boolean} `true` if the node is a `constructor` method
37
+ */
38
+ function isClassConstructor(node) {
39
+ return (
40
+ node.type === "FunctionExpression" &&
41
+ node.parent &&
42
+ node.parent.type === "MethodDefinition" &&
43
+ node.parent.kind === "constructor"
44
+ );
45
+ }
46
+
47
+ //------------------------------------------------------------------------------
48
+ // Rule Definition
49
+ //------------------------------------------------------------------------------
50
+
51
+ /** @type {import('../types').Rule.RuleModule} */
52
+ module.exports = {
53
+ meta: {
54
+ type: "suggestion",
55
+
56
+ docs: {
57
+ description:
58
+ "Require `return` statements to either always or never specify values",
59
+ recommended: false,
60
+ url: "https://eslint.org/docs/latest/rules/consistent-return",
61
+ },
62
+
63
+ schema: [
64
+ {
65
+ type: "object",
66
+ properties: {
67
+ treatUndefinedAsUnspecified: {
68
+ type: "boolean",
69
+ },
70
+ },
71
+ additionalProperties: false,
72
+ },
73
+ ],
74
+
75
+ defaultOptions: [{ treatUndefinedAsUnspecified: false }],
76
+
77
+ messages: {
78
+ missingReturn: "Expected to return a value at the end of {{name}}.",
79
+ missingReturnValue: "{{name}} expected a return value.",
80
+ unexpectedReturnValue: "{{name}} expected no return value.",
81
+ },
82
+ },
83
+
84
+ create(context) {
85
+ const [{ treatUndefinedAsUnspecified }] = context.options;
86
+ let funcInfo = null;
87
+
88
+ /**
89
+ * Checks whether of not the implicit returning is consistent if the last
90
+ * code path segment is reachable.
91
+ * @param {ASTNode} node A program/function node to check.
92
+ * @returns {void}
93
+ */
94
+ function checkLastSegment(node) {
95
+ let loc, name;
96
+
97
+ /*
98
+ * Skip if it expected no return value or unreachable.
99
+ * When unreachable, all paths are returned or thrown.
100
+ */
101
+ if (
102
+ !funcInfo.hasReturnValue ||
103
+ areAllSegmentsUnreachable(funcInfo.currentSegments) ||
104
+ astUtils.isES5Constructor(node) ||
105
+ isClassConstructor(node)
106
+ ) {
107
+ return;
108
+ }
109
+
110
+ // Adjust a location and a message.
111
+ if (node.type === "Program") {
112
+ // The head of program.
113
+ loc = { line: 1, column: 0 };
114
+ name = "program";
115
+ } else if (node.type === "ArrowFunctionExpression") {
116
+ // `=>` token
117
+ loc = context.sourceCode.getTokenBefore(
118
+ node.body,
119
+ astUtils.isArrowToken,
120
+ ).loc;
121
+ } else if (
122
+ node.parent.type === "MethodDefinition" ||
123
+ (node.parent.type === "Property" && node.parent.method)
124
+ ) {
125
+ // Method name.
126
+ loc = node.parent.key.loc;
127
+ } else {
128
+ // Function name or `function` keyword.
129
+ loc = (node.id || context.sourceCode.getFirstToken(node)).loc;
130
+ }
131
+
132
+ if (!name) {
133
+ name = astUtils.getFunctionNameWithKind(node);
134
+ }
135
+
136
+ // Reports.
137
+ context.report({
138
+ node,
139
+ loc,
140
+ messageId: "missingReturn",
141
+ data: { name },
142
+ });
143
+ }
144
+
145
+ return {
146
+ // Initializes/Disposes state of each code path.
147
+ onCodePathStart(codePath, node) {
148
+ funcInfo = {
149
+ upper: funcInfo,
150
+ codePath,
151
+ hasReturn: false,
152
+ hasReturnValue: false,
153
+ messageId: "",
154
+ node,
155
+ currentSegments: new Set(),
156
+ };
157
+ },
158
+ onCodePathEnd() {
159
+ funcInfo = funcInfo.upper;
160
+ },
161
+
162
+ onUnreachableCodePathSegmentStart(segment) {
163
+ funcInfo.currentSegments.add(segment);
164
+ },
165
+
166
+ onUnreachableCodePathSegmentEnd(segment) {
167
+ funcInfo.currentSegments.delete(segment);
168
+ },
169
+
170
+ onCodePathSegmentStart(segment) {
171
+ funcInfo.currentSegments.add(segment);
172
+ },
173
+
174
+ onCodePathSegmentEnd(segment) {
175
+ funcInfo.currentSegments.delete(segment);
176
+ },
177
+
178
+ // Reports a given return statement if it's inconsistent.
179
+ ReturnStatement(node) {
180
+ const argument = node.argument;
181
+ let hasReturnValue = Boolean(argument);
182
+
183
+ if (treatUndefinedAsUnspecified && hasReturnValue) {
184
+ hasReturnValue =
185
+ !astUtils.isSpecificId(argument, "undefined") &&
186
+ argument.operator !== "void";
187
+ }
188
+
189
+ if (!funcInfo.hasReturn) {
190
+ funcInfo.hasReturn = true;
191
+ funcInfo.hasReturnValue = hasReturnValue;
192
+ funcInfo.messageId = hasReturnValue
193
+ ? "missingReturnValue"
194
+ : "unexpectedReturnValue";
195
+ funcInfo.data = {
196
+ name:
197
+ funcInfo.node.type === "Program"
198
+ ? "Program"
199
+ : upperCaseFirst(
200
+ astUtils.getFunctionNameWithKind(
201
+ funcInfo.node,
202
+ ),
203
+ ),
204
+ };
205
+ } else if (funcInfo.hasReturnValue !== hasReturnValue) {
206
+ context.report({
207
+ node,
208
+ messageId: funcInfo.messageId,
209
+ data: funcInfo.data,
210
+ });
211
+ }
212
+ },
213
+
214
+ // Reports a given program/function if the implicit returning is not consistent.
215
+ "Program:exit": checkLastSegment,
216
+ "FunctionDeclaration:exit": checkLastSegment,
217
+ "FunctionExpression:exit": checkLastSegment,
218
+ "ArrowFunctionExpression:exit": checkLastSegment,
219
+ };
220
+ },
221
+ };
@@ -0,0 +1,179 @@
1
+ /**
2
+ * @fileoverview Rule to enforce consistent naming of "this" context variables
3
+ * @author Raphael Pigulla
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Rule Definition
9
+ //------------------------------------------------------------------------------
10
+
11
+ /** @type {import('../types').Rule.RuleModule} */
12
+ module.exports = {
13
+ meta: {
14
+ type: "suggestion",
15
+
16
+ docs: {
17
+ description:
18
+ "Enforce consistent naming when capturing the current execution context",
19
+ recommended: false,
20
+ frozen: true,
21
+ url: "https://eslint.org/docs/latest/rules/consistent-this",
22
+ },
23
+
24
+ schema: {
25
+ type: "array",
26
+ items: {
27
+ type: "string",
28
+ minLength: 1,
29
+ },
30
+ uniqueItems: true,
31
+ },
32
+
33
+ defaultOptions: ["that"],
34
+
35
+ messages: {
36
+ aliasNotAssignedToThis:
37
+ "Designated alias '{{name}}' is not assigned to 'this'.",
38
+ unexpectedAlias: "Unexpected alias '{{name}}' for 'this'.",
39
+ },
40
+ },
41
+
42
+ create(context) {
43
+ const aliases = context.options;
44
+ const sourceCode = context.sourceCode;
45
+
46
+ /**
47
+ * Reports that a variable declarator or assignment expression is assigning
48
+ * a non-'this' value to the specified alias.
49
+ * @param {ASTNode} node The assigning node.
50
+ * @param {string} name the name of the alias that was incorrectly used.
51
+ * @returns {void}
52
+ */
53
+ function reportBadAssignment(node, name) {
54
+ context.report({
55
+ node,
56
+ messageId: "aliasNotAssignedToThis",
57
+ data: { name },
58
+ });
59
+ }
60
+
61
+ /**
62
+ * Checks that an assignment to an identifier only assigns 'this' to the
63
+ * appropriate alias, and the alias is only assigned to 'this'.
64
+ * @param {ASTNode} node The assigning node.
65
+ * @param {Identifier} name The name of the variable assigned to.
66
+ * @param {Expression} value The value of the assignment.
67
+ * @returns {void}
68
+ */
69
+ function checkAssignment(node, name, value) {
70
+ const isThis = value.type === "ThisExpression";
71
+
72
+ if (aliases.includes(name)) {
73
+ if (!isThis || (node.operator && node.operator !== "=")) {
74
+ reportBadAssignment(node, name);
75
+ }
76
+ } else if (isThis) {
77
+ context.report({
78
+ node,
79
+ messageId: "unexpectedAlias",
80
+ data: { name },
81
+ });
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Ensures that a variable declaration of the alias in a program or function
87
+ * is assigned to the correct value.
88
+ * @param {string} alias alias the check the assignment of.
89
+ * @param {Object} scope scope of the current code we are checking.
90
+ * @private
91
+ * @returns {void}
92
+ */
93
+ function checkWasAssigned(alias, scope) {
94
+ const variable = scope.set.get(alias);
95
+
96
+ if (!variable) {
97
+ return;
98
+ }
99
+
100
+ if (
101
+ variable.defs.some(
102
+ def =>
103
+ def.node.type === "VariableDeclarator" &&
104
+ def.node.init !== null,
105
+ )
106
+ ) {
107
+ return;
108
+ }
109
+
110
+ /*
111
+ * The alias has been declared and not assigned: check it was
112
+ * assigned later in the same scope.
113
+ */
114
+ if (
115
+ !variable.references.some(reference => {
116
+ const write = reference.writeExpr;
117
+
118
+ return (
119
+ reference.from === scope &&
120
+ write &&
121
+ write.type === "ThisExpression" &&
122
+ write.parent.operator === "="
123
+ );
124
+ })
125
+ ) {
126
+ variable.defs
127
+ .map(def => def.node)
128
+ .forEach(node => {
129
+ reportBadAssignment(node, alias);
130
+ });
131
+ }
132
+ }
133
+
134
+ /**
135
+ * Check each alias to ensure that is was assigned to the correct value.
136
+ * @param {ASTNode} node The node that represents the scope to check.
137
+ * @returns {void}
138
+ */
139
+ function ensureWasAssigned(node) {
140
+ const scope = sourceCode.getScope(node);
141
+
142
+ // if this is program scope we also need to check module scope
143
+ const extraScope =
144
+ node.type === "Program" && node.sourceType === "module"
145
+ ? scope.childScopes[0]
146
+ : null;
147
+
148
+ aliases.forEach(alias => {
149
+ checkWasAssigned(alias, scope);
150
+
151
+ if (extraScope) {
152
+ checkWasAssigned(alias, extraScope);
153
+ }
154
+ });
155
+ }
156
+
157
+ return {
158
+ "Program:exit": ensureWasAssigned,
159
+ "FunctionExpression:exit": ensureWasAssigned,
160
+ "FunctionDeclaration:exit": ensureWasAssigned,
161
+
162
+ VariableDeclarator(node) {
163
+ const id = node.id;
164
+ const isDestructuring =
165
+ id.type === "ArrayPattern" || id.type === "ObjectPattern";
166
+
167
+ if (node.init !== null && !isDestructuring) {
168
+ checkAssignment(node, id.name, node.init);
169
+ }
170
+ },
171
+
172
+ AssignmentExpression(node) {
173
+ if (node.left.type === "Identifier") {
174
+ checkAssignment(node, node.left.name, node.right);
175
+ }
176
+ },
177
+ };
178
+ },
179
+ };