├── .editorconfig ├── .github ├── FUNDING.yml └── workflows │ ├── release.yml │ └── test.yml ├── .gitignore ├── .npmignore ├── .npmrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── demo ├── a.js ├── b.ts ├── c.svelte └── test.js ├── eslint.config.js ├── index.d.ts ├── index.js ├── package.json ├── pnpm-lock.yaml ├── svelte.d.ts ├── svelte.js ├── ts.d.ts ├── ts.js ├── tsconfig.json └── util.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: ai 2 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | on: 3 | push: 4 | tags: 5 | - '*' 6 | permissions: 7 | contents: write 8 | jobs: 9 | release: 10 | name: Release On Tag 11 | if: startsWith(github.ref, 'refs/tags/') 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout the repository 15 | uses: actions/checkout@v4 16 | - name: Extract the changelog 17 | id: changelog 18 | run: | 19 | TAG_NAME=${GITHUB_REF/refs\/tags\//} 20 | READ_SECTION=false 21 | CHANGELOG="" 22 | while IFS= read -r line; do 23 | if [[ "$line" =~ ^#+\ +(.*) ]]; then 24 | if [[ "${BASH_REMATCH[1]}" == "$TAG_NAME" ]]; then 25 | READ_SECTION=true 26 | elif [[ "$READ_SECTION" == true ]]; then 27 | break 28 | fi 29 | elif [[ "$READ_SECTION" == true ]]; then 30 | CHANGELOG+="$line"$'\n' 31 | fi 32 | done < "CHANGELOG.md" 33 | CHANGELOG=$(echo "$CHANGELOG" | awk '/./ {$1=$1;print}') 34 | echo "changelog_content<> $GITHUB_OUTPUT 35 | echo "$CHANGELOG" >> $GITHUB_OUTPUT 36 | echo "EOF" >> $GITHUB_OUTPUT 37 | - name: Create the release 38 | if: steps.changelog.outputs.changelog_content != '' 39 | uses: softprops/action-gh-release@v2 40 | with: 41 | name: ${{ github.ref_name }} 42 | body: '${{ steps.changelog.outputs.changelog_content }}' 43 | draft: false 44 | prerelease: false 45 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | permissions: 8 | contents: read 9 | jobs: 10 | test: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout the repository 14 | uses: actions/checkout@v4 15 | - name: Install pnpm 16 | uses: pnpm/action-setup@v4 17 | with: 18 | version: 10 19 | - name: Install Node.js 20 | uses: actions/setup-node@v4 21 | with: 22 | node-version: 22 23 | cache: pnpm 24 | - name: Install dependencies 25 | run: pnpm install --ignore-scripts 26 | - name: Run all tests 27 | run: pnpm test 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | tsconfig.json 2 | 3 | demo/ 4 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | public-hoist-pattern[]=*eslint* 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | This project adheres to [Semantic Versioning](http://semver.org/). 3 | 4 | ## 55.2.1 5 | * Fixed type test paths. 6 | 7 | ## 55.2.0 8 | * Fixed test paths. 9 | * Removed `@typescript-eslint/ban-ts-comment` rule for tests. 10 | * Removed `@typescript-eslint/no-unsafe-return` rule for tests. 11 | * Removed `@typescript-eslint/no-floating-promises` for type tests. 12 | 13 | ## 55.1.0 14 | * Removed `@typescript-eslint/restrict-plus-operands` rule for tests. 15 | 16 | ## 55.0.1 17 | * Reduced dependencies by coping rules from `neostandard`. 18 | 19 | ## 55.0.0 20 | * Moved from Standard to Neostandard. 21 | 22 | ## 54.5.0 23 | * Fixed Svelte support. 24 | * Fixed `.cts` support. 25 | * Removed `@typescript-eslint/no-misused-promises` rule. 26 | * Removed `@typescript-eslint/unbound-method` rule. 27 | * Removed some strict TS rules for tests. 28 | 29 | ## 54.4.0 30 | * Removed some strict TS rules for tests. 31 | * Removed non-null assertion ban. 32 | * Fixed Svelte compatibility. 33 | * Fixed `.mts` support. 34 | 35 | ## 54.3.0 36 | * Removed `@typescript-eslint/no-dynamic-delete` rule. 37 | * Removed `@typescript-eslint/no-invalid-void-type` rule. 38 | * Removed `@typescript-eslint/no-unnecessary-type-parameters` rule. 39 | * Allowed numbers in `@typescript-eslint/restrict-template-expressions`. 40 | 41 | ## 54.2.0 42 | * Removed TS rules for JS files. 43 | 44 | ## 54.1.0 45 | * Removed `perfectionist/sort-modules` rule. 46 | 47 | ## 54.0.0 48 | * Moved to `eslint-plugin-perfectionist` to 4. 49 | * Moved to TS strict type checked config. 50 | * Added `@typescript-eslint/no-unsafe-type-assertion` rule. 51 | * Added `@typescript-eslint/no-misused-spread` rule. 52 | 53 | ## 53.5.1 54 | * Fixed issues with `@typescript-eslint/no-invalid-this` rule. 55 | 56 | ## 53.5.0 57 | * Removed `n/no-unpublished-require` rule from any files in `test` folder. 58 | 59 | ## 53.4.2 60 | * Fixed Svelte peer dependency warning. 61 | 62 | ## 53.4.1 63 | * Fixed `eslint-plugin-perfectionist` config. 64 | * Fixed linting extension for `import type` and export type`. 65 | 66 | ## 53.4.0 67 | * Added types. 68 | 69 | ## 53.3.0 70 | * Removed `@typescript-eslint/lines-between-class-members` rule. 71 | * Moved to `eslint-plugin-perfectionist` 3. 72 | * Moved to TypeScript plugin 8. 73 | 74 | ## 53.2.1 75 | * Updated plugins to remove ESLint 9 compatibility dependencies. 76 | 77 | ## 53.2.0 78 | * Disabled `n/no-unsupported-features/node-builtins` for tests. 79 | 80 | ## 53.1.0 81 | * Fixed ESLint 9 support. 82 | * Removed `promise/no-multiple-resolved` rule to fix ESLint 9 support. 83 | 84 | ## 53.0.1 85 | * Reduce dependencies by using `node:` protocol rule from `eslint-plugin-n`. 86 | 87 | ## 53.0.0 88 | * Moved to flat config. 89 | 90 | ## 52.0.2 91 | * Fixed `eslint-plugin-perfectionist` update. 92 | 93 | ## 52.0.1 94 | * Replaced plugin for `node:` protocol. 95 | 96 | ## 52.0 97 | * Added rule to force `node:` prefix for built-in modules. 98 | * Added `*/test/*` to add tests rules. 99 | * Added Svelte config. 100 | 101 | ## 51.0.3 102 | * Updated `eslint-plugin-perfectionist`. 103 | 104 | ## 51.0.2 105 | * Fixed TypeScript rules in Svelte. 106 | 107 | ## 51.0.1 108 | * Fixed docs. 109 | 110 | ## 51.0 111 | * Added `eslint-plugin-perfectionist` with alphabetical order. 112 | 113 | ## 50.0 114 | * Added rule to enforce all type imports as `import type`. 115 | * Removed Node.js 14 support. 116 | 117 | ## 49.0 118 | * Moved type imports to a separated group. 119 | * Added `@typescript-eslint/no-mixed-enums` rule. 120 | * Added `@typescript-eslint/no-import-type-side-effects` rule. 121 | 122 | ## 48.0 123 | * Added `promise/no-multiple-resolved` rule. 124 | * Replaced `no-new-symbol` to `no-new-native-nonconstructor`. 125 | 126 | ## 47.2 127 | * Removed unused expression rule for types tests. 128 | * Removed `any` rule for types tests. 129 | * Removed ES syntax rules for types tests. 130 | 131 | ## 47.1 132 | * Removed `n/no-unsupported-features/es-syntax` for tests on TypeScript. 133 | 134 | ## 47.0 135 | * Replaced `eslint-plugin-node` to `eslint-plugin-n`. 136 | * Moved to Standard 17. 137 | 138 | ## 46.1.2 139 | * Fixed `no-shadow` for Type Script (by Yuri Mikhin). 140 | 141 | ## 46.1.1 142 | * Updated `eslint-plugin-promise`. 143 | 144 | ## 46.1 145 | * Removed `eslint-plugin-unicorn` plugin. 146 | * Removed `eslint-plugin-security` plugin. 147 | * Removed `eslint-plugin-jest` plugin. 148 | 149 | ## 46.0.1 150 | * Updated `eslint-plugin-prefer-let`. 151 | 152 | ## 46.0 153 | * Added `jest/prefer-to-be` rule. 154 | * Updated ESLint. 155 | * Updated `eslint-plugin-jest`. 156 | * Updated `eslint-plugin-unicorn`. 157 | 158 | ## 45.4.8 159 | * Updated `eslint-plugin-unicorn`. 160 | 161 | ## 45.4.7 162 | * Updated `eslint-plugin-unicorn`. 163 | 164 | ## 45.4.6 165 | * Fixed package size. 166 | 167 | ## 45.4.5 168 | * Updated `eslint-plugin-unicorn`. 169 | 170 | ## 45.4.4 171 | * Updated `eslint-plugin-unicorn`. 172 | 173 | ## 45.4.3 174 | * Updated `eslint-plugin-import`. 175 | 176 | ## 45.4.2 177 | * Updated `eslint-plugin-unicorn`. 178 | 179 | ## 45.4.1 180 | * Fix `import/extensions` rule for ESM projects. 181 | 182 | ## 45.4 183 | * Disabled `unicorn/prefer-node-protocol`. 184 | 185 | ## 45.3 186 | * Added config for ESM-only projects. 187 | * Updated `eslint-plugin-unicorn`. 188 | 189 | ## 45.2.3 190 | * Updated `eslint-plugin-unicorn`. 191 | 192 | ## 45.2.2 193 | * Updated `eslint-plugin-promise`. 194 | 195 | ## 45.2.1 196 | * Updated `eslint-plugin-unicorn`. 197 | 198 | ## 45.2 199 | * Removed `eslint-plugin-prettierx`. 200 | 201 | ## 45.1 202 | * Disabled `unicorn/prefer-regexp-test`. 203 | * Disabled `no-console` in type tests. 204 | 205 | ## 45.0 206 | * Added `@typescript-eslint/explicit-function-return-type`. 207 | * Added `import/newline-after-import`. 208 | * Added `unicorn/prefer-regexp-test`. 209 | * Added `no-console`. 210 | * Use test rules for stories. 211 | 212 | ## 44.2 213 | * Disabled `no-undef` for TypeScript. 214 | 215 | ## 44.1.2 216 | * Updated `eslint-plugin-unicorn`. 217 | 218 | ## 44.1.1 219 | * Updated `eslint-plugin-prettierx`. 220 | 221 | ## 44.1 222 | * Disabled `no-unused-expressions` rule in tests. 223 | 224 | ## 44.0.6 225 | * Updated `eslint-plugin-unicorn`. 226 | 227 | ## 44.0.5 228 | * Updated `eslint-plugin-prettierx`. 229 | 230 | ## 44.0.4 231 | * Fixed `@typescript-eslint/object-curly-spacing` option. 232 | 233 | ## 44.0.3 234 | * Fixed `object-curly-spacing` in TypeScript. 235 | 236 | ## 44.0.2 237 | * Updated `eslint-plugin-unicorn`. 238 | 239 | ## 44.0.1 240 | * Fixed `no-redeclare` in TypeScript. 241 | 242 | ## 44.0 243 | * Added `@typescript-eslint/no-unused-vars` rule. 244 | * Added `unicorn/prefer-default-parameters` rule. 245 | * Added `unicorn/prefer-array-some` rule. 246 | 247 | ## 43.1.1 248 | * Updated `eslint-plugin-unicorn`. 249 | 250 | ## 43.1 251 | * Removed `unicorn/no-lonely-if` rule. 252 | 253 | ## 43.0 254 | * Added `@typescript-eslint/no-confusing-void-expression` rule. 255 | * Added `unicorn/empty-brace-spaces` rule. 256 | * Added `unicorn/prefer-date-now` rule. 257 | * Added `unicorn/no-lonely-if` rule. 258 | * Added `no-unsafe-optional-chaining` rule. 259 | 260 | ## 42.3 261 | * Removed `@typescript-eslint/strict-boolean-expressions` rule. 262 | 263 | ## 42.2.3 264 | * Removed TypeScript parser for JavaScript files. 265 | 266 | ## 42.2.2 267 | * Disabled `Disable unicorn/custom-error-definition` in `*.d.ts`. 268 | 269 | ## 42.2.1 270 | * Removed `eslint-standard-plugin` from `peerDependencies`. 271 | 272 | ## 42.2 273 | * Removed `no-loop-func` rule. 274 | 275 | ## 42.1 276 | * Disabled `node/no-callback-literal` rule. 277 | 278 | ## 42.0 279 | * Many new rules in Standard 16. 280 | 281 | ## 41.0.2 282 | * Update `eslint-config-standard`. 283 | 284 | ## 41.0.1 285 | * Fixed typo in TypeScript config. 286 | 287 | ## 41.0 288 | * Added `no-loop-func` rule. 289 | * Updated `eslint-plugin-unicorn`. 290 | 291 | ## 40.0.5 292 | * Update `eslint-plugin-unicorn`. 293 | 294 | ## 40.0.4 295 | * Update `eslint-plugin-jest`. 296 | 297 | ## 40.0.3 298 | * Fix arrow function parentheses. 299 | 300 | ## 40.0.2 301 | * Update `eslint-plugin-prettierx`. 302 | 303 | ## 40.0.1 304 | * Update `eslint-plugin-unicorn`. 305 | 306 | ## 40.0 307 | * Force file extensions for imports in TypeScript. 308 | * Use `;` as member delimiter. 309 | 310 | ## 39.0.3 311 | * Fix JSX support. 312 | * Replace deprecated Jest rule. 313 | 314 | ## 39.0.2 315 | * Update `eslint-plugin-prettierx`. 316 | 317 | ## 39.0.1 318 | * Fix `index.js`. 319 | 320 | ## 39.0 321 | * Add `unicorn/prefer-optional-catch-binding` rule. 322 | 323 | ## 38.1 324 | * Allow to use `any` in tests. 325 | 326 | ## 38.0 327 | * Add `prettierx` for auto-formatting. 328 | 329 | ## 37.2 330 | * Do not use extends `@typescript-eslint` recommended configs. 331 | 332 | ## 37.1.1 333 | * Fix `@typescript-eslint` ESLint overrides. 334 | 335 | ## 37.1 336 | * Remove `@typescript-eslint/no-invalid-void-type` rule. 337 | * Fix `singleline` option for `@typescript-eslint/member-delimiter-style`. 338 | 339 | ## 37.0.1 340 | * Fix TypeScript parser options. 341 | 342 | ## 37.0 343 | * Use ESLint 7. 344 | * Add `jest/no-deprecated-functions`. 345 | * Add `@logux/eslint-config/ts` config with TypeScript support. 346 | 347 | ## 36.1.3 348 | * Update `eslint-plugin-unicorn`. 349 | * Update `globals`. 350 | 351 | ## 36.1.2 352 | * Update `eslint-plugin-unicorn`. 353 | 354 | ## 36.1.1 355 | * Update `eslint-plugin-unicorn`. 356 | 357 | ## 36.1 358 | * Remove `func-style` rule. 359 | 360 | ## 36.0 361 | * Remove separated `browser` and `node` configs. 362 | 363 | ## 35.0.4 364 | * Update `eslint-plugin-unicorn`. 365 | 366 | ## 35.0.3 367 | * Update `eslint-plugin-node`. 368 | 369 | ## 35.0.2 370 | * Update `eslint-plugin-unicorn`. 371 | 372 | ## 35.0.1 373 | * Update `eslint-plugin-unicorn`. 374 | 375 | ## 35.0 376 | * Add `no-dupe-else-if` rule. 377 | * Add `prefer-exponentiation-operator` rule. 378 | * Add `no-setter-return` rule. 379 | * Fix `import` and Web Workers support. 380 | 381 | ## 34.0.1 382 | * Update `eslint-plugin-unicorn`. 383 | 384 | ## 34.0 385 | * Add `jest/no-commented-out-tests` rule. 386 | * Add `jest/no-jasmine-globals` rule. 387 | * Add `jest/no-duplicate-hooks` rule. 388 | * Add `jest/prefer-called-with` rule. 389 | * Add `jest/no-test-prefixes` rule. 390 | * Add `jest/no-test-callback` rule. 391 | * Add `jest/no-truthy-falsy` rule. 392 | * Add `jest/lowercase-name` rule. 393 | * Add `jest/valid-describe` rule. 394 | * Add `jest/prefer-todo` rule. 395 | * Add `jest/require-to-throw-message` rule. 396 | * Use `plugin:jest/recommended` and `plugin:jest/style`. 397 | * Use `eslint-plugin-jest` 23. 398 | 399 | ## 33.0 400 | * Add `jest/prefer-hooks-on-top` rule. 401 | 402 | ## 32.2 403 | * Move ES6 rules from `unicorn` to `@logux/eslint-config/node`. 404 | 405 | ## 32.1 406 | * Disable buggy `unicorn/consistent-function-scoping` rule. 407 | * Disable `unicorn/import-index` rules because of conflict with `import/order`. 408 | 409 | ## 32.0 410 | * Add many rules from `eslint-plugin-unicorn`. 411 | 412 | ## 31.0.2 413 | * Fix `peerDependencies`. 414 | 415 | ## 31.0.1 416 | * Update `eslint-plugin-node`. 417 | 418 | ## 31.0 419 | * Use Standard 14. 420 | * Remove `jest/valid-expect-in-promise` rule. 421 | 422 | ## 30.0.2 423 | * Fix `peerDependencies`. 424 | 425 | ## 30.0.1 426 | * Fix config syntax. 427 | 428 | ## 30.0 429 | * Use ES2015+ in tests. 430 | * Add `jest/no-standalone-expect` rule for tests. 431 | * Add `jest/no-try-expect` rule for tests. 432 | 433 | ## 29.1.1 434 | * Fix `require-atomic-updates` disabling. 435 | 436 | ## 29.1 437 | * Disable `require-atomic-updates` rule. 438 | 439 | ## 29.0.1 440 | * Fix `quote-props` consistency. 441 | 442 | ## 29.0 443 | * Use ESLint Standard config 13. 444 | * Use `import/order` instead of `import-helpers/order-imports`. 445 | * Drop Node.js 6 support. 446 | 447 | ## 28.2.3 448 | * Fix warning on ESLint 6. 449 | 450 | ## 28.2.2 451 | * Update `eslint-plugin-import-helpers`. 452 | 453 | ## 28.2.1 454 | * Update `eslint-plugin-node`. 455 | 456 | ## 28.2 457 | * Remove `valid-jsdoc` rule. 458 | 459 | ## 28.1 460 | * Disable `global-require` in tests. 461 | 462 | ## 28.0 463 | * Add `import-helpers/order-imports` rule. 464 | * Add `jest/no-empty-title` rule for tests. 465 | 466 | ## 27.0 467 | * Use ESLint Plugin Jest 22.x. 468 | * Add `jest/prefer-spy-on` rule. 469 | 470 | ## 26.0.1 471 | * Use ESLint Plugin Node 8.x. 472 | 473 | ## 26.0 474 | * Add `jest/prefer-to-contain` rule. 475 | * Remove `jest/expect-expect` rule. 476 | 477 | ## 25.0.2 478 | * Allow import `worker_threads` in tests. 479 | * Use test rules for any files in `test/`. 480 | 481 | ## 25.0.1 482 | * Use ESLint Standard config 11. 483 | 484 | ## 25.0 485 | * Add `jest/expect-expect` rule. 486 | * Use `eslint-plugin-promise` 4.x. 487 | 488 | ## 24.0 489 | * Add `no-misleading-character-class` rule. 490 | * Add `require-atomic-updates` rule to `eslint-config-logux/node`. 491 | * Add `prefer-let` rule to `eslint-config-logux/node`. 492 | 493 | ## 23.1.0 494 | * Do not prefer `const` anymore. 495 | 496 | ## 23.0.4 497 | * Fix peer dependencies. 498 | 499 | ## 23.0.3 500 | * Update `eslint-plugin-node`. 501 | 502 | ## 23.0.2 503 | * Reduce package size. 504 | 505 | ## 23.0.1 506 | * Use ESLint 5. 507 | 508 | ## 23.0 509 | * Remove `strict` rule. 510 | * Remove Node.js 4 support. 511 | 512 | ## 22.1 513 | * Remove `optimize-regex` ESLint plugin. 514 | 515 | ## 22.0 516 | * Rename `node4.js` to `node.js`. 517 | * Add `optimize-regex` ESLint plugin. 518 | * Add `prefer-rest-params` to `eslint-config-logux/node`. 519 | 520 | ## 21.0 521 | * Use ESLint Standard config 11. 522 | 523 | ## 20.0 524 | * Add `jest/consistent-test-it` rule with `it` function. 525 | 526 | ## 19.0 527 | * Update `eslint-plugin-node` 6.0. 528 | 529 | ## 18.0 530 | * Add `jest/valid-expect-in-promise` rule. 531 | * Add `jest/prefer-to-be-undefined` rule. 532 | * Add `jest/prefer-to-be-null` rule. 533 | 534 | ## 17.0 535 | * Add `jest/prefer-to-have-length` rule. 536 | 537 | ## 16.2 538 | * Remove `prefer-template` rule. 539 | * Remove `generator-star-spacing` rule. 540 | 541 | ## 16.1.1 542 | * Update Jest plugin in `peerDependencies`. 543 | 544 | ## 16.1 545 | * Disable `node/no-unpublished-require` rule for test files. 546 | 547 | ## 16.0 548 | * Use ESLint 4.2. 549 | * Add `getter-return` rule. 550 | 551 | ## 15.0.1 552 | * Fix Jest files pattern for tests in project root. 553 | 554 | ## 15.0 555 | * Add `node/no-unpublished-require` rule. 556 | * Add `node/no-extraneous-require` rule. 557 | * Add `node/no-missing-require` rule. 558 | 559 | ## 14.0 560 | * Use ESLint 4.1. 561 | * Use Jest rules only in test files. 562 | * Remove `test` from global names. 563 | 564 | ## 13.2 565 | * Remove `security/detect-child-process` rule. 566 | 567 | ## 13.1 568 | * Remove `arrow-body-style` rule from Node 4 config. 569 | 570 | ## 13.0 571 | * Use ESLint 4.0. 572 | * Add `for-direction` rule. 573 | 574 | ## 12.0 575 | * Add `jest/valid-expect` rule. 576 | 577 | ## 11.0.2 578 | * Update Standard dependencies. 579 | 580 | ## 11.0.1 581 | * Fix `eslint-plugin-standard` peer dependency. 582 | 583 | ## 11.0 584 | * Use ESLint Standard config 10. 585 | 586 | ## 10.0 587 | * Add `eslint-plugin-security` plugin. 588 | 589 | ## 9.0 590 | * Add `nonblock-statement-body-position` rule. 591 | 592 | ## 8.0 593 | * Use ESLint Standard config 7.0. 594 | 595 | ## 7.0 596 | * Use `use strict` and `const` in Node.js 4 config. 597 | 598 | ## 6.0 599 | * Add `eslint-plugin-jest` plugin. 600 | 601 | ## 5.0.1 602 | * Remove optional peer dependency to avoid warning. 603 | 604 | ## 5.0 605 | * Rename `eslint-config-logux` to `eslint-config-logux/browser`. 606 | * Add `node4` config for node-only projects (by Roman Fursov). 607 | 608 | ## 4.0 609 | * Deny ES2015+ features (by Nikita Gusakov). 610 | 611 | ## 3.0 612 | * Add `no-useless-return` rule. 613 | 614 | ## 2.0 615 | * Add arguments to `no-unused-vars` rule. 616 | * Remove `no-undefined` rule. 617 | 618 | ## 1.0 619 | * Initial release. 620 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright 2016 Andrey Sitnik 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Logux ESLint Config 2 | 3 | 5 | 6 | Shareable code style and best practice for [Logux] projects. 7 | 8 | [Logux]: https://logux.org/ 9 | 10 | --- 11 | 12 |   Made at Evil Martians, product consulting for developer tools. 13 | 14 | --- 15 | 16 | ## Install 17 | 18 | Pure JavaScript or TypeScript: 19 | 20 | ```sh 21 | pnpm add --save-dev @logux/eslint-config eslint 22 | ``` 23 | 24 | Svelte project: 25 | 26 | ```sh 27 | pnpm add --save-dev @logux/eslint-config eslint-plugin-svelte svelte eslint 28 | ``` 29 | 30 | ## Usage 31 | 32 | Create `eslint.config.js`. 33 | 34 | For JavaScript: 35 | 36 | ```js 37 | import loguxConfig from '@logux/eslint-config' 38 | 39 | /** @type {import('eslint').Linter.Config[]} */ 40 | export default [...loguxConfig] 41 | ``` 42 | 43 | For TypeScript project: 44 | 45 | ```js 46 | import loguxTsConfig from '@logux/eslint-config/ts' 47 | 48 | /** @type {import('eslint').Linter.Config[]} */ 49 | export default [...loguxTsConfig] 50 | ``` 51 | 52 | For Svelte project: 53 | 54 | ```js 55 | import loguxSvelteConfig from '@logux/eslint-config/svelte' 56 | 57 | /** @type {import('eslint').Linter.Config[]} */ 58 | export default [...loguxSvelteConfig] 59 | ``` 60 | 61 | This project utilizes ESLint with a flat configuration. 62 | You may need to enable its support in your workspace: 63 | 64 | - **VS Code:** enable `eslint.experimental.useFlatConfig`. 65 | -------------------------------------------------------------------------------- /demo/a.js: -------------------------------------------------------------------------------- 1 | let a = 1 2 | 3 | let b = 2 4 | 5 | console.log(a + b) 6 | -------------------------------------------------------------------------------- /demo/b.ts: -------------------------------------------------------------------------------- 1 | export let a: any = 1 2 | -------------------------------------------------------------------------------- /demo/c.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | {$text} 9 | -------------------------------------------------------------------------------- /demo/test.js: -------------------------------------------------------------------------------- 1 | import { exec } from 'node:child_process' 2 | import { join, relative } from 'node:path' 3 | import { styleText } from 'node:util' 4 | 5 | const JS = `/logux-eslint-config/demo/a.js 6 | 5:1 error Unexpected console statement no-console` 7 | 8 | const TS = `/logux-eslint-config/demo/b.ts 9 | 1:15 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any` 10 | 11 | const SVELTE = `/logux-eslint-config/demo/c.svelte 12 | 5:13 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any` 13 | 14 | async function check(config, files, expected) { 15 | let actual = await eslint(config, files) 16 | if (actual !== expected) { 17 | process.stderr.write(styleText('green', `Expected:\n${expected}\n`)) 18 | process.stderr.write(styleText('red', `Actual:\n${actual}\n`)) 19 | process.exit(1) 20 | } 21 | } 22 | 23 | function cleanPath(path) { 24 | return relative(process.cwd(), path).replace(/\\/g, '/') 25 | } 26 | 27 | async function eslint(config, files) { 28 | let paths = files 29 | .split(' ') 30 | .map(i => join(import.meta.dirname, i)) 31 | .join(' ') 32 | let configPath = join(import.meta.dirname, '..', config) 33 | process.stderr.write( 34 | styleText( 35 | 'gray', 36 | `eslint --config ${cleanPath(configPath)} ${cleanPath(paths)}\n` 37 | ) 38 | ) 39 | return new Promise(resolve => { 40 | exec( 41 | `pnpm eslint --no-color --config ${configPath} ${paths}`, 42 | (_, stdout, stderr) => { 43 | if (stderr) { 44 | process.stderr.write(styleText('red', stderr)) 45 | } 46 | let fixed = stdout.replace( 47 | /.*\/(logux-eslint-config|eslint-config)\//g, 48 | '/logux-eslint-config/' 49 | ) 50 | let trimmed = fixed.replace(/✖ \d+ problems?.*/, '').trim() 51 | resolve(trimmed) 52 | } 53 | ) 54 | }) 55 | } 56 | 57 | await check( 58 | 'svelte.js', 59 | 'a.js b.ts c.svelte', 60 | JS + '\n\n' + TS + '\n\n' + SVELTE 61 | ) 62 | await check('ts.js', 'a.js b.ts', JS + '\n\n' + TS) 63 | await check('index.js', 'a.js', JS) 64 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import config from './index.js' 2 | 3 | export default [ 4 | { 5 | ignores: ['demo/a.js', 'demo/b.ts', 'demo/c.svelte'] 6 | }, 7 | ...config, 8 | { 9 | rules: { 10 | 'n/no-unsupported-features/node-builtins': [ 11 | 'error', 12 | { ignores: ['util.styleText', 'import.meta.dirname'] } 13 | ] 14 | } 15 | } 16 | ] 17 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | import type { Linter } from 'eslint' 2 | 3 | declare const config: Linter.Config[] 4 | 5 | export default config 6 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import importX from 'eslint-plugin-import-x' 2 | import eslintN from 'eslint-plugin-n' 3 | import eslintPerfectionist from 'eslint-plugin-perfectionist' 4 | import eslintPreferLet from 'eslint-plugin-prefer-let' 5 | import promise from 'eslint-plugin-promise' 6 | import globals from 'globals' 7 | 8 | export default [ 9 | { 10 | languageOptions: { 11 | globals: { 12 | ...globals.es2022, 13 | ...globals.node, 14 | document: 'readonly', 15 | navigator: 'readonly', 16 | window: 'readonly' 17 | }, 18 | parserOptions: { 19 | ecmaVersion: 2022, 20 | jsx: true 21 | }, 22 | sourceType: 'module' 23 | }, 24 | name: 'logux/base', 25 | plugins: { 26 | 'import-x': importX, 27 | 'n': eslintN, 28 | 'perfectionist': eslintPerfectionist, 29 | 'prefer-let': eslintPreferLet, 30 | promise 31 | }, 32 | rules: { 33 | ...eslintPerfectionist.configs['recommended-alphabetical'].rules, 34 | 'accessor-pairs': [ 35 | 'error', 36 | { enforceForClassMembers: true, setWithoutGet: true } 37 | ], 38 | 'array-callback-return': [ 39 | 'error', 40 | { 41 | allowImplicit: false, 42 | checkForEach: false 43 | } 44 | ], 45 | 'block-scoped-var': 'error', 46 | 'camelcase': [ 47 | 'error', 48 | { 49 | allow: ['^UNSAFE_'], 50 | ignoreGlobals: true, 51 | properties: 'never' 52 | } 53 | ], 54 | 'constructor-super': 'error', 55 | 'curly': ['error', 'multi-line'], 56 | 'default-case-last': 'error', 57 | 'dot-notation': ['error', { allowKeywords: true }], 58 | 'eqeqeq': ['error', 'always', { null: 'ignore' }], 59 | 'for-direction': 'error', 60 | 'func-name-matching': 'error', 61 | 'getter-return': 'error', 62 | 'import-x/export': 'error', 63 | 'import-x/first': 'error', 64 | 'import-x/no-absolute-path': [ 65 | 'error', 66 | { amd: false, commonjs: true, esmodule: true } 67 | ], 68 | 'import-x/no-duplicates': 'error', 69 | 'import-x/no-named-default': 'error', 70 | 'import-x/no-webpack-loader-syntax': 'error', 71 | 'n/global-require': 'error', 72 | 'n/handle-callback-err': ['error', '^(err|error)$'], 73 | 'n/no-deprecated-api': 'error', 74 | 'n/no-exports-assign': 'error', 75 | 'n/no-extraneous-require': 'error', 76 | 'n/no-missing-require': 'error', 77 | 'n/no-new-require': 'error', 78 | 'n/no-path-concat': 'error', 79 | 'n/no-unpublished-require': 'error', 80 | 'n/no-unsupported-features/es-builtins': 'error', 81 | 'n/no-unsupported-features/es-syntax': [ 82 | 'error', 83 | { 84 | ignores: ['modules', 'dynamicImport'] 85 | } 86 | ], 87 | 'n/no-unsupported-features/node-builtins': [ 88 | 'error', 89 | { 90 | ignores: ['worker_threads'] 91 | } 92 | ], 93 | 'n/prefer-node-protocol': 'error', 94 | 'n/process-exit-as-throw': 'error', 95 | 'new-cap': [ 96 | 'error', 97 | { capIsNew: false, newIsCap: true, properties: true } 98 | ], 99 | 'no-array-constructor': 'error', 100 | 'no-async-promise-executor': 'error', 101 | 'no-caller': 'error', 102 | 'no-case-declarations': 'error', 103 | 'no-class-assign': 'error', 104 | 'no-compare-neg-zero': 'error', 105 | 'no-cond-assign': 'error', 106 | 'no-console': 'error', 107 | 'no-const-assign': 'error', 108 | 'no-constant-condition': ['error', { checkLoops: false }], 109 | 'no-control-regex': 'error', 110 | 'no-debugger': 'error', 111 | 'no-delete-var': 'error', 112 | 'no-dupe-args': 'error', 113 | 'no-dupe-class-members': 'error', 114 | 'no-dupe-else-if': 'error', 115 | 'no-dupe-keys': 'error', 116 | 'no-duplicate-case': 'error', 117 | 'no-empty': ['error', { allowEmptyCatch: true }], 118 | 'no-empty-character-class': 'error', 119 | 'no-empty-pattern': 'error', 120 | 'no-eval': 'error', 121 | 'no-ex-assign': 'error', 122 | 'no-extend-native': 'error', 123 | 'no-extra-bind': 'error', 124 | 'no-extra-boolean-cast': 'error', 125 | 'no-fallthrough': 'error', 126 | 'no-func-assign': 'error', 127 | 'no-global-assign': 'error', 128 | 'no-implied-eval': 'error', 129 | 'no-import-assign': 'error', 130 | 'no-invalid-regexp': 'error', 131 | 'no-invalid-this': 'error', 132 | 'no-irregular-whitespace': 'error', 133 | 'no-iterator': 'error', 134 | 'no-labels': ['error', { allowLoop: false, allowSwitch: false }], 135 | 'no-lone-blocks': 'error', 136 | 'no-lonely-if': 'error', 137 | 'no-loss-of-precision': 'error', 138 | 'no-misleading-character-class': 'error', 139 | 'no-multi-str': 'error', 140 | 'no-nested-ternary': 'error', 141 | 'no-new-func': 'error', 142 | 'no-new-native-nonconstructor': 'error', 143 | 'no-new-wrappers': 'error', 144 | 'no-obj-calls': 'error', 145 | 'no-object-constructor': 'error', 146 | 'no-octal': 'error', 147 | 'no-octal-escape': 'error', 148 | 'no-proto': 'error', 149 | 'no-prototype-builtins': 'error', 150 | 'no-redeclare': ['error', { builtinGlobals: false }], 151 | 'no-regex-spaces': 'error', 152 | 'no-return-assign': ['error', 'except-parens'], 153 | 'no-self-assign': ['error', { props: true }], 154 | 'no-self-compare': 'error', 155 | 'no-sequences': 'error', 156 | 'no-setter-return': 'error', 157 | 'no-shadow': 'error', 158 | 'no-shadow-restricted-names': 'error', 159 | 'no-sparse-arrays': 'error', 160 | 'no-template-curly-in-string': 'error', 161 | 'no-this-before-super': 'error', 162 | 'no-throw-literal': 'error', 163 | // 'no-unassigned-vars': 'error', 164 | 'no-undef': 'error', 165 | 'no-undef-init': 'error', 166 | 'no-unexpected-multiline': 'error', 167 | 'no-unmodified-loop-condition': 'error', 168 | 'no-unneeded-ternary': ['error', { defaultAssignment: false }], 169 | 'no-unreachable': 'error', 170 | 'no-unreachable-loop': 'error', 171 | 'no-unsafe-finally': 'error', 172 | 'no-unsafe-negation': 'error', 173 | 'no-unsafe-optional-chaining': 'error', 174 | 'no-unused-expressions': [ 175 | 'error', 176 | { 177 | allowShortCircuit: true, 178 | allowTaggedTemplates: true, 179 | allowTernary: true 180 | } 181 | ], 182 | 'no-unused-vars': [ 183 | 'error', 184 | { 185 | args: 'after-used', 186 | vars: 'all' 187 | } 188 | ], 189 | 'no-use-before-define': [ 190 | 'error', 191 | { classes: false, functions: false, variables: false } 192 | ], 193 | 'no-useless-backreference': 'error', 194 | 'no-useless-call': 'error', 195 | 'no-useless-catch': 'error', 196 | 'no-useless-computed-key': 'error', 197 | 'no-useless-constructor': 'error', 198 | 'no-useless-escape': 'error', 199 | 'no-useless-rename': 'error', 200 | 'no-useless-return': 'error', 201 | 'no-var': 'warn', 202 | 'no-void': 'error', 203 | 'no-with': 'error', 204 | 'object-shorthand': 'error', 205 | 'one-var': ['error', { initialized: 'never' }], 206 | 'perfectionist/sort-imports': [ 207 | 'error', 208 | { 209 | groups: [ 210 | 'side-effect', 211 | 'side-effect-style', 212 | 'style', 213 | ['builtin-type', 'type', 'builtin', 'external', 'unknown'], 214 | [ 215 | 'internal-type', 216 | 'parent-type', 217 | 'sibling-type', 218 | 'index-type', 219 | 'internal', 220 | 'parent', 221 | 'sibling', 222 | 'index' 223 | ], 224 | ['object'] 225 | ], 226 | newlinesBetween: 'always', 227 | order: 'asc', 228 | type: 'alphabetical' 229 | } 230 | ], 231 | 'perfectionist/sort-modules': 'off', 232 | 'perfectionist/sort-svelte-attributes': 'off', 233 | 'prefer-arrow-callback': 'error', 234 | 'prefer-exponentiation-operator': 'error', 235 | 'prefer-let/prefer-let': 'error', 236 | 'prefer-promise-reject-errors': 'error', 237 | 'prefer-regex-literals': ['error', { disallowRedundantWrapping: true }], 238 | 'prefer-rest-params': 'error', 239 | 'prefer-spread': 'error', 240 | 'promise/param-names': 'error', 241 | 'require-yield': 'error', 242 | 'symbol-description': 'error', 243 | 'use-isnan': [ 244 | 'error', 245 | { 246 | enforceForIndexOf: true, 247 | enforceForSwitchCase: true 248 | } 249 | ], 250 | 'valid-typeof': ['error', { requireStringLiterals: true }], 251 | 'yoda': ['error', 'never'] 252 | } 253 | }, 254 | { 255 | files: ['**/test/*'], 256 | name: 'logux/test-fixtures', 257 | rules: { 258 | 'n/no-unpublished-require': 'off', 259 | 'n/no-unsupported-features/node-builtins': 'off' 260 | } 261 | }, 262 | { 263 | files: ['**/*.test.{js,jsx}', '**/*.test.{ts,tsx}'], 264 | name: 'logux/tests', 265 | rules: { 266 | 'n/global-require': 'off', 267 | 'no-unused-expressions': 'off' 268 | } 269 | } 270 | ] 271 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@logux/eslint-config", 3 | "version": "55.2.1", 4 | "description": "An ESLint shareable config for Logux", 5 | "keywords": [ 6 | "logux", 7 | "eslint", 8 | "eslint-config" 9 | ], 10 | "scripts": { 11 | "test:lint": "eslint .", 12 | "test:demo": "node demo/test.js", 13 | "test": "pnpm run /^test:/" 14 | }, 15 | "author": "Andrey Sitnik ", 16 | "license": "MIT", 17 | "repository": "logux/eslint-config", 18 | "engines": { 19 | "node": ">=18.0.0" 20 | }, 21 | "type": "module", 22 | "exports": { 23 | ".": "./index.js", 24 | "./ts": "./ts.js", 25 | "./svelte": "./svelte.js", 26 | "./package.json": "./package.json" 27 | }, 28 | "dependencies": { 29 | "@eslint/eslintrc": "^3.3.1", 30 | "eslint-plugin-import-x": "^4.12.2", 31 | "eslint-plugin-n": "^17.18.0", 32 | "eslint-plugin-perfectionist": "^4.13.0", 33 | "eslint-plugin-prefer-let": "^4.0.0", 34 | "eslint-plugin-promise": "^7.2.1", 35 | "globals": "^16.1.0", 36 | "typescript-eslint": "^8.32.1" 37 | }, 38 | "peerDependencies": { 39 | "eslint": "^8.57.0 || ^9.0.0", 40 | "eslint-plugin-svelte": "^3.0.0", 41 | "svelte": "^4.2.12 || ^5.0.0", 42 | "svelte-eslint-parser": "^1.0.0" 43 | }, 44 | "peerDependenciesMeta": { 45 | "eslint-plugin-svelte": { 46 | "optional": true 47 | }, 48 | "svelte": { 49 | "optional": true 50 | }, 51 | "svelte-eslint-parser": { 52 | "optional": true 53 | } 54 | }, 55 | "devDependencies": { 56 | "clean-publish": "^5.2.0", 57 | "eslint": "^9.27.0", 58 | "eslint-plugin-svelte": "^3.8.1", 59 | "svelte": "^5.31.1", 60 | "svelte-eslint-parser": "^1.2.0", 61 | "typescript": "^5.8.3" 62 | }, 63 | "prettier": { 64 | "arrowParens": "avoid", 65 | "jsxSingleQuote": false, 66 | "quoteProps": "consistent", 67 | "semi": false, 68 | "singleQuote": true, 69 | "trailingComma": "none" 70 | }, 71 | "clean-publish": { 72 | "cleanDocs": true 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@eslint/eslintrc': 12 | specifier: ^3.3.1 13 | version: 3.3.1 14 | eslint-plugin-import-x: 15 | specifier: ^4.12.2 16 | version: 4.12.2(eslint@9.27.0)(typescript@5.8.3) 17 | eslint-plugin-n: 18 | specifier: ^17.18.0 19 | version: 17.18.0(eslint@9.27.0) 20 | eslint-plugin-perfectionist: 21 | specifier: ^4.13.0 22 | version: 4.13.0(eslint@9.27.0)(typescript@5.8.3) 23 | eslint-plugin-prefer-let: 24 | specifier: ^4.0.0 25 | version: 4.0.0 26 | eslint-plugin-promise: 27 | specifier: ^7.2.1 28 | version: 7.2.1(eslint@9.27.0) 29 | globals: 30 | specifier: ^16.1.0 31 | version: 16.1.0 32 | typescript-eslint: 33 | specifier: ^8.32.1 34 | version: 8.32.1(eslint@9.27.0)(typescript@5.8.3) 35 | devDependencies: 36 | clean-publish: 37 | specifier: ^5.2.0 38 | version: 5.2.0 39 | eslint: 40 | specifier: ^9.27.0 41 | version: 9.27.0 42 | eslint-plugin-svelte: 43 | specifier: ^3.8.1 44 | version: 3.8.1(eslint@9.27.0)(svelte@5.31.1) 45 | svelte: 46 | specifier: ^5.31.1 47 | version: 5.31.1 48 | svelte-eslint-parser: 49 | specifier: ^1.2.0 50 | version: 1.2.0(svelte@5.31.1) 51 | typescript: 52 | specifier: ^5.8.3 53 | version: 5.8.3 54 | 55 | packages: 56 | 57 | '@ampproject/remapping@2.3.0': 58 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 59 | engines: {node: '>=6.0.0'} 60 | 61 | '@emnapi/core@1.4.3': 62 | resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} 63 | 64 | '@emnapi/runtime@1.4.3': 65 | resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} 66 | 67 | '@emnapi/wasi-threads@1.0.2': 68 | resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} 69 | 70 | '@eslint-community/eslint-utils@4.7.0': 71 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 72 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 73 | peerDependencies: 74 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 75 | 76 | '@eslint-community/regexpp@4.12.1': 77 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 78 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 79 | 80 | '@eslint/config-array@0.20.0': 81 | resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} 82 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 83 | 84 | '@eslint/config-helpers@0.2.2': 85 | resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} 86 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 87 | 88 | '@eslint/core@0.14.0': 89 | resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} 90 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 91 | 92 | '@eslint/eslintrc@3.3.1': 93 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 94 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 95 | 96 | '@eslint/js@9.27.0': 97 | resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} 98 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 99 | 100 | '@eslint/object-schema@2.1.6': 101 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 102 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 103 | 104 | '@eslint/plugin-kit@0.3.1': 105 | resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} 106 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 107 | 108 | '@humanfs/core@0.19.1': 109 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 110 | engines: {node: '>=18.18.0'} 111 | 112 | '@humanfs/node@0.16.6': 113 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 114 | engines: {node: '>=18.18.0'} 115 | 116 | '@humanwhocodes/module-importer@1.0.1': 117 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 118 | engines: {node: '>=12.22'} 119 | 120 | '@humanwhocodes/retry@0.3.1': 121 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 122 | engines: {node: '>=18.18'} 123 | 124 | '@humanwhocodes/retry@0.4.3': 125 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 126 | engines: {node: '>=18.18'} 127 | 128 | '@jridgewell/gen-mapping@0.3.8': 129 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 130 | engines: {node: '>=6.0.0'} 131 | 132 | '@jridgewell/resolve-uri@3.1.2': 133 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 134 | engines: {node: '>=6.0.0'} 135 | 136 | '@jridgewell/set-array@1.2.1': 137 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 138 | engines: {node: '>=6.0.0'} 139 | 140 | '@jridgewell/sourcemap-codec@1.5.0': 141 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 142 | 143 | '@jridgewell/trace-mapping@0.3.25': 144 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 145 | 146 | '@napi-rs/wasm-runtime@0.2.10': 147 | resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} 148 | 149 | '@nodelib/fs.scandir@2.1.5': 150 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 151 | engines: {node: '>= 8'} 152 | 153 | '@nodelib/fs.stat@2.0.5': 154 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 155 | engines: {node: '>= 8'} 156 | 157 | '@nodelib/fs.walk@1.2.8': 158 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 159 | engines: {node: '>= 8'} 160 | 161 | '@sveltejs/acorn-typescript@1.0.5': 162 | resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} 163 | peerDependencies: 164 | acorn: ^8.9.0 165 | 166 | '@tybys/wasm-util@0.9.0': 167 | resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} 168 | 169 | '@types/estree@1.0.7': 170 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 171 | 172 | '@types/json-schema@7.0.15': 173 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 174 | 175 | '@typescript-eslint/eslint-plugin@8.32.1': 176 | resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} 177 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 178 | peerDependencies: 179 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 180 | eslint: ^8.57.0 || ^9.0.0 181 | typescript: '>=4.8.4 <5.9.0' 182 | 183 | '@typescript-eslint/parser@8.32.1': 184 | resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} 185 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 186 | peerDependencies: 187 | eslint: ^8.57.0 || ^9.0.0 188 | typescript: '>=4.8.4 <5.9.0' 189 | 190 | '@typescript-eslint/scope-manager@8.32.1': 191 | resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} 192 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 193 | 194 | '@typescript-eslint/type-utils@8.32.1': 195 | resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} 196 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 197 | peerDependencies: 198 | eslint: ^8.57.0 || ^9.0.0 199 | typescript: '>=4.8.4 <5.9.0' 200 | 201 | '@typescript-eslint/types@8.32.1': 202 | resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} 203 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 204 | 205 | '@typescript-eslint/typescript-estree@8.32.1': 206 | resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} 207 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 208 | peerDependencies: 209 | typescript: '>=4.8.4 <5.9.0' 210 | 211 | '@typescript-eslint/utils@8.32.1': 212 | resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} 213 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 214 | peerDependencies: 215 | eslint: ^8.57.0 || ^9.0.0 216 | typescript: '>=4.8.4 <5.9.0' 217 | 218 | '@typescript-eslint/visitor-keys@8.32.1': 219 | resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} 220 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 221 | 222 | '@unrs/resolver-binding-darwin-arm64@1.7.2': 223 | resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==} 224 | cpu: [arm64] 225 | os: [darwin] 226 | 227 | '@unrs/resolver-binding-darwin-x64@1.7.2': 228 | resolution: {integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==} 229 | cpu: [x64] 230 | os: [darwin] 231 | 232 | '@unrs/resolver-binding-freebsd-x64@1.7.2': 233 | resolution: {integrity: sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==} 234 | cpu: [x64] 235 | os: [freebsd] 236 | 237 | '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': 238 | resolution: {integrity: sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==} 239 | cpu: [arm] 240 | os: [linux] 241 | 242 | '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': 243 | resolution: {integrity: sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==} 244 | cpu: [arm] 245 | os: [linux] 246 | 247 | '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': 248 | resolution: {integrity: sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==} 249 | cpu: [arm64] 250 | os: [linux] 251 | 252 | '@unrs/resolver-binding-linux-arm64-musl@1.7.2': 253 | resolution: {integrity: sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==} 254 | cpu: [arm64] 255 | os: [linux] 256 | 257 | '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': 258 | resolution: {integrity: sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==} 259 | cpu: [ppc64] 260 | os: [linux] 261 | 262 | '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': 263 | resolution: {integrity: sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==} 264 | cpu: [riscv64] 265 | os: [linux] 266 | 267 | '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': 268 | resolution: {integrity: sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==} 269 | cpu: [riscv64] 270 | os: [linux] 271 | 272 | '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': 273 | resolution: {integrity: sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==} 274 | cpu: [s390x] 275 | os: [linux] 276 | 277 | '@unrs/resolver-binding-linux-x64-gnu@1.7.2': 278 | resolution: {integrity: sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==} 279 | cpu: [x64] 280 | os: [linux] 281 | 282 | '@unrs/resolver-binding-linux-x64-musl@1.7.2': 283 | resolution: {integrity: sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==} 284 | cpu: [x64] 285 | os: [linux] 286 | 287 | '@unrs/resolver-binding-wasm32-wasi@1.7.2': 288 | resolution: {integrity: sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==} 289 | engines: {node: '>=14.0.0'} 290 | cpu: [wasm32] 291 | 292 | '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': 293 | resolution: {integrity: sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==} 294 | cpu: [arm64] 295 | os: [win32] 296 | 297 | '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': 298 | resolution: {integrity: sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==} 299 | cpu: [ia32] 300 | os: [win32] 301 | 302 | '@unrs/resolver-binding-win32-x64-msvc@1.7.2': 303 | resolution: {integrity: sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==} 304 | cpu: [x64] 305 | os: [win32] 306 | 307 | acorn-jsx@5.3.2: 308 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 309 | peerDependencies: 310 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 311 | 312 | acorn@8.14.1: 313 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 314 | engines: {node: '>=0.4.0'} 315 | hasBin: true 316 | 317 | ajv@6.12.6: 318 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 319 | 320 | ansi-styles@4.3.0: 321 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 322 | engines: {node: '>=8'} 323 | 324 | argparse@2.0.1: 325 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 326 | 327 | aria-query@5.3.2: 328 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 329 | engines: {node: '>= 0.4'} 330 | 331 | axobject-query@4.1.0: 332 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 333 | engines: {node: '>= 0.4'} 334 | 335 | balanced-match@1.0.2: 336 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 337 | 338 | brace-expansion@1.1.11: 339 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 340 | 341 | brace-expansion@2.0.1: 342 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 343 | 344 | braces@3.0.3: 345 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 346 | engines: {node: '>=8'} 347 | 348 | callsites@3.1.0: 349 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 350 | engines: {node: '>=6'} 351 | 352 | chalk@4.1.2: 353 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 354 | engines: {node: '>=10'} 355 | 356 | clean-publish@5.2.0: 357 | resolution: {integrity: sha512-X7rMjBhW9FpXJnOdB9FUvag8LswsBFZdonfuT7/M3J4EYgFh4j+E6jZPuHjiE5SL9MG29GcVQi18ttqiK7jZfw==} 358 | engines: {node: '>= 18.0.0'} 359 | hasBin: true 360 | 361 | clsx@2.1.1: 362 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 363 | engines: {node: '>=6'} 364 | 365 | color-convert@2.0.1: 366 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 367 | engines: {node: '>=7.0.0'} 368 | 369 | color-name@1.1.4: 370 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 371 | 372 | comment-parser@1.4.1: 373 | resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} 374 | engines: {node: '>= 12.0.0'} 375 | 376 | concat-map@0.0.1: 377 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 378 | 379 | cross-spawn@7.0.6: 380 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 381 | engines: {node: '>= 8'} 382 | 383 | cssesc@3.0.0: 384 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 385 | engines: {node: '>=4'} 386 | hasBin: true 387 | 388 | debug@3.2.7: 389 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 390 | peerDependencies: 391 | supports-color: '*' 392 | peerDependenciesMeta: 393 | supports-color: 394 | optional: true 395 | 396 | debug@4.4.1: 397 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 398 | engines: {node: '>=6.0'} 399 | peerDependencies: 400 | supports-color: '*' 401 | peerDependenciesMeta: 402 | supports-color: 403 | optional: true 404 | 405 | deep-is@0.1.4: 406 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 407 | 408 | enhanced-resolve@5.18.1: 409 | resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} 410 | engines: {node: '>=10.13.0'} 411 | 412 | escape-string-regexp@4.0.0: 413 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 414 | engines: {node: '>=10'} 415 | 416 | eslint-compat-utils@0.5.1: 417 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 418 | engines: {node: '>=12'} 419 | peerDependencies: 420 | eslint: '>=6.0.0' 421 | 422 | eslint-import-resolver-node@0.3.9: 423 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 424 | 425 | eslint-plugin-es-x@7.8.0: 426 | resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} 427 | engines: {node: ^14.18.0 || >=16.0.0} 428 | peerDependencies: 429 | eslint: '>=8' 430 | 431 | eslint-plugin-import-x@4.12.2: 432 | resolution: {integrity: sha512-0jVUgJQipbs0yUfLe7LwYD6p8rIGqCysWZdyJFgkPzDyJgiKpuCaXlywKUAWgJ6u1nLpfrdt21B60OUkupyBrQ==} 433 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 434 | peerDependencies: 435 | eslint: ^8.57.0 || ^9.0.0 436 | 437 | eslint-plugin-n@17.18.0: 438 | resolution: {integrity: sha512-hvZ/HusueqTJ7VDLoCpjN0hx4N4+jHIWTXD4TMLHy9F23XkDagR9v+xQWRWR57yY55GPF8NnD4ox9iGTxirY8A==} 439 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 440 | peerDependencies: 441 | eslint: '>=8.23.0' 442 | 443 | eslint-plugin-perfectionist@4.13.0: 444 | resolution: {integrity: sha512-dsPwXwV7IrG26PJ+h1crQ1f5kxay/gQAU0NJnbVTQc91l5Mz9kPjyIZ7fXgie+QSgi8a+0TwGbfaJx+GIhzuoQ==} 445 | engines: {node: ^18.0.0 || >=20.0.0} 446 | peerDependencies: 447 | eslint: '>=8.45.0' 448 | 449 | eslint-plugin-prefer-let@4.0.0: 450 | resolution: {integrity: sha512-X4ep5PMO1320HKaNC9DM5+p6XvOhwv+RcqGjhv3aiw9iAtHhiFtdIUB5l0Zya0iM22ys2BGKzrNI9Xpw/ZHooQ==} 451 | engines: {node: '>=0.10.0'} 452 | 453 | eslint-plugin-promise@7.2.1: 454 | resolution: {integrity: sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==} 455 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 456 | peerDependencies: 457 | eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 458 | 459 | eslint-plugin-svelte@3.8.1: 460 | resolution: {integrity: sha512-w6NQifz1xBIFcs4XMLYT36xukgN1xgzoPGk1nJLC1UeZ8O4CUCCSZx1tgwq3yRNkMSXMUqbMJjslFweWsDlAoA==} 461 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 462 | peerDependencies: 463 | eslint: ^8.57.1 || ^9.0.0 464 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 465 | peerDependenciesMeta: 466 | svelte: 467 | optional: true 468 | 469 | eslint-scope@8.3.0: 470 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 471 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 472 | 473 | eslint-visitor-keys@3.4.3: 474 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 475 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 476 | 477 | eslint-visitor-keys@4.2.0: 478 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 479 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 480 | 481 | eslint@9.27.0: 482 | resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} 483 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 484 | hasBin: true 485 | peerDependencies: 486 | jiti: '*' 487 | peerDependenciesMeta: 488 | jiti: 489 | optional: true 490 | 491 | esm-env@1.2.2: 492 | resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} 493 | 494 | espree@10.3.0: 495 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 496 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 497 | 498 | esquery@1.6.0: 499 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 500 | engines: {node: '>=0.10'} 501 | 502 | esrap@1.4.6: 503 | resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==} 504 | 505 | esrecurse@4.3.0: 506 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 507 | engines: {node: '>=4.0'} 508 | 509 | estraverse@5.3.0: 510 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 511 | engines: {node: '>=4.0'} 512 | 513 | esutils@2.0.3: 514 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 515 | engines: {node: '>=0.10.0'} 516 | 517 | fast-deep-equal@3.1.3: 518 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 519 | 520 | fast-glob@3.3.3: 521 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 522 | engines: {node: '>=8.6.0'} 523 | 524 | fast-json-stable-stringify@2.1.0: 525 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 526 | 527 | fast-levenshtein@2.0.6: 528 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 529 | 530 | fastq@1.19.1: 531 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 532 | 533 | file-entry-cache@8.0.0: 534 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 535 | engines: {node: '>=16.0.0'} 536 | 537 | fill-range@7.1.1: 538 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 539 | engines: {node: '>=8'} 540 | 541 | find-up@5.0.0: 542 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 543 | engines: {node: '>=10'} 544 | 545 | flat-cache@4.0.1: 546 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 547 | engines: {node: '>=16'} 548 | 549 | flatted@3.3.3: 550 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 551 | 552 | function-bind@1.1.2: 553 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 554 | 555 | get-tsconfig@4.10.0: 556 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} 557 | 558 | glob-parent@5.1.2: 559 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 560 | engines: {node: '>= 6'} 561 | 562 | glob-parent@6.0.2: 563 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 564 | engines: {node: '>=10.13.0'} 565 | 566 | globals@14.0.0: 567 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 568 | engines: {node: '>=18'} 569 | 570 | globals@15.15.0: 571 | resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 572 | engines: {node: '>=18'} 573 | 574 | globals@16.1.0: 575 | resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} 576 | engines: {node: '>=18'} 577 | 578 | graceful-fs@4.2.11: 579 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 580 | 581 | graphemer@1.4.0: 582 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 583 | 584 | has-flag@4.0.0: 585 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 586 | engines: {node: '>=8'} 587 | 588 | hasown@2.0.2: 589 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 590 | engines: {node: '>= 0.4'} 591 | 592 | ignore@5.3.2: 593 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 594 | engines: {node: '>= 4'} 595 | 596 | ignore@7.0.4: 597 | resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} 598 | engines: {node: '>= 4'} 599 | 600 | import-fresh@3.3.1: 601 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 602 | engines: {node: '>=6'} 603 | 604 | imurmurhash@0.1.4: 605 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 606 | engines: {node: '>=0.8.19'} 607 | 608 | is-core-module@2.16.1: 609 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 610 | engines: {node: '>= 0.4'} 611 | 612 | is-extglob@2.1.1: 613 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 614 | engines: {node: '>=0.10.0'} 615 | 616 | is-glob@4.0.3: 617 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 618 | engines: {node: '>=0.10.0'} 619 | 620 | is-number@7.0.0: 621 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 622 | engines: {node: '>=0.12.0'} 623 | 624 | is-reference@3.0.3: 625 | resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 626 | 627 | isexe@2.0.0: 628 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 629 | 630 | js-yaml@4.1.0: 631 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 632 | hasBin: true 633 | 634 | json-buffer@3.0.1: 635 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 636 | 637 | json-schema-traverse@0.4.1: 638 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 639 | 640 | json-stable-stringify-without-jsonify@1.0.1: 641 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 642 | 643 | keyv@4.5.4: 644 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 645 | 646 | known-css-properties@0.36.0: 647 | resolution: {integrity: sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==} 648 | 649 | levn@0.4.1: 650 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 651 | engines: {node: '>= 0.8.0'} 652 | 653 | lilconfig@2.1.0: 654 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 655 | engines: {node: '>=10'} 656 | 657 | lilconfig@3.1.3: 658 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 659 | engines: {node: '>=14'} 660 | 661 | locate-character@3.0.0: 662 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 663 | 664 | locate-path@6.0.0: 665 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 666 | engines: {node: '>=10'} 667 | 668 | lodash.merge@4.6.2: 669 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 670 | 671 | magic-string@0.30.17: 672 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 673 | 674 | merge2@1.4.1: 675 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 676 | engines: {node: '>= 8'} 677 | 678 | micromatch@4.0.8: 679 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 680 | engines: {node: '>=8.6'} 681 | 682 | minimatch@10.0.1: 683 | resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} 684 | engines: {node: 20 || >=22} 685 | 686 | minimatch@3.1.2: 687 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 688 | 689 | minimatch@9.0.5: 690 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 691 | engines: {node: '>=16 || 14 >=14.17'} 692 | 693 | ms@2.1.3: 694 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 695 | 696 | nanoid@3.3.11: 697 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 698 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 699 | hasBin: true 700 | 701 | napi-postinstall@0.2.4: 702 | resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==} 703 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 704 | hasBin: true 705 | 706 | natural-compare@1.4.0: 707 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 708 | 709 | natural-orderby@5.0.0: 710 | resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} 711 | engines: {node: '>=18'} 712 | 713 | optionator@0.9.4: 714 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 715 | engines: {node: '>= 0.8.0'} 716 | 717 | p-limit@3.1.0: 718 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 719 | engines: {node: '>=10'} 720 | 721 | p-locate@5.0.0: 722 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 723 | engines: {node: '>=10'} 724 | 725 | parent-module@1.0.1: 726 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 727 | engines: {node: '>=6'} 728 | 729 | path-exists@4.0.0: 730 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 731 | engines: {node: '>=8'} 732 | 733 | path-key@3.1.1: 734 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 735 | engines: {node: '>=8'} 736 | 737 | path-parse@1.0.7: 738 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 739 | 740 | picocolors@1.1.1: 741 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 742 | 743 | picomatch@2.3.1: 744 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 745 | engines: {node: '>=8.6'} 746 | 747 | postcss-load-config@3.1.4: 748 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 749 | engines: {node: '>= 10'} 750 | peerDependencies: 751 | postcss: '>=8.0.9' 752 | ts-node: '>=9.0.0' 753 | peerDependenciesMeta: 754 | postcss: 755 | optional: true 756 | ts-node: 757 | optional: true 758 | 759 | postcss-safe-parser@7.0.1: 760 | resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} 761 | engines: {node: '>=18.0'} 762 | peerDependencies: 763 | postcss: ^8.4.31 764 | 765 | postcss-scss@4.0.9: 766 | resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} 767 | engines: {node: '>=12.0'} 768 | peerDependencies: 769 | postcss: ^8.4.29 770 | 771 | postcss-selector-parser@7.1.0: 772 | resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} 773 | engines: {node: '>=4'} 774 | 775 | postcss@8.5.3: 776 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 777 | engines: {node: ^10 || ^12 || >=14} 778 | 779 | prelude-ls@1.2.1: 780 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 781 | engines: {node: '>= 0.8.0'} 782 | 783 | punycode@2.3.1: 784 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 785 | engines: {node: '>=6'} 786 | 787 | queue-microtask@1.2.3: 788 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 789 | 790 | requireindex@1.2.0: 791 | resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} 792 | engines: {node: '>=0.10.5'} 793 | 794 | resolve-from@4.0.0: 795 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 796 | engines: {node: '>=4'} 797 | 798 | resolve-pkg-maps@1.0.0: 799 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 800 | 801 | resolve@1.22.10: 802 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 803 | engines: {node: '>= 0.4'} 804 | hasBin: true 805 | 806 | reusify@1.1.0: 807 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 808 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 809 | 810 | run-parallel@1.2.0: 811 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 812 | 813 | semver@7.7.2: 814 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 815 | engines: {node: '>=10'} 816 | hasBin: true 817 | 818 | shebang-command@2.0.0: 819 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 820 | engines: {node: '>=8'} 821 | 822 | shebang-regex@3.0.0: 823 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 824 | engines: {node: '>=8'} 825 | 826 | source-map-js@1.2.1: 827 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 828 | engines: {node: '>=0.10.0'} 829 | 830 | stable-hash@0.0.5: 831 | resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} 832 | 833 | strip-json-comments@3.1.1: 834 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 835 | engines: {node: '>=8'} 836 | 837 | supports-color@7.2.0: 838 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 839 | engines: {node: '>=8'} 840 | 841 | supports-preserve-symlinks-flag@1.0.0: 842 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 843 | engines: {node: '>= 0.4'} 844 | 845 | svelte-eslint-parser@1.2.0: 846 | resolution: {integrity: sha512-mbPtajIeuiyU80BEyGvwAktBeTX7KCr5/0l+uRGLq1dafwRNrjfM5kHGJScEBlPG3ipu6dJqfW/k0/fujvIEVw==} 847 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 848 | peerDependencies: 849 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 850 | peerDependenciesMeta: 851 | svelte: 852 | optional: true 853 | 854 | svelte@5.31.1: 855 | resolution: {integrity: sha512-09fup3U7NQobUCUJnLhed6pxG6MzUS8rPsALB5Jr8m8u3pVKITs0ejYiKS/wsVjfkXHvKc2g260KA8o7dWypHA==} 856 | engines: {node: '>=18'} 857 | 858 | tapable@2.2.2: 859 | resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} 860 | engines: {node: '>=6'} 861 | 862 | to-regex-range@5.0.1: 863 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 864 | engines: {node: '>=8.0'} 865 | 866 | ts-api-utils@2.1.0: 867 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 868 | engines: {node: '>=18.12'} 869 | peerDependencies: 870 | typescript: '>=4.8.4' 871 | 872 | tslib@2.8.1: 873 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 874 | 875 | type-check@0.4.0: 876 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 877 | engines: {node: '>= 0.8.0'} 878 | 879 | typescript-eslint@8.32.1: 880 | resolution: {integrity: sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==} 881 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 882 | peerDependencies: 883 | eslint: ^8.57.0 || ^9.0.0 884 | typescript: '>=4.8.4 <5.9.0' 885 | 886 | typescript@5.8.3: 887 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 888 | engines: {node: '>=14.17'} 889 | hasBin: true 890 | 891 | unrs-resolver@1.7.2: 892 | resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} 893 | 894 | uri-js@4.4.1: 895 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 896 | 897 | util-deprecate@1.0.2: 898 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 899 | 900 | which@2.0.2: 901 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 902 | engines: {node: '>= 8'} 903 | hasBin: true 904 | 905 | word-wrap@1.2.5: 906 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 907 | engines: {node: '>=0.10.0'} 908 | 909 | yaml@1.10.2: 910 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 911 | engines: {node: '>= 6'} 912 | 913 | yocto-queue@0.1.0: 914 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 915 | engines: {node: '>=10'} 916 | 917 | zimmerframe@1.1.2: 918 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} 919 | 920 | snapshots: 921 | 922 | '@ampproject/remapping@2.3.0': 923 | dependencies: 924 | '@jridgewell/gen-mapping': 0.3.8 925 | '@jridgewell/trace-mapping': 0.3.25 926 | 927 | '@emnapi/core@1.4.3': 928 | dependencies: 929 | '@emnapi/wasi-threads': 1.0.2 930 | tslib: 2.8.1 931 | optional: true 932 | 933 | '@emnapi/runtime@1.4.3': 934 | dependencies: 935 | tslib: 2.8.1 936 | optional: true 937 | 938 | '@emnapi/wasi-threads@1.0.2': 939 | dependencies: 940 | tslib: 2.8.1 941 | optional: true 942 | 943 | '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0)': 944 | dependencies: 945 | eslint: 9.27.0 946 | eslint-visitor-keys: 3.4.3 947 | 948 | '@eslint-community/regexpp@4.12.1': {} 949 | 950 | '@eslint/config-array@0.20.0': 951 | dependencies: 952 | '@eslint/object-schema': 2.1.6 953 | debug: 4.4.1 954 | minimatch: 3.1.2 955 | transitivePeerDependencies: 956 | - supports-color 957 | 958 | '@eslint/config-helpers@0.2.2': {} 959 | 960 | '@eslint/core@0.14.0': 961 | dependencies: 962 | '@types/json-schema': 7.0.15 963 | 964 | '@eslint/eslintrc@3.3.1': 965 | dependencies: 966 | ajv: 6.12.6 967 | debug: 4.4.1 968 | espree: 10.3.0 969 | globals: 14.0.0 970 | ignore: 5.3.2 971 | import-fresh: 3.3.1 972 | js-yaml: 4.1.0 973 | minimatch: 3.1.2 974 | strip-json-comments: 3.1.1 975 | transitivePeerDependencies: 976 | - supports-color 977 | 978 | '@eslint/js@9.27.0': {} 979 | 980 | '@eslint/object-schema@2.1.6': {} 981 | 982 | '@eslint/plugin-kit@0.3.1': 983 | dependencies: 984 | '@eslint/core': 0.14.0 985 | levn: 0.4.1 986 | 987 | '@humanfs/core@0.19.1': {} 988 | 989 | '@humanfs/node@0.16.6': 990 | dependencies: 991 | '@humanfs/core': 0.19.1 992 | '@humanwhocodes/retry': 0.3.1 993 | 994 | '@humanwhocodes/module-importer@1.0.1': {} 995 | 996 | '@humanwhocodes/retry@0.3.1': {} 997 | 998 | '@humanwhocodes/retry@0.4.3': {} 999 | 1000 | '@jridgewell/gen-mapping@0.3.8': 1001 | dependencies: 1002 | '@jridgewell/set-array': 1.2.1 1003 | '@jridgewell/sourcemap-codec': 1.5.0 1004 | '@jridgewell/trace-mapping': 0.3.25 1005 | 1006 | '@jridgewell/resolve-uri@3.1.2': {} 1007 | 1008 | '@jridgewell/set-array@1.2.1': {} 1009 | 1010 | '@jridgewell/sourcemap-codec@1.5.0': {} 1011 | 1012 | '@jridgewell/trace-mapping@0.3.25': 1013 | dependencies: 1014 | '@jridgewell/resolve-uri': 3.1.2 1015 | '@jridgewell/sourcemap-codec': 1.5.0 1016 | 1017 | '@napi-rs/wasm-runtime@0.2.10': 1018 | dependencies: 1019 | '@emnapi/core': 1.4.3 1020 | '@emnapi/runtime': 1.4.3 1021 | '@tybys/wasm-util': 0.9.0 1022 | optional: true 1023 | 1024 | '@nodelib/fs.scandir@2.1.5': 1025 | dependencies: 1026 | '@nodelib/fs.stat': 2.0.5 1027 | run-parallel: 1.2.0 1028 | 1029 | '@nodelib/fs.stat@2.0.5': {} 1030 | 1031 | '@nodelib/fs.walk@1.2.8': 1032 | dependencies: 1033 | '@nodelib/fs.scandir': 2.1.5 1034 | fastq: 1.19.1 1035 | 1036 | '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)': 1037 | dependencies: 1038 | acorn: 8.14.1 1039 | 1040 | '@tybys/wasm-util@0.9.0': 1041 | dependencies: 1042 | tslib: 2.8.1 1043 | optional: true 1044 | 1045 | '@types/estree@1.0.7': {} 1046 | 1047 | '@types/json-schema@7.0.15': {} 1048 | 1049 | '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3)': 1050 | dependencies: 1051 | '@eslint-community/regexpp': 4.12.1 1052 | '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) 1053 | '@typescript-eslint/scope-manager': 8.32.1 1054 | '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) 1055 | '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) 1056 | '@typescript-eslint/visitor-keys': 8.32.1 1057 | eslint: 9.27.0 1058 | graphemer: 1.4.0 1059 | ignore: 7.0.4 1060 | natural-compare: 1.4.0 1061 | ts-api-utils: 2.1.0(typescript@5.8.3) 1062 | typescript: 5.8.3 1063 | transitivePeerDependencies: 1064 | - supports-color 1065 | 1066 | '@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3)': 1067 | dependencies: 1068 | '@typescript-eslint/scope-manager': 8.32.1 1069 | '@typescript-eslint/types': 8.32.1 1070 | '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) 1071 | '@typescript-eslint/visitor-keys': 8.32.1 1072 | debug: 4.4.1 1073 | eslint: 9.27.0 1074 | typescript: 5.8.3 1075 | transitivePeerDependencies: 1076 | - supports-color 1077 | 1078 | '@typescript-eslint/scope-manager@8.32.1': 1079 | dependencies: 1080 | '@typescript-eslint/types': 8.32.1 1081 | '@typescript-eslint/visitor-keys': 8.32.1 1082 | 1083 | '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': 1084 | dependencies: 1085 | '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) 1086 | '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) 1087 | debug: 4.4.1 1088 | eslint: 9.27.0 1089 | ts-api-utils: 2.1.0(typescript@5.8.3) 1090 | typescript: 5.8.3 1091 | transitivePeerDependencies: 1092 | - supports-color 1093 | 1094 | '@typescript-eslint/types@8.32.1': {} 1095 | 1096 | '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': 1097 | dependencies: 1098 | '@typescript-eslint/types': 8.32.1 1099 | '@typescript-eslint/visitor-keys': 8.32.1 1100 | debug: 4.4.1 1101 | fast-glob: 3.3.3 1102 | is-glob: 4.0.3 1103 | minimatch: 9.0.5 1104 | semver: 7.7.2 1105 | ts-api-utils: 2.1.0(typescript@5.8.3) 1106 | typescript: 5.8.3 1107 | transitivePeerDependencies: 1108 | - supports-color 1109 | 1110 | '@typescript-eslint/utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': 1111 | dependencies: 1112 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 1113 | '@typescript-eslint/scope-manager': 8.32.1 1114 | '@typescript-eslint/types': 8.32.1 1115 | '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) 1116 | eslint: 9.27.0 1117 | typescript: 5.8.3 1118 | transitivePeerDependencies: 1119 | - supports-color 1120 | 1121 | '@typescript-eslint/visitor-keys@8.32.1': 1122 | dependencies: 1123 | '@typescript-eslint/types': 8.32.1 1124 | eslint-visitor-keys: 4.2.0 1125 | 1126 | '@unrs/resolver-binding-darwin-arm64@1.7.2': 1127 | optional: true 1128 | 1129 | '@unrs/resolver-binding-darwin-x64@1.7.2': 1130 | optional: true 1131 | 1132 | '@unrs/resolver-binding-freebsd-x64@1.7.2': 1133 | optional: true 1134 | 1135 | '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': 1136 | optional: true 1137 | 1138 | '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': 1139 | optional: true 1140 | 1141 | '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': 1142 | optional: true 1143 | 1144 | '@unrs/resolver-binding-linux-arm64-musl@1.7.2': 1145 | optional: true 1146 | 1147 | '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': 1148 | optional: true 1149 | 1150 | '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': 1151 | optional: true 1152 | 1153 | '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': 1154 | optional: true 1155 | 1156 | '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': 1157 | optional: true 1158 | 1159 | '@unrs/resolver-binding-linux-x64-gnu@1.7.2': 1160 | optional: true 1161 | 1162 | '@unrs/resolver-binding-linux-x64-musl@1.7.2': 1163 | optional: true 1164 | 1165 | '@unrs/resolver-binding-wasm32-wasi@1.7.2': 1166 | dependencies: 1167 | '@napi-rs/wasm-runtime': 0.2.10 1168 | optional: true 1169 | 1170 | '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': 1171 | optional: true 1172 | 1173 | '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': 1174 | optional: true 1175 | 1176 | '@unrs/resolver-binding-win32-x64-msvc@1.7.2': 1177 | optional: true 1178 | 1179 | acorn-jsx@5.3.2(acorn@8.14.1): 1180 | dependencies: 1181 | acorn: 8.14.1 1182 | 1183 | acorn@8.14.1: {} 1184 | 1185 | ajv@6.12.6: 1186 | dependencies: 1187 | fast-deep-equal: 3.1.3 1188 | fast-json-stable-stringify: 2.1.0 1189 | json-schema-traverse: 0.4.1 1190 | uri-js: 4.4.1 1191 | 1192 | ansi-styles@4.3.0: 1193 | dependencies: 1194 | color-convert: 2.0.1 1195 | 1196 | argparse@2.0.1: {} 1197 | 1198 | aria-query@5.3.2: {} 1199 | 1200 | axobject-query@4.1.0: {} 1201 | 1202 | balanced-match@1.0.2: {} 1203 | 1204 | brace-expansion@1.1.11: 1205 | dependencies: 1206 | balanced-match: 1.0.2 1207 | concat-map: 0.0.1 1208 | 1209 | brace-expansion@2.0.1: 1210 | dependencies: 1211 | balanced-match: 1.0.2 1212 | 1213 | braces@3.0.3: 1214 | dependencies: 1215 | fill-range: 7.1.1 1216 | 1217 | callsites@3.1.0: {} 1218 | 1219 | chalk@4.1.2: 1220 | dependencies: 1221 | ansi-styles: 4.3.0 1222 | supports-color: 7.2.0 1223 | 1224 | clean-publish@5.2.0: 1225 | dependencies: 1226 | cross-spawn: 7.0.6 1227 | fast-glob: 3.3.3 1228 | lilconfig: 3.1.3 1229 | micromatch: 4.0.8 1230 | 1231 | clsx@2.1.1: {} 1232 | 1233 | color-convert@2.0.1: 1234 | dependencies: 1235 | color-name: 1.1.4 1236 | 1237 | color-name@1.1.4: {} 1238 | 1239 | comment-parser@1.4.1: {} 1240 | 1241 | concat-map@0.0.1: {} 1242 | 1243 | cross-spawn@7.0.6: 1244 | dependencies: 1245 | path-key: 3.1.1 1246 | shebang-command: 2.0.0 1247 | which: 2.0.2 1248 | 1249 | cssesc@3.0.0: {} 1250 | 1251 | debug@3.2.7: 1252 | dependencies: 1253 | ms: 2.1.3 1254 | 1255 | debug@4.4.1: 1256 | dependencies: 1257 | ms: 2.1.3 1258 | 1259 | deep-is@0.1.4: {} 1260 | 1261 | enhanced-resolve@5.18.1: 1262 | dependencies: 1263 | graceful-fs: 4.2.11 1264 | tapable: 2.2.2 1265 | 1266 | escape-string-regexp@4.0.0: {} 1267 | 1268 | eslint-compat-utils@0.5.1(eslint@9.27.0): 1269 | dependencies: 1270 | eslint: 9.27.0 1271 | semver: 7.7.2 1272 | 1273 | eslint-import-resolver-node@0.3.9: 1274 | dependencies: 1275 | debug: 3.2.7 1276 | is-core-module: 2.16.1 1277 | resolve: 1.22.10 1278 | transitivePeerDependencies: 1279 | - supports-color 1280 | 1281 | eslint-plugin-es-x@7.8.0(eslint@9.27.0): 1282 | dependencies: 1283 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 1284 | '@eslint-community/regexpp': 4.12.1 1285 | eslint: 9.27.0 1286 | eslint-compat-utils: 0.5.1(eslint@9.27.0) 1287 | 1288 | eslint-plugin-import-x@4.12.2(eslint@9.27.0)(typescript@5.8.3): 1289 | dependencies: 1290 | '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) 1291 | comment-parser: 1.4.1 1292 | debug: 4.4.1 1293 | eslint: 9.27.0 1294 | eslint-import-resolver-node: 0.3.9 1295 | get-tsconfig: 4.10.0 1296 | is-glob: 4.0.3 1297 | minimatch: 10.0.1 1298 | semver: 7.7.2 1299 | stable-hash: 0.0.5 1300 | tslib: 2.8.1 1301 | unrs-resolver: 1.7.2 1302 | transitivePeerDependencies: 1303 | - supports-color 1304 | - typescript 1305 | 1306 | eslint-plugin-n@17.18.0(eslint@9.27.0): 1307 | dependencies: 1308 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 1309 | enhanced-resolve: 5.18.1 1310 | eslint: 9.27.0 1311 | eslint-plugin-es-x: 7.8.0(eslint@9.27.0) 1312 | get-tsconfig: 4.10.0 1313 | globals: 15.15.0 1314 | ignore: 5.3.2 1315 | minimatch: 9.0.5 1316 | semver: 7.7.2 1317 | 1318 | eslint-plugin-perfectionist@4.13.0(eslint@9.27.0)(typescript@5.8.3): 1319 | dependencies: 1320 | '@typescript-eslint/types': 8.32.1 1321 | '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) 1322 | eslint: 9.27.0 1323 | natural-orderby: 5.0.0 1324 | transitivePeerDependencies: 1325 | - supports-color 1326 | - typescript 1327 | 1328 | eslint-plugin-prefer-let@4.0.0: 1329 | dependencies: 1330 | requireindex: 1.2.0 1331 | 1332 | eslint-plugin-promise@7.2.1(eslint@9.27.0): 1333 | dependencies: 1334 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 1335 | eslint: 9.27.0 1336 | 1337 | eslint-plugin-svelte@3.8.1(eslint@9.27.0)(svelte@5.31.1): 1338 | dependencies: 1339 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 1340 | '@jridgewell/sourcemap-codec': 1.5.0 1341 | eslint: 9.27.0 1342 | esutils: 2.0.3 1343 | globals: 16.1.0 1344 | known-css-properties: 0.36.0 1345 | postcss: 8.5.3 1346 | postcss-load-config: 3.1.4(postcss@8.5.3) 1347 | postcss-safe-parser: 7.0.1(postcss@8.5.3) 1348 | semver: 7.7.2 1349 | svelte-eslint-parser: 1.2.0(svelte@5.31.1) 1350 | optionalDependencies: 1351 | svelte: 5.31.1 1352 | transitivePeerDependencies: 1353 | - ts-node 1354 | 1355 | eslint-scope@8.3.0: 1356 | dependencies: 1357 | esrecurse: 4.3.0 1358 | estraverse: 5.3.0 1359 | 1360 | eslint-visitor-keys@3.4.3: {} 1361 | 1362 | eslint-visitor-keys@4.2.0: {} 1363 | 1364 | eslint@9.27.0: 1365 | dependencies: 1366 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) 1367 | '@eslint-community/regexpp': 4.12.1 1368 | '@eslint/config-array': 0.20.0 1369 | '@eslint/config-helpers': 0.2.2 1370 | '@eslint/core': 0.14.0 1371 | '@eslint/eslintrc': 3.3.1 1372 | '@eslint/js': 9.27.0 1373 | '@eslint/plugin-kit': 0.3.1 1374 | '@humanfs/node': 0.16.6 1375 | '@humanwhocodes/module-importer': 1.0.1 1376 | '@humanwhocodes/retry': 0.4.3 1377 | '@types/estree': 1.0.7 1378 | '@types/json-schema': 7.0.15 1379 | ajv: 6.12.6 1380 | chalk: 4.1.2 1381 | cross-spawn: 7.0.6 1382 | debug: 4.4.1 1383 | escape-string-regexp: 4.0.0 1384 | eslint-scope: 8.3.0 1385 | eslint-visitor-keys: 4.2.0 1386 | espree: 10.3.0 1387 | esquery: 1.6.0 1388 | esutils: 2.0.3 1389 | fast-deep-equal: 3.1.3 1390 | file-entry-cache: 8.0.0 1391 | find-up: 5.0.0 1392 | glob-parent: 6.0.2 1393 | ignore: 5.3.2 1394 | imurmurhash: 0.1.4 1395 | is-glob: 4.0.3 1396 | json-stable-stringify-without-jsonify: 1.0.1 1397 | lodash.merge: 4.6.2 1398 | minimatch: 3.1.2 1399 | natural-compare: 1.4.0 1400 | optionator: 0.9.4 1401 | transitivePeerDependencies: 1402 | - supports-color 1403 | 1404 | esm-env@1.2.2: {} 1405 | 1406 | espree@10.3.0: 1407 | dependencies: 1408 | acorn: 8.14.1 1409 | acorn-jsx: 5.3.2(acorn@8.14.1) 1410 | eslint-visitor-keys: 4.2.0 1411 | 1412 | esquery@1.6.0: 1413 | dependencies: 1414 | estraverse: 5.3.0 1415 | 1416 | esrap@1.4.6: 1417 | dependencies: 1418 | '@jridgewell/sourcemap-codec': 1.5.0 1419 | 1420 | esrecurse@4.3.0: 1421 | dependencies: 1422 | estraverse: 5.3.0 1423 | 1424 | estraverse@5.3.0: {} 1425 | 1426 | esutils@2.0.3: {} 1427 | 1428 | fast-deep-equal@3.1.3: {} 1429 | 1430 | fast-glob@3.3.3: 1431 | dependencies: 1432 | '@nodelib/fs.stat': 2.0.5 1433 | '@nodelib/fs.walk': 1.2.8 1434 | glob-parent: 5.1.2 1435 | merge2: 1.4.1 1436 | micromatch: 4.0.8 1437 | 1438 | fast-json-stable-stringify@2.1.0: {} 1439 | 1440 | fast-levenshtein@2.0.6: {} 1441 | 1442 | fastq@1.19.1: 1443 | dependencies: 1444 | reusify: 1.1.0 1445 | 1446 | file-entry-cache@8.0.0: 1447 | dependencies: 1448 | flat-cache: 4.0.1 1449 | 1450 | fill-range@7.1.1: 1451 | dependencies: 1452 | to-regex-range: 5.0.1 1453 | 1454 | find-up@5.0.0: 1455 | dependencies: 1456 | locate-path: 6.0.0 1457 | path-exists: 4.0.0 1458 | 1459 | flat-cache@4.0.1: 1460 | dependencies: 1461 | flatted: 3.3.3 1462 | keyv: 4.5.4 1463 | 1464 | flatted@3.3.3: {} 1465 | 1466 | function-bind@1.1.2: {} 1467 | 1468 | get-tsconfig@4.10.0: 1469 | dependencies: 1470 | resolve-pkg-maps: 1.0.0 1471 | 1472 | glob-parent@5.1.2: 1473 | dependencies: 1474 | is-glob: 4.0.3 1475 | 1476 | glob-parent@6.0.2: 1477 | dependencies: 1478 | is-glob: 4.0.3 1479 | 1480 | globals@14.0.0: {} 1481 | 1482 | globals@15.15.0: {} 1483 | 1484 | globals@16.1.0: {} 1485 | 1486 | graceful-fs@4.2.11: {} 1487 | 1488 | graphemer@1.4.0: {} 1489 | 1490 | has-flag@4.0.0: {} 1491 | 1492 | hasown@2.0.2: 1493 | dependencies: 1494 | function-bind: 1.1.2 1495 | 1496 | ignore@5.3.2: {} 1497 | 1498 | ignore@7.0.4: {} 1499 | 1500 | import-fresh@3.3.1: 1501 | dependencies: 1502 | parent-module: 1.0.1 1503 | resolve-from: 4.0.0 1504 | 1505 | imurmurhash@0.1.4: {} 1506 | 1507 | is-core-module@2.16.1: 1508 | dependencies: 1509 | hasown: 2.0.2 1510 | 1511 | is-extglob@2.1.1: {} 1512 | 1513 | is-glob@4.0.3: 1514 | dependencies: 1515 | is-extglob: 2.1.1 1516 | 1517 | is-number@7.0.0: {} 1518 | 1519 | is-reference@3.0.3: 1520 | dependencies: 1521 | '@types/estree': 1.0.7 1522 | 1523 | isexe@2.0.0: {} 1524 | 1525 | js-yaml@4.1.0: 1526 | dependencies: 1527 | argparse: 2.0.1 1528 | 1529 | json-buffer@3.0.1: {} 1530 | 1531 | json-schema-traverse@0.4.1: {} 1532 | 1533 | json-stable-stringify-without-jsonify@1.0.1: {} 1534 | 1535 | keyv@4.5.4: 1536 | dependencies: 1537 | json-buffer: 3.0.1 1538 | 1539 | known-css-properties@0.36.0: {} 1540 | 1541 | levn@0.4.1: 1542 | dependencies: 1543 | prelude-ls: 1.2.1 1544 | type-check: 0.4.0 1545 | 1546 | lilconfig@2.1.0: {} 1547 | 1548 | lilconfig@3.1.3: {} 1549 | 1550 | locate-character@3.0.0: {} 1551 | 1552 | locate-path@6.0.0: 1553 | dependencies: 1554 | p-locate: 5.0.0 1555 | 1556 | lodash.merge@4.6.2: {} 1557 | 1558 | magic-string@0.30.17: 1559 | dependencies: 1560 | '@jridgewell/sourcemap-codec': 1.5.0 1561 | 1562 | merge2@1.4.1: {} 1563 | 1564 | micromatch@4.0.8: 1565 | dependencies: 1566 | braces: 3.0.3 1567 | picomatch: 2.3.1 1568 | 1569 | minimatch@10.0.1: 1570 | dependencies: 1571 | brace-expansion: 2.0.1 1572 | 1573 | minimatch@3.1.2: 1574 | dependencies: 1575 | brace-expansion: 1.1.11 1576 | 1577 | minimatch@9.0.5: 1578 | dependencies: 1579 | brace-expansion: 2.0.1 1580 | 1581 | ms@2.1.3: {} 1582 | 1583 | nanoid@3.3.11: {} 1584 | 1585 | napi-postinstall@0.2.4: {} 1586 | 1587 | natural-compare@1.4.0: {} 1588 | 1589 | natural-orderby@5.0.0: {} 1590 | 1591 | optionator@0.9.4: 1592 | dependencies: 1593 | deep-is: 0.1.4 1594 | fast-levenshtein: 2.0.6 1595 | levn: 0.4.1 1596 | prelude-ls: 1.2.1 1597 | type-check: 0.4.0 1598 | word-wrap: 1.2.5 1599 | 1600 | p-limit@3.1.0: 1601 | dependencies: 1602 | yocto-queue: 0.1.0 1603 | 1604 | p-locate@5.0.0: 1605 | dependencies: 1606 | p-limit: 3.1.0 1607 | 1608 | parent-module@1.0.1: 1609 | dependencies: 1610 | callsites: 3.1.0 1611 | 1612 | path-exists@4.0.0: {} 1613 | 1614 | path-key@3.1.1: {} 1615 | 1616 | path-parse@1.0.7: {} 1617 | 1618 | picocolors@1.1.1: {} 1619 | 1620 | picomatch@2.3.1: {} 1621 | 1622 | postcss-load-config@3.1.4(postcss@8.5.3): 1623 | dependencies: 1624 | lilconfig: 2.1.0 1625 | yaml: 1.10.2 1626 | optionalDependencies: 1627 | postcss: 8.5.3 1628 | 1629 | postcss-safe-parser@7.0.1(postcss@8.5.3): 1630 | dependencies: 1631 | postcss: 8.5.3 1632 | 1633 | postcss-scss@4.0.9(postcss@8.5.3): 1634 | dependencies: 1635 | postcss: 8.5.3 1636 | 1637 | postcss-selector-parser@7.1.0: 1638 | dependencies: 1639 | cssesc: 3.0.0 1640 | util-deprecate: 1.0.2 1641 | 1642 | postcss@8.5.3: 1643 | dependencies: 1644 | nanoid: 3.3.11 1645 | picocolors: 1.1.1 1646 | source-map-js: 1.2.1 1647 | 1648 | prelude-ls@1.2.1: {} 1649 | 1650 | punycode@2.3.1: {} 1651 | 1652 | queue-microtask@1.2.3: {} 1653 | 1654 | requireindex@1.2.0: {} 1655 | 1656 | resolve-from@4.0.0: {} 1657 | 1658 | resolve-pkg-maps@1.0.0: {} 1659 | 1660 | resolve@1.22.10: 1661 | dependencies: 1662 | is-core-module: 2.16.1 1663 | path-parse: 1.0.7 1664 | supports-preserve-symlinks-flag: 1.0.0 1665 | 1666 | reusify@1.1.0: {} 1667 | 1668 | run-parallel@1.2.0: 1669 | dependencies: 1670 | queue-microtask: 1.2.3 1671 | 1672 | semver@7.7.2: {} 1673 | 1674 | shebang-command@2.0.0: 1675 | dependencies: 1676 | shebang-regex: 3.0.0 1677 | 1678 | shebang-regex@3.0.0: {} 1679 | 1680 | source-map-js@1.2.1: {} 1681 | 1682 | stable-hash@0.0.5: {} 1683 | 1684 | strip-json-comments@3.1.1: {} 1685 | 1686 | supports-color@7.2.0: 1687 | dependencies: 1688 | has-flag: 4.0.0 1689 | 1690 | supports-preserve-symlinks-flag@1.0.0: {} 1691 | 1692 | svelte-eslint-parser@1.2.0(svelte@5.31.1): 1693 | dependencies: 1694 | eslint-scope: 8.3.0 1695 | eslint-visitor-keys: 4.2.0 1696 | espree: 10.3.0 1697 | postcss: 8.5.3 1698 | postcss-scss: 4.0.9(postcss@8.5.3) 1699 | postcss-selector-parser: 7.1.0 1700 | optionalDependencies: 1701 | svelte: 5.31.1 1702 | 1703 | svelte@5.31.1: 1704 | dependencies: 1705 | '@ampproject/remapping': 2.3.0 1706 | '@jridgewell/sourcemap-codec': 1.5.0 1707 | '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1) 1708 | '@types/estree': 1.0.7 1709 | acorn: 8.14.1 1710 | aria-query: 5.3.2 1711 | axobject-query: 4.1.0 1712 | clsx: 2.1.1 1713 | esm-env: 1.2.2 1714 | esrap: 1.4.6 1715 | is-reference: 3.0.3 1716 | locate-character: 3.0.0 1717 | magic-string: 0.30.17 1718 | zimmerframe: 1.1.2 1719 | 1720 | tapable@2.2.2: {} 1721 | 1722 | to-regex-range@5.0.1: 1723 | dependencies: 1724 | is-number: 7.0.0 1725 | 1726 | ts-api-utils@2.1.0(typescript@5.8.3): 1727 | dependencies: 1728 | typescript: 5.8.3 1729 | 1730 | tslib@2.8.1: {} 1731 | 1732 | type-check@0.4.0: 1733 | dependencies: 1734 | prelude-ls: 1.2.1 1735 | 1736 | typescript-eslint@8.32.1(eslint@9.27.0)(typescript@5.8.3): 1737 | dependencies: 1738 | '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) 1739 | '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) 1740 | '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) 1741 | eslint: 9.27.0 1742 | typescript: 5.8.3 1743 | transitivePeerDependencies: 1744 | - supports-color 1745 | 1746 | typescript@5.8.3: {} 1747 | 1748 | unrs-resolver@1.7.2: 1749 | dependencies: 1750 | napi-postinstall: 0.2.4 1751 | optionalDependencies: 1752 | '@unrs/resolver-binding-darwin-arm64': 1.7.2 1753 | '@unrs/resolver-binding-darwin-x64': 1.7.2 1754 | '@unrs/resolver-binding-freebsd-x64': 1.7.2 1755 | '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.2 1756 | '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.2 1757 | '@unrs/resolver-binding-linux-arm64-gnu': 1.7.2 1758 | '@unrs/resolver-binding-linux-arm64-musl': 1.7.2 1759 | '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.2 1760 | '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.2 1761 | '@unrs/resolver-binding-linux-riscv64-musl': 1.7.2 1762 | '@unrs/resolver-binding-linux-s390x-gnu': 1.7.2 1763 | '@unrs/resolver-binding-linux-x64-gnu': 1.7.2 1764 | '@unrs/resolver-binding-linux-x64-musl': 1.7.2 1765 | '@unrs/resolver-binding-wasm32-wasi': 1.7.2 1766 | '@unrs/resolver-binding-win32-arm64-msvc': 1.7.2 1767 | '@unrs/resolver-binding-win32-ia32-msvc': 1.7.2 1768 | '@unrs/resolver-binding-win32-x64-msvc': 1.7.2 1769 | 1770 | uri-js@4.4.1: 1771 | dependencies: 1772 | punycode: 2.3.1 1773 | 1774 | util-deprecate@1.0.2: {} 1775 | 1776 | which@2.0.2: 1777 | dependencies: 1778 | isexe: 2.0.0 1779 | 1780 | word-wrap@1.2.5: {} 1781 | 1782 | yaml@1.10.2: {} 1783 | 1784 | yocto-queue@0.1.0: {} 1785 | 1786 | zimmerframe@1.1.2: {} 1787 | -------------------------------------------------------------------------------- /svelte.d.ts: -------------------------------------------------------------------------------- 1 | import type { Linter } from 'eslint' 2 | 3 | declare const config: Linter.Config[] 4 | 5 | export default config 6 | -------------------------------------------------------------------------------- /svelte.js: -------------------------------------------------------------------------------- 1 | import svelte from 'eslint-plugin-svelte' 2 | import svelteParser from 'svelte-eslint-parser' 3 | import tseslint from 'typescript-eslint' 4 | 5 | import ts from './ts.js' 6 | import { collectRules } from './util.js' 7 | 8 | let tsRules = collectRules( 9 | ts.filter(i => i.files && i.files.includes('**/*.ts')) 10 | ) 11 | 12 | export default [ 13 | { 14 | languageOptions: { 15 | parserOptions: { 16 | extraFileExtensions: ['.svelte'], 17 | project: true 18 | }, 19 | sourceType: 'module' 20 | }, 21 | name: 'logux/main-svelte' 22 | }, 23 | ...ts, 24 | { 25 | files: ['**/*.svelte'], 26 | languageOptions: { 27 | parser: svelteParser, 28 | parserOptions: { 29 | parser: tseslint.parser 30 | } 31 | }, 32 | name: 'logux/svelte', 33 | plugins: { 34 | '@typescript-eslint': tseslint.plugin, 35 | svelte 36 | }, 37 | processor: 'svelte/svelte', 38 | rules: { 39 | ...tsRules, 40 | '@typescript-eslint/no-unsafe-assignment': 'off', 41 | '@typescript-eslint/no-unused-vars': 'error', 42 | 'import/first': 'off', 43 | 'no-undef-init': 'off', 44 | // 'svelte/no-unused-props': 'error', 45 | // 'no-unnecessary-state-wrap': 'error', 46 | 'no-use-before-define': 'off', 47 | 'svelte/block-lang': ['error', { script: 'ts' }], 48 | 'svelte/infinite-reactive-loop': 'error', 49 | // 'svelte/no-add-event-listener': 'error', 50 | 'svelte/no-at-debug-tags': 'error', 51 | 'svelte/no-extra-reactive-curlies': 'error', 52 | 'svelte/no-reactive-literals': 'error', 53 | 'svelte/no-reactive-reassign': 'error', 54 | 'svelte/no-unused-class-name': 'error', 55 | 'svelte/prefer-class-directive': 'error', 56 | 'svelte/require-each-key': 'error', 57 | // 'svelte/require-event-prefix': 'error', 58 | 'svelte/require-optimized-style-attribute': 'error', 59 | 'svelte/sort-attributes': 'error', 60 | 'svelte/spaced-html-comment': 'error' 61 | } 62 | } 63 | ] 64 | -------------------------------------------------------------------------------- /ts.d.ts: -------------------------------------------------------------------------------- 1 | import type { Linter } from 'eslint' 2 | 3 | declare const config: Linter.Config[] 4 | 5 | export default config 6 | -------------------------------------------------------------------------------- /ts.js: -------------------------------------------------------------------------------- 1 | import tseslint from 'typescript-eslint' 2 | 3 | import base from './index.js' 4 | import { collectRules } from './util.js' 5 | 6 | let tsRules = collectRules(tseslint.configs.strictTypeChecked) 7 | 8 | export default [ 9 | ...base, 10 | { 11 | files: ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'], 12 | languageOptions: { 13 | parser: tseslint.parser, 14 | parserOptions: { 15 | project: true 16 | } 17 | }, 18 | name: 'logux/ts', 19 | plugins: { 20 | '@typescript-eslint': tseslint.plugin 21 | }, 22 | rules: { 23 | ...tsRules, 24 | '@typescript-eslint/array-type': 'error', 25 | '@typescript-eslint/consistent-type-imports': 'error', 26 | '@typescript-eslint/dot-notation': [ 27 | 'error', 28 | { 29 | allowKeywords: true 30 | } 31 | ], 32 | '@typescript-eslint/explicit-function-return-type': [ 33 | 'error', 34 | { 35 | allowExpressions: true 36 | } 37 | ], 38 | '@typescript-eslint/no-dupe-class-members': 'error', 39 | '@typescript-eslint/no-dynamic-delete': 'off', 40 | '@typescript-eslint/no-import-type-side-effects': 'error', 41 | '@typescript-eslint/no-invalid-this': [ 42 | 'error', 43 | { capIsConstructor: true } 44 | ], 45 | '@typescript-eslint/no-invalid-void-type': 'off', 46 | '@typescript-eslint/no-misused-promises': 'off', 47 | '@typescript-eslint/no-non-null-assertion': 'off', 48 | '@typescript-eslint/no-redeclare': 'error', 49 | '@typescript-eslint/no-shadow': 'error', 50 | // '@typescript-eslint/no-unnecessary-type-conversion': 'error', 51 | '@typescript-eslint/no-unnecessary-type-parameters': 'off', 52 | '@typescript-eslint/no-unsafe-type-assertion': 'error', 53 | '@typescript-eslint/no-unused-expressions': [ 54 | 'error', 55 | { 56 | allowShortCircuit: true, 57 | allowTaggedTemplates: true, 58 | allowTernary: true 59 | } 60 | ], 61 | '@typescript-eslint/no-use-before-define': [ 62 | 'error', 63 | { 64 | classes: false, 65 | functions: false, 66 | variables: false 67 | } 68 | ], 69 | '@typescript-eslint/no-var-requires': 'error', 70 | '@typescript-eslint/prefer-optional-chain': 'error', 71 | '@typescript-eslint/restrict-template-expressions': [ 72 | 'error', 73 | { 74 | allowNumber: true 75 | } 76 | ], 77 | '@typescript-eslint/unbound-method': 'off', 78 | 'dot-notation': 'off', 79 | 'func-callspacing': 'off', 80 | 'import-x/extensions': [ 81 | 'error', 82 | 'always', 83 | { checkTypeImports: true, ignorePackages: true } 84 | ], 85 | 'lines-between-class-members': 'off', 86 | 'no-invalid-this': 'off', 87 | 'no-shadow': 'off', 88 | 'no-use-before-define': 'off', 89 | 'object-curly-spacing': 'off', 90 | 'prefer-const': 'off' 91 | } 92 | }, 93 | { 94 | files: ['**/*.{test.ts,test.tsx,stories.tsx}', '**/types.ts', '**/test/*'], 95 | name: 'logux/ts-tests', 96 | rules: { 97 | '@typescript-eslint/ban-ts-comment': 'off', 98 | '@typescript-eslint/no-explicit-any': 'off', 99 | '@typescript-eslint/no-floating-promises': 'off', 100 | '@typescript-eslint/no-unsafe-argument': 'off', 101 | '@typescript-eslint/no-unsafe-assignment': 'off', 102 | '@typescript-eslint/no-unsafe-call': 'off', 103 | '@typescript-eslint/no-unsafe-member-access': 'off', 104 | '@typescript-eslint/no-unsafe-return': 'off', 105 | '@typescript-eslint/no-unsafe-type-assertion': 'off', 106 | '@typescript-eslint/no-unused-expressions': 'off', 107 | '@typescript-eslint/restrict-plus-operands': 'off', 108 | '@typescript-eslint/use-unknown-in-catch-callback-variable': 'off' 109 | } 110 | }, 111 | { 112 | files: ['**/types.ts'], 113 | name: 'logux/type-tests', 114 | rules: { 115 | '@typescript-eslint/no-floating-promises': 'off', 116 | 'no-console': 'off' 117 | } 118 | }, 119 | { 120 | files: ['**/*.cts'], 121 | name: 'logux/cts', 122 | rules: { 123 | '@typescript-eslint/no-require-imports': 'off', 124 | '@typescript-eslint/no-var-requires': 'off' 125 | } 126 | } 127 | ] 128 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowImportingTsExtensions": true, 4 | "target": "es2022", 5 | "module": "preserve", 6 | "skipLibCheck": true, 7 | "moduleResolution": "node", 8 | "esModuleInterop": true, 9 | "isolatedModules": true, 10 | "allowJs": true, 11 | "strict": true, 12 | "noUncheckedIndexedAccess": true, 13 | "noImplicitOverride": true, 14 | "noEmit": true 15 | }, 16 | "include": ["**/*.js", "**/*.ts", "**/*.svelte"] 17 | } 18 | -------------------------------------------------------------------------------- /util.js: -------------------------------------------------------------------------------- 1 | export function collectRules(configs) { 2 | let rules = {} 3 | for (let config of configs) { 4 | rules = { ...rules, ...config.rules } 5 | } 6 | return rules 7 | } 8 | --------------------------------------------------------------------------------