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,101 @@
1
+ /**
2
+ * @fileoverview Rule to flag when initializing to undefined
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
+ // Helpers
16
+ //------------------------------------------------------------------------------
17
+
18
+ const CONSTANT_BINDINGS = new Set(["const", "using", "await using"]);
19
+
20
+ //------------------------------------------------------------------------------
21
+ // Rule Definition
22
+ //------------------------------------------------------------------------------
23
+
24
+ /** @type {import('../types').Rule.RuleModule} */
25
+ module.exports = {
26
+ meta: {
27
+ type: "suggestion",
28
+
29
+ docs: {
30
+ description: "Disallow initializing variables to `undefined`",
31
+ recommended: false,
32
+ frozen: true,
33
+ url: "https://eslint.org/docs/latest/rules/no-undef-init",
34
+ },
35
+
36
+ schema: [],
37
+ fixable: "code",
38
+
39
+ messages: {
40
+ unnecessaryUndefinedInit:
41
+ "It's not necessary to initialize '{{name}}' to undefined.",
42
+ },
43
+ },
44
+
45
+ create(context) {
46
+ const sourceCode = context.sourceCode;
47
+
48
+ return {
49
+ VariableDeclarator(node) {
50
+ const name = sourceCode.getText(node.id),
51
+ init = node.init && node.init.name,
52
+ scope = sourceCode.getScope(node),
53
+ undefinedVar = astUtils.getVariableByName(
54
+ scope,
55
+ "undefined",
56
+ ),
57
+ shadowed = undefinedVar && undefinedVar.defs.length > 0,
58
+ lastToken = sourceCode.getLastToken(node);
59
+
60
+ if (
61
+ init === "undefined" &&
62
+ !CONSTANT_BINDINGS.has(node.parent.kind) &&
63
+ !shadowed
64
+ ) {
65
+ context.report({
66
+ node,
67
+ messageId: "unnecessaryUndefinedInit",
68
+ data: { name },
69
+ fix(fixer) {
70
+ if (node.parent.kind === "var") {
71
+ return null;
72
+ }
73
+
74
+ if (
75
+ node.id.type === "ArrayPattern" ||
76
+ node.id.type === "ObjectPattern"
77
+ ) {
78
+ // Don't fix destructuring assignment to `undefined`.
79
+ return null;
80
+ }
81
+
82
+ if (
83
+ sourceCode.commentsExistBetween(
84
+ node.id,
85
+ lastToken,
86
+ )
87
+ ) {
88
+ return null;
89
+ }
90
+
91
+ return fixer.removeRange([
92
+ node.id.range[1],
93
+ node.range[1],
94
+ ]);
95
+ },
96
+ });
97
+ }
98
+ },
99
+ };
100
+ },
101
+ };
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @fileoverview Rule to flag references to undeclared variables.
3
+ * @author Mark Macdonald
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Helpers
9
+ //------------------------------------------------------------------------------
10
+
11
+ /**
12
+ * Checks if the given node is the argument of a typeof operator.
13
+ * @param {ASTNode} node The AST node being checked.
14
+ * @returns {boolean} Whether or not the node is the argument of a typeof operator.
15
+ */
16
+ function hasTypeOfOperator(node) {
17
+ const parent = node.parent;
18
+
19
+ return parent.type === "UnaryExpression" && parent.operator === "typeof";
20
+ }
21
+
22
+ //------------------------------------------------------------------------------
23
+ // Rule Definition
24
+ //------------------------------------------------------------------------------
25
+
26
+ /** @type {import('../types').Rule.RuleModule} */
27
+ module.exports = {
28
+ meta: {
29
+ type: "problem",
30
+
31
+ defaultOptions: [
32
+ {
33
+ typeof: false,
34
+ },
35
+ ],
36
+
37
+ docs: {
38
+ description:
39
+ "Disallow the use of undeclared variables unless mentioned in `/*global */` comments",
40
+ recommended: true,
41
+ url: "https://eslint.org/docs/latest/rules/no-undef",
42
+ },
43
+
44
+ schema: [
45
+ {
46
+ type: "object",
47
+ properties: {
48
+ typeof: {
49
+ type: "boolean",
50
+ },
51
+ },
52
+ additionalProperties: false,
53
+ },
54
+ ],
55
+ messages: {
56
+ undef: "'{{name}}' is not defined.",
57
+ },
58
+ },
59
+
60
+ create(context) {
61
+ const [{ typeof: considerTypeOf }] = context.options;
62
+ const sourceCode = context.sourceCode;
63
+
64
+ return {
65
+ "Program:exit"(node) {
66
+ const globalScope = sourceCode.getScope(node);
67
+
68
+ globalScope.through.forEach(ref => {
69
+ const identifier = ref.identifier;
70
+
71
+ if (!considerTypeOf && hasTypeOfOperator(identifier)) {
72
+ return;
73
+ }
74
+
75
+ context.report({
76
+ node: identifier,
77
+ messageId: "undef",
78
+ data: identifier,
79
+ });
80
+ });
81
+ },
82
+ };
83
+ },
84
+ };
@@ -0,0 +1,85 @@
1
+ /**
2
+ * @fileoverview Rule to flag references to the undefined variable.
3
+ * @author Michael Ficarra
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Rule Definition
9
+ //------------------------------------------------------------------------------
10
+
11
+ /** @type {import('../types').Rule.RuleModule} */
12
+ module.exports = {
13
+ meta: {
14
+ type: "suggestion",
15
+
16
+ docs: {
17
+ description: "Disallow the use of `undefined` as an identifier",
18
+ recommended: false,
19
+ frozen: true,
20
+ url: "https://eslint.org/docs/latest/rules/no-undefined",
21
+ },
22
+
23
+ schema: [],
24
+
25
+ messages: {
26
+ unexpectedUndefined: "Unexpected use of undefined.",
27
+ },
28
+ },
29
+
30
+ create(context) {
31
+ const sourceCode = context.sourceCode;
32
+
33
+ /**
34
+ * Report an invalid "undefined" identifier node.
35
+ * @param {ASTNode} node The node to report.
36
+ * @returns {void}
37
+ */
38
+ function report(node) {
39
+ context.report({
40
+ node,
41
+ messageId: "unexpectedUndefined",
42
+ });
43
+ }
44
+
45
+ /**
46
+ * Checks the given scope for references to `undefined` and reports
47
+ * all references found.
48
+ * @param {eslint-scope.Scope} scope The scope to check.
49
+ * @returns {void}
50
+ */
51
+ function checkScope(scope) {
52
+ const undefinedVar = scope.set.get("undefined");
53
+
54
+ if (!undefinedVar) {
55
+ return;
56
+ }
57
+
58
+ const references = undefinedVar.references;
59
+
60
+ const defs = undefinedVar.defs;
61
+
62
+ // Report non-initializing references (those are covered in defs below)
63
+ references
64
+ .filter(ref => !ref.init)
65
+ .forEach(ref => report(ref.identifier));
66
+
67
+ defs.forEach(def => report(def.name));
68
+ }
69
+
70
+ return {
71
+ "Program:exit"(node) {
72
+ const globalScope = sourceCode.getScope(node);
73
+
74
+ const stack = [globalScope];
75
+
76
+ while (stack.length) {
77
+ const scope = stack.pop();
78
+
79
+ stack.push(...scope.childScopes);
80
+ checkScope(scope);
81
+ }
82
+ },
83
+ };
84
+ },
85
+ };
@@ -0,0 +1,383 @@
1
+ /**
2
+ * @fileoverview Rule to flag dangling underscores in variable declarations.
3
+ * @author Matt DuVall <http://www.mattduvall.com>
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
+ allow: [],
20
+ allowAfterSuper: false,
21
+ allowAfterThis: false,
22
+ allowAfterThisConstructor: false,
23
+ allowFunctionParams: true,
24
+ allowInArrayDestructuring: true,
25
+ allowInObjectDestructuring: true,
26
+ enforceInClassFields: false,
27
+ enforceInMethodNames: false,
28
+ },
29
+ ],
30
+
31
+ docs: {
32
+ description: "Disallow dangling underscores in identifiers",
33
+ recommended: false,
34
+ frozen: true,
35
+ url: "https://eslint.org/docs/latest/rules/no-underscore-dangle",
36
+ },
37
+
38
+ schema: [
39
+ {
40
+ type: "object",
41
+ properties: {
42
+ allow: {
43
+ type: "array",
44
+ items: {
45
+ type: "string",
46
+ },
47
+ },
48
+ allowAfterThis: {
49
+ type: "boolean",
50
+ },
51
+ allowAfterSuper: {
52
+ type: "boolean",
53
+ },
54
+ allowAfterThisConstructor: {
55
+ type: "boolean",
56
+ },
57
+ enforceInMethodNames: {
58
+ type: "boolean",
59
+ },
60
+ allowFunctionParams: {
61
+ type: "boolean",
62
+ },
63
+ enforceInClassFields: {
64
+ type: "boolean",
65
+ },
66
+ allowInArrayDestructuring: {
67
+ type: "boolean",
68
+ },
69
+ allowInObjectDestructuring: {
70
+ type: "boolean",
71
+ },
72
+ },
73
+ additionalProperties: false,
74
+ },
75
+ ],
76
+
77
+ messages: {
78
+ unexpectedUnderscore:
79
+ "Unexpected dangling '_' in '{{identifier}}'.",
80
+ },
81
+ },
82
+
83
+ create(context) {
84
+ const [
85
+ {
86
+ allow,
87
+ allowAfterSuper,
88
+ allowAfterThis,
89
+ allowAfterThisConstructor,
90
+ allowFunctionParams,
91
+ allowInArrayDestructuring,
92
+ allowInObjectDestructuring,
93
+ enforceInClassFields,
94
+ enforceInMethodNames,
95
+ },
96
+ ] = context.options;
97
+ const sourceCode = context.sourceCode;
98
+
99
+ //-------------------------------------------------------------------------
100
+ // Helpers
101
+ //-------------------------------------------------------------------------
102
+
103
+ /**
104
+ * Check if identifier is present inside the allowed option
105
+ * @param {string} identifier name of the node
106
+ * @returns {boolean} true if its is present
107
+ * @private
108
+ */
109
+ function isAllowed(identifier) {
110
+ return allow.includes(identifier);
111
+ }
112
+
113
+ /**
114
+ * Check if identifier has a dangling underscore
115
+ * @param {string} identifier name of the node
116
+ * @returns {boolean} true if its is present
117
+ * @private
118
+ */
119
+ function hasDanglingUnderscore(identifier) {
120
+ const len = identifier.length;
121
+
122
+ return (
123
+ identifier !== "_" &&
124
+ (identifier[0] === "_" || identifier[len - 1] === "_")
125
+ );
126
+ }
127
+
128
+ /**
129
+ * Check if identifier is a special case member expression
130
+ * @param {string} identifier name of the node
131
+ * @returns {boolean} true if its is a special case
132
+ * @private
133
+ */
134
+ function isSpecialCaseIdentifierForMemberExpression(identifier) {
135
+ return identifier === "__proto__";
136
+ }
137
+
138
+ /**
139
+ * Check if identifier is a special case variable expression
140
+ * @param {string} identifier name of the node
141
+ * @returns {boolean} true if its is a special case
142
+ * @private
143
+ */
144
+ function isSpecialCaseIdentifierInVariableExpression(identifier) {
145
+ // Checks for the underscore library usage here
146
+ return identifier === "_";
147
+ }
148
+
149
+ /**
150
+ * Check if a node is a member reference of this.constructor
151
+ * @param {ASTNode} node node to evaluate
152
+ * @returns {boolean} true if it is a reference on this.constructor
153
+ * @private
154
+ */
155
+ function isThisConstructorReference(node) {
156
+ return (
157
+ node.object.type === "MemberExpression" &&
158
+ node.object.property.name === "constructor" &&
159
+ node.object.object.type === "ThisExpression"
160
+ );
161
+ }
162
+
163
+ /**
164
+ * Check if function parameter has a dangling underscore.
165
+ * @param {ASTNode} node function node to evaluate
166
+ * @returns {void}
167
+ * @private
168
+ */
169
+ function checkForDanglingUnderscoreInFunctionParameters(node) {
170
+ if (!allowFunctionParams) {
171
+ node.params.forEach(param => {
172
+ const { type } = param;
173
+ let nodeToCheck;
174
+
175
+ if (type === "RestElement") {
176
+ nodeToCheck = param.argument;
177
+ } else if (type === "AssignmentPattern") {
178
+ nodeToCheck = param.left;
179
+ } else {
180
+ nodeToCheck = param;
181
+ }
182
+
183
+ if (nodeToCheck.type === "Identifier") {
184
+ const identifier = nodeToCheck.name;
185
+
186
+ if (
187
+ hasDanglingUnderscore(identifier) &&
188
+ !isAllowed(identifier)
189
+ ) {
190
+ context.report({
191
+ node: param,
192
+ messageId: "unexpectedUnderscore",
193
+ data: {
194
+ identifier,
195
+ },
196
+ });
197
+ }
198
+ }
199
+ });
200
+ }
201
+ }
202
+
203
+ /**
204
+ * Check if function has a dangling underscore
205
+ * @param {ASTNode} node node to evaluate
206
+ * @returns {void}
207
+ * @private
208
+ */
209
+ function checkForDanglingUnderscoreInFunction(node) {
210
+ if (node.type === "FunctionDeclaration" && node.id) {
211
+ const identifier = node.id.name;
212
+
213
+ if (
214
+ typeof identifier !== "undefined" &&
215
+ hasDanglingUnderscore(identifier) &&
216
+ !isAllowed(identifier)
217
+ ) {
218
+ context.report({
219
+ node,
220
+ messageId: "unexpectedUnderscore",
221
+ data: {
222
+ identifier,
223
+ },
224
+ });
225
+ }
226
+ }
227
+ checkForDanglingUnderscoreInFunctionParameters(node);
228
+ }
229
+
230
+ /**
231
+ * Check if variable expression has a dangling underscore
232
+ * @param {ASTNode} node node to evaluate
233
+ * @returns {void}
234
+ * @private
235
+ */
236
+ function checkForDanglingUnderscoreInVariableExpression(node) {
237
+ sourceCode.getDeclaredVariables(node).forEach(variable => {
238
+ const definition = variable.defs.find(def => def.node === node);
239
+ const identifierNode = definition.name;
240
+ const identifier = identifierNode.name;
241
+ let parent = identifierNode.parent;
242
+
243
+ while (
244
+ ![
245
+ "VariableDeclarator",
246
+ "ArrayPattern",
247
+ "ObjectPattern",
248
+ ].includes(parent.type)
249
+ ) {
250
+ parent = parent.parent;
251
+ }
252
+
253
+ if (
254
+ hasDanglingUnderscore(identifier) &&
255
+ !isSpecialCaseIdentifierInVariableExpression(identifier) &&
256
+ !isAllowed(identifier) &&
257
+ !(
258
+ allowInArrayDestructuring &&
259
+ parent.type === "ArrayPattern"
260
+ ) &&
261
+ !(
262
+ allowInObjectDestructuring &&
263
+ parent.type === "ObjectPattern"
264
+ )
265
+ ) {
266
+ context.report({
267
+ node,
268
+ messageId: "unexpectedUnderscore",
269
+ data: {
270
+ identifier,
271
+ },
272
+ });
273
+ }
274
+ });
275
+ }
276
+
277
+ /**
278
+ * Check if member expression has a dangling underscore
279
+ * @param {ASTNode} node node to evaluate
280
+ * @returns {void}
281
+ * @private
282
+ */
283
+ function checkForDanglingUnderscoreInMemberExpression(node) {
284
+ const identifier = node.property.name,
285
+ isMemberOfThis = node.object.type === "ThisExpression",
286
+ isMemberOfSuper = node.object.type === "Super",
287
+ isMemberOfThisConstructor = isThisConstructorReference(node);
288
+
289
+ if (
290
+ typeof identifier !== "undefined" &&
291
+ hasDanglingUnderscore(identifier) &&
292
+ !(isMemberOfThis && allowAfterThis) &&
293
+ !(isMemberOfSuper && allowAfterSuper) &&
294
+ !(isMemberOfThisConstructor && allowAfterThisConstructor) &&
295
+ !isSpecialCaseIdentifierForMemberExpression(identifier) &&
296
+ !isAllowed(identifier)
297
+ ) {
298
+ context.report({
299
+ node,
300
+ messageId: "unexpectedUnderscore",
301
+ data: {
302
+ identifier,
303
+ },
304
+ });
305
+ }
306
+ }
307
+
308
+ /**
309
+ * Check if method declaration or method property has a dangling underscore
310
+ * @param {ASTNode} node node to evaluate
311
+ * @returns {void}
312
+ * @private
313
+ */
314
+ function checkForDanglingUnderscoreInMethod(node) {
315
+ const identifier = node.key.name;
316
+ const isMethod =
317
+ node.type === "MethodDefinition" ||
318
+ (node.type === "Property" && node.method);
319
+
320
+ if (
321
+ typeof identifier !== "undefined" &&
322
+ enforceInMethodNames &&
323
+ isMethod &&
324
+ hasDanglingUnderscore(identifier) &&
325
+ !isAllowed(identifier)
326
+ ) {
327
+ context.report({
328
+ node,
329
+ messageId: "unexpectedUnderscore",
330
+ data: {
331
+ identifier:
332
+ node.key.type === "PrivateIdentifier"
333
+ ? `#${identifier}`
334
+ : identifier,
335
+ },
336
+ });
337
+ }
338
+ }
339
+
340
+ /**
341
+ * Check if a class field has a dangling underscore
342
+ * @param {ASTNode} node node to evaluate
343
+ * @returns {void}
344
+ * @private
345
+ */
346
+ function checkForDanglingUnderscoreInClassField(node) {
347
+ const identifier = node.key.name;
348
+
349
+ if (
350
+ typeof identifier !== "undefined" &&
351
+ hasDanglingUnderscore(identifier) &&
352
+ enforceInClassFields &&
353
+ !isAllowed(identifier)
354
+ ) {
355
+ context.report({
356
+ node,
357
+ messageId: "unexpectedUnderscore",
358
+ data: {
359
+ identifier:
360
+ node.key.type === "PrivateIdentifier"
361
+ ? `#${identifier}`
362
+ : identifier,
363
+ },
364
+ });
365
+ }
366
+ }
367
+
368
+ //--------------------------------------------------------------------------
369
+ // Public API
370
+ //--------------------------------------------------------------------------
371
+
372
+ return {
373
+ FunctionDeclaration: checkForDanglingUnderscoreInFunction,
374
+ VariableDeclarator: checkForDanglingUnderscoreInVariableExpression,
375
+ MemberExpression: checkForDanglingUnderscoreInMemberExpression,
376
+ MethodDefinition: checkForDanglingUnderscoreInMethod,
377
+ PropertyDefinition: checkForDanglingUnderscoreInClassField,
378
+ Property: checkForDanglingUnderscoreInMethod,
379
+ FunctionExpression: checkForDanglingUnderscoreInFunction,
380
+ ArrowFunctionExpression: checkForDanglingUnderscoreInFunction,
381
+ };
382
+ },
383
+ };