eslint 9.22.0 → 9.23.0

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 (415) hide show
  1. package/README.md +47 -45
  2. package/bin/eslint.js +92 -90
  3. package/conf/default-cli-options.js +22 -22
  4. package/conf/ecma-version.js +1 -1
  5. package/conf/globals.js +97 -98
  6. package/conf/replacements.json +24 -20
  7. package/conf/rule-type-list.json +88 -92
  8. package/lib/api.js +12 -12
  9. package/lib/cli-engine/cli-engine.js +828 -808
  10. package/lib/cli-engine/file-enumerator.js +381 -387
  11. package/lib/cli-engine/formatters/formatters-meta.json +16 -16
  12. package/lib/cli-engine/formatters/html.js +107 -99
  13. package/lib/cli-engine/formatters/json-with-metadata.js +5 -5
  14. package/lib/cli-engine/formatters/json.js +2 -2
  15. package/lib/cli-engine/formatters/stylish.js +96 -75
  16. package/lib/cli-engine/hash.js +1 -1
  17. package/lib/cli-engine/index.js +1 -1
  18. package/lib/cli-engine/lint-result-cache.js +144 -145
  19. package/lib/cli-engine/load-rules.js +16 -16
  20. package/lib/cli.js +541 -457
  21. package/lib/config/config-loader.js +648 -618
  22. package/lib/config/config.js +247 -221
  23. package/lib/config/default-config.js +54 -45
  24. package/lib/config/flat-config-array.js +167 -172
  25. package/lib/config/flat-config-helpers.js +65 -68
  26. package/lib/config/flat-config-schema.js +375 -368
  27. package/lib/config/rule-validator.js +139 -144
  28. package/lib/config-api.js +2 -2
  29. package/lib/eslint/eslint-helpers.js +709 -679
  30. package/lib/eslint/eslint.js +944 -886
  31. package/lib/eslint/index.js +2 -2
  32. package/lib/eslint/legacy-eslint.js +576 -532
  33. package/lib/languages/js/index.js +263 -264
  34. package/lib/languages/js/source-code/index.js +1 -1
  35. package/lib/languages/js/source-code/source-code.js +1128 -1057
  36. package/lib/languages/js/source-code/token-store/backward-token-comment-cursor.js +39 -35
  37. package/lib/languages/js/source-code/token-store/backward-token-cursor.js +35 -36
  38. package/lib/languages/js/source-code/token-store/cursor.js +36 -36
  39. package/lib/languages/js/source-code/token-store/cursors.js +80 -52
  40. package/lib/languages/js/source-code/token-store/decorative-cursor.js +17 -18
  41. package/lib/languages/js/source-code/token-store/filter-cursor.js +19 -20
  42. package/lib/languages/js/source-code/token-store/forward-token-comment-cursor.js +40 -32
  43. package/lib/languages/js/source-code/token-store/forward-token-cursor.js +40 -41
  44. package/lib/languages/js/source-code/token-store/index.js +592 -498
  45. package/lib/languages/js/source-code/token-store/limit-cursor.js +17 -18
  46. package/lib/languages/js/source-code/token-store/padded-token-cursor.js +23 -16
  47. package/lib/languages/js/source-code/token-store/skip-cursor.js +19 -20
  48. package/lib/languages/js/source-code/token-store/utils.js +63 -60
  49. package/lib/languages/js/validate-language-options.js +104 -89
  50. package/lib/linter/apply-disable-directives.js +467 -383
  51. package/lib/linter/code-path-analysis/code-path-analyzer.js +650 -672
  52. package/lib/linter/code-path-analysis/code-path-segment.js +215 -216
  53. package/lib/linter/code-path-analysis/code-path-state.js +2118 -2096
  54. package/lib/linter/code-path-analysis/code-path.js +307 -319
  55. package/lib/linter/code-path-analysis/debug-helpers.js +183 -163
  56. package/lib/linter/code-path-analysis/fork-context.js +296 -271
  57. package/lib/linter/code-path-analysis/id-generator.js +22 -23
  58. package/lib/linter/file-context.js +119 -120
  59. package/lib/linter/index.js +3 -3
  60. package/lib/linter/interpolate.js +16 -16
  61. package/lib/linter/linter.js +2402 -2044
  62. package/lib/linter/node-event-generator.js +284 -225
  63. package/lib/linter/report-translator.js +256 -219
  64. package/lib/linter/rule-fixer.js +122 -124
  65. package/lib/linter/rules.js +35 -35
  66. package/lib/linter/safe-emitter.js +18 -18
  67. package/lib/linter/source-code-fixer.js +94 -92
  68. package/lib/linter/timing.js +104 -101
  69. package/lib/linter/vfile.js +70 -73
  70. package/lib/options.js +375 -361
  71. package/lib/rule-tester/index.js +1 -1
  72. package/lib/rule-tester/rule-tester.js +1307 -1045
  73. package/lib/rules/accessor-pairs.js +297 -262
  74. package/lib/rules/array-bracket-newline.js +249 -237
  75. package/lib/rules/array-bracket-spacing.js +262 -223
  76. package/lib/rules/array-callback-return.js +401 -355
  77. package/lib/rules/array-element-newline.js +357 -312
  78. package/lib/rules/arrow-body-style.js +399 -280
  79. package/lib/rules/arrow-parens.js +205 -172
  80. package/lib/rules/arrow-spacing.js +168 -162
  81. package/lib/rules/block-scoped-var.js +124 -122
  82. package/lib/rules/block-spacing.js +185 -175
  83. package/lib/rules/brace-style.js +261 -198
  84. package/lib/rules/callback-return.js +202 -189
  85. package/lib/rules/camelcase.js +402 -391
  86. package/lib/rules/capitalized-comments.js +252 -231
  87. package/lib/rules/class-methods-use-this.js +179 -171
  88. package/lib/rules/comma-dangle.js +378 -345
  89. package/lib/rules/comma-spacing.js +192 -194
  90. package/lib/rules/comma-style.js +374 -315
  91. package/lib/rules/complexity.js +172 -168
  92. package/lib/rules/computed-property-spacing.js +235 -210
  93. package/lib/rules/consistent-return.js +180 -169
  94. package/lib/rules/consistent-this.js +166 -146
  95. package/lib/rules/constructor-super.js +411 -403
  96. package/lib/rules/curly.js +406 -331
  97. package/lib/rules/default-case-last.js +37 -30
  98. package/lib/rules/default-case.js +88 -84
  99. package/lib/rules/default-param-last.js +68 -53
  100. package/lib/rules/dot-location.js +121 -109
  101. package/lib/rules/dot-notation.js +191 -155
  102. package/lib/rules/eol-last.js +121 -119
  103. package/lib/rules/eqeqeq.js +167 -154
  104. package/lib/rules/for-direction.js +145 -120
  105. package/lib/rules/func-call-spacing.js +260 -230
  106. package/lib/rules/func-name-matching.js +292 -208
  107. package/lib/rules/func-names.js +164 -163
  108. package/lib/rules/func-style.js +158 -126
  109. package/lib/rules/function-call-argument-newline.js +151 -128
  110. package/lib/rules/function-paren-newline.js +348 -290
  111. package/lib/rules/generator-star-spacing.js +228 -209
  112. package/lib/rules/getter-return.js +207 -171
  113. package/lib/rules/global-require.js +84 -73
  114. package/lib/rules/grouped-accessor-pairs.js +169 -149
  115. package/lib/rules/guard-for-in.js +71 -62
  116. package/lib/rules/handle-callback-err.js +107 -102
  117. package/lib/rules/id-blacklist.js +181 -198
  118. package/lib/rules/id-denylist.js +167 -186
  119. package/lib/rules/id-length.js +196 -170
  120. package/lib/rules/id-match.js +343 -288
  121. package/lib/rules/implicit-arrow-linebreak.js +101 -78
  122. package/lib/rules/indent-legacy.js +1343 -1117
  123. package/lib/rules/indent.js +2271 -1758
  124. package/lib/rules/index.js +317 -292
  125. package/lib/rules/init-declarations.js +115 -106
  126. package/lib/rules/jsx-quotes.js +93 -81
  127. package/lib/rules/key-spacing.js +749 -632
  128. package/lib/rules/keyword-spacing.js +647 -604
  129. package/lib/rules/line-comment-position.js +141 -127
  130. package/lib/rules/linebreak-style.js +106 -105
  131. package/lib/rules/lines-around-comment.js +539 -447
  132. package/lib/rules/lines-around-directive.js +232 -202
  133. package/lib/rules/lines-between-class-members.js +304 -233
  134. package/lib/rules/logical-assignment-operators.js +581 -398
  135. package/lib/rules/max-classes-per-file.js +68 -67
  136. package/lib/rules/max-depth.js +145 -142
  137. package/lib/rules/max-len.js +472 -433
  138. package/lib/rules/max-lines-per-function.js +200 -175
  139. package/lib/rules/max-lines.js +157 -161
  140. package/lib/rules/max-nested-callbacks.js +101 -103
  141. package/lib/rules/max-params.js +77 -75
  142. package/lib/rules/max-statements-per-line.js +204 -197
  143. package/lib/rules/max-statements.js +167 -163
  144. package/lib/rules/multiline-comment-style.js +636 -478
  145. package/lib/rules/multiline-ternary.js +240 -175
  146. package/lib/rules/new-cap.js +232 -212
  147. package/lib/rules/new-parens.js +87 -78
  148. package/lib/rules/newline-after-var.js +286 -249
  149. package/lib/rules/newline-before-return.js +228 -221
  150. package/lib/rules/newline-per-chained-call.js +141 -126
  151. package/lib/rules/no-alert.js +89 -78
  152. package/lib/rules/no-array-constructor.js +121 -112
  153. package/lib/rules/no-async-promise-executor.js +29 -23
  154. package/lib/rules/no-await-in-loop.js +68 -70
  155. package/lib/rules/no-bitwise.js +123 -99
  156. package/lib/rules/no-buffer-constructor.js +54 -46
  157. package/lib/rules/no-caller.js +38 -32
  158. package/lib/rules/no-case-declarations.js +60 -56
  159. package/lib/rules/no-catch-shadow.js +75 -72
  160. package/lib/rules/no-class-assign.js +50 -47
  161. package/lib/rules/no-compare-neg-zero.js +61 -47
  162. package/lib/rules/no-cond-assign.js +147 -131
  163. package/lib/rules/no-confusing-arrow.js +97 -80
  164. package/lib/rules/no-console.js +201 -198
  165. package/lib/rules/no-const-assign.js +46 -40
  166. package/lib/rules/no-constant-binary-expression.js +499 -404
  167. package/lib/rules/no-constant-condition.js +157 -142
  168. package/lib/rules/no-constructor-return.js +48 -48
  169. package/lib/rules/no-continue.js +24 -26
  170. package/lib/rules/no-control-regex.js +124 -120
  171. package/lib/rules/no-debugger.js +27 -29
  172. package/lib/rules/no-delete-var.js +28 -28
  173. package/lib/rules/no-div-regex.js +46 -40
  174. package/lib/rules/no-dupe-args.js +67 -68
  175. package/lib/rules/no-dupe-class-members.js +92 -88
  176. package/lib/rules/no-dupe-else-if.js +99 -76
  177. package/lib/rules/no-dupe-keys.js +132 -109
  178. package/lib/rules/no-duplicate-case.js +49 -42
  179. package/lib/rules/no-duplicate-imports.js +178 -175
  180. package/lib/rules/no-else-return.js +429 -384
  181. package/lib/rules/no-empty-character-class.js +56 -49
  182. package/lib/rules/no-empty-function.js +126 -127
  183. package/lib/rules/no-empty-pattern.js +62 -57
  184. package/lib/rules/no-empty-static-block.js +36 -34
  185. package/lib/rules/no-empty.js +97 -85
  186. package/lib/rules/no-eq-null.js +36 -31
  187. package/lib/rules/no-eval.js +255 -249
  188. package/lib/rules/no-ex-assign.js +41 -38
  189. package/lib/rules/no-extend-native.js +160 -158
  190. package/lib/rules/no-extra-bind.js +200 -189
  191. package/lib/rules/no-extra-boolean-cast.js +397 -347
  192. package/lib/rules/no-extra-label.js +149 -130
  193. package/lib/rules/no-extra-parens.js +1653 -1324
  194. package/lib/rules/no-extra-semi.js +145 -143
  195. package/lib/rules/no-fallthrough.js +198 -156
  196. package/lib/rules/no-floating-decimal.js +73 -65
  197. package/lib/rules/no-func-assign.js +53 -54
  198. package/lib/rules/no-global-assign.js +77 -72
  199. package/lib/rules/no-implicit-coercion.js +348 -292
  200. package/lib/rules/no-implicit-globals.js +157 -134
  201. package/lib/rules/no-implied-eval.js +139 -111
  202. package/lib/rules/no-import-assign.js +144 -158
  203. package/lib/rules/no-inline-comments.js +100 -94
  204. package/lib/rules/no-inner-declarations.js +114 -100
  205. package/lib/rules/no-invalid-regexp.js +221 -189
  206. package/lib/rules/no-invalid-this.js +122 -116
  207. package/lib/rules/no-irregular-whitespace.js +265 -251
  208. package/lib/rules/no-iterator.js +28 -32
  209. package/lib/rules/no-label-var.js +58 -61
  210. package/lib/rules/no-labels.js +137 -132
  211. package/lib/rules/no-lone-blocks.js +126 -122
  212. package/lib/rules/no-lonely-if.js +107 -76
  213. package/lib/rules/no-loop-func.js +233 -212
  214. package/lib/rules/no-loss-of-precision.js +215 -200
  215. package/lib/rules/no-magic-numbers.js +245 -217
  216. package/lib/rules/no-misleading-character-class.js +498 -445
  217. package/lib/rules/no-mixed-operators.js +187 -181
  218. package/lib/rules/no-mixed-requires.js +252 -239
  219. package/lib/rules/no-mixed-spaces-and-tabs.js +133 -120
  220. package/lib/rules/no-multi-assign.js +45 -43
  221. package/lib/rules/no-multi-spaces.js +162 -142
  222. package/lib/rules/no-multi-str.js +41 -40
  223. package/lib/rules/no-multiple-empty-lines.js +195 -157
  224. package/lib/rules/no-native-reassign.js +89 -84
  225. package/lib/rules/no-negated-condition.js +78 -74
  226. package/lib/rules/no-negated-in-lhs.js +44 -42
  227. package/lib/rules/no-nested-ternary.js +32 -31
  228. package/lib/rules/no-new-func.js +70 -61
  229. package/lib/rules/no-new-native-nonconstructor.js +42 -38
  230. package/lib/rules/no-new-object.js +47 -47
  231. package/lib/rules/no-new-require.js +47 -46
  232. package/lib/rules/no-new-symbol.js +51 -49
  233. package/lib/rules/no-new-wrappers.js +42 -40
  234. package/lib/rules/no-new.js +27 -28
  235. package/lib/rules/no-nonoctal-decimal-escape.js +140 -120
  236. package/lib/rules/no-obj-calls.js +65 -52
  237. package/lib/rules/no-object-constructor.js +103 -96
  238. package/lib/rules/no-octal-escape.js +39 -42
  239. package/lib/rules/no-octal.js +31 -31
  240. package/lib/rules/no-param-reassign.js +234 -216
  241. package/lib/rules/no-path-concat.js +65 -66
  242. package/lib/rules/no-plusplus.js +59 -60
  243. package/lib/rules/no-process-env.js +48 -47
  244. package/lib/rules/no-process-exit.js +53 -49
  245. package/lib/rules/no-promise-executor-return.js +213 -181
  246. package/lib/rules/no-proto.js +25 -28
  247. package/lib/rules/no-prototype-builtins.js +145 -123
  248. package/lib/rules/no-redeclare.js +153 -151
  249. package/lib/rules/no-regex-spaces.js +182 -160
  250. package/lib/rules/no-restricted-exports.js +207 -184
  251. package/lib/rules/no-restricted-globals.js +110 -111
  252. package/lib/rules/no-restricted-imports.js +656 -536
  253. package/lib/rules/no-restricted-modules.js +221 -201
  254. package/lib/rules/no-restricted-properties.js +180 -152
  255. package/lib/rules/no-restricted-syntax.js +55 -51
  256. package/lib/rules/no-return-assign.js +54 -49
  257. package/lib/rules/no-return-await.js +147 -123
  258. package/lib/rules/no-script-url.js +51 -44
  259. package/lib/rules/no-self-assign.js +147 -145
  260. package/lib/rules/no-self-compare.js +62 -45
  261. package/lib/rules/no-sequences.js +134 -115
  262. package/lib/rules/no-setter-return.js +184 -151
  263. package/lib/rules/no-shadow-restricted-names.js +60 -45
  264. package/lib/rules/no-shadow.js +341 -315
  265. package/lib/rules/no-spaced-func.js +81 -76
  266. package/lib/rules/no-sparse-arrays.js +53 -58
  267. package/lib/rules/no-sync.js +60 -59
  268. package/lib/rules/no-tabs.js +82 -71
  269. package/lib/rules/no-template-curly-in-string.js +32 -31
  270. package/lib/rules/no-ternary.js +24 -28
  271. package/lib/rules/no-this-before-super.js +320 -318
  272. package/lib/rules/no-throw-literal.js +30 -35
  273. package/lib/rules/no-trailing-spaces.js +198 -190
  274. package/lib/rules/no-undef-init.js +75 -60
  275. package/lib/rules/no-undef.js +50 -47
  276. package/lib/rules/no-undefined.js +72 -74
  277. package/lib/rules/no-underscore-dangle.js +369 -326
  278. package/lib/rules/no-unexpected-multiline.js +111 -101
  279. package/lib/rules/no-unmodified-loop-condition.js +253 -253
  280. package/lib/rules/no-unneeded-ternary.js +211 -146
  281. package/lib/rules/no-unreachable-loop.js +144 -141
  282. package/lib/rules/no-unreachable.js +254 -247
  283. package/lib/rules/no-unsafe-finally.js +92 -84
  284. package/lib/rules/no-unsafe-negation.js +104 -82
  285. package/lib/rules/no-unsafe-optional-chaining.js +191 -177
  286. package/lib/rules/no-unused-expressions.js +177 -161
  287. package/lib/rules/no-unused-labels.js +138 -123
  288. package/lib/rules/no-unused-private-class-members.js +205 -181
  289. package/lib/rules/no-unused-vars.js +1668 -1448
  290. package/lib/rules/no-use-before-define.js +228 -230
  291. package/lib/rules/no-useless-assignment.js +589 -510
  292. package/lib/rules/no-useless-backreference.js +211 -192
  293. package/lib/rules/no-useless-call.js +57 -52
  294. package/lib/rules/no-useless-catch.js +39 -39
  295. package/lib/rules/no-useless-computed-key.js +143 -114
  296. package/lib/rules/no-useless-concat.js +64 -59
  297. package/lib/rules/no-useless-constructor.js +157 -110
  298. package/lib/rules/no-useless-escape.js +341 -290
  299. package/lib/rules/no-useless-rename.js +182 -155
  300. package/lib/rules/no-useless-return.js +343 -311
  301. package/lib/rules/no-var.js +232 -211
  302. package/lib/rules/no-void.js +49 -47
  303. package/lib/rules/no-warning-comments.js +190 -185
  304. package/lib/rules/no-whitespace-before-property.js +130 -114
  305. package/lib/rules/no-with.js +23 -25
  306. package/lib/rules/nonblock-statement-body-position.js +148 -129
  307. package/lib/rules/object-curly-newline.js +305 -264
  308. package/lib/rules/object-curly-spacing.js +359 -313
  309. package/lib/rules/object-property-newline.js +136 -105
  310. package/lib/rules/object-shorthand.js +606 -501
  311. package/lib/rules/one-var-declaration-per-line.js +103 -99
  312. package/lib/rules/one-var.js +652 -536
  313. package/lib/rules/operator-assignment.js +218 -160
  314. package/lib/rules/operator-linebreak.js +294 -250
  315. package/lib/rules/padded-blocks.js +345 -307
  316. package/lib/rules/padding-line-between-statements.js +442 -438
  317. package/lib/rules/prefer-arrow-callback.js +361 -312
  318. package/lib/rules/prefer-const.js +417 -376
  319. package/lib/rules/prefer-destructuring.js +300 -278
  320. package/lib/rules/prefer-exponentiation-operator.js +175 -132
  321. package/lib/rules/prefer-named-capture-group.js +152 -139
  322. package/lib/rules/prefer-numeric-literals.js +120 -112
  323. package/lib/rules/prefer-object-has-own.js +115 -81
  324. package/lib/rules/prefer-object-spread.js +212 -192
  325. package/lib/rules/prefer-promise-reject-errors.js +139 -121
  326. package/lib/rules/prefer-reflect.js +126 -106
  327. package/lib/rules/prefer-regex-literals.js +577 -465
  328. package/lib/rules/prefer-rest-params.js +78 -79
  329. package/lib/rules/prefer-spread.js +46 -43
  330. package/lib/rules/prefer-template.js +265 -194
  331. package/lib/rules/quote-props.js +372 -306
  332. package/lib/rules/quotes.js +373 -325
  333. package/lib/rules/radix.js +151 -135
  334. package/lib/rules/require-atomic-updates.js +315 -284
  335. package/lib/rules/require-await.js +143 -115
  336. package/lib/rules/require-unicode-regexp.js +281 -176
  337. package/lib/rules/require-yield.js +52 -53
  338. package/lib/rules/rest-spread-spacing.js +127 -115
  339. package/lib/rules/semi-spacing.js +280 -249
  340. package/lib/rules/semi-style.js +175 -133
  341. package/lib/rules/semi.js +455 -435
  342. package/lib/rules/sort-imports.js +305 -232
  343. package/lib/rules/sort-keys.js +218 -187
  344. package/lib/rules/sort-vars.js +126 -92
  345. package/lib/rules/space-before-blocks.js +198 -188
  346. package/lib/rules/space-before-function-paren.js +185 -165
  347. package/lib/rules/space-in-parens.js +358 -287
  348. package/lib/rules/space-infix-ops.js +236 -200
  349. package/lib/rules/space-unary-ops.js +355 -297
  350. package/lib/rules/spaced-comment.js +362 -318
  351. package/lib/rules/strict.js +264 -229
  352. package/lib/rules/switch-colon-spacing.js +129 -121
  353. package/lib/rules/symbol-description.js +44 -47
  354. package/lib/rules/template-curly-spacing.js +147 -141
  355. package/lib/rules/template-tag-spacing.js +97 -87
  356. package/lib/rules/unicode-bom.js +53 -55
  357. package/lib/rules/use-isnan.js +236 -205
  358. package/lib/rules/utils/ast-utils.js +2039 -1860
  359. package/lib/rules/utils/char-source.js +162 -155
  360. package/lib/rules/utils/fix-tracker.js +83 -80
  361. package/lib/rules/utils/keywords.js +59 -59
  362. package/lib/rules/utils/lazy-loading-rule-map.js +79 -76
  363. package/lib/rules/utils/regular-expressions.js +32 -24
  364. package/lib/rules/utils/unicode/index.js +4 -4
  365. package/lib/rules/utils/unicode/is-combining-character.js +1 -1
  366. package/lib/rules/utils/unicode/is-emoji-modifier.js +1 -1
  367. package/lib/rules/utils/unicode/is-regional-indicator-symbol.js +1 -1
  368. package/lib/rules/utils/unicode/is-surrogate-pair.js +1 -1
  369. package/lib/rules/valid-typeof.js +152 -110
  370. package/lib/rules/vars-on-top.js +151 -144
  371. package/lib/rules/wrap-iife.js +203 -190
  372. package/lib/rules/wrap-regex.js +69 -57
  373. package/lib/rules/yield-star-spacing.js +144 -133
  374. package/lib/rules/yoda.js +282 -271
  375. package/lib/services/parser-service.js +35 -35
  376. package/lib/services/processor-service.js +66 -73
  377. package/lib/shared/ajv.js +14 -14
  378. package/lib/shared/assert.js +3 -4
  379. package/lib/shared/ast-utils.js +7 -6
  380. package/lib/shared/deep-merge-arrays.js +24 -22
  381. package/lib/shared/directives.js +3 -2
  382. package/lib/shared/flags.js +46 -17
  383. package/lib/shared/logging.js +24 -25
  384. package/lib/shared/option-utils.js +43 -36
  385. package/lib/shared/runtime-info.js +136 -127
  386. package/lib/shared/serialization.js +27 -27
  387. package/lib/shared/severity.js +22 -22
  388. package/lib/shared/stats.js +5 -5
  389. package/lib/shared/string-utils.js +16 -16
  390. package/lib/shared/text-table.js +28 -27
  391. package/lib/shared/traverser.js +153 -146
  392. package/lib/types/index.d.ts +2010 -1559
  393. package/lib/types/rules.d.ts +5253 -5140
  394. package/lib/types/use-at-your-own-risk.d.ts +32 -30
  395. package/lib/unsupported-api.js +5 -5
  396. package/messages/all-files-ignored.js +3 -3
  397. package/messages/all-matched-files-ignored.js +3 -3
  398. package/messages/config-file-missing.js +2 -2
  399. package/messages/config-plugin-missing.js +3 -3
  400. package/messages/config-serialize-function.js +9 -7
  401. package/messages/eslintrc-incompat.js +13 -15
  402. package/messages/eslintrc-plugins.js +3 -4
  403. package/messages/extend-config-missing.js +3 -3
  404. package/messages/failed-to-read-json.js +3 -3
  405. package/messages/file-not-found.js +3 -3
  406. package/messages/invalid-rule-options.js +2 -2
  407. package/messages/invalid-rule-severity.js +2 -2
  408. package/messages/no-config-found.js +3 -3
  409. package/messages/plugin-conflict.js +8 -8
  410. package/messages/plugin-invalid.js +3 -3
  411. package/messages/plugin-missing.js +3 -3
  412. package/messages/print-config-with-directory-path.js +2 -2
  413. package/messages/shared.js +6 -1
  414. package/messages/whitespace-found.js +3 -3
  415. package/package.json +11 -17
