bahlint 28.58.6934-dev-001

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 +354 -0
  3. package/bin/bahlint.js +267 -0
  4. package/bin/eslint.js +194 -0
  5. package/conf/ecma-version.js +16 -0
  6. package/conf/globals.js +169 -0
  7. package/conf/replacements.json +26 -0
  8. package/conf/rule-type-list.json +91 -0
  9. package/lib/api.js +39 -0
  10. package/lib/cli-engine/formatters/formatters-meta.json +18 -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 +521 -0
  18. package/lib/config/config-loader.js +668 -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 +1989 -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,168 @@
1
+ /**
2
+ * @fileoverview enforce `for` loop update clause moving the counter in the right direction.(for-direction)
3
+ * @author Aladdin-ADD<hh_2013@foxmail.com>
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Requirements
10
+ //------------------------------------------------------------------------------
11
+
12
+ const { getStaticValue } = require("@eslint-community/eslint-utils");
13
+
14
+ //------------------------------------------------------------------------------
15
+ // Rule Definition
16
+ //------------------------------------------------------------------------------
17
+
18
+ /** @type {import('../types').Rule.RuleModule} */
19
+ module.exports = {
20
+ meta: {
21
+ type: "problem",
22
+
23
+ docs: {
24
+ description:
25
+ "Enforce `for` loop update clause moving the counter in the right direction",
26
+ recommended: true,
27
+ url: "https://eslint.org/docs/latest/rules/for-direction",
28
+ },
29
+
30
+ fixable: null,
31
+ schema: [],
32
+
33
+ messages: {
34
+ incorrectDirection:
35
+ "The update clause in this loop moves the variable in the wrong direction.",
36
+ },
37
+ },
38
+
39
+ create(context) {
40
+ const { sourceCode } = context;
41
+
42
+ /**
43
+ * report an error.
44
+ * @param {ASTNode} node the node to report.
45
+ * @returns {void}
46
+ */
47
+ function report(node) {
48
+ context.report({
49
+ loc: {
50
+ start: node.loc.start,
51
+ end: sourceCode.getTokenBefore(node.body).loc.end,
52
+ },
53
+ messageId: "incorrectDirection",
54
+ });
55
+ }
56
+
57
+ /**
58
+ * check the right side of the assignment
59
+ * @param {ASTNode} update UpdateExpression to check
60
+ * @param {number} dir expected direction that could either be turned around or invalidated
61
+ * @returns {number} return dir, the negated dir, or zero if the counter does not change or the direction is not clear
62
+ */
63
+ function getRightDirection(update, dir) {
64
+ const staticValue = getStaticValue(
65
+ update.right,
66
+ sourceCode.getScope(update),
67
+ );
68
+
69
+ if (
70
+ staticValue &&
71
+ ["bigint", "boolean", "number"].includes(
72
+ typeof staticValue.value,
73
+ )
74
+ ) {
75
+ const sign = Math.sign(Number(staticValue.value)) || 0; // convert NaN to 0
76
+
77
+ return dir * sign;
78
+ }
79
+ return 0;
80
+ }
81
+
82
+ /**
83
+ * check UpdateExpression add/sub the counter
84
+ * @param {ASTNode} update UpdateExpression to check
85
+ * @param {string} counter variable name to check
86
+ * @returns {number} if add return 1, if sub return -1, if nochange, return 0
87
+ */
88
+ function getUpdateDirection(update, counter) {
89
+ if (
90
+ update.argument.type === "Identifier" &&
91
+ update.argument.name === counter
92
+ ) {
93
+ if (update.operator === "++") {
94
+ return 1;
95
+ }
96
+ if (update.operator === "--") {
97
+ return -1;
98
+ }
99
+ }
100
+ return 0;
101
+ }
102
+
103
+ /**
104
+ * check AssignmentExpression add/sub the counter
105
+ * @param {ASTNode} update AssignmentExpression to check
106
+ * @param {string} counter variable name to check
107
+ * @returns {number} if add return 1, if sub return -1, if nochange, return 0
108
+ */
109
+ function getAssignmentDirection(update, counter) {
110
+ if (update.left.name === counter) {
111
+ if (update.operator === "+=") {
112
+ return getRightDirection(update, 1);
113
+ }
114
+ if (update.operator === "-=") {
115
+ return getRightDirection(update, -1);
116
+ }
117
+ }
118
+ return 0;
119
+ }
120
+
121
+ return {
122
+ ForStatement(node) {
123
+ if (
124
+ node.test &&
125
+ node.test.type === "BinaryExpression" &&
126
+ node.update
127
+ ) {
128
+ for (const counterPosition of ["left", "right"]) {
129
+ if (node.test[counterPosition].type !== "Identifier") {
130
+ continue;
131
+ }
132
+
133
+ const counter = node.test[counterPosition].name;
134
+ const operator = node.test.operator;
135
+ const update = node.update;
136
+
137
+ let wrongDirection;
138
+
139
+ if (operator === "<" || operator === "<=") {
140
+ wrongDirection =
141
+ counterPosition === "left" ? -1 : 1;
142
+ } else if (operator === ">" || operator === ">=") {
143
+ wrongDirection =
144
+ counterPosition === "left" ? 1 : -1;
145
+ } else {
146
+ return;
147
+ }
148
+
149
+ if (update.type === "UpdateExpression") {
150
+ if (
151
+ getUpdateDirection(update, counter) ===
152
+ wrongDirection
153
+ ) {
154
+ report(node);
155
+ }
156
+ } else if (
157
+ update.type === "AssignmentExpression" &&
158
+ getAssignmentDirection(update, counter) ===
159
+ wrongDirection
160
+ ) {
161
+ report(node);
162
+ }
163
+ }
164
+ }
165
+ },
166
+ };
167
+ },
168
+ };
@@ -0,0 +1,281 @@
1
+ /**
2
+ * @fileoverview Rule to control spacing within function calls
3
+ * @author Matt DuVall <http://www.mattduvall.com>
4
+ * @deprecated in ESLint v8.53.0
5
+ */
6
+
7
+ "use strict";
8
+
9
+ //------------------------------------------------------------------------------
10
+ // Requirements
11
+ //------------------------------------------------------------------------------
12
+
13
+ const astUtils = require("./utils/ast-utils");
14
+
15
+ //------------------------------------------------------------------------------
16
+ // Rule Definition
17
+ //------------------------------------------------------------------------------
18
+
19
+ /** @type {import('../types').Rule.RuleModule} */
20
+ module.exports = {
21
+ meta: {
22
+ deprecated: {
23
+ message: "Formatting rules are being moved out of ESLint core.",
24
+ url: "https://eslint.org/blog/2023/10/deprecating-formatting-rules/",
25
+ deprecatedSince: "8.53.0",
26
+ availableUntil: "11.0.0",
27
+ replacedBy: [
28
+ {
29
+ message:
30
+ "ESLint Stylistic now maintains deprecated stylistic core rules.",
31
+ url: "https://eslint.style/guide/migration",
32
+ plugin: {
33
+ name: "@stylistic/eslint-plugin",
34
+ url: "https://eslint.style",
35
+ },
36
+ rule: {
37
+ name: "function-call-spacing",
38
+ url: "https://eslint.style/rules/function-call-spacing",
39
+ },
40
+ },
41
+ ],
42
+ },
43
+ type: "layout",
44
+
45
+ docs: {
46
+ description:
47
+ "Require or disallow spacing between function identifiers and their invocations",
48
+ recommended: false,
49
+ url: "https://eslint.org/docs/latest/rules/func-call-spacing",
50
+ },
51
+
52
+ fixable: "whitespace",
53
+
54
+ schema: {
55
+ anyOf: [
56
+ {
57
+ type: "array",
58
+ items: [
59
+ {
60
+ enum: ["never"],
61
+ },
62
+ ],
63
+ minItems: 0,
64
+ maxItems: 1,
65
+ },
66
+ {
67
+ type: "array",
68
+ items: [
69
+ {
70
+ enum: ["always"],
71
+ },
72
+ {
73
+ type: "object",
74
+ properties: {
75
+ allowNewlines: {
76
+ type: "boolean",
77
+ },
78
+ },
79
+ additionalProperties: false,
80
+ },
81
+ ],
82
+ minItems: 0,
83
+ maxItems: 2,
84
+ },
85
+ ],
86
+ },
87
+
88
+ messages: {
89
+ unexpectedWhitespace:
90
+ "Unexpected whitespace between function name and paren.",
91
+ unexpectedNewline:
92
+ "Unexpected newline between function name and paren.",
93
+ missing: "Missing space between function name and paren.",
94
+ },
95
+ },
96
+
97
+ create(context) {
98
+ const never = context.options[0] !== "always";
99
+ const allowNewlines =
100
+ !never && context.options[1] && context.options[1].allowNewlines;
101
+ const sourceCode = context.sourceCode;
102
+ const text = sourceCode.getText();
103
+
104
+ /**
105
+ * Check if open space is present in a function name
106
+ * @param {ASTNode} node node to evaluate
107
+ * @param {Token} leftToken The last token of the callee. This may be the closing parenthesis that encloses the callee.
108
+ * @param {Token} rightToken The first token of the arguments. this is the opening parenthesis that encloses the arguments.
109
+ * @returns {void}
110
+ * @private
111
+ */
112
+ function checkSpacing(node, leftToken, rightToken) {
113
+ const textBetweenTokens = text
114
+ .slice(leftToken.range[1], rightToken.range[0])
115
+ .replace(/\/\*.*?\*\//gu, "");
116
+ const hasWhitespace = /\s/u.test(textBetweenTokens);
117
+ const hasNewline =
118
+ hasWhitespace &&
119
+ astUtils.LINEBREAK_MATCHER.test(textBetweenTokens);
120
+
121
+ /*
122
+ * never allowNewlines hasWhitespace hasNewline message
123
+ * F F F F Missing space between function name and paren.
124
+ * F F F T (Invalid `!hasWhitespace && hasNewline`)
125
+ * F F T T Unexpected newline between function name and paren.
126
+ * F F T F (OK)
127
+ * F T T F (OK)
128
+ * F T T T (OK)
129
+ * F T F T (Invalid `!hasWhitespace && hasNewline`)
130
+ * F T F F Missing space between function name and paren.
131
+ * T T F F (Invalid `never && allowNewlines`)
132
+ * T T F T (Invalid `!hasWhitespace && hasNewline`)
133
+ * T T T T (Invalid `never && allowNewlines`)
134
+ * T T T F (Invalid `never && allowNewlines`)
135
+ * T F T F Unexpected space between function name and paren.
136
+ * T F T T Unexpected space between function name and paren.
137
+ * T F F T (Invalid `!hasWhitespace && hasNewline`)
138
+ * T F F F (OK)
139
+ *
140
+ * T T Unexpected space between function name and paren.
141
+ * F F Missing space between function name and paren.
142
+ * F F T Unexpected newline between function name and paren.
143
+ */
144
+
145
+ if (never && hasWhitespace) {
146
+ context.report({
147
+ node,
148
+ loc: {
149
+ start: leftToken.loc.end,
150
+ end: {
151
+ line: rightToken.loc.start.line,
152
+ column: rightToken.loc.start.column - 1,
153
+ },
154
+ },
155
+ messageId: "unexpectedWhitespace",
156
+ fix(fixer) {
157
+ // Don't remove comments.
158
+ if (
159
+ sourceCode.commentsExistBetween(
160
+ leftToken,
161
+ rightToken,
162
+ )
163
+ ) {
164
+ return null;
165
+ }
166
+
167
+ // If `?.` exists, it doesn't hide no-unexpected-multiline errors
168
+ if (node.optional) {
169
+ return fixer.replaceTextRange(
170
+ [leftToken.range[1], rightToken.range[0]],
171
+ "?.",
172
+ );
173
+ }
174
+
175
+ /*
176
+ * Only autofix if there is no newline
177
+ * https://github.com/eslint/eslint/issues/7787
178
+ */
179
+ if (hasNewline) {
180
+ return null;
181
+ }
182
+ return fixer.removeRange([
183
+ leftToken.range[1],
184
+ rightToken.range[0],
185
+ ]);
186
+ },
187
+ });
188
+ } else if (!never && !hasWhitespace) {
189
+ context.report({
190
+ node,
191
+ loc: {
192
+ start: {
193
+ line: leftToken.loc.end.line,
194
+ column: leftToken.loc.end.column - 1,
195
+ },
196
+ end: rightToken.loc.start,
197
+ },
198
+ messageId: "missing",
199
+ fix(fixer) {
200
+ if (node.optional) {
201
+ return null; // Not sure if inserting a space to either before/after `?.` token.
202
+ }
203
+ return fixer.insertTextBefore(rightToken, " ");
204
+ },
205
+ });
206
+ } else if (!never && !allowNewlines && hasNewline) {
207
+ context.report({
208
+ node,
209
+ loc: {
210
+ start: leftToken.loc.end,
211
+ end: rightToken.loc.start,
212
+ },
213
+ messageId: "unexpectedNewline",
214
+ fix(fixer) {
215
+ /*
216
+ * Only autofix if there is no newline
217
+ * https://github.com/eslint/eslint/issues/7787
218
+ * But if `?.` exists, it doesn't hide no-unexpected-multiline errors
219
+ */
220
+ if (!node.optional) {
221
+ return null;
222
+ }
223
+
224
+ // Don't remove comments.
225
+ if (
226
+ sourceCode.commentsExistBetween(
227
+ leftToken,
228
+ rightToken,
229
+ )
230
+ ) {
231
+ return null;
232
+ }
233
+
234
+ const range = [leftToken.range[1], rightToken.range[0]];
235
+ const qdToken = sourceCode.getTokenAfter(leftToken);
236
+
237
+ if (qdToken.range[0] === leftToken.range[1]) {
238
+ return fixer.replaceTextRange(range, "?. ");
239
+ }
240
+ if (qdToken.range[1] === rightToken.range[0]) {
241
+ return fixer.replaceTextRange(range, " ?.");
242
+ }
243
+ return fixer.replaceTextRange(range, " ?. ");
244
+ },
245
+ });
246
+ }
247
+ }
248
+
249
+ return {
250
+ "CallExpression, NewExpression"(node) {
251
+ const lastToken = sourceCode.getLastToken(node);
252
+ const lastCalleeToken = sourceCode.getLastToken(node.callee);
253
+ const parenToken = sourceCode.getFirstTokenBetween(
254
+ lastCalleeToken,
255
+ lastToken,
256
+ astUtils.isOpeningParenToken,
257
+ );
258
+ const prevToken =
259
+ parenToken &&
260
+ sourceCode.getTokenBefore(
261
+ parenToken,
262
+ astUtils.isNotQuestionDotToken,
263
+ );
264
+
265
+ // Parens in NewExpression are optional
266
+ if (!(parenToken && parenToken.range[1] < node.range[1])) {
267
+ return;
268
+ }
269
+
270
+ checkSpacing(node, prevToken, parenToken);
271
+ },
272
+
273
+ ImportExpression(node) {
274
+ const leftToken = sourceCode.getFirstToken(node);
275
+ const rightToken = sourceCode.getTokenAfter(leftToken);
276
+
277
+ checkSpacing(node, leftToken, rightToken);
278
+ },
279
+ };
280
+ },
281
+ };