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,74 @@
1
+ /**
2
+ * @fileoverview disallow use of the Buffer() constructor
3
+ * @author Teddy Katz
4
+ * @deprecated in ESLint v7.0.0
5
+ */
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Rule Definition
10
+ //------------------------------------------------------------------------------
11
+
12
+ /** @type {import('../types').Rule.RuleModule} */
13
+ module.exports = {
14
+ meta: {
15
+ deprecated: {
16
+ message: "Node.js rules were moved out of ESLint core.",
17
+ url: "https://eslint.org/docs/latest/use/migrating-to-7.0.0#deprecate-node-rules",
18
+ deprecatedSince: "7.0.0",
19
+ availableUntil: "11.0.0",
20
+ replacedBy: [
21
+ {
22
+ message:
23
+ "eslint-plugin-n now maintains deprecated Node.js-related rules.",
24
+ plugin: {
25
+ name: "eslint-plugin-n",
26
+ url: "https://github.com/eslint-community/eslint-plugin-n",
27
+ },
28
+ rule: {
29
+ name: "no-deprecated-api",
30
+ url: "https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules/no-deprecated-api.md",
31
+ },
32
+ },
33
+ ],
34
+ },
35
+
36
+ type: "problem",
37
+
38
+ docs: {
39
+ description: "Disallow use of the `Buffer()` constructor",
40
+ recommended: false,
41
+ url: "https://eslint.org/docs/latest/rules/no-buffer-constructor",
42
+ },
43
+
44
+ schema: [],
45
+
46
+ messages: {
47
+ deprecated:
48
+ "{{expr}} is deprecated. Use Buffer.from(), Buffer.alloc(), or Buffer.allocUnsafe() instead.",
49
+ },
50
+ },
51
+
52
+ create(context) {
53
+ //----------------------------------------------------------------------
54
+ // Public
55
+ //----------------------------------------------------------------------
56
+
57
+ return {
58
+ "CallExpression[callee.name='Buffer'], NewExpression[callee.name='Buffer']"(
59
+ node,
60
+ ) {
61
+ context.report({
62
+ node,
63
+ messageId: "deprecated",
64
+ data: {
65
+ expr:
66
+ node.type === "CallExpression"
67
+ ? "Buffer()"
68
+ : "new Buffer()",
69
+ },
70
+ });
71
+ },
72
+ };
73
+ },
74
+ };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @fileoverview Rule to flag use of arguments.callee and arguments.caller.
3
+ * @author Nicholas C. Zakas
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
+ docs: {
18
+ description:
19
+ "Disallow the use of `arguments.caller` or `arguments.callee`",
20
+ recommended: false,
21
+ url: "https://eslint.org/docs/latest/rules/no-caller",
22
+ },
23
+
24
+ schema: [],
25
+
26
+ messages: {
27
+ unexpected: "Avoid arguments.{{prop}}.",
28
+ },
29
+ },
30
+
31
+ create(context) {
32
+ return {
33
+ MemberExpression(node) {
34
+ const objectName = node.object.name,
35
+ propertyName = node.property.name;
36
+
37
+ if (
38
+ objectName === "arguments" &&
39
+ !node.computed &&
40
+ propertyName &&
41
+ propertyName.match(/^calle[er]$/u)
42
+ ) {
43
+ context.report({
44
+ node,
45
+ messageId: "unexpected",
46
+ data: { prop: propertyName },
47
+ });
48
+ }
49
+ },
50
+ };
51
+ },
52
+ };
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @fileoverview Rule to flag use of an lexical declarations inside a case clause
3
+ * @author Erik Arvidsson
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 lexical declarations in case clauses",
18
+ recommended: true,
19
+ url: "https://eslint.org/docs/latest/rules/no-case-declarations",
20
+ },
21
+
22
+ hasSuggestions: true,
23
+
24
+ schema: [],
25
+
26
+ messages: {
27
+ addBrackets: "Add {} brackets around the case block.",
28
+ unexpected: "Unexpected lexical declaration in case block.",
29
+ },
30
+ },
31
+
32
+ create(context) {
33
+ /**
34
+ * Checks whether or not a node is a lexical declaration.
35
+ * @param {ASTNode} node A direct child statement of a switch case.
36
+ * @returns {boolean} Whether or not the node is a lexical declaration.
37
+ */
38
+ function isLexicalDeclaration(node) {
39
+ switch (node.type) {
40
+ case "FunctionDeclaration":
41
+ case "ClassDeclaration":
42
+ return true;
43
+ case "VariableDeclaration":
44
+ return node.kind !== "var";
45
+ default:
46
+ return false;
47
+ }
48
+ }
49
+
50
+ return {
51
+ SwitchCase(node) {
52
+ for (let i = 0; i < node.consequent.length; i++) {
53
+ const statement = node.consequent[i];
54
+
55
+ if (isLexicalDeclaration(statement)) {
56
+ context.report({
57
+ node: statement,
58
+ messageId: "unexpected",
59
+ suggest: [
60
+ {
61
+ messageId: "addBrackets",
62
+ fix: fixer => [
63
+ fixer.insertTextBefore(
64
+ node.consequent[0],
65
+ "{ ",
66
+ ),
67
+ fixer.insertTextAfter(
68
+ node.consequent.at(-1),
69
+ " }",
70
+ ),
71
+ ],
72
+ },
73
+ ],
74
+ });
75
+ }
76
+ }
77
+ },
78
+ };
79
+ },
80
+ };
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @fileoverview Rule to flag variable leak in CatchClauses in IE 8 and earlier
3
+ * @author Ian Christian Myers
4
+ * @deprecated in ESLint v5.1.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
+ type: "suggestion",
23
+
24
+ docs: {
25
+ description:
26
+ "Disallow `catch` clause parameters from shadowing variables in the outer scope",
27
+ recommended: false,
28
+ url: "https://eslint.org/docs/latest/rules/no-catch-shadow",
29
+ },
30
+
31
+ deprecated: {
32
+ message: "This rule was renamed.",
33
+ url: "https://eslint.org/blog/2018/07/eslint-v5.1.0-released/",
34
+ deprecatedSince: "5.1.0",
35
+ availableUntil: "11.0.0",
36
+ replacedBy: [
37
+ {
38
+ rule: {
39
+ name: "no-shadow",
40
+ url: "https://eslint.org/docs/rules/no-shadow",
41
+ },
42
+ },
43
+ ],
44
+ },
45
+ schema: [],
46
+
47
+ messages: {
48
+ mutable:
49
+ "Value of '{{name}}' may be overwritten in IE 8 and earlier.",
50
+ },
51
+ },
52
+
53
+ create(context) {
54
+ const sourceCode = context.sourceCode;
55
+
56
+ //--------------------------------------------------------------------------
57
+ // Helpers
58
+ //--------------------------------------------------------------------------
59
+
60
+ /**
61
+ * Check if the parameters are been shadowed
62
+ * @param {Object} scope current scope
63
+ * @param {string} name parameter name
64
+ * @returns {boolean} True is its been shadowed
65
+ */
66
+ function paramIsShadowing(scope, name) {
67
+ return astUtils.getVariableByName(scope, name) !== null;
68
+ }
69
+
70
+ //--------------------------------------------------------------------------
71
+ // Public API
72
+ //--------------------------------------------------------------------------
73
+
74
+ return {
75
+ "CatchClause[param!=null]"(node) {
76
+ let scope = sourceCode.getScope(node);
77
+
78
+ /*
79
+ * When ecmaVersion >= 6, CatchClause creates its own scope
80
+ * so start from one upper scope to exclude the current node
81
+ */
82
+ if (scope.block === node) {
83
+ scope = scope.upper;
84
+ }
85
+
86
+ if (paramIsShadowing(scope, node.param.name)) {
87
+ context.report({
88
+ node,
89
+ messageId: "mutable",
90
+ data: { name: node.param.name },
91
+ });
92
+ }
93
+ },
94
+ };
95
+ },
96
+ };
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @fileoverview A rule to disallow modifying variables of class declarations
3
+ * @author Toru Nagashima
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const astUtils = require("./utils/ast-utils");
9
+
10
+ //------------------------------------------------------------------------------
11
+ // Rule Definition
12
+ //------------------------------------------------------------------------------
13
+
14
+ /** @type {import('../types').Rule.RuleModule} */
15
+ module.exports = {
16
+ meta: {
17
+ type: "problem",
18
+
19
+ docs: {
20
+ description: "Disallow reassigning class members",
21
+ recommended: true,
22
+ url: "https://eslint.org/docs/latest/rules/no-class-assign",
23
+ },
24
+
25
+ schema: [],
26
+
27
+ messages: {
28
+ class: "'{{name}}' is a class.",
29
+ },
30
+ },
31
+
32
+ create(context) {
33
+ const sourceCode = context.sourceCode;
34
+
35
+ /**
36
+ * Finds and reports references that are non initializer and writable.
37
+ * @param {Variable} variable A variable to check.
38
+ * @returns {void}
39
+ */
40
+ function checkVariable(variable) {
41
+ astUtils
42
+ .getModifyingReferences(variable.references)
43
+ .forEach(reference => {
44
+ context.report({
45
+ node: reference.identifier,
46
+ messageId: "class",
47
+ data: { name: reference.identifier.name },
48
+ });
49
+ });
50
+ }
51
+
52
+ /**
53
+ * Finds and reports references that are non initializer and writable.
54
+ * @param {ASTNode} node A ClassDeclaration/ClassExpression node to check.
55
+ * @returns {void}
56
+ */
57
+ function checkForClass(node) {
58
+ sourceCode.getDeclaredVariables(node).forEach(checkVariable);
59
+ }
60
+
61
+ return {
62
+ ClassDeclaration: checkForClass,
63
+ ClassExpression: checkForClass,
64
+ };
65
+ },
66
+ };
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @fileoverview The rule should warn against code that tries to compare against -0.
3
+ * @author Aladdin-ADD <hh_2013@foxmail.com>
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Rule Definition
9
+ //------------------------------------------------------------------------------
10
+
11
+ /** @type {import('../types').Rule.RuleModule} */
12
+ module.exports = {
13
+ meta: {
14
+ type: "problem",
15
+
16
+ docs: {
17
+ description: "Disallow comparing against `-0`",
18
+ recommended: true,
19
+ url: "https://eslint.org/docs/latest/rules/no-compare-neg-zero",
20
+ },
21
+
22
+ fixable: null,
23
+ schema: [],
24
+
25
+ messages: {
26
+ unexpected:
27
+ "Do not use the '{{operator}}' operator to compare against -0.",
28
+ },
29
+ },
30
+
31
+ create(context) {
32
+ //--------------------------------------------------------------------------
33
+ // Helpers
34
+ //--------------------------------------------------------------------------
35
+
36
+ /**
37
+ * Checks a given node is -0
38
+ * @param {ASTNode} node A node to check.
39
+ * @returns {boolean} `true` if the node is -0.
40
+ */
41
+ function isNegZero(node) {
42
+ return (
43
+ node.type === "UnaryExpression" &&
44
+ node.operator === "-" &&
45
+ node.argument.type === "Literal" &&
46
+ node.argument.value === 0
47
+ );
48
+ }
49
+ const OPERATORS_TO_CHECK = new Set([
50
+ ">",
51
+ ">=",
52
+ "<",
53
+ "<=",
54
+ "==",
55
+ "===",
56
+ "!=",
57
+ "!==",
58
+ ]);
59
+
60
+ return {
61
+ BinaryExpression(node) {
62
+ if (OPERATORS_TO_CHECK.has(node.operator)) {
63
+ if (isNegZero(node.left) || isNegZero(node.right)) {
64
+ context.report({
65
+ node,
66
+ messageId: "unexpected",
67
+ data: { operator: node.operator },
68
+ });
69
+ }
70
+ }
71
+ },
72
+ };
73
+ },
74
+ };
@@ -0,0 +1,175 @@
1
+ /**
2
+ * @fileoverview Rule to flag assignment in a conditional statement's test expression
3
+ * @author Stephen Murray <spmurrayzzz>
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 TEST_CONDITION_PARENT_TYPES = new Set([
19
+ "IfStatement",
20
+ "WhileStatement",
21
+ "DoWhileStatement",
22
+ "ForStatement",
23
+ "ConditionalExpression",
24
+ ]);
25
+
26
+ const NODE_DESCRIPTIONS = {
27
+ DoWhileStatement: "a 'do...while' statement",
28
+ ForStatement: "a 'for' statement",
29
+ IfStatement: "an 'if' statement",
30
+ WhileStatement: "a 'while' statement",
31
+ };
32
+
33
+ //------------------------------------------------------------------------------
34
+ // Rule Definition
35
+ //------------------------------------------------------------------------------
36
+
37
+ /** @type {import('../types').Rule.RuleModule} */
38
+ module.exports = {
39
+ meta: {
40
+ type: "problem",
41
+
42
+ defaultOptions: ["except-parens"],
43
+
44
+ docs: {
45
+ description:
46
+ "Disallow assignment operators in conditional expressions",
47
+ recommended: true,
48
+ url: "https://eslint.org/docs/latest/rules/no-cond-assign",
49
+ },
50
+
51
+ schema: [
52
+ {
53
+ enum: ["except-parens", "always"],
54
+ },
55
+ ],
56
+
57
+ messages: {
58
+ unexpected: "Unexpected assignment within {{type}}.",
59
+
60
+ // must match JSHint's error message
61
+ missing:
62
+ "Expected a conditional expression and instead saw an assignment.",
63
+ },
64
+ },
65
+
66
+ create(context) {
67
+ const [prohibitAssign] = context.options;
68
+ const sourceCode = context.sourceCode;
69
+
70
+ /**
71
+ * Check whether an AST node is the test expression for a conditional statement.
72
+ * @param {!Object} node The node to test.
73
+ * @returns {boolean} `true` if the node is the text expression for a conditional statement; otherwise, `false`.
74
+ */
75
+ function isConditionalTestExpression(node) {
76
+ return (
77
+ node.parent &&
78
+ TEST_CONDITION_PARENT_TYPES.has(node.parent.type) &&
79
+ node === node.parent.test
80
+ );
81
+ }
82
+
83
+ /**
84
+ * Given an AST node, perform a bottom-up search for the first ancestor that represents a conditional statement.
85
+ * @param {!Object} node The node to use at the start of the search.
86
+ * @returns {?Object} The closest ancestor node that represents a conditional statement.
87
+ */
88
+ function findConditionalAncestor(node) {
89
+ let currentAncestor = node;
90
+
91
+ do {
92
+ if (isConditionalTestExpression(currentAncestor)) {
93
+ return currentAncestor.parent;
94
+ }
95
+ } while (
96
+ (currentAncestor = currentAncestor.parent) &&
97
+ !astUtils.isFunction(currentAncestor)
98
+ );
99
+
100
+ return null;
101
+ }
102
+
103
+ /**
104
+ * Check whether the code represented by an AST node is enclosed in two sets of parentheses.
105
+ * @param {!Object} node The node to test.
106
+ * @returns {boolean} `true` if the code is enclosed in two sets of parentheses; otherwise, `false`.
107
+ */
108
+ function isParenthesisedTwice(node) {
109
+ const previousToken = sourceCode.getTokenBefore(node, 1),
110
+ nextToken = sourceCode.getTokenAfter(node, 1);
111
+
112
+ return (
113
+ astUtils.isParenthesised(sourceCode, node) &&
114
+ previousToken &&
115
+ astUtils.isOpeningParenToken(previousToken) &&
116
+ previousToken.range[1] <= node.range[0] &&
117
+ astUtils.isClosingParenToken(nextToken) &&
118
+ nextToken.range[0] >= node.range[1]
119
+ );
120
+ }
121
+
122
+ /**
123
+ * Check a conditional statement's test expression for top-level assignments that are not enclosed in parentheses.
124
+ * @param {!Object} node The node for the conditional statement.
125
+ * @returns {void}
126
+ */
127
+ function testForAssign(node) {
128
+ if (
129
+ node.test &&
130
+ node.test.type === "AssignmentExpression" &&
131
+ (node.type === "ForStatement"
132
+ ? !astUtils.isParenthesised(sourceCode, node.test)
133
+ : !isParenthesisedTwice(node.test))
134
+ ) {
135
+ context.report({
136
+ node: node.test,
137
+ messageId: "missing",
138
+ });
139
+ }
140
+ }
141
+
142
+ /**
143
+ * Check whether an assignment expression is descended from a conditional statement's test expression.
144
+ * @param {!Object} node The node for the assignment expression.
145
+ * @returns {void}
146
+ */
147
+ function testForConditionalAncestor(node) {
148
+ const ancestor = findConditionalAncestor(node);
149
+
150
+ if (ancestor) {
151
+ context.report({
152
+ node,
153
+ messageId: "unexpected",
154
+ data: {
155
+ type: NODE_DESCRIPTIONS[ancestor.type] || ancestor.type,
156
+ },
157
+ });
158
+ }
159
+ }
160
+
161
+ if (prohibitAssign === "always") {
162
+ return {
163
+ AssignmentExpression: testForConditionalAncestor,
164
+ };
165
+ }
166
+
167
+ return {
168
+ DoWhileStatement: testForAssign,
169
+ ForStatement: testForAssign,
170
+ IfStatement: testForAssign,
171
+ WhileStatement: testForAssign,
172
+ ConditionalExpression: testForAssign,
173
+ };
174
+ },
175
+ };