@@ -25,7 +25,6 @@
25
25
  * SOFTWARE
26
26
  */
27
27
 
28
-
29
28
  import { ESLint, Rule } from "./index.js";
30
29
 
31
30
  /** @deprecated */
@@ -33,52 +32,55 @@ export const builtinRules: Map<string, Rule.RuleModule>;
33
32
 
34
33
  /** @deprecated */
35
34
  export class FileEnumerator {
36
- constructor(
37
- params?: {
38
- cwd?: string;
39
- configArrayFactory?: any;
40
- extensions?: any;
41
- globInputPaths?: boolean;
42
- errorOnUnmatchedPattern?: boolean;
43
- ignore?: boolean;
44
- },
45
- );
46
- isTargetPath(filePath: string, providedConfig?: any): boolean;
47
- iterateFiles(
48
- patternOrPatterns: string | string[],
49
- ): IterableIterator<{ config: any; filePath: string; ignored: boolean }>;
35
+ constructor(params?: {
36
+ cwd?: string;
37
+ configArrayFactory?: any;
38
+ extensions?: any;
39
+ globInputPaths?: boolean;
40
+ errorOnUnmatchedPattern?: boolean;
41
+ ignore?: boolean;
42
+ });
43
+ isTargetPath(filePath: string, providedConfig?: any): boolean;
44
+ iterateFiles(
45
+ patternOrPatterns: string | string[],
46
+ ): IterableIterator<{ config: any; filePath: string; ignored: boolean }>;
50
47
  }
