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,66 @@
1
+ /**
2
+ * @fileoverview Rule to check use of chained assignment expressions
3
+ * @author Stewart Rand
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Rule Definition
10
+ //------------------------------------------------------------------------------
11
+
12
+ /** @type {import('../types').Rule.RuleModule} */
13
+ module.exports = {
14
+ meta: {
15
+ type: "suggestion",
16
+
17
+ defaultOptions: [
18
+ {
19
+ ignoreNonDeclaration: false,
20
+ },
21
+ ],
22
+
23
+ docs: {
24
+ description: "Disallow use of chained assignment expressions",
25
+ recommended: false,
26
+ url: "https://eslint.org/docs/latest/rules/no-multi-assign",
27
+ },
28
+
29
+ schema: [
30
+ {
31
+ type: "object",
32
+ properties: {
33
+ ignoreNonDeclaration: {
34
+ type: "boolean",
35
+ },
36
+ },
37
+ additionalProperties: false,
38
+ },
39
+ ],
40
+
41
+ messages: {
42
+ unexpectedChain: "Unexpected chained assignment.",
43
+ },
44
+ },
45
+
46
+ create(context) {
47
+ const [{ ignoreNonDeclaration }] = context.options;
48
+ const selectors = [
49
+ "VariableDeclarator > AssignmentExpression.init",
50
+ "PropertyDefinition > AssignmentExpression.value",
51
+ ];
52
+
53
+ if (!ignoreNonDeclaration) {
54
+ selectors.push("AssignmentExpression > AssignmentExpression.right");
55
+ }
56
+
57
+ return {
58
+ [selectors](node) {
59
+ context.report({
60
+ node,
61
+ messageId: "unexpectedChain",
62
+ });
63
+ },
64
+ };
65
+ },
66
+ };
@@ -0,0 +1,179 @@
1
+ /**
2
+ * @fileoverview Disallow use of multiple spaces.
3
+ * @author Nicholas C. Zakas
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: "no-multi-spaces",
34
+ url: "https://eslint.style/rules/no-multi-spaces",
35
+ },
36
+ },
37
+ ],
38
+ },
39
+ type: "layout",
40
+
41
+ docs: {
42
+ description: "Disallow multiple spaces",
43
+ recommended: false,
44
+ url: "https://eslint.org/docs/latest/rules/no-multi-spaces",
45
+ },
46
+
47
+ fixable: "whitespace",
48
+
49
+ schema: [
50
+ {
51
+ type: "object",
52
+ properties: {
53
+ exceptions: {
54
+ type: "object",
55
+ patternProperties: {
56
+ "^([A-Z][a-z]*)+$": {
57
+ type: "boolean",
58
+ },
59
+ },
60
+ additionalProperties: false,
61
+ },
62
+ ignoreEOLComments: {
63
+ type: "boolean",
64
+ default: false,
65
+ },
66
+ },
67
+ additionalProperties: false,
68
+ },
69
+ ],
70
+
71
+ messages: {
72
+ multipleSpaces: "Multiple spaces found before '{{displayValue}}'.",
73
+ },
74
+ },
75
+
76
+ create(context) {
77
+ const sourceCode = context.sourceCode;
78
+ const options = context.options[0] || {};
79
+ const ignoreEOLComments = options.ignoreEOLComments;
80
+ const exceptions = Object.assign(
81
+ { Property: true },
82
+ options.exceptions,
83
+ );
84
+ const hasExceptions = Object.keys(exceptions).some(
85
+ key => exceptions[key],
86
+ );
87
+
88
+ /**
89
+ * Formats value of given comment token for error message by truncating its length.
90
+ * @param {Token} token comment token
91
+ * @returns {string} formatted value
92
+ * @private
93
+ */
94
+ function formatReportedCommentValue(token) {
95
+ const valueLines = token.value.split("\n");
96
+ const value = valueLines[0];
97
+ const formattedValue = `${value.slice(0, 12)}...`;
98
+
99
+ return valueLines.length === 1 && value.length <= 12
100
+ ? value
101
+ : formattedValue;
102
+ }
103
+
104
+ //--------------------------------------------------------------------------
105
+ // Public
106
+ //--------------------------------------------------------------------------
107
+
108
+ return {
109
+ Program() {
110
+ sourceCode.tokensAndComments.forEach(
111
+ (leftToken, leftIndex, tokensAndComments) => {
112
+ if (leftIndex === tokensAndComments.length - 1) {
113
+ return;
114
+ }
115
+ const rightToken = tokensAndComments[leftIndex + 1];
116
+
117
+ // Ignore tokens that don't have 2 spaces between them or are on different lines
118
+ if (
119
+ !sourceCode.text
120
+ .slice(leftToken.range[1], rightToken.range[0])
121
+ .includes(" ") ||
122
+ leftToken.loc.end.line < rightToken.loc.start.line
123
+ ) {
124
+ return;
125
+ }
126
+
127
+ // Ignore comments that are the last token on their line if `ignoreEOLComments` is active.
128
+ if (
129
+ ignoreEOLComments &&
130
+ astUtils.isCommentToken(rightToken) &&
131
+ (leftIndex === tokensAndComments.length - 2 ||
132
+ rightToken.loc.end.line <
133
+ tokensAndComments[leftIndex + 2].loc.start
134
+ .line)
135
+ ) {
136
+ return;
137
+ }
138
+
139
+ // Ignore tokens that are in a node in the "exceptions" object
140
+ if (hasExceptions) {
141
+ const parentNode = sourceCode.getNodeByRangeIndex(
142
+ rightToken.range[0] - 1,
143
+ );
144
+
145
+ if (parentNode && exceptions[parentNode.type]) {
146
+ return;
147
+ }
148
+ }
149
+
150
+ let displayValue;
151
+
152
+ if (rightToken.type === "Block") {
153
+ displayValue = `/*${formatReportedCommentValue(rightToken)}*/`;
154
+ } else if (rightToken.type === "Line") {
155
+ displayValue = `//${formatReportedCommentValue(rightToken)}`;
156
+ } else {
157
+ displayValue = rightToken.value;
158
+ }
159
+
160
+ context.report({
161
+ node: rightToken,
162
+ loc: {
163
+ start: leftToken.loc.end,
164
+ end: rightToken.loc.start,
165
+ },
166
+ messageId: "multipleSpaces",
167
+ data: { displayValue },
168
+ fix: fixer =>
169
+ fixer.replaceTextRange(
170
+ [leftToken.range[1], rightToken.range[0]],
171
+ " ",
172
+ ),
173
+ });
174
+ },
175
+ );
176
+ },
177
+ };
178
+ },
179
+ };
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @fileoverview Rule to flag when using multiline strings
3
+ * @author Ilya Volodin
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Requirements
10
+ //------------------------------------------------------------------------------
11
+
12
+ const astUtils = require("./utils/ast-utils");
13
+
14
+ //------------------------------------------------------------------------------
15
+ // Rule Definition
16
+ //------------------------------------------------------------------------------
17
+
18
+ /** @type {import('../types').Rule.RuleModule} */
19
+ module.exports = {
20
+ meta: {
21
+ type: "suggestion",
22
+
23
+ docs: {
24
+ description: "Disallow multiline strings",
25
+ recommended: false,
26
+ frozen: true,
27
+ url: "https://eslint.org/docs/latest/rules/no-multi-str",
28
+ },
29
+
30
+ schema: [],
31
+
32
+ messages: {
33
+ multilineString:
34
+ "Multiline support is limited to browsers supporting ES5 only.",
35
+ },
36
+ },
37
+
38
+ create(context) {
39
+ /**
40
+ * Determines if a given node is part of JSX syntax.
41
+ * @param {ASTNode} node The node to check.
42
+ * @returns {boolean} True if the node is a JSX node, false if not.
43
+ * @private
44
+ */
45
+ function isJSXElement(node) {
46
+ return node.type.indexOf("JSX") === 0;
47
+ }
48
+
49
+ //--------------------------------------------------------------------------
50
+ // Public API
51
+ //--------------------------------------------------------------------------
52
+
53
+ return {
54
+ Literal(node) {
55
+ if (
56
+ astUtils.LINEBREAK_MATCHER.test(node.raw) &&
57
+ !isJSXElement(node.parent)
58
+ ) {
59
+ context.report({
60
+ node,
61
+ messageId: "multilineString",
62
+ });
63
+ }
64
+ },
65
+ };
66
+ },
67
+ };
@@ -0,0 +1,210 @@
1
+ /**
2
+ * @fileoverview Disallows multiple blank lines.
3
+ * implementation adapted from the no-trailing-spaces rule.
4
+ * @author Greg Cochard
5
+ * @deprecated in ESLint v8.53.0
6
+ */
7
+ "use strict";
8
+
9
+ //------------------------------------------------------------------------------
10
+ // Rule Definition
11
+ //------------------------------------------------------------------------------
12
+
13
+ /** @type {import('../types').Rule.RuleModule} */
14
+ module.exports = {
15
+ meta: {
16
+ deprecated: {
17
+ message: "Formatting rules are being moved out of ESLint core.",
18
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
19
+ deprecatedSince: "8.53.0",
20
+ availableUntil: "11.0.0",
21
+ replacedBy: [
22
+ {
23
+ message:
24
+ "ESLint Stylistic now maintains deprecated stylistic core rules.",
25
+ url: "https://eslint.style/guide/migration",
26
+ plugin: {
27
+ name: "@stylistic/eslint-plugin",
28
+ url: "https://eslint.style",
29
+ },
30
+ rule: {
31
+ name: "no-multiple-empty-lines",
32
+ url: "https://eslint.style/rules/no-multiple-empty-lines",
33
+ },
34
+ },
35
+ ],
36
+ },
37
+ type: "layout",
38
+
39
+ docs: {
40
+ description: "Disallow multiple empty lines",
41
+ recommended: false,
42
+ url: "https://eslint.org/docs/latest/rules/no-multiple-empty-lines",
43
+ },
44
+
45
+ fixable: "whitespace",
46
+
47
+ schema: [
48
+ {
49
+ type: "object",
50
+ properties: {
51
+ max: {
52
+ type: "integer",
53
+ minimum: 0,
54
+ },
55
+ maxEOF: {
56
+ type: "integer",
57
+ minimum: 0,
58
+ },
59
+ maxBOF: {
60
+ type: "integer",
61
+ minimum: 0,
62
+ },
63
+ },
64
+ required: ["max"],
65
+ additionalProperties: false,
66
+ },
67
+ ],
68
+
69
+ messages: {
70
+ blankBeginningOfFile:
71
+ "Too many blank lines at the beginning of file. Max of {{max}} allowed.",
72
+ blankEndOfFile:
73
+ "Too many blank lines at the end of file. Max of {{max}} allowed.",
74
+ consecutiveBlank:
75
+ "More than {{max}} blank {{pluralizedLines}} not allowed.",
76
+ },
77
+ },
78
+
79
+ create(context) {
80
+ // Use options.max or 2 as default
81
+ let max = 2,
82
+ maxEOF = max,
83
+ maxBOF = max;
84
+
85
+ if (context.options.length) {
86
+ max = context.options[0].max;
87
+ maxEOF =
88
+ typeof context.options[0].maxEOF !== "undefined"
89
+ ? context.options[0].maxEOF
90
+ : max;
91
+ maxBOF =
92
+ typeof context.options[0].maxBOF !== "undefined"
93
+ ? context.options[0].maxBOF
94
+ : max;
95
+ }
96
+
97
+ const sourceCode = context.sourceCode;
98
+
99
+ // Swallow the final newline, as some editors add it automatically and we don't want it to cause an issue
100
+ const allLines =
101
+ sourceCode.lines.at(-1) === ""
102
+ ? sourceCode.lines.slice(0, -1)
103
+ : sourceCode.lines;
104
+ const templateLiteralLines = new Set();
105
+
106
+ //--------------------------------------------------------------------------
107
+ // Public
108
+ //--------------------------------------------------------------------------
109
+
110
+ return {
111
+ TemplateLiteral(node) {
112
+ node.quasis.forEach(literalPart => {
113
+ // Empty lines have a semantic meaning if they're inside template literals. Don't count these as empty lines.
114
+ for (
115
+ let ignoredLine = literalPart.loc.start.line;
116
+ ignoredLine < literalPart.loc.end.line;
117
+ ignoredLine++
118
+ ) {
119
+ templateLiteralLines.add(ignoredLine);
120
+ }
121
+ });
122
+ },
123
+ "Program:exit"(node) {
124
+ return (
125
+ allLines
126
+
127
+ // Given a list of lines, first get a list of line numbers that are non-empty.
128
+ .reduce((nonEmptyLineNumbers, line, index) => {
129
+ if (
130
+ line.trim() ||
131
+ templateLiteralLines.has(index + 1)
132
+ ) {
133
+ nonEmptyLineNumbers.push(index + 1);
134
+ }
135
+ return nonEmptyLineNumbers;
136
+ }, [])
137
+
138
+ // Add a value at the end to allow trailing empty lines to be checked.
139
+ .concat(allLines.length + 1)
140
+
141
+ // Given two line numbers of non-empty lines, report the lines between if the difference is too large.
142
+ .reduce((lastLineNumber, lineNumber) => {
143
+ let messageId, maxAllowed;
144
+
145
+ if (lastLineNumber === 0) {
146
+ messageId = "blankBeginningOfFile";
147
+ maxAllowed = maxBOF;
148
+ } else if (lineNumber === allLines.length + 1) {
149
+ messageId = "blankEndOfFile";
150
+ maxAllowed = maxEOF;
151
+ } else {
152
+ messageId = "consecutiveBlank";
153
+ maxAllowed = max;
154
+ }
155
+
156
+ if (lineNumber - lastLineNumber - 1 > maxAllowed) {
157
+ context.report({
158
+ node,
159
+ loc: {
160
+ start: {
161
+ line:
162
+ lastLineNumber + maxAllowed + 1,
163
+ column: 0,
164
+ },
165
+ end: { line: lineNumber, column: 0 },
166
+ },
167
+ messageId,
168
+ data: {
169
+ max: maxAllowed,
170
+ pluralizedLines:
171
+ maxAllowed === 1 ? "line" : "lines",
172
+ },
173
+ fix(fixer) {
174
+ const rangeStart =
175
+ sourceCode.getIndexFromLoc({
176
+ line: lastLineNumber + 1,
177
+ column: 0,
178
+ });
179
+
180
+ /*
181
+ * The end of the removal range is usually the start index of the next line.
182
+ * However, at the end of the file there is no next line, so the end of the
183
+ * range is just the length of the text.
184
+ */
185
+ const lineNumberAfterRemovedLines =
186
+ lineNumber - maxAllowed;
187
+ const rangeEnd =
188
+ lineNumberAfterRemovedLines <=
189
+ allLines.length
190
+ ? sourceCode.getIndexFromLoc({
191
+ line: lineNumberAfterRemovedLines,
192
+ column: 0,
193
+ })
194
+ : sourceCode.text.length;
195
+
196
+ return fixer.removeRange([
197
+ rangeStart,
198
+ rangeEnd,
199
+ ]);
200
+ },
201
+ });
202
+ }
203
+
204
+ return lineNumber;
205
+ }, 0)
206
+ );
207
+ },
208
+ };
209
+ },
210
+ };
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @fileoverview Rule to disallow assignments to native objects or read-only global variables
3
+ * @author Ilya Volodin
4
+ * @deprecated in ESLint v3.3.0
5
+ */
6
+
7
+ "use strict";
8
+
9
+ //------------------------------------------------------------------------------
10
+ // Rule Definition
11
+ //------------------------------------------------------------------------------
12
+
13
+ /** @type {import('../types').Rule.RuleModule} */
14
+ module.exports = {
15
+ meta: {
16
+ type: "suggestion",
17
+
18
+ docs: {
19
+ description:
20
+ "Disallow assignments to native objects or read-only global variables",
21
+ recommended: false,
22
+ url: "https://eslint.org/docs/latest/rules/no-native-reassign",
23
+ },
24
+
25
+ deprecated: {
26
+ message: "Renamed rule.",
27
+ url: "https://eslint.org/blog/2016/08/eslint-v3.3.0-released/#deprecated-rules",
28
+ deprecatedSince: "3.3.0",
29
+ availableUntil: "11.0.0",
30
+ replacedBy: [
31
+ {
32
+ rule: {
33
+ name: "no-global-assign",
34
+ url: "https://eslint.org/docs/rules/no-global-assign",
35
+ },
36
+ },
37
+ ],
38
+ },
39
+
40
+ schema: [
41
+ {
42
+ type: "object",
43
+ properties: {
44
+ exceptions: {
45
+ type: "array",
46
+ items: { type: "string" },
47
+ uniqueItems: true,
48
+ },
49
+ },
50
+ additionalProperties: false,
51
+ },
52
+ ],
53
+
54
+ messages: {
55
+ nativeReassign:
56
+ "Read-only global '{{name}}' should not be modified.",
57
+ },
58
+ },
59
+
60
+ create(context) {
61
+ const config = context.options[0];
62
+ const exceptions = (config && config.exceptions) || [];
63
+ const sourceCode = context.sourceCode;
64
+
65
+ /**
66
+ * Reports write references.
67
+ * @param {Reference} reference A reference to check.
68
+ * @param {number} index The index of the reference in the references.
69
+ * @param {Reference[]} references The array that the reference belongs to.
70
+ * @returns {void}
71
+ */
72
+ function checkReference(reference, index, references) {
73
+ const identifier = reference.identifier;
74
+
75
+ if (
76
+ reference.init === false &&
77
+ reference.isWrite() &&
78
+ /*
79
+ * Destructuring assignments can have multiple default value,
80
+ * so possibly there are multiple writeable references for the same identifier.
81
+ */
82
+ (index === 0 || references[index - 1].identifier !== identifier)
83
+ ) {
84
+ context.report({
85
+ node: identifier,
86
+ messageId: "nativeReassign",
87
+ data: identifier,
88
+ });
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Reports write references if a given variable is read-only builtin.
94
+ * @param {Variable} variable A variable to check.
95
+ * @returns {void}
96
+ */
97
+ function checkVariable(variable) {
98
+ if (
99
+ variable.writeable === false &&
100
+ !exceptions.includes(variable.name)
101
+ ) {
102
+ variable.references.forEach(checkReference);
103
+ }
104
+ }
105
+
106
+ return {
107
+ Program(node) {
108
+ const globalScope = sourceCode.getScope(node);
109
+
110
+ globalScope.variables.forEach(checkVariable);
111
+ },
112
+ };
113
+ },
114
+ };