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,278 @@
1
+ /**
2
+ * @fileoverview Rule to flag block statements that do not use the one true brace style
3
+ * @author Ian Christian Myers
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: "brace-style",
34
+ url: "https://eslint.style/rules/brace-style",
35
+ },
36
+ },
37
+ ],
38
+ },
39
+ type: "layout",
40
+
41
+ docs: {
42
+ description: "Enforce consistent brace style for blocks",
43
+ recommended: false,
44
+ url: "https://eslint.org/docs/latest/rules/brace-style",
45
+ },
46
+
47
+ schema: [
48
+ {
49
+ enum: ["1tbs", "stroustrup", "allman"],
50
+ },
51
+ {
52
+ type: "object",
53
+ properties: {
54
+ allowSingleLine: {
55
+ type: "boolean",
56
+ default: false,
57
+ },
58
+ },
59
+ additionalProperties: false,
60
+ },
61
+ ],
62
+
63
+ fixable: "whitespace",
64
+
65
+ messages: {
66
+ nextLineOpen:
67
+ "Opening curly brace does not appear on the same line as controlling statement.",
68
+ sameLineOpen:
69
+ "Opening curly brace appears on the same line as controlling statement.",
70
+ blockSameLine:
71
+ "Statement inside of curly braces should be on next line.",
72
+ nextLineClose:
73
+ "Closing curly brace does not appear on the same line as the subsequent block.",
74
+ singleLineClose:
75
+ "Closing curly brace should be on the same line as opening curly brace or on the line after the previous block.",
76
+ sameLineClose:
77
+ "Closing curly brace appears on the same line as the subsequent block.",
78
+ },
79
+ },
80
+
81
+ create(context) {
82
+ const style = context.options[0] || "1tbs",
83
+ params = context.options[1] || {},
84
+ sourceCode = context.sourceCode;
85
+
86
+ //--------------------------------------------------------------------------
87
+ // Helpers
88
+ //--------------------------------------------------------------------------
89
+
90
+ /**
91
+ * Fixes a place where a newline unexpectedly appears
92
+ * @param {Token} firstToken The token before the unexpected newline
93
+ * @param {Token} secondToken The token after the unexpected newline
94
+ * @returns {Function} A fixer function to remove the newlines between the tokens
95
+ */
96
+ function removeNewlineBetween(firstToken, secondToken) {
97
+ const textRange = [firstToken.range[1], secondToken.range[0]];
98
+ const textBetween = sourceCode.text.slice(
99
+ textRange[0],
100
+ textRange[1],
101
+ );
102
+
103
+ // Don't do a fix if there is a comment between the tokens
104
+ if (textBetween.trim()) {
105
+ return null;
106
+ }
107
+ return fixer => fixer.replaceTextRange(textRange, " ");
108
+ }
109
+
110
+ /**
111
+ * Validates a pair of curly brackets based on the user's config
112
+ * @param {Token} openingCurly The opening curly bracket
113
+ * @param {Token} closingCurly The closing curly bracket
114
+ * @returns {void}
115
+ */
116
+ function validateCurlyPair(openingCurly, closingCurly) {
117
+ const tokenBeforeOpeningCurly =
118
+ sourceCode.getTokenBefore(openingCurly);
119
+ const tokenAfterOpeningCurly =
120
+ sourceCode.getTokenAfter(openingCurly);
121
+ const tokenBeforeClosingCurly =
122
+ sourceCode.getTokenBefore(closingCurly);
123
+ const singleLineException =
124
+ params.allowSingleLine &&
125
+ astUtils.isTokenOnSameLine(openingCurly, closingCurly);
126
+
127
+ if (
128
+ style !== "allman" &&
129
+ !astUtils.isTokenOnSameLine(
130
+ tokenBeforeOpeningCurly,
131
+ openingCurly,
132
+ )
133
+ ) {
134
+ context.report({
135
+ node: openingCurly,
136
+ messageId: "nextLineOpen",
137
+ fix: removeNewlineBetween(
138
+ tokenBeforeOpeningCurly,
139
+ openingCurly,
140
+ ),
141
+ });
142
+ }
143
+
144
+ if (
145
+ style === "allman" &&
146
+ astUtils.isTokenOnSameLine(
147
+ tokenBeforeOpeningCurly,
148
+ openingCurly,
149
+ ) &&
150
+ !singleLineException
151
+ ) {
152
+ context.report({
153
+ node: openingCurly,
154
+ messageId: "sameLineOpen",
155
+ fix: fixer => fixer.insertTextBefore(openingCurly, "\n"),
156
+ });
157
+ }
158
+
159
+ if (
160
+ astUtils.isTokenOnSameLine(
161
+ openingCurly,
162
+ tokenAfterOpeningCurly,
163
+ ) &&
164
+ tokenAfterOpeningCurly !== closingCurly &&
165
+ !singleLineException
166
+ ) {
167
+ context.report({
168
+ node: openingCurly,
169
+ messageId: "blockSameLine",
170
+ fix: fixer => fixer.insertTextAfter(openingCurly, "\n"),
171
+ });
172
+ }
173
+
174
+ if (
175
+ tokenBeforeClosingCurly !== openingCurly &&
176
+ !singleLineException &&
177
+ astUtils.isTokenOnSameLine(
178
+ tokenBeforeClosingCurly,
179
+ closingCurly,
180
+ )
181
+ ) {
182
+ context.report({
183
+ node: closingCurly,
184
+ messageId: "singleLineClose",
185
+ fix: fixer => fixer.insertTextBefore(closingCurly, "\n"),
186
+ });
187
+ }
188
+ }
189
+
190
+ /**
191
+ * Validates the location of a token that appears before a keyword (e.g. a newline before `else`)
192
+ * @param {Token} curlyToken The closing curly token. This is assumed to precede a keyword token (such as `else` or `finally`).
193
+ * @returns {void}
194
+ */
195
+ function validateCurlyBeforeKeyword(curlyToken) {
196
+ const keywordToken = sourceCode.getTokenAfter(curlyToken);
197
+
198
+ if (
199
+ style === "1tbs" &&
200
+ !astUtils.isTokenOnSameLine(curlyToken, keywordToken)
201
+ ) {
202
+ context.report({
203
+ node: curlyToken,
204
+ messageId: "nextLineClose",
205
+ fix: removeNewlineBetween(curlyToken, keywordToken),
206
+ });
207
+ }
208
+
209
+ if (
210
+ style !== "1tbs" &&
211
+ astUtils.isTokenOnSameLine(curlyToken, keywordToken)
212
+ ) {
213
+ context.report({
214
+ node: curlyToken,
215
+ messageId: "sameLineClose",
216
+ fix: fixer => fixer.insertTextAfter(curlyToken, "\n"),
217
+ });
218
+ }
219
+ }
220
+
221
+ //--------------------------------------------------------------------------
222
+ // Public API
223
+ //--------------------------------------------------------------------------
224
+
225
+ return {
226
+ BlockStatement(node) {
227
+ if (!astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type)) {
228
+ validateCurlyPair(
229
+ sourceCode.getFirstToken(node),
230
+ sourceCode.getLastToken(node),
231
+ );
232
+ }
233
+ },
234
+ StaticBlock(node) {
235
+ validateCurlyPair(
236
+ sourceCode.getFirstToken(node, { skip: 1 }), // skip the `static` token
237
+ sourceCode.getLastToken(node),
238
+ );
239
+ },
240
+ ClassBody(node) {
241
+ validateCurlyPair(
242
+ sourceCode.getFirstToken(node),
243
+ sourceCode.getLastToken(node),
244
+ );
245
+ },
246
+ SwitchStatement(node) {
247
+ const closingCurly = sourceCode.getLastToken(node);
248
+ const openingCurly = sourceCode.getTokenBefore(
249
+ node.cases.length ? node.cases[0] : closingCurly,
250
+ );
251
+
252
+ validateCurlyPair(openingCurly, closingCurly);
253
+ },
254
+ IfStatement(node) {
255
+ if (
256
+ node.consequent.type === "BlockStatement" &&
257
+ node.alternate
258
+ ) {
259
+ // Handle the keyword after the `if` block (before `else`)
260
+ validateCurlyBeforeKeyword(
261
+ sourceCode.getLastToken(node.consequent),
262
+ );
263
+ }
264
+ },
265
+ TryStatement(node) {
266
+ // Handle the keyword after the `try` block (before `catch` or `finally`)
267
+ validateCurlyBeforeKeyword(sourceCode.getLastToken(node.block));
268
+
269
+ if (node.handler && node.finalizer) {
270
+ // Handle the keyword after the `catch` block (before `finally`)
271
+ validateCurlyBeforeKeyword(
272
+ sourceCode.getLastToken(node.handler.body),
273
+ );
274
+ }
275
+ },
276
+ };
277
+ },
278
+ };
@@ -0,0 +1,216 @@
1
+ /**
2
+ * @fileoverview Enforce return after a callback.
3
+ * @author Jamund Ferguson
4
+ * @deprecated in ESLint v7.0.0
5
+ */
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Rule Definition
10
+ //------------------------------------------------------------------------------
11
+
12
+ /** @type {import('../types').Rule.RuleModule} */
13
+ module.exports = {
14
+ meta: {
15
+ deprecated: {
16
+ message: "Node.js rules were moved out of ESLint core.",
17
+ url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules",
18
+ deprecatedSince: "7.0.0",
19
+ availableUntil: "11.0.0",
20
+ replacedBy: [
21
+ {
22
+ message:
23
+ "eslint-plugin-n now maintains deprecated Node.js-related rules.",
24
+ plugin: {
25
+ name: "eslint-plugin-n",
26
+ url: "https://github.com/eslint-community/eslint-plugin-n",
27
+ },
28
+ rule: {
29
+ name: "callback-return",
30
+ url: "https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/callback-return.md",
31
+ },
32
+ },
33
+ ],
34
+ },
35
+
36
+ type: "suggestion",
37
+
38
+ docs: {
39
+ description: "Require `return` statements after callbacks",
40
+ recommended: false,
41
+ url: "https://eslint.org/docs/latest/rules/callback-return",
42
+ },
43
+
44
+ schema: [
45
+ {
46
+ type: "array",
47
+ items: { type: "string" },
48
+ },
49
+ ],
50
+
51
+ messages: {
52
+ missingReturn: "Expected return with your callback function.",
53
+ },
54
+ },
55
+
56
+ create(context) {
57
+ const callbacks = context.options[0] || ["callback", "cb", "next"],
58
+ sourceCode = context.sourceCode;
59
+
60
+ //--------------------------------------------------------------------------
61
+ // Helpers
62
+ //--------------------------------------------------------------------------
63
+
64
+ /**
65
+ * Find the closest parent matching a list of types.
66
+ * @param {ASTNode} node The node whose parents we are searching
67
+ * @param {Array} types The node types to match
68
+ * @returns {ASTNode} The matched node or undefined.
69
+ */
70
+ function findClosestParentOfType(node, types) {
71
+ if (!node.parent) {
72
+ return null;
73
+ }
74
+ if (!types.includes(node.parent.type)) {
75
+ return findClosestParentOfType(node.parent, types);
76
+ }
77
+ return node.parent;
78
+ }
79
+
80
+ /**
81
+ * Check to see if a node contains only identifiers
82
+ * @param {ASTNode} node The node to check
83
+ * @returns {boolean} Whether or not the node contains only identifiers
84
+ */
85
+ function containsOnlyIdentifiers(node) {
86
+ if (node.type === "Identifier") {
87
+ return true;
88
+ }
89
+
90
+ if (node.type === "MemberExpression") {
91
+ if (node.object.type === "Identifier") {
92
+ return true;
93
+ }
94
+ if (node.object.type === "MemberExpression") {
95
+ return containsOnlyIdentifiers(node.object);
96
+ }
97
+ }
98
+
99
+ return false;
100
+ }
101
+
102
+ /**
103
+ * Check to see if a CallExpression is in our callback list.
104
+ * @param {ASTNode} node The node to check against our callback names list.
105
+ * @returns {boolean} Whether or not this function matches our callback name.
106
+ */
107
+ function isCallback(node) {
108
+ return (
109
+ containsOnlyIdentifiers(node.callee) &&
110
+ callbacks.includes(sourceCode.getText(node.callee))
111
+ );
112
+ }
113
+
114
+ /**
115
+ * Determines whether or not the callback is part of a callback expression.
116
+ * @param {ASTNode} node The callback node
117
+ * @param {ASTNode} parentNode The expression node
118
+ * @returns {boolean} Whether or not this is part of a callback expression
119
+ */
120
+ function isCallbackExpression(node, parentNode) {
121
+ // ensure the parent node exists and is an expression
122
+ if (!parentNode || parentNode.type !== "ExpressionStatement") {
123
+ return false;
124
+ }
125
+
126
+ // cb()
127
+ if (parentNode.expression === node) {
128
+ return true;
129
+ }
130
+
131
+ // special case for cb && cb() and similar
132
+ if (
133
+ parentNode.expression.type === "BinaryExpression" ||
134
+ parentNode.expression.type === "LogicalExpression"
135
+ ) {
136
+ if (parentNode.expression.right === node) {
137
+ return true;
138
+ }
139
+ }
140
+
141
+ return false;
142
+ }
143
+
144
+ //--------------------------------------------------------------------------
145
+ // Public
146
+ //--------------------------------------------------------------------------
147
+
148
+ return {
149
+ CallExpression(node) {
150
+ // if we're not a callback we can return
151
+ if (!isCallback(node)) {
152
+ return;
153
+ }
154
+
155
+ // find the closest block, return or loop
156
+ const closestBlock =
157
+ findClosestParentOfType(node, [
158
+ "BlockStatement",
159
+ "ReturnStatement",
160
+ "ArrowFunctionExpression",
161
+ ]) || {};
162
+
163
+ // if our parent is a return we know we're ok
164
+ if (closestBlock.type === "ReturnStatement") {
165
+ return;
166
+ }
167
+
168
+ // arrow functions don't always have blocks and implicitly return
169
+ if (closestBlock.type === "ArrowFunctionExpression") {
170
+ return;
171
+ }
172
+
173
+ // block statements are part of functions and most if statements
174
+ if (closestBlock.type === "BlockStatement") {
175
+ // find the last item in the block
176
+ const lastItem = closestBlock.body.at(-1);
177
+
178
+ // if the callback is the last thing in a block that might be ok
179
+ if (isCallbackExpression(node, lastItem)) {
180
+ const parentType = closestBlock.parent.type;
181
+
182
+ // but only if the block is part of a function
183
+ if (
184
+ parentType === "FunctionExpression" ||
185
+ parentType === "FunctionDeclaration" ||
186
+ parentType === "ArrowFunctionExpression"
187
+ ) {
188
+ return;
189
+ }
190
+ }
191
+
192
+ // ending a block with a return is also ok
193
+ if (lastItem.type === "ReturnStatement") {
194
+ // but only if the callback is immediately before
195
+ if (
196
+ isCallbackExpression(node, closestBlock.body.at(-2))
197
+ ) {
198
+ return;
199
+ }
200
+ }
201
+ }
202
+
203
+ // as long as you're the child of a function at this point you should be asked to return
204
+ if (
205
+ findClosestParentOfType(node, [
206
+ "FunctionDeclaration",
207
+ "FunctionExpression",
208
+ "ArrowFunctionExpression",
209
+ ])
210
+ ) {
211
+ context.report({ node, messageId: "missingReturn" });
212
+ }
213
+ },
214
+ };
215
+ },
216
+ };