51
48
 
52
49
  export { /** @deprecated */ ESLint as FlatESLint };
53
50
 
54
51
  /** @deprecated */
55
52
  export class LegacyESLint {
56
- static configType: "eslintrc";
53
+ static configType: "eslintrc";
57
54
 
58
- static readonly version: string;
55
+ static readonly version: string;
59
56
 
60
- static outputFixes(results: ESLint.LintResult[]): Promise<void>;
57
+ static outputFixes(results: ESLint.LintResult[]): Promise<void>;
61
58
 
62
- static getErrorResults(results: ESLint.LintResult[]): ESLint.LintResult[];
59
+ static getErrorResults(results: ESLint.LintResult[]): ESLint.LintResult[];
63
60
 
64
- constructor(options?: ESLint.LegacyOptions);
61
+ constructor(options?: ESLint.LegacyOptions);
65
62
 
66
- lintFiles(patterns: string | string[]): Promise<ESLint.LintResult[]>;
63
+ lintFiles(patterns: string | string[]): Promise<ESLint.LintResult[]>;
67
64
 
68
- lintText(
69
- code: string,
70
- options?: { filePath?: string | undefined; warnIgnored?: boolean | undefined },
71
- ): Promise<ESLint.LintResult[]>;
65
+ lintText(
66
+ code: string,
67
+ options?: {
68
+ filePath?: string | undefined;
69
+ warnIgnored?: boolean | undefined;
70
+ },
71
+ ): Promise<ESLint.LintResult[]>;
72
72
 
73
- getRulesMetaForResults(results: ESLint.LintResult[]): ESLint.LintResultData["rulesMeta"];
73
+ getRulesMetaForResults(
74
+ results: ESLint.LintResult[],
75
+ ): ESLint.LintResultData["rulesMeta"];
74
76
 
75
- hasFlag(flag: string): false;
77
+ hasFlag(flag: string): false;
76
78
 
77
- calculateConfigForFile(filePath: string): Promise<any>;
79
+ calculateConfigForFile(filePath: string): Promise<any>;
78
80
 
79
- isPathIgnored(filePath: string): Promise<boolean>;
81
+ isPathIgnored(filePath: string): Promise<boolean>;
80
82
 
81
- loadFormatter(nameOrPath?: string): Promise<ESLint.Formatter>;
83
+ loadFormatter(nameOrPath?: string): Promise<ESLint.Formatter>;
82
84
  }
83
85
 
84
86
  /** @deprecated */
@@ -21,9 +21,9 @@ const builtinRules = require("./rules");
21
21
  //-----------------------------------------------------------------------------
22
22
 
23
23
  module.exports = {
24
- builtinRules,
25
- FlatESLint,
26
- shouldUseFlatConfig,
27
- FileEnumerator,
28
- LegacyESLint
24
+ builtinRules,
25
+ FlatESLint,
26
+ shouldUseFlatConfig,
27
+ FileEnumerator,
28
+ LegacyESLint,
29
29
  };
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { pattern } = it;
3
+ module.exports = function (it) {
4
+ const { pattern } = it;
5
5
 
6
- return `
6
+ return `
7
7
  You are linting "${pattern}", but all of the files matching the glob pattern "${pattern}" are ignored.
8
8
 
9
9
  If you don't want to lint these files, remove the pattern "${pattern}" from the list of arguments passed to ESLint.
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { pattern } = it;
3
+ module.exports = function (it) {
4
+ const { pattern } = it;
5
5
 
6
- return `
6
+ return `
7
7
  You are linting "${pattern}", but all of the files matching the glob pattern "${pattern}" are ignored.
8
8
 
9
9
  If you don't want to lint these files, remove the pattern "${pattern}" from the list of arguments passed to ESLint.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function() {
4
- return `
3
+ module.exports = function () {
4
+ return `
5
5
  ESLint couldn't find an eslint.config.(js|mjs|cjs) file.
6
6
 
7
7
  From ESLint v9.0.0, the default configuration file is now eslint.config.js.
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { pluginName, ruleId } = it;
3
+ module.exports = function (it) {
4
+ const { pluginName, ruleId } = it;
5
5
 
6
- return `
6
+ return `
7
7
  A configuration object specifies rule "${ruleId}", but could not find plugin "${pluginName}".
8
8
 
9
9
  Common causes of this problem include:
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function({ key, objectKey }) {
4
-
5
- // special case for parsers
6
- const isParser = objectKey === "parser" && (key === "parse" || key === "parseForESLint");
7
- const parserMessage = `
3
+ module.exports = function ({ key, objectKey }) {
4
+ // special case for parsers
5
+ const isParser =
6
+ objectKey === "parser" && (key === "parse" || key === "parseForESLint");
7
+ const parserMessage = `
8
8
  This typically happens when you're using a custom parser that does not
9
9
  provide a "meta" property, which is how ESLint determines the serialized
10
10
  representation. Please open an issue with the maintainer of the custom parser
@@ -13,13 +13,15 @@ and share this link:
13
13
  https://eslint.org/docs/latest/extend/custom-parsers#meta-data-in-custom-parsers
14
14
  `.trim();
15
15
 
16
- return `
16
+ return `
17
17
  The requested operation requires ESLint to serialize configuration data,
18
18
  but the configuration key "${objectKey}.${key}" contains a function value,
19
19
  which cannot be serialized.
20
20
 
21
21
  ${
22
- isParser ? parserMessage : "Please double-check your configuration for errors."
22
+ isParser
23
+ ? parserMessage
24
+ : "Please double-check your configuration for errors."
23
25
  }
24
26
 
25
27
  If you still have problems, please stop by https://eslint.org/chat/help to chat
@@ -3,8 +3,7 @@
3
3
  /* eslint consistent-return: 0 -- no default case */
4
4
 
5
5
  const messages = {
6
-
7
- env: `
6
+ env: `
8
7
  A config object is using the "env" key, which is not supported in flat config system.
9
8
 
10
9
  Flat config uses "languageOptions.globals" to define global variables for your files.
@@ -16,7 +15,7 @@ If you're not using "env" directly (it may be coming from a plugin), please see
16
15
  https://eslint.org/docs/latest/use/configure/migration-guide#using-eslintrc-configs-in-flat-config
17
16
  `,
18
17
 
19
- extends: `
18
+ extends: `
20
19
  A config object is using the "extends" key, which is not supported in flat config system.
21
20
 
22
21
  Instead of "extends", you can include config objects that you'd like to extend from directly in the flat config array.
@@ -28,7 +27,7 @@ If you're not using "extends" directly (it may be coming from a plugin), please
28
27
  https://eslint.org/docs/latest/use/configure/migration-guide#using-eslintrc-configs-in-flat-config
29
28
  `,
30
29
 
31
- globals: `
30
+ globals: `
32
31
  A config object is using the "globals" key, which is not supported in flat config system.
33
32
 
34
33
  Flat config uses "languageOptions.globals" to define global variables for your files.
@@ -40,7 +39,7 @@ If you're not using "globals" directly (it may be coming from a plugin), please
40
39
  https://eslint.org/docs/latest/use/configure/migration-guide#using-eslintrc-configs-in-flat-config
41
40
  `,
42
41
 
43
- ignorePatterns: `
42
+ ignorePatterns: `
44
43
  A config object is using the "ignorePatterns" key, which is not supported in flat config system.
45
44
 
46
45
  Flat config uses "ignores" to specify files to ignore.
@@ -52,7 +51,7 @@ If you're not using "ignorePatterns" directly (it may be coming from a plugin),
52
51
  https://eslint.org/docs/latest/use/configure/migration-guide#using-eslintrc-configs-in-flat-config
53
52
  `,
54
53
 
55
- noInlineConfig: `
54
+ noInlineConfig: `
56
55
  A config object is using the "noInlineConfig" key, which is not supported in flat config system.
57
56
 
58
57
  Flat config uses "linterOptions.noInlineConfig" to specify files to ignore.
@@ -61,7 +60,7 @@ Please see the following page for information on how to convert your config obje
61
60
  https://eslint.org/docs/latest/use/configure/migration-guide#linter-options
62
61
  `,
63
62
 
64
- overrides: `
63
+ overrides: `
65
64
  A config object is using the "overrides" key, which is not supported in flat config system.
66
65
 
67
66
  Flat config is an array that acts like the eslintrc "overrides" array.
@@ -73,7 +72,7 @@ If you're not using "overrides" directly (it may be coming from a plugin), pleas
73
72
  https://eslint.org/docs/latest/use/configure/migration-guide#using-eslintrc-configs-in-flat-config
74
73
  `,
75
74
 
76
- parser: `
75
+ parser: `
77
76
  A config object is using the "parser" key, which is not supported in flat config system.
78
77
 
79
78
  Flat config uses "languageOptions.parser" to override the default parser.
@@ -85,7 +84,7 @@ If you're not using "parser" directly (it may be coming from a plugin), please s
85
84
  https://eslint.org/docs/latest/use/configure/migration-guide#using-eslintrc-configs-in-flat-config
86
85
  `,
87
86
 
88
- parserOptions: `
87
+ parserOptions: `
89
88
  A config object is using the "parserOptions" key, which is not supported in flat config system.
90
89
 
91
90
  Flat config uses "languageOptions.parserOptions" to specify parser options.
@@ -97,7 +96,7 @@ If you're not using "parserOptions" directly (it may be coming from a plugin), p
97
96
  https://eslint.org/docs/latest/use/configure/migration-guide#using-eslintrc-configs-in-flat-config
98
97
  `,
99
98
 
100
- reportUnusedDisableDirectives: `
99
+ reportUnusedDisableDirectives: `
101
100
  A config object is using the "reportUnusedDisableDirectives" key, which is not supported in flat config system.
102
101
 
103
102
  Flat config uses "linterOptions.reportUnusedDisableDirectives" to specify files to ignore.
@@ -106,14 +105,13 @@ Please see the following page for information on how to convert your config obje
106
105
  https://eslint.org/docs/latest/use/configure/migration-guide#linter-options
107
106
  `,
108
107
 
109
- root: `
108
+ root: `
110
109
  A config object is using the "root" key, which is not supported in flat config system.
111
110
 
112
111
  Flat configs always act as if they are the root config file, so this key can be safely removed.
113
- `
112
+ `,
114
113
  };
115
114
 
116
- module.exports = function({ key }) {
117
-
118
- return messages[key].trim();
115
+ module.exports = function ({ key }) {
116
+ return messages[key].trim();
119
117
  };
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function({ plugins }) {
3
+ module.exports = function ({ plugins }) {
4
+ const isArrayOfStrings = typeof plugins[0] === "string";
4
5
 
5
- const isArrayOfStrings = typeof plugins[0] === "string";
6
-
7
- return `
6
+ return `
8
7
  A config object has a "plugins" key defined as an array${isArrayOfStrings ? " of strings" : ""}. It looks something like this:
9
8
 
10
9
  {
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { configName, importerName } = it;
3
+ module.exports = function (it) {
4
+ const { configName, importerName } = it;
5
5
 
6
- return `
6
+ return `
7
7
  ESLint couldn't find the config "${configName}" to extend from. Please check that the name of the config is correct.
8
8
 
9
9
  The config "${configName}" was referenced from the config file in "${importerName}".
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { path, message } = it;
3
+ module.exports = function (it) {
4
+ const { path, message } = it;
5
5
 
6
- return `
6
+ return `
7
7
  Failed to read JSON file at ${path}:
8
8
 
9
9
  ${message}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { pattern, globDisabled } = it;
3
+ module.exports = function (it) {
4
+ const { pattern, globDisabled } = it;
5
5
 
6
- return `
6
+ return `
7
7
  No files matching the pattern "${pattern}"${globDisabled ? " (with disabling globs)" : ""} were found.
8
8
  Please check for typing mistakes in the pattern.
9
9
  `.trimStart();
@@ -2,8 +2,8 @@
2
2
 
3
3
  const { stringifyValueForError } = require("./shared");
4
4
 
5
- module.exports = function({ ruleId, value }) {
6
- return `
5
+ module.exports = function ({ ruleId, value }) {
6
+ return `
7
7
  Configuration for rule "${ruleId}" is invalid. Each rule must have a severity ("off", 0, "warn", 1, "error", or 2) and may be followed by additional options for the rule.
8
8
 
9
9
  You passed '${stringifyValueForError(value, 4)}', which doesn't contain a valid severity.
@@ -2,8 +2,8 @@
2
2
 
3
3
  const { stringifyValueForError } = require("./shared");
4
4
 
5
- module.exports = function({ ruleId, value }) {
6
- return `
5
+ module.exports = function ({ ruleId, value }) {
6
+ return `
7
7
  Configuration for rule "${ruleId}" is invalid. Expected severity of "off", 0, "warn", 1, "error", or 2.
8
8
 
9
9
  You passed '${stringifyValueForError(value, 4)}'.
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { directoryPath } = it;
3
+ module.exports = function (it) {
4
+ const { directoryPath } = it;
5
5
 
6
- return `
6
+ return `
7
7
  ESLint couldn't find a configuration file. To set up a configuration file for this project, please run:
8
8
 
9
9
  npm init @eslint/config@latest
@@ -1,22 +1,22 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { pluginId, plugins } = it;
3
+ module.exports = function (it) {
4
+ const { pluginId, plugins } = it;
5
5
 
6
- let result = `ESLint couldn't determine the plugin "${pluginId}" uniquely.
6
+ let result = `ESLint couldn't determine the plugin "${pluginId}" uniquely.
7
7
  `;
8
8
 
9
- for (const { filePath, importerName } of plugins) {
10
- result += `
9
+ for (const { filePath, importerName } of plugins) {
10
+ result += `
11
11
  - ${filePath} (loaded in "${importerName}")`;
12
- }
12
+ }
13
13
 
14
- result += `
14
+ result += `
15
15
 
16
16
  Please remove the "plugins" setting from either config or remove either plugin installation.
17
17
 
18
18
  If you still can't figure out the problem, please see https://eslint.org/docs/latest/use/troubleshooting.
19
19
  `;
20
20
 
21
- return result;
21
+ return result;
22
22
  };
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { configName, importerName } = it;
3
+ module.exports = function (it) {
4
+ const { configName, importerName } = it;
5
5
 
6
- return `
6
+ return `
7
7
  "${configName}" is invalid syntax for a config specifier.
8
8
 
9
9
  * If your intention is to extend from a configuration exported from the plugin, add the configuration name after a slash: e.g. "${configName}/myConfig".
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { pluginName, resolvePluginsRelativeTo, importerName } = it;
3
+ module.exports = function (it) {
4
+ const { pluginName, resolvePluginsRelativeTo, importerName } = it;
5
5
 
6
- return `
6
+ return `
7
7
  ESLint couldn't find the plugin "${pluginName}".
8
8
 
9
9
  (The package "${pluginName}" was not found when loaded as a Node module from the directory "${resolvePluginsRelativeTo}".)
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function() {
4
- return `
3
+ module.exports = function () {
4
+ return `
5
5
  The '--print-config' CLI option requires a path to a source code file rather than a directory.
6
6
  See also: https://eslint.org/docs/latest/use/command-line-interface#--print-config
7
7
  `.trimStart();
@@ -12,7 +12,12 @@
12
12
  * @returns {string} The value, stringified.
13
13
  */
14
14
  function stringifyValueForError(value, indentation) {
15
- return value ? JSON.stringify(value, null, 4).replace(/\n/gu, `\n${" ".repeat(indentation)}`) : `${value}`;
15
+ return value
16
+ ? JSON.stringify(value, null, 4).replace(
17
+ /\n/gu,
18
+ `\n${" ".repeat(indentation)}`,
19
+ )
20
+ : `${value}`;
16
21
  }
17
22
 
18
23
  module.exports = { stringifyValueForError };
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- module.exports = function(it) {
4
- const { pluginName } = it;
3
+ module.exports = function (it) {
4
+ const { pluginName } = it;
5
5
 
6
- return `
6
+ return `
7
7
  ESLint couldn't find the plugin "${pluginName}". because there is whitespace in the name. Please check your configuration and remove all whitespace from the plugin name.
8
8
 
9
9
  If you still can't figure out the problem, please stop by https://eslint.org/chat/help to chat with the team.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint",
3
- "version": "9.22.0",
3
+ "version": "9.23.0",
4
4
  "author": "Nicholas C. Zakas <nicholas+npm@nczconsulting.com>",
5
5
  "description": "An AST-based pattern checker for JavaScript.",
6
6
  "type": "commonjs",
@@ -68,7 +68,7 @@
68
68
  "release:generate:rc": "node Makefile.js generatePrerelease -- rc",
69
69
  "release:publish": "node Makefile.js publishRelease",
70
70
  "test": "node Makefile.js test",
71
- "test:browser": "node Makefile.js wdio",
71
+ "test:browser": "node Makefile.js cypress",
72
72
  "test:cli": "mocha",
73
73
  "test:fuzz": "node Makefile.js fuzz",
74
74
  "test:performance": "node Makefile.js perf",
@@ -79,8 +79,7 @@
79
79
  "pre-commit": "lint-staged"
80
80
  },
81
81
  "lint-staged": {
82
- "*.js": "trunk check --fix --filter=eslint",
83
- "*.md": "trunk check --fix --filter=markdownlint",
82
+ "*": "trunk check --fix",
84
83
  "lib/rules/*.js": [
85
84
  "node tools/update-eslint-all.js",
86
85
  "node tools/update-rule-type-headers.js",
@@ -90,8 +89,7 @@
90
89
  "node tools/check-rule-examples.js",
91
90
  "node tools/fetch-docs-links.js",
92
91
  "git add docs/src/_data/further_reading_links.json"
93
- ],
94
- "docs/**/*.svg": "trunk check --fix --filter=svgo"
92
+ ]
95
93
  },
96
94
  "files": [
97
95
  "LICENSE",
@@ -109,10 +107,10 @@
109
107
  "@eslint-community/eslint-utils": "^4.2.0",
110
108
  "@eslint-community/regexpp": "^4.12.1",
111
109
  "@eslint/config-array": "^0.19.2",
112
- "@eslint/config-helpers": "^0.1.0",
110
+ "@eslint/config-helpers": "^0.2.0",
113
111
  "@eslint/core": "^0.12.0",
114
- "@eslint/eslintrc": "^3.3.0",
115
- "@eslint/js": "9.22.0",
112
+ "@eslint/eslintrc": "^3.3.1",
113
+ "@eslint/js": "9.23.0",
116
114
  "@eslint/plugin-kit": "^0.2.7",
117
115
  "@humanfs/node": "^0.16.6",
118
116
  "@humanwhocodes/module-importer": "^1.0.1",
@@ -146,20 +144,18 @@
146
144
  "@arethetypeswrong/cli": "^0.17.0",
147
145
  "@babel/core": "^7.4.3",
148
146
  "@babel/preset-env": "^7.4.3",
149
- "@eslint/json": "^0.10.0",
147
+ "@cypress/webpack-preprocessor": "^6.0.2",
148
+ "@eslint/json": "^0.11.0",
150
149
  "@trunkio/launcher": "^1.3.0",
151
150
  "@types/node": "^20.11.5",
152
151
  "@typescript-eslint/parser": "^8.4.0",
153
- "@wdio/browser-runner": "^9.2.4",
154
- "@wdio/cli": "^9.2.4",
155
- "@wdio/concise-reporter": "^9.2.2",
156
- "@wdio/mocha-framework": "^9.2.2",
157
152
  "babel-loader": "^8.0.5",
158
153
  "c8": "^7.12.0",
159
154
  "chai": "^4.0.1",
160
155
  "cheerio": "^0.22.0",
161
156
  "common-tags": "^1.8.0",
162
157
  "core-js": "^3.1.3",
158
+ "cypress": "^14.1.0",
163
159
  "ejs": "^3.0.2",
164
160
  "eslint": "file:.",
165
161
  "eslint-config-eslint": "file:packages/eslint-config-eslint",
@@ -197,12 +193,10 @@
197
193
  "proxyquire": "^2.0.1",
198
194
  "recast": "^0.23.0",
199
195
  "regenerator-runtime": "^0.14.0",
200
- "rollup-plugin-node-polyfills": "^0.2.1",
201
196
  "semver": "^7.5.3",
202
- "shelljs": "^0.8.5",
197
+ "shelljs": "^0.9.0",
203
198
  "sinon": "^11.0.0",
204
199
  "typescript": "^5.3.3",
205
- "vite-plugin-commonjs": "^0.10.0",
206
200
  "webpack": "^5.23.0",
207
201
  "webpack-cli": "^4.5.0",
208
202
  "yorkie": "^2.0.0"