the statusphere demo reworked into a vite/react app in a monorepo

Merge pull request #7 from bluesky-social/paul/simplify-repo

Simplify repo

authored by

Paul Frazee and committed by
GitHub
e9b9ead1 8dc31519

+116 -2730
-7
.env.template
··· 5 5 PUBLIC_URL="" # Set when deployed publicly, e.g. "https://mysite.com". Informs OAuth client id. 6 6 DB_PATH=":memory:" # The SQLite database path. Leave as ":memory:" to use a temporary in-memory database. 7 7 8 - # CORS Settings 9 - CORS_ORIGIN="http://localhost:*" # Allowed CORS origin, adjust as necessary 10 - 11 - # Rate Limiting 12 - COMMON_RATE_LIMIT_WINDOW_MS="1000" # Window size for rate limiting (ms) 13 - COMMON_RATE_LIMIT_MAX_REQUESTS="20" # Max number of requests per window per IP 14 - 15 8 # Secrets 16 9 # Must set this in production. May be generated with `openssl rand -base64 33` 17 10 # COOKIE_SECRET=""
-22
Dockerfile
··· 1 - FROM node:22.5-slim 2 - 3 - # Create app directory 4 - WORKDIR /usr/src/app 5 - 6 - # Copy package.json and package-lock.json 7 - COPY package*.json ./ 8 - 9 - # Install app dependencies 10 - RUN npm ci 11 - 12 - # Bundle app source 13 - COPY . . 14 - 15 - # Build the TypeScript files 16 - RUN npm run build 17 - 18 - # Expose port 8080 19 - EXPOSE 8080 20 - 21 - # Start the app 22 - CMD npm run start
-31
biome.json
··· 1 - { 2 - "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", 3 - "javascript": { 4 - "formatter": { 5 - "semicolons": "asNeeded", 6 - "quoteStyle": "single" 7 - } 8 - }, 9 - "formatter": { 10 - "indentStyle": "space", 11 - "lineWidth": 120 12 - }, 13 - "organizeImports": { "enabled": true }, 14 - "linter": { 15 - "enabled": true, 16 - "rules": { 17 - "recommended": true, 18 - "suspicious": { 19 - "noExplicitAny": "off", 20 - "noConfusingVoidType": "off" 21 - }, 22 - "style": { 23 - "noUselessElse": "off", 24 - "noNonNullAssertion": "off" 25 - }, 26 - "complexity": { 27 - "noForEach": "off" 28 - } 29 - } 30 - } 31 - }
+10 -2400
package-lock.json
··· 10 10 "license": "MIT", 11 11 "dependencies": { 12 12 "@atproto/identity": "^0.4.0", 13 - "@atproto/jwk-jose": "0.1.2-rc.0", 14 13 "@atproto/lexicon": "0.4.1-rc.0", 15 14 "@atproto/oauth-client-node": "0.0.2-rc.2", 16 15 "@atproto/repo": "0.4.2-rc.0", 17 16 "@atproto/syntax": "^0.3.0", 18 17 "@atproto/xrpc-server": "0.5.4-rc.0", 19 18 "better-sqlite3": "^11.1.2", 20 - "cors": "^2.8.5", 21 19 "dotenv": "^16.4.5", 22 20 "envalid": "^8.0.0", 23 21 "express": "^4.19.2", 24 - "express-rate-limit": "^7.2.0", 25 - "helmet": "^7.1.0", 26 - "http-status-codes": "^2.3.0", 27 22 "iron-session": "^8.0.2", 28 23 "kysely": "^0.27.4", 29 24 "multiformats": "^9.9.0", ··· 33 28 }, 34 29 "devDependencies": { 35 30 "@atproto/lex-cli": "^0.4.1", 36 - "@biomejs/biome": "1.8.3", 37 31 "@types/better-sqlite3": "^7.6.11", 38 - "@types/cors": "^2.8.17", 39 32 "@types/express": "^4.17.21", 40 - "lint-staged": "^15.2.2", 41 33 "pino-pretty": "^11.0.0", 42 34 "rimraf": "^5.0.0", 43 - "supertest": "^7.0.0", 44 35 "ts-node": "^10.9.2", 45 36 "tsup": "^8.0.2", 46 37 "tsx": "^4.7.2", 47 - "typescript": "^5.4.4", 48 - "vite-tsconfig-paths": "^4.3.2", 49 - "vitest": "^2.0.0" 50 - } 51 - }, 52 - "node_modules/@ampproject/remapping": { 53 - "version": "2.3.0", 54 - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 55 - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 56 - "dev": true, 57 - "dependencies": { 58 - "@jridgewell/gen-mapping": "^0.3.5", 59 - "@jridgewell/trace-mapping": "^0.3.24" 60 - }, 61 - "engines": { 62 - "node": ">=6.0.0" 63 - } 64 - }, 65 - "node_modules/@ampproject/remapping/node_modules/@jridgewell/trace-mapping": { 66 - "version": "0.3.25", 67 - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 68 - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 69 - "dev": true, 70 - "dependencies": { 71 - "@jridgewell/resolve-uri": "^3.1.0", 72 - "@jridgewell/sourcemap-codec": "^1.4.14" 38 + "typescript": "^5.4.4" 73 39 } 74 40 }, 75 41 "node_modules/@atproto-labs/did-resolver": { ··· 436 402 "zod": "^3.23.8" 437 403 } 438 404 }, 439 - "node_modules/@biomejs/biome": { 440 - "version": "1.8.3", 441 - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.8.3.tgz", 442 - "integrity": "sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==", 443 - "dev": true, 444 - "hasInstallScript": true, 445 - "bin": { 446 - "biome": "bin/biome" 447 - }, 448 - "engines": { 449 - "node": ">=14.21.3" 450 - }, 451 - "funding": { 452 - "type": "opencollective", 453 - "url": "https://opencollective.com/biome" 454 - }, 455 - "optionalDependencies": { 456 - "@biomejs/cli-darwin-arm64": "1.8.3", 457 - "@biomejs/cli-darwin-x64": "1.8.3", 458 - "@biomejs/cli-linux-arm64": "1.8.3", 459 - "@biomejs/cli-linux-arm64-musl": "1.8.3", 460 - "@biomejs/cli-linux-x64": "1.8.3", 461 - "@biomejs/cli-linux-x64-musl": "1.8.3", 462 - "@biomejs/cli-win32-arm64": "1.8.3", 463 - "@biomejs/cli-win32-x64": "1.8.3" 464 - } 465 - }, 466 - "node_modules/@biomejs/cli-darwin-arm64": { 467 - "version": "1.8.3", 468 - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.8.3.tgz", 469 - "integrity": "sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==", 470 - "cpu": [ 471 - "arm64" 472 - ], 473 - "dev": true, 474 - "optional": true, 475 - "os": [ 476 - "darwin" 477 - ], 478 - "engines": { 479 - "node": ">=14.21.3" 480 - } 481 - }, 482 - "node_modules/@biomejs/cli-darwin-x64": { 483 - "version": "1.8.3", 484 - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.8.3.tgz", 485 - "integrity": "sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==", 486 - "cpu": [ 487 - "x64" 488 - ], 489 - "dev": true, 490 - "optional": true, 491 - "os": [ 492 - "darwin" 493 - ], 494 - "engines": { 495 - "node": ">=14.21.3" 496 - } 497 - }, 498 - "node_modules/@biomejs/cli-linux-arm64": { 499 - "version": "1.8.3", 500 - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.8.3.tgz", 501 - "integrity": "sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==", 502 - "cpu": [ 503 - "arm64" 504 - ], 505 - "dev": true, 506 - "optional": true, 507 - "os": [ 508 - "linux" 509 - ], 510 - "engines": { 511 - "node": ">=14.21.3" 512 - } 513 - }, 514 - "node_modules/@biomejs/cli-linux-arm64-musl": { 515 - "version": "1.8.3", 516 - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.8.3.tgz", 517 - "integrity": "sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==", 518 - "cpu": [ 519 - "arm64" 520 - ], 521 - "dev": true, 522 - "optional": true, 523 - "os": [ 524 - "linux" 525 - ], 526 - "engines": { 527 - "node": ">=14.21.3" 528 - } 529 - }, 530 - "node_modules/@biomejs/cli-linux-x64": { 531 - "version": "1.8.3", 532 - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.8.3.tgz", 533 - "integrity": "sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==", 534 - "cpu": [ 535 - "x64" 536 - ], 537 - "dev": true, 538 - "optional": true, 539 - "os": [ 540 - "linux" 541 - ], 542 - "engines": { 543 - "node": ">=14.21.3" 544 - } 545 - }, 546 - "node_modules/@biomejs/cli-linux-x64-musl": { 547 - "version": "1.8.3", 548 - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.8.3.tgz", 549 - "integrity": "sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==", 550 - "cpu": [ 551 - "x64" 552 - ], 553 - "dev": true, 554 - "optional": true, 555 - "os": [ 556 - "linux" 557 - ], 558 - "engines": { 559 - "node": ">=14.21.3" 560 - } 561 - }, 562 - "node_modules/@biomejs/cli-win32-arm64": { 563 - "version": "1.8.3", 564 - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.8.3.tgz", 565 - "integrity": "sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==", 566 - "cpu": [ 567 - "arm64" 568 - ], 569 - "dev": true, 570 - "optional": true, 571 - "os": [ 572 - "win32" 573 - ], 574 - "engines": { 575 - "node": ">=14.21.3" 576 - } 577 - }, 578 - "node_modules/@biomejs/cli-win32-x64": { 579 - "version": "1.8.3", 580 - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.8.3.tgz", 581 - "integrity": "sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==", 582 - "cpu": [ 583 - "x64" 584 - ], 585 - "dev": true, 586 - "optional": true, 587 - "os": [ 588 - "win32" 589 - ], 590 - "engines": { 591 - "node": ">=14.21.3" 592 - } 593 - }, 594 405 "node_modules/@cbor-extract/cbor-extract-darwin-arm64": { 595 406 "version": "2.2.0", 596 407 "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz", ··· 603 414 "darwin" 604 415 ] 605 416 }, 606 - "node_modules/@cbor-extract/cbor-extract-darwin-x64": { 607 - "version": "2.2.0", 608 - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz", 609 - "integrity": "sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==", 610 - "cpu": [ 611 - "x64" 612 - ], 613 - "optional": true, 614 - "os": [ 615 - "darwin" 616 - ] 617 - }, 618 - "node_modules/@cbor-extract/cbor-extract-linux-arm": { 619 - "version": "2.2.0", 620 - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz", 621 - "integrity": "sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==", 622 - "cpu": [ 623 - "arm" 624 - ], 625 - "optional": true, 626 - "os": [ 627 - "linux" 628 - ] 629 - }, 630 - "node_modules/@cbor-extract/cbor-extract-linux-arm64": { 631 - "version": "2.2.0", 632 - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz", 633 - "integrity": "sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==", 634 - "cpu": [ 635 - "arm64" 636 - ], 637 - "optional": true, 638 - "os": [ 639 - "linux" 640 - ] 641 - }, 642 - "node_modules/@cbor-extract/cbor-extract-linux-x64": { 643 - "version": "2.2.0", 644 - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz", 645 - "integrity": "sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==", 646 - "cpu": [ 647 - "x64" 648 - ], 649 - "optional": true, 650 - "os": [ 651 - "linux" 652 - ] 653 - }, 654 - "node_modules/@cbor-extract/cbor-extract-win32-x64": { 655 - "version": "2.2.0", 656 - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz", 657 - "integrity": "sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==", 658 - "cpu": [ 659 - "x64" 660 - ], 661 - "optional": true, 662 - "os": [ 663 - "win32" 664 - ] 665 - }, 666 417 "node_modules/@cspotcode/source-map-support": { 667 418 "version": "0.8.1", 668 419 "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", ··· 675 426 "node": ">=12" 676 427 } 677 428 }, 678 - "node_modules/@esbuild/aix-ppc64": { 679 - "version": "0.23.0", 680 - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", 681 - "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", 682 - "cpu": [ 683 - "ppc64" 684 - ], 685 - "dev": true, 686 - "optional": true, 687 - "os": [ 688 - "aix" 689 - ], 690 - "engines": { 691 - "node": ">=18" 692 - } 693 - }, 694 - "node_modules/@esbuild/android-arm": { 695 - "version": "0.23.0", 696 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", 697 - "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", 698 - "cpu": [ 699 - "arm" 700 - ], 701 - "dev": true, 702 - "optional": true, 703 - "os": [ 704 - "android" 705 - ], 706 - "engines": { 707 - "node": ">=18" 708 - } 709 - }, 710 - "node_modules/@esbuild/android-arm64": { 711 - "version": "0.23.0", 712 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", 713 - "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", 714 - "cpu": [ 715 - "arm64" 716 - ], 717 - "dev": true, 718 - "optional": true, 719 - "os": [ 720 - "android" 721 - ], 722 - "engines": { 723 - "node": ">=18" 724 - } 725 - }, 726 - "node_modules/@esbuild/android-x64": { 727 - "version": "0.23.0", 728 - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", 729 - "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", 730 - "cpu": [ 731 - "x64" 732 - ], 733 - "dev": true, 734 - "optional": true, 735 - "os": [ 736 - "android" 737 - ], 738 - "engines": { 739 - "node": ">=18" 740 - } 741 - }, 742 429 "node_modules/@esbuild/darwin-arm64": { 743 430 "version": "0.23.0", 744 431 "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", ··· 755 442 "node": ">=18" 756 443 } 757 444 }, 758 - "node_modules/@esbuild/darwin-x64": { 759 - "version": "0.23.0", 760 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", 761 - "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", 762 - "cpu": [ 763 - "x64" 764 - ], 765 - "dev": true, 766 - "optional": true, 767 - "os": [ 768 - "darwin" 769 - ], 770 - "engines": { 771 - "node": ">=18" 772 - } 773 - }, 774 - "node_modules/@esbuild/freebsd-arm64": { 775 - "version": "0.23.0", 776 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", 777 - "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", 778 - "cpu": [ 779 - "arm64" 780 - ], 781 - "dev": true, 782 - "optional": true, 783 - "os": [ 784 - "freebsd" 785 - ], 786 - "engines": { 787 - "node": ">=18" 788 - } 789 - }, 790 - "node_modules/@esbuild/freebsd-x64": { 791 - "version": "0.23.0", 792 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", 793 - "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", 794 - "cpu": [ 795 - "x64" 796 - ], 797 - "dev": true, 798 - "optional": true, 799 - "os": [ 800 - "freebsd" 801 - ], 802 - "engines": { 803 - "node": ">=18" 804 - } 805 - }, 806 - "node_modules/@esbuild/linux-arm": { 807 - "version": "0.23.0", 808 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", 809 - "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", 810 - "cpu": [ 811 - "arm" 812 - ], 813 - "dev": true, 814 - "optional": true, 815 - "os": [ 816 - "linux" 817 - ], 818 - "engines": { 819 - "node": ">=18" 820 - } 821 - }, 822 - "node_modules/@esbuild/linux-arm64": { 823 - "version": "0.23.0", 824 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", 825 - "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", 826 - "cpu": [ 827 - "arm64" 828 - ], 829 - "dev": true, 830 - "optional": true, 831 - "os": [ 832 - "linux" 833 - ], 834 - "engines": { 835 - "node": ">=18" 836 - } 837 - }, 838 - "node_modules/@esbuild/linux-ia32": { 839 - "version": "0.23.0", 840 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", 841 - "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", 842 - "cpu": [ 843 - "ia32" 844 - ], 845 - "dev": true, 846 - "optional": true, 847 - "os": [ 848 - "linux" 849 - ], 850 - "engines": { 851 - "node": ">=18" 852 - } 853 - }, 854 - "node_modules/@esbuild/linux-loong64": { 855 - "version": "0.23.0", 856 - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", 857 - "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", 858 - "cpu": [ 859 - "loong64" 860 - ], 861 - "dev": true, 862 - "optional": true, 863 - "os": [ 864 - "linux" 865 - ], 866 - "engines": { 867 - "node": ">=18" 868 - } 869 - }, 870 - "node_modules/@esbuild/linux-mips64el": { 871 - "version": "0.23.0", 872 - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", 873 - "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", 874 - "cpu": [ 875 - "mips64el" 876 - ], 877 - "dev": true, 878 - "optional": true, 879 - "os": [ 880 - "linux" 881 - ], 882 - "engines": { 883 - "node": ">=18" 884 - } 885 - }, 886 - "node_modules/@esbuild/linux-ppc64": { 887 - "version": "0.23.0", 888 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", 889 - "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", 890 - "cpu": [ 891 - "ppc64" 892 - ], 893 - "dev": true, 894 - "optional": true, 895 - "os": [ 896 - "linux" 897 - ], 898 - "engines": { 899 - "node": ">=18" 900 - } 901 - }, 902 - "node_modules/@esbuild/linux-riscv64": { 903 - "version": "0.23.0", 904 - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", 905 - "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", 906 - "cpu": [ 907 - "riscv64" 908 - ], 909 - "dev": true, 910 - "optional": true, 911 - "os": [ 912 - "linux" 913 - ], 914 - "engines": { 915 - "node": ">=18" 916 - } 917 - }, 918 - "node_modules/@esbuild/linux-s390x": { 919 - "version": "0.23.0", 920 - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", 921 - "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", 922 - "cpu": [ 923 - "s390x" 924 - ], 925 - "dev": true, 926 - "optional": true, 927 - "os": [ 928 - "linux" 929 - ], 930 - "engines": { 931 - "node": ">=18" 932 - } 933 - }, 934 - "node_modules/@esbuild/linux-x64": { 935 - "version": "0.23.0", 936 - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", 937 - "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", 938 - "cpu": [ 939 - "x64" 940 - ], 941 - "dev": true, 942 - "optional": true, 943 - "os": [ 944 - "linux" 945 - ], 946 - "engines": { 947 - "node": ">=18" 948 - } 949 - }, 950 - "node_modules/@esbuild/netbsd-x64": { 951 - "version": "0.23.0", 952 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", 953 - "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", 954 - "cpu": [ 955 - "x64" 956 - ], 957 - "dev": true, 958 - "optional": true, 959 - "os": [ 960 - "netbsd" 961 - ], 962 - "engines": { 963 - "node": ">=18" 964 - } 965 - }, 966 - "node_modules/@esbuild/openbsd-arm64": { 967 - "version": "0.23.0", 968 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", 969 - "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", 970 - "cpu": [ 971 - "arm64" 972 - ], 973 - "dev": true, 974 - "optional": true, 975 - "os": [ 976 - "openbsd" 977 - ], 978 - "engines": { 979 - "node": ">=18" 980 - } 981 - }, 982 - "node_modules/@esbuild/openbsd-x64": { 983 - "version": "0.23.0", 984 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", 985 - "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", 986 - "cpu": [ 987 - "x64" 988 - ], 989 - "dev": true, 990 - "optional": true, 991 - "os": [ 992 - "openbsd" 993 - ], 994 - "engines": { 995 - "node": ">=18" 996 - } 997 - }, 998 - "node_modules/@esbuild/sunos-x64": { 999 - "version": "0.23.0", 1000 - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", 1001 - "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", 1002 - "cpu": [ 1003 - "x64" 1004 - ], 1005 - "dev": true, 1006 - "optional": true, 1007 - "os": [ 1008 - "sunos" 1009 - ], 1010 - "engines": { 1011 - "node": ">=18" 1012 - } 1013 - }, 1014 - "node_modules/@esbuild/win32-arm64": { 1015 - "version": "0.23.0", 1016 - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", 1017 - "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", 1018 - "cpu": [ 1019 - "arm64" 1020 - ], 1021 - "dev": true, 1022 - "optional": true, 1023 - "os": [ 1024 - "win32" 1025 - ], 1026 - "engines": { 1027 - "node": ">=18" 1028 - } 1029 - }, 1030 - "node_modules/@esbuild/win32-ia32": { 1031 - "version": "0.23.0", 1032 - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", 1033 - "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", 1034 - "cpu": [ 1035 - "ia32" 1036 - ], 1037 - "dev": true, 1038 - "optional": true, 1039 - "os": [ 1040 - "win32" 1041 - ], 1042 - "engines": { 1043 - "node": ">=18" 1044 - } 1045 - }, 1046 - "node_modules/@esbuild/win32-x64": { 1047 - "version": "0.23.0", 1048 - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", 1049 - "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", 1050 - "cpu": [ 1051 - "x64" 1052 - ], 1053 - "dev": true, 1054 - "optional": true, 1055 - "os": [ 1056 - "win32" 1057 - ], 1058 - "engines": { 1059 - "node": ">=18" 1060 - } 1061 - }, 1062 445 "node_modules/@ipld/car": { 1063 446 "version": "3.2.4", 1064 447 "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.2.4.tgz", ··· 1282 665 "url": "https://opencollective.com/preact" 1283 666 } 1284 667 }, 1285 - "node_modules/@rollup/rollup-android-arm-eabi": { 1286 - "version": "4.20.0", 1287 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", 1288 - "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", 1289 - "cpu": [ 1290 - "arm" 1291 - ], 1292 - "dev": true, 1293 - "optional": true, 1294 - "os": [ 1295 - "android" 1296 - ] 1297 - }, 1298 - "node_modules/@rollup/rollup-android-arm64": { 1299 - "version": "4.20.0", 1300 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", 1301 - "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", 1302 - "cpu": [ 1303 - "arm64" 1304 - ], 1305 - "dev": true, 1306 - "optional": true, 1307 - "os": [ 1308 - "android" 1309 - ] 1310 - }, 1311 668 "node_modules/@rollup/rollup-darwin-arm64": { 1312 669 "version": "4.20.0", 1313 670 "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", ··· 1321 678 "darwin" 1322 679 ] 1323 680 }, 1324 - "node_modules/@rollup/rollup-darwin-x64": { 1325 - "version": "4.20.0", 1326 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", 1327 - "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", 1328 - "cpu": [ 1329 - "x64" 1330 - ], 1331 - "dev": true, 1332 - "optional": true, 1333 - "os": [ 1334 - "darwin" 1335 - ] 1336 - }, 1337 - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1338 - "version": "4.20.0", 1339 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", 1340 - "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", 1341 - "cpu": [ 1342 - "arm" 1343 - ], 1344 - "dev": true, 1345 - "optional": true, 1346 - "os": [ 1347 - "linux" 1348 - ] 1349 - }, 1350 - "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1351 - "version": "4.20.0", 1352 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", 1353 - "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", 1354 - "cpu": [ 1355 - "arm" 1356 - ], 1357 - "dev": true, 1358 - "optional": true, 1359 - "os": [ 1360 - "linux" 1361 - ] 1362 - }, 1363 - "node_modules/@rollup/rollup-linux-arm64-gnu": { 1364 - "version": "4.20.0", 1365 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", 1366 - "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", 1367 - "cpu": [ 1368 - "arm64" 1369 - ], 1370 - "dev": true, 1371 - "optional": true, 1372 - "os": [ 1373 - "linux" 1374 - ] 1375 - }, 1376 - "node_modules/@rollup/rollup-linux-arm64-musl": { 1377 - "version": "4.20.0", 1378 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", 1379 - "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", 1380 - "cpu": [ 1381 - "arm64" 1382 - ], 1383 - "dev": true, 1384 - "optional": true, 1385 - "os": [ 1386 - "linux" 1387 - ] 1388 - }, 1389 - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 1390 - "version": "4.20.0", 1391 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", 1392 - "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", 1393 - "cpu": [ 1394 - "ppc64" 1395 - ], 1396 - "dev": true, 1397 - "optional": true, 1398 - "os": [ 1399 - "linux" 1400 - ] 1401 - }, 1402 - "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1403 - "version": "4.20.0", 1404 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", 1405 - "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", 1406 - "cpu": [ 1407 - "riscv64" 1408 - ], 1409 - "dev": true, 1410 - "optional": true, 1411 - "os": [ 1412 - "linux" 1413 - ] 1414 - }, 1415 - "node_modules/@rollup/rollup-linux-s390x-gnu": { 1416 - "version": "4.20.0", 1417 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", 1418 - "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", 1419 - "cpu": [ 1420 - "s390x" 1421 - ], 1422 - "dev": true, 1423 - "optional": true, 1424 - "os": [ 1425 - "linux" 1426 - ] 1427 - }, 1428 - "node_modules/@rollup/rollup-linux-x64-gnu": { 1429 - "version": "4.20.0", 1430 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", 1431 - "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", 1432 - "cpu": [ 1433 - "x64" 1434 - ], 1435 - "dev": true, 1436 - "optional": true, 1437 - "os": [ 1438 - "linux" 1439 - ] 1440 - }, 1441 - "node_modules/@rollup/rollup-linux-x64-musl": { 1442 - "version": "4.20.0", 1443 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", 1444 - "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", 1445 - "cpu": [ 1446 - "x64" 1447 - ], 1448 - "dev": true, 1449 - "optional": true, 1450 - "os": [ 1451 - "linux" 1452 - ] 1453 - }, 1454 - "node_modules/@rollup/rollup-win32-arm64-msvc": { 1455 - "version": "4.20.0", 1456 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", 1457 - "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", 1458 - "cpu": [ 1459 - "arm64" 1460 - ], 1461 - "dev": true, 1462 - "optional": true, 1463 - "os": [ 1464 - "win32" 1465 - ] 1466 - }, 1467 - "node_modules/@rollup/rollup-win32-ia32-msvc": { 1468 - "version": "4.20.0", 1469 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", 1470 - "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", 1471 - "cpu": [ 1472 - "ia32" 1473 - ], 1474 - "dev": true, 1475 - "optional": true, 1476 - "os": [ 1477 - "win32" 1478 - ] 1479 - }, 1480 - "node_modules/@rollup/rollup-win32-x64-msvc": { 1481 - "version": "4.20.0", 1482 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", 1483 - "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", 1484 - "cpu": [ 1485 - "x64" 1486 - ], 1487 - "dev": true, 1488 - "optional": true, 1489 - "os": [ 1490 - "win32" 1491 - ] 1492 - }, 1493 681 "node_modules/@ts-morph/common": { 1494 682 "version": "0.17.0", 1495 683 "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.17.0.tgz", ··· 1566 754 "@types/node": "*" 1567 755 } 1568 756 }, 1569 - "node_modules/@types/cors": { 1570 - "version": "2.8.17", 1571 - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", 1572 - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", 1573 - "dev": true, 1574 - "dependencies": { 1575 - "@types/node": "*" 1576 - } 1577 - }, 1578 757 "node_modules/@types/estree": { 1579 758 "version": "1.0.5", 1580 759 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", ··· 1657 836 "@types/http-errors": "*", 1658 837 "@types/node": "*", 1659 838 "@types/send": "*" 1660 - } 1661 - }, 1662 - "node_modules/@vitest/expect": { 1663 - "version": "2.0.5", 1664 - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", 1665 - "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", 1666 - "dev": true, 1667 - "dependencies": { 1668 - "@vitest/spy": "2.0.5", 1669 - "@vitest/utils": "2.0.5", 1670 - "chai": "^5.1.1", 1671 - "tinyrainbow": "^1.2.0" 1672 - }, 1673 - "funding": { 1674 - "url": "https://opencollective.com/vitest" 1675 - } 1676 - }, 1677 - "node_modules/@vitest/pretty-format": { 1678 - "version": "2.0.5", 1679 - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", 1680 - "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", 1681 - "dev": true, 1682 - "dependencies": { 1683 - "tinyrainbow": "^1.2.0" 1684 - }, 1685 - "funding": { 1686 - "url": "https://opencollective.com/vitest" 1687 - } 1688 - }, 1689 - "node_modules/@vitest/runner": { 1690 - "version": "2.0.5", 1691 - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz", 1692 - "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==", 1693 - "dev": true, 1694 - "dependencies": { 1695 - "@vitest/utils": "2.0.5", 1696 - "pathe": "^1.1.2" 1697 - }, 1698 - "funding": { 1699 - "url": "https://opencollective.com/vitest" 1700 - } 1701 - }, 1702 - "node_modules/@vitest/snapshot": { 1703 - "version": "2.0.5", 1704 - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz", 1705 - "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==", 1706 - "dev": true, 1707 - "dependencies": { 1708 - "@vitest/pretty-format": "2.0.5", 1709 - "magic-string": "^0.30.10", 1710 - "pathe": "^1.1.2" 1711 - }, 1712 - "funding": { 1713 - "url": "https://opencollective.com/vitest" 1714 - } 1715 - }, 1716 - "node_modules/@vitest/spy": { 1717 - "version": "2.0.5", 1718 - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", 1719 - "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", 1720 - "dev": true, 1721 - "dependencies": { 1722 - "tinyspy": "^3.0.0" 1723 - }, 1724 - "funding": { 1725 - "url": "https://opencollective.com/vitest" 1726 - } 1727 - }, 1728 - "node_modules/@vitest/utils": { 1729 - "version": "2.0.5", 1730 - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", 1731 - "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", 1732 - "dev": true, 1733 - "dependencies": { 1734 - "@vitest/pretty-format": "2.0.5", 1735 - "estree-walker": "^3.0.3", 1736 - "loupe": "^3.1.1", 1737 - "tinyrainbow": "^1.2.0" 1738 - }, 1739 - "funding": { 1740 - "url": "https://opencollective.com/vitest" 1741 839 } 1742 840 }, 1743 841 "node_modules/@webreflection/signal": { ··· 1801 899 "node": ">=0.4.0" 1802 900 } 1803 901 }, 1804 - "node_modules/ansi-escapes": { 1805 - "version": "7.0.0", 1806 - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", 1807 - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", 1808 - "dev": true, 1809 - "dependencies": { 1810 - "environment": "^1.0.0" 1811 - }, 1812 - "engines": { 1813 - "node": ">=18" 1814 - }, 1815 - "funding": { 1816 - "url": "https://github.com/sponsors/sindresorhus" 1817 - } 1818 - }, 1819 902 "node_modules/ansi-regex": { 1820 903 "version": "6.0.1", 1821 904 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", ··· 1880 963 "dev": true, 1881 964 "engines": { 1882 965 "node": ">=8" 1883 - } 1884 - }, 1885 - "node_modules/asap": { 1886 - "version": "2.0.6", 1887 - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 1888 - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", 1889 - "dev": true 1890 - }, 1891 - "node_modules/assertion-error": { 1892 - "version": "2.0.1", 1893 - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", 1894 - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", 1895 - "dev": true, 1896 - "engines": { 1897 - "node": ">=12" 1898 966 } 1899 967 }, 1900 968 "node_modules/asynckit": { ··· 2179 1247 "cborg": "cli.js" 2180 1248 } 2181 1249 }, 2182 - "node_modules/chai": { 2183 - "version": "5.1.1", 2184 - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", 2185 - "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", 2186 - "dev": true, 2187 - "dependencies": { 2188 - "assertion-error": "^2.0.1", 2189 - "check-error": "^2.1.1", 2190 - "deep-eql": "^5.0.1", 2191 - "loupe": "^3.1.0", 2192 - "pathval": "^2.0.0" 2193 - }, 2194 - "engines": { 2195 - "node": ">=12" 2196 - } 2197 - }, 2198 1250 "node_modules/chalk": { 2199 1251 "version": "4.1.2", 2200 1252 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", ··· 2211 1263 "url": "https://github.com/chalk/chalk?sponsor=1" 2212 1264 } 2213 1265 }, 2214 - "node_modules/check-error": { 2215 - "version": "2.1.1", 2216 - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", 2217 - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", 2218 - "dev": true, 2219 - "engines": { 2220 - "node": ">= 16" 2221 - } 2222 - }, 2223 1266 "node_modules/chokidar": { 2224 1267 "version": "3.6.0", 2225 1268 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", ··· 2249 1292 "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 2250 1293 "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 2251 1294 }, 2252 - "node_modules/cli-cursor": { 2253 - "version": "5.0.0", 2254 - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", 2255 - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", 2256 - "dev": true, 2257 - "dependencies": { 2258 - "restore-cursor": "^5.0.0" 2259 - }, 2260 - "engines": { 2261 - "node": ">=18" 2262 - }, 2263 - "funding": { 2264 - "url": "https://github.com/sponsors/sindresorhus" 2265 - } 2266 - }, 2267 - "node_modules/cli-truncate": { 2268 - "version": "4.0.0", 2269 - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", 2270 - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", 2271 - "dev": true, 2272 - "dependencies": { 2273 - "slice-ansi": "^5.0.0", 2274 - "string-width": "^7.0.0" 2275 - }, 2276 - "engines": { 2277 - "node": ">=18" 2278 - }, 2279 - "funding": { 2280 - "url": "https://github.com/sponsors/sindresorhus" 2281 - } 2282 - }, 2283 1295 "node_modules/code-block-writer": { 2284 1296 "version": "11.0.3", 2285 1297 "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-11.0.3.tgz", ··· 2328 1340 "dev": true, 2329 1341 "engines": { 2330 1342 "node": "^12.20.0 || >=14" 2331 - } 2332 - }, 2333 - "node_modules/component-emitter": { 2334 - "version": "1.3.1", 2335 - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", 2336 - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", 2337 - "dev": true, 2338 - "funding": { 2339 - "url": "https://github.com/sponsors/sindresorhus" 2340 1343 } 2341 1344 }, 2342 1345 "node_modules/consola": { ··· 2380 1383 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 2381 1384 "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 2382 1385 }, 2383 - "node_modules/cookiejar": { 2384 - "version": "2.1.4", 2385 - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", 2386 - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", 2387 - "dev": true 2388 - }, 2389 - "node_modules/cors": { 2390 - "version": "2.8.5", 2391 - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 2392 - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 2393 - "dependencies": { 2394 - "object-assign": "^4", 2395 - "vary": "^1" 2396 - }, 2397 - "engines": { 2398 - "node": ">= 0.10" 2399 - } 2400 - }, 2401 1386 "node_modules/create-require": { 2402 1387 "version": "1.1.1", 2403 1388 "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", ··· 2454 1439 "url": "https://github.com/sponsors/sindresorhus" 2455 1440 } 2456 1441 }, 2457 - "node_modules/deep-eql": { 2458 - "version": "5.0.2", 2459 - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", 2460 - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", 2461 - "dev": true, 2462 - "engines": { 2463 - "node": ">=6" 2464 - } 2465 - }, 2466 1442 "node_modules/deep-extend": { 2467 1443 "version": "0.6.0", 2468 1444 "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", ··· 2518 1494 "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", 2519 1495 "engines": { 2520 1496 "node": ">=8" 2521 - } 2522 - }, 2523 - "node_modules/dezalgo": { 2524 - "version": "1.0.4", 2525 - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", 2526 - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", 2527 - "dev": true, 2528 - "dependencies": { 2529 - "asap": "^2.0.0", 2530 - "wrappy": "1" 2531 1497 } 2532 1498 }, 2533 1499 "node_modules/diff": { ··· 2629 1595 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 2630 1596 "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 2631 1597 }, 2632 - "node_modules/emoji-regex": { 2633 - "version": "10.3.0", 2634 - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", 2635 - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", 2636 - "dev": true 2637 - }, 2638 1598 "node_modules/encodeurl": { 2639 1599 "version": "1.0.2", 2640 1600 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", ··· 2671 1631 }, 2672 1632 "engines": { 2673 1633 "node": ">=8.12" 2674 - } 2675 - }, 2676 - "node_modules/environment": { 2677 - "version": "1.1.0", 2678 - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", 2679 - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", 2680 - "dev": true, 2681 - "engines": { 2682 - "node": ">=18" 2683 - }, 2684 - "funding": { 2685 - "url": "https://github.com/sponsors/sindresorhus" 2686 1634 } 2687 1635 }, 2688 1636 "node_modules/es-define-property": { ··· 2748 1696 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 2749 1697 "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 2750 1698 }, 2751 - "node_modules/estree-walker": { 2752 - "version": "3.0.3", 2753 - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 2754 - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 2755 - "dev": true, 2756 - "dependencies": { 2757 - "@types/estree": "^1.0.0" 2758 - } 2759 - }, 2760 1699 "node_modules/etag": { 2761 1700 "version": "1.8.1", 2762 1701 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", ··· 2773 1712 "node": ">=6" 2774 1713 } 2775 1714 }, 2776 - "node_modules/eventemitter3": { 2777 - "version": "5.0.1", 2778 - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 2779 - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", 2780 - "dev": true 2781 - }, 2782 1715 "node_modules/events": { 2783 1716 "version": "3.3.0", 2784 1717 "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", ··· 2787 1720 "node": ">=0.8.x" 2788 1721 } 2789 1722 }, 2790 - "node_modules/execa": { 2791 - "version": "8.0.1", 2792 - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", 2793 - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", 2794 - "dev": true, 2795 - "dependencies": { 2796 - "cross-spawn": "^7.0.3", 2797 - "get-stream": "^8.0.1", 2798 - "human-signals": "^5.0.0", 2799 - "is-stream": "^3.0.0", 2800 - "merge-stream": "^2.0.0", 2801 - "npm-run-path": "^5.1.0", 2802 - "onetime": "^6.0.0", 2803 - "signal-exit": "^4.1.0", 2804 - "strip-final-newline": "^3.0.0" 2805 - }, 2806 - "engines": { 2807 - "node": ">=16.17" 2808 - }, 2809 - "funding": { 2810 - "url": "https://github.com/sindresorhus/execa?sponsor=1" 2811 - } 2812 - }, 2813 1723 "node_modules/expand-template": { 2814 1724 "version": "2.0.3", 2815 1725 "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", ··· 2859 1769 "node": ">= 0.10.0" 2860 1770 } 2861 1771 }, 2862 - "node_modules/express-rate-limit": { 2863 - "version": "7.4.0", 2864 - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.4.0.tgz", 2865 - "integrity": "sha512-v1204w3cXu5gCDmAvgvzI6qjzZzoMWKnyVDk3ACgfswTQLYiGen+r8w0VnXnGMmzEN/g8fwIQ4JrFFd4ZP6ssg==", 2866 - "engines": { 2867 - "node": ">= 16" 2868 - }, 2869 - "funding": { 2870 - "url": "https://github.com/sponsors/express-rate-limit" 2871 - }, 2872 - "peerDependencies": { 2873 - "express": "4 || 5 || ^5.0.0-beta.1" 2874 - } 2875 - }, 2876 1772 "node_modules/fast-copy": { 2877 1773 "version": "3.0.2", 2878 1774 "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", ··· 3000 1896 "node": ">= 6" 3001 1897 } 3002 1898 }, 3003 - "node_modules/formidable": { 3004 - "version": "3.5.1", 3005 - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", 3006 - "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", 3007 - "dev": true, 3008 - "dependencies": { 3009 - "dezalgo": "^1.0.4", 3010 - "hexoid": "^1.0.0", 3011 - "once": "^1.4.0" 3012 - }, 3013 - "funding": { 3014 - "url": "https://ko-fi.com/tunnckoCore/commissions" 3015 - } 3016 - }, 3017 1899 "node_modules/forwarded": { 3018 1900 "version": "0.2.0", 3019 1901 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", ··· 3070 1952 "node": "6.* || 8.* || >= 10.*" 3071 1953 } 3072 1954 }, 3073 - "node_modules/get-east-asian-width": { 3074 - "version": "1.2.0", 3075 - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", 3076 - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", 3077 - "dev": true, 3078 - "engines": { 3079 - "node": ">=18" 3080 - }, 3081 - "funding": { 3082 - "url": "https://github.com/sponsors/sindresorhus" 3083 - } 3084 - }, 3085 - "node_modules/get-func-name": { 3086 - "version": "2.0.2", 3087 - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", 3088 - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", 3089 - "dev": true, 3090 - "engines": { 3091 - "node": "*" 3092 - } 3093 - }, 3094 1955 "node_modules/get-intrinsic": { 3095 1956 "version": "1.2.4", 3096 1957 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", ··· 3109 1970 "url": "https://github.com/sponsors/ljharb" 3110 1971 } 3111 1972 }, 3112 - "node_modules/get-stream": { 3113 - "version": "8.0.1", 3114 - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", 3115 - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", 3116 - "dev": true, 3117 - "engines": { 3118 - "node": ">=16" 3119 - }, 3120 - "funding": { 3121 - "url": "https://github.com/sponsors/sindresorhus" 3122 - } 3123 - }, 3124 1973 "node_modules/get-tsconfig": { 3125 1974 "version": "4.7.6", 3126 1975 "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", ··· 3189 2038 "funding": { 3190 2039 "url": "https://github.com/sponsors/sindresorhus" 3191 2040 } 3192 - }, 3193 - "node_modules/globrex": { 3194 - "version": "0.1.2", 3195 - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", 3196 - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", 3197 - "dev": true 3198 2041 }, 3199 2042 "node_modules/gopd": { 3200 2043 "version": "1.0.1", ··· 3265 2108 "node": ">= 0.4" 3266 2109 } 3267 2110 }, 3268 - "node_modules/helmet": { 3269 - "version": "7.1.0", 3270 - "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.1.0.tgz", 3271 - "integrity": "sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==", 3272 - "engines": { 3273 - "node": ">=16.0.0" 3274 - } 3275 - }, 3276 2111 "node_modules/help-me": { 3277 2112 "version": "5.0.0", 3278 2113 "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", 3279 2114 "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", 3280 2115 "dev": true 3281 2116 }, 3282 - "node_modules/hexoid": { 3283 - "version": "1.0.0", 3284 - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", 3285 - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", 3286 - "dev": true, 3287 - "engines": { 3288 - "node": ">=8" 3289 - } 3290 - }, 3291 2117 "node_modules/html-escaper": { 3292 2118 "version": "3.0.3", 3293 2119 "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", ··· 3324 2150 }, 3325 2151 "engines": { 3326 2152 "node": ">= 0.8" 3327 - } 3328 - }, 3329 - "node_modules/http-status-codes": { 3330 - "version": "2.3.0", 3331 - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", 3332 - "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==" 3333 - }, 3334 - "node_modules/human-signals": { 3335 - "version": "5.0.0", 3336 - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", 3337 - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", 3338 - "dev": true, 3339 - "engines": { 3340 - "node": ">=16.17.0" 3341 2153 } 3342 2154 }, 3343 2155 "node_modules/iconv-lite": { ··· 3440 2252 "node": ">=0.10.0" 3441 2253 } 3442 2254 }, 3443 - "node_modules/is-fullwidth-code-point": { 3444 - "version": "4.0.0", 3445 - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", 3446 - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", 3447 - "dev": true, 3448 - "engines": { 3449 - "node": ">=12" 3450 - }, 3451 - "funding": { 3452 - "url": "https://github.com/sponsors/sindresorhus" 3453 - } 3454 - }, 3455 2255 "node_modules/is-glob": { 3456 2256 "version": "4.0.3", 3457 2257 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", ··· 3473 2273 "node": ">=0.12.0" 3474 2274 } 3475 2275 }, 3476 - "node_modules/is-stream": { 3477 - "version": "3.0.0", 3478 - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", 3479 - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", 3480 - "dev": true, 3481 - "engines": { 3482 - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 3483 - }, 3484 - "funding": { 3485 - "url": "https://github.com/sponsors/sindresorhus" 3486 - } 3487 - }, 3488 2276 "node_modules/isexe": { 3489 2277 "version": "2.0.0", 3490 2278 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", ··· 3554 2342 "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 3555 2343 "dev": true 3556 2344 }, 3557 - "node_modules/lint-staged": { 3558 - "version": "15.2.9", 3559 - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.9.tgz", 3560 - "integrity": "sha512-BZAt8Lk3sEnxw7tfxM7jeZlPRuT4M68O0/CwZhhaw6eeWu0Lz5eERE3m386InivXB64fp/mDID452h48tvKlRQ==", 3561 - "dev": true, 3562 - "dependencies": { 3563 - "chalk": "~5.3.0", 3564 - "commander": "~12.1.0", 3565 - "debug": "~4.3.6", 3566 - "execa": "~8.0.1", 3567 - "lilconfig": "~3.1.2", 3568 - "listr2": "~8.2.4", 3569 - "micromatch": "~4.0.7", 3570 - "pidtree": "~0.6.0", 3571 - "string-argv": "~0.3.2", 3572 - "yaml": "~2.5.0" 3573 - }, 3574 - "bin": { 3575 - "lint-staged": "bin/lint-staged.js" 3576 - }, 3577 - "engines": { 3578 - "node": ">=18.12.0" 3579 - }, 3580 - "funding": { 3581 - "url": "https://opencollective.com/lint-staged" 3582 - } 3583 - }, 3584 - "node_modules/lint-staged/node_modules/chalk": { 3585 - "version": "5.3.0", 3586 - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", 3587 - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", 3588 - "dev": true, 3589 - "engines": { 3590 - "node": "^12.17.0 || ^14.13 || >=16.0.0" 3591 - }, 3592 - "funding": { 3593 - "url": "https://github.com/chalk/chalk?sponsor=1" 3594 - } 3595 - }, 3596 - "node_modules/lint-staged/node_modules/commander": { 3597 - "version": "12.1.0", 3598 - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", 3599 - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", 3600 - "dev": true, 3601 - "engines": { 3602 - "node": ">=18" 3603 - } 3604 - }, 3605 - "node_modules/lint-staged/node_modules/debug": { 3606 - "version": "4.3.6", 3607 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", 3608 - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", 3609 - "dev": true, 3610 - "dependencies": { 3611 - "ms": "2.1.2" 3612 - }, 3613 - "engines": { 3614 - "node": ">=6.0" 3615 - }, 3616 - "peerDependenciesMeta": { 3617 - "supports-color": { 3618 - "optional": true 3619 - } 3620 - } 3621 - }, 3622 - "node_modules/lint-staged/node_modules/ms": { 3623 - "version": "2.1.2", 3624 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3625 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3626 - "dev": true 3627 - }, 3628 - "node_modules/listr2": { 3629 - "version": "8.2.4", 3630 - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", 3631 - "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", 3632 - "dev": true, 3633 - "dependencies": { 3634 - "cli-truncate": "^4.0.0", 3635 - "colorette": "^2.0.20", 3636 - "eventemitter3": "^5.0.1", 3637 - "log-update": "^6.1.0", 3638 - "rfdc": "^1.4.1", 3639 - "wrap-ansi": "^9.0.0" 3640 - }, 3641 - "engines": { 3642 - "node": ">=18.0.0" 3643 - } 3644 - }, 3645 2345 "node_modules/load-tsconfig": { 3646 2346 "version": "0.2.5", 3647 2347 "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", ··· 3657 2357 "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", 3658 2358 "dev": true 3659 2359 }, 3660 - "node_modules/log-update": { 3661 - "version": "6.1.0", 3662 - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", 3663 - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", 3664 - "dev": true, 3665 - "dependencies": { 3666 - "ansi-escapes": "^7.0.0", 3667 - "cli-cursor": "^5.0.0", 3668 - "slice-ansi": "^7.1.0", 3669 - "strip-ansi": "^7.1.0", 3670 - "wrap-ansi": "^9.0.0" 3671 - }, 3672 - "engines": { 3673 - "node": ">=18" 3674 - }, 3675 - "funding": { 3676 - "url": "https://github.com/sponsors/sindresorhus" 3677 - } 3678 - }, 3679 - "node_modules/log-update/node_modules/ansi-styles": { 3680 - "version": "6.2.1", 3681 - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 3682 - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 3683 - "dev": true, 3684 - "engines": { 3685 - "node": ">=12" 3686 - }, 3687 - "funding": { 3688 - "url": "https://github.com/chalk/ansi-styles?sponsor=1" 3689 - } 3690 - }, 3691 - "node_modules/log-update/node_modules/is-fullwidth-code-point": { 3692 - "version": "5.0.0", 3693 - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", 3694 - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", 3695 - "dev": true, 3696 - "dependencies": { 3697 - "get-east-asian-width": "^1.0.0" 3698 - }, 3699 - "engines": { 3700 - "node": ">=18" 3701 - }, 3702 - "funding": { 3703 - "url": "https://github.com/sponsors/sindresorhus" 3704 - } 3705 - }, 3706 - "node_modules/log-update/node_modules/slice-ansi": { 3707 - "version": "7.1.0", 3708 - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", 3709 - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", 3710 - "dev": true, 3711 - "dependencies": { 3712 - "ansi-styles": "^6.2.1", 3713 - "is-fullwidth-code-point": "^5.0.0" 3714 - }, 3715 - "engines": { 3716 - "node": ">=18" 3717 - }, 3718 - "funding": { 3719 - "url": "https://github.com/chalk/slice-ansi?sponsor=1" 3720 - } 3721 - }, 3722 - "node_modules/loupe": { 3723 - "version": "3.1.1", 3724 - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", 3725 - "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", 3726 - "dev": true, 3727 - "dependencies": { 3728 - "get-func-name": "^2.0.1" 3729 - } 3730 - }, 3731 2360 "node_modules/lru-cache": { 3732 2361 "version": "10.4.3", 3733 2362 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 3734 2363 "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" 3735 - }, 3736 - "node_modules/magic-string": { 3737 - "version": "0.30.11", 3738 - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", 3739 - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", 3740 - "dev": true, 3741 - "dependencies": { 3742 - "@jridgewell/sourcemap-codec": "^1.5.0" 3743 - } 3744 2364 }, 3745 2365 "node_modules/make-error": { 3746 2366 "version": "1.3.6", ··· 3827 2447 "node": ">= 0.6" 3828 2448 } 3829 2449 }, 3830 - "node_modules/mimic-fn": { 3831 - "version": "4.0.0", 3832 - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", 3833 - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", 3834 - "dev": true, 3835 - "engines": { 3836 - "node": ">=12" 3837 - }, 3838 - "funding": { 3839 - "url": "https://github.com/sponsors/sindresorhus" 3840 - } 3841 - }, 3842 - "node_modules/mimic-function": { 3843 - "version": "5.0.1", 3844 - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", 3845 - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", 3846 - "dev": true, 3847 - "engines": { 3848 - "node": ">=18" 3849 - }, 3850 - "funding": { 3851 - "url": "https://github.com/sponsors/sindresorhus" 3852 - } 3853 - }, 3854 2450 "node_modules/mimic-response": { 3855 2451 "version": "3.1.0", 3856 2452 "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", ··· 3943 2539 "url": "https://github.com/sponsors/ai" 3944 2540 } 3945 2541 ], 2542 + "optional": true, 2543 + "peer": true, 3946 2544 "bin": { 3947 2545 "nanoid": "bin/nanoid.cjs" 3948 2546 }, ··· 3997 2595 "node": ">=0.10.0" 3998 2596 } 3999 2597 }, 4000 - "node_modules/npm-run-path": { 4001 - "version": "5.3.0", 4002 - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", 4003 - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", 4004 - "dev": true, 4005 - "dependencies": { 4006 - "path-key": "^4.0.0" 4007 - }, 4008 - "engines": { 4009 - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 4010 - }, 4011 - "funding": { 4012 - "url": "https://github.com/sponsors/sindresorhus" 4013 - } 4014 - }, 4015 - "node_modules/npm-run-path/node_modules/path-key": { 4016 - "version": "4.0.0", 4017 - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", 4018 - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", 4019 - "dev": true, 4020 - "engines": { 4021 - "node": ">=12" 4022 - }, 4023 - "funding": { 4024 - "url": "https://github.com/sponsors/sindresorhus" 4025 - } 4026 - }, 4027 2598 "node_modules/object-assign": { 4028 2599 "version": "4.1.1", 4029 2600 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 4030 2601 "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 2602 + "dev": true, 4031 2603 "engines": { 4032 2604 "node": ">=0.10.0" 4033 2605 } ··· 4068 2640 "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 4069 2641 "dependencies": { 4070 2642 "wrappy": "1" 4071 - } 4072 - }, 4073 - "node_modules/onetime": { 4074 - "version": "6.0.0", 4075 - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", 4076 - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", 4077 - "dev": true, 4078 - "dependencies": { 4079 - "mimic-fn": "^4.0.0" 4080 - }, 4081 - "engines": { 4082 - "node": ">=12" 4083 - }, 4084 - "funding": { 4085 - "url": "https://github.com/sponsors/sindresorhus" 4086 2643 } 4087 2644 }, 4088 2645 "node_modules/package-json-from-dist": { ··· 4144 2701 "node": ">=8" 4145 2702 } 4146 2703 }, 4147 - "node_modules/pathe": { 4148 - "version": "1.1.2", 4149 - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", 4150 - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", 4151 - "dev": true 4152 - }, 4153 - "node_modules/pathval": { 4154 - "version": "2.0.0", 4155 - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", 4156 - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", 4157 - "dev": true, 4158 - "engines": { 4159 - "node": ">= 14.16" 4160 - } 4161 - }, 4162 2704 "node_modules/picocolors": { 4163 2705 "version": "1.0.1", 4164 2706 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", ··· 4177 2719 "url": "https://github.com/sponsors/jonschlinkert" 4178 2720 } 4179 2721 }, 4180 - "node_modules/pidtree": { 4181 - "version": "0.6.0", 4182 - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", 4183 - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", 4184 - "dev": true, 4185 - "bin": { 4186 - "pidtree": "bin/pidtree.js" 4187 - }, 4188 - "engines": { 4189 - "node": ">=0.10" 4190 - } 4191 - }, 4192 2722 "node_modules/pino": { 4193 2723 "version": "9.3.2", 4194 2724 "resolved": "https://registry.npmjs.org/pino/-/pino-9.3.2.tgz", ··· 4293 2823 "url": "https://github.com/sponsors/ai" 4294 2824 } 4295 2825 ], 2826 + "optional": true, 2827 + "peer": true, 4296 2828 "dependencies": { 4297 2829 "nanoid": "^3.3.7", 4298 2830 "picocolors": "^1.0.1", ··· 4581 3113 "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 4582 3114 } 4583 3115 }, 4584 - "node_modules/restore-cursor": { 4585 - "version": "5.1.0", 4586 - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", 4587 - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", 4588 - "dev": true, 4589 - "dependencies": { 4590 - "onetime": "^7.0.0", 4591 - "signal-exit": "^4.1.0" 4592 - }, 4593 - "engines": { 4594 - "node": ">=18" 4595 - }, 4596 - "funding": { 4597 - "url": "https://github.com/sponsors/sindresorhus" 4598 - } 4599 - }, 4600 - "node_modules/restore-cursor/node_modules/onetime": { 4601 - "version": "7.0.0", 4602 - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", 4603 - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", 4604 - "dev": true, 4605 - "dependencies": { 4606 - "mimic-function": "^5.0.0" 4607 - }, 4608 - "engines": { 4609 - "node": ">=18" 4610 - }, 4611 - "funding": { 4612 - "url": "https://github.com/sponsors/sindresorhus" 4613 - } 4614 - }, 4615 3116 "node_modules/reusify": { 4616 3117 "version": "1.0.4", 4617 3118 "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", ··· 4621 3122 "iojs": ">=1.0.0", 4622 3123 "node": ">=0.10.0" 4623 3124 } 4624 - }, 4625 - "node_modules/rfdc": { 4626 - "version": "1.4.1", 4627 - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", 4628 - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", 4629 - "dev": true 4630 3125 }, 4631 3126 "node_modules/rimraf": { 4632 3127 "version": "5.0.10", ··· 4851 3346 "url": "https://github.com/sponsors/ljharb" 4852 3347 } 4853 3348 }, 4854 - "node_modules/siginfo": { 4855 - "version": "2.0.0", 4856 - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", 4857 - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", 4858 - "dev": true 4859 - }, 4860 3349 "node_modules/signal-exit": { 4861 3350 "version": "4.1.0", 4862 3351 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", ··· 4921 3410 "node": ">=8" 4922 3411 } 4923 3412 }, 4924 - "node_modules/slice-ansi": { 4925 - "version": "5.0.0", 4926 - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", 4927 - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", 4928 - "dev": true, 4929 - "dependencies": { 4930 - "ansi-styles": "^6.0.0", 4931 - "is-fullwidth-code-point": "^4.0.0" 4932 - }, 4933 - "engines": { 4934 - "node": ">=12" 4935 - }, 4936 - "funding": { 4937 - "url": "https://github.com/chalk/slice-ansi?sponsor=1" 4938 - } 4939 - }, 4940 - "node_modules/slice-ansi/node_modules/ansi-styles": { 4941 - "version": "6.2.1", 4942 - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 4943 - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 4944 - "dev": true, 4945 - "engines": { 4946 - "node": ">=12" 4947 - }, 4948 - "funding": { 4949 - "url": "https://github.com/chalk/ansi-styles?sponsor=1" 4950 - } 4951 - }, 4952 3413 "node_modules/sonic-boom": { 4953 3414 "version": "4.0.1", 4954 3415 "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", ··· 4974 3435 "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", 4975 3436 "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", 4976 3437 "dev": true, 3438 + "optional": true, 3439 + "peer": true, 4977 3440 "engines": { 4978 3441 "node": ">=0.10.0" 4979 3442 } ··· 4985 3448 "engines": { 4986 3449 "node": ">= 10.x" 4987 3450 } 4988 - }, 4989 - "node_modules/stackback": { 4990 - "version": "0.0.2", 4991 - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", 4992 - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", 4993 - "dev": true 4994 3451 }, 4995 3452 "node_modules/statuses": { 4996 3453 "version": "2.0.1", ··· 5000 3457 "node": ">= 0.8" 5001 3458 } 5002 3459 }, 5003 - "node_modules/std-env": { 5004 - "version": "3.7.0", 5005 - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", 5006 - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", 5007 - "dev": true 5008 - }, 5009 3460 "node_modules/string_decoder": { 5010 3461 "version": "1.3.0", 5011 3462 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", ··· 5014 3465 "safe-buffer": "~5.2.0" 5015 3466 } 5016 3467 }, 5017 - "node_modules/string-argv": { 5018 - "version": "0.3.2", 5019 - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", 5020 - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", 5021 - "dev": true, 5022 - "engines": { 5023 - "node": ">=0.6.19" 5024 - } 5025 - }, 5026 - "node_modules/string-width": { 5027 - "version": "7.2.0", 5028 - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", 5029 - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", 5030 - "dev": true, 5031 - "dependencies": { 5032 - "emoji-regex": "^10.3.0", 5033 - "get-east-asian-width": "^1.0.0", 5034 - "strip-ansi": "^7.1.0" 5035 - }, 5036 - "engines": { 5037 - "node": ">=18" 5038 - }, 5039 - "funding": { 5040 - "url": "https://github.com/sponsors/sindresorhus" 5041 - } 5042 - }, 5043 3468 "node_modules/string-width-cjs": { 5044 3469 "name": "string-width", 5045 3470 "version": "4.2.3", ··· 5128 3553 "node": ">=8" 5129 3554 } 5130 3555 }, 5131 - "node_modules/strip-final-newline": { 5132 - "version": "3.0.0", 5133 - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", 5134 - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", 5135 - "dev": true, 5136 - "engines": { 5137 - "node": ">=12" 5138 - }, 5139 - "funding": { 5140 - "url": "https://github.com/sponsors/sindresorhus" 5141 - } 5142 - }, 5143 3556 "node_modules/strip-json-comments": { 5144 3557 "version": "3.1.1", 5145 3558 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", ··· 5183 3596 "node": ">= 6" 5184 3597 } 5185 3598 }, 5186 - "node_modules/superagent": { 5187 - "version": "9.0.2", 5188 - "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", 5189 - "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==", 5190 - "dev": true, 5191 - "dependencies": { 5192 - "component-emitter": "^1.3.0", 5193 - "cookiejar": "^2.1.4", 5194 - "debug": "^4.3.4", 5195 - "fast-safe-stringify": "^2.1.1", 5196 - "form-data": "^4.0.0", 5197 - "formidable": "^3.5.1", 5198 - "methods": "^1.1.2", 5199 - "mime": "2.6.0", 5200 - "qs": "^6.11.0" 5201 - }, 5202 - "engines": { 5203 - "node": ">=14.18.0" 5204 - } 5205 - }, 5206 - "node_modules/superagent/node_modules/debug": { 5207 - "version": "4.3.6", 5208 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", 5209 - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", 5210 - "dev": true, 5211 - "dependencies": { 5212 - "ms": "2.1.2" 5213 - }, 5214 - "engines": { 5215 - "node": ">=6.0" 5216 - }, 5217 - "peerDependenciesMeta": { 5218 - "supports-color": { 5219 - "optional": true 5220 - } 5221 - } 5222 - }, 5223 - "node_modules/superagent/node_modules/mime": { 5224 - "version": "2.6.0", 5225 - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", 5226 - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", 5227 - "dev": true, 5228 - "bin": { 5229 - "mime": "cli.js" 5230 - }, 5231 - "engines": { 5232 - "node": ">=4.0.0" 5233 - } 5234 - }, 5235 - "node_modules/superagent/node_modules/ms": { 5236 - "version": "2.1.2", 5237 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 5238 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 5239 - "dev": true 5240 - }, 5241 - "node_modules/supertest": { 5242 - "version": "7.0.0", 5243 - "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.0.0.tgz", 5244 - "integrity": "sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==", 5245 - "dev": true, 5246 - "dependencies": { 5247 - "methods": "^1.1.2", 5248 - "superagent": "^9.0.1" 5249 - }, 5250 - "engines": { 5251 - "node": ">=14.18.0" 5252 - } 5253 - }, 5254 3599 "node_modules/supports-color": { 5255 3600 "version": "7.2.0", 5256 3601 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", ··· 5331 3676 "real-require": "^0.2.0" 5332 3677 } 5333 3678 }, 5334 - "node_modules/tinybench": { 5335 - "version": "2.9.0", 5336 - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", 5337 - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", 5338 - "dev": true 5339 - }, 5340 - "node_modules/tinypool": { 5341 - "version": "1.0.0", 5342 - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", 5343 - "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", 5344 - "dev": true, 5345 - "engines": { 5346 - "node": "^18.0.0 || >=20.0.0" 5347 - } 5348 - }, 5349 - "node_modules/tinyrainbow": { 5350 - "version": "1.2.0", 5351 - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", 5352 - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", 5353 - "dev": true, 5354 - "engines": { 5355 - "node": ">=14.0.0" 5356 - } 5357 - }, 5358 - "node_modules/tinyspy": { 5359 - "version": "3.0.0", 5360 - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", 5361 - "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", 5362 - "dev": true, 5363 - "engines": { 5364 - "node": ">=14.0.0" 5365 - } 5366 - }, 5367 3679 "node_modules/tlds": { 5368 3680 "version": "1.254.0", 5369 3681 "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.254.0.tgz", ··· 5465 3777 "optional": true 5466 3778 }, 5467 3779 "@swc/wasm": { 5468 - "optional": true 5469 - } 5470 - } 5471 - }, 5472 - "node_modules/tsconfck": { 5473 - "version": "3.1.1", 5474 - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", 5475 - "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", 5476 - "dev": true, 5477 - "bin": { 5478 - "tsconfck": "bin/tsconfck.js" 5479 - }, 5480 - "engines": { 5481 - "node": "^18 || >=20" 5482 - }, 5483 - "peerDependencies": { 5484 - "typescript": "^5.0.0" 5485 - }, 5486 - "peerDependenciesMeta": { 5487 - "typescript": { 5488 3780 "optional": true 5489 3781 } 5490 3782 } ··· 5820 4112 "node": ">= 0.8" 5821 4113 } 5822 4114 }, 5823 - "node_modules/vite": { 5824 - "version": "5.4.0", 5825 - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", 5826 - "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", 5827 - "dev": true, 5828 - "dependencies": { 5829 - "esbuild": "^0.21.3", 5830 - "postcss": "^8.4.40", 5831 - "rollup": "^4.13.0" 5832 - }, 5833 - "bin": { 5834 - "vite": "bin/vite.js" 5835 - }, 5836 - "engines": { 5837 - "node": "^18.0.0 || >=20.0.0" 5838 - }, 5839 - "funding": { 5840 - "url": "https://github.com/vitejs/vite?sponsor=1" 5841 - }, 5842 - "optionalDependencies": { 5843 - "fsevents": "~2.3.3" 5844 - }, 5845 - "peerDependencies": { 5846 - "@types/node": "^18.0.0 || >=20.0.0", 5847 - "less": "*", 5848 - "lightningcss": "^1.21.0", 5849 - "sass": "*", 5850 - "sass-embedded": "*", 5851 - "stylus": "*", 5852 - "sugarss": "*", 5853 - "terser": "^5.4.0" 5854 - }, 5855 - "peerDependenciesMeta": { 5856 - "@types/node": { 5857 - "optional": true 5858 - }, 5859 - "less": { 5860 - "optional": true 5861 - }, 5862 - "lightningcss": { 5863 - "optional": true 5864 - }, 5865 - "sass": { 5866 - "optional": true 5867 - }, 5868 - "sass-embedded": { 5869 - "optional": true 5870 - }, 5871 - "stylus": { 5872 - "optional": true 5873 - }, 5874 - "sugarss": { 5875 - "optional": true 5876 - }, 5877 - "terser": { 5878 - "optional": true 5879 - } 5880 - } 5881 - }, 5882 - "node_modules/vite-node": { 5883 - "version": "2.0.5", 5884 - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz", 5885 - "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==", 5886 - "dev": true, 5887 - "dependencies": { 5888 - "cac": "^6.7.14", 5889 - "debug": "^4.3.5", 5890 - "pathe": "^1.1.2", 5891 - "tinyrainbow": "^1.2.0", 5892 - "vite": "^5.0.0" 5893 - }, 5894 - "bin": { 5895 - "vite-node": "vite-node.mjs" 5896 - }, 5897 - "engines": { 5898 - "node": "^18.0.0 || >=20.0.0" 5899 - }, 5900 - "funding": { 5901 - "url": "https://opencollective.com/vitest" 5902 - } 5903 - }, 5904 - "node_modules/vite-node/node_modules/debug": { 5905 - "version": "4.3.6", 5906 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", 5907 - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", 5908 - "dev": true, 5909 - "dependencies": { 5910 - "ms": "2.1.2" 5911 - }, 5912 - "engines": { 5913 - "node": ">=6.0" 5914 - }, 5915 - "peerDependenciesMeta": { 5916 - "supports-color": { 5917 - "optional": true 5918 - } 5919 - } 5920 - }, 5921 - "node_modules/vite-node/node_modules/ms": { 5922 - "version": "2.1.2", 5923 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 5924 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 5925 - "dev": true 5926 - }, 5927 - "node_modules/vite-tsconfig-paths": { 5928 - "version": "4.3.2", 5929 - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", 5930 - "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", 5931 - "dev": true, 5932 - "dependencies": { 5933 - "debug": "^4.1.1", 5934 - "globrex": "^0.1.2", 5935 - "tsconfck": "^3.0.3" 5936 - }, 5937 - "peerDependencies": { 5938 - "vite": "*" 5939 - }, 5940 - "peerDependenciesMeta": { 5941 - "vite": { 5942 - "optional": true 5943 - } 5944 - } 5945 - }, 5946 - "node_modules/vite-tsconfig-paths/node_modules/debug": { 5947 - "version": "4.3.6", 5948 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", 5949 - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", 5950 - "dev": true, 5951 - "dependencies": { 5952 - "ms": "2.1.2" 5953 - }, 5954 - "engines": { 5955 - "node": ">=6.0" 5956 - }, 5957 - "peerDependenciesMeta": { 5958 - "supports-color": { 5959 - "optional": true 5960 - } 5961 - } 5962 - }, 5963 - "node_modules/vite-tsconfig-paths/node_modules/ms": { 5964 - "version": "2.1.2", 5965 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 5966 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 5967 - "dev": true 5968 - }, 5969 - "node_modules/vite/node_modules/@esbuild/aix-ppc64": { 5970 - "version": "0.21.5", 5971 - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 5972 - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 5973 - "cpu": [ 5974 - "ppc64" 5975 - ], 5976 - "dev": true, 5977 - "optional": true, 5978 - "os": [ 5979 - "aix" 5980 - ], 5981 - "engines": { 5982 - "node": ">=12" 5983 - } 5984 - }, 5985 - "node_modules/vite/node_modules/@esbuild/android-arm": { 5986 - "version": "0.21.5", 5987 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 5988 - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 5989 - "cpu": [ 5990 - "arm" 5991 - ], 5992 - "dev": true, 5993 - "optional": true, 5994 - "os": [ 5995 - "android" 5996 - ], 5997 - "engines": { 5998 - "node": ">=12" 5999 - } 6000 - }, 6001 - "node_modules/vite/node_modules/@esbuild/android-arm64": { 6002 - "version": "0.21.5", 6003 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 6004 - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 6005 - "cpu": [ 6006 - "arm64" 6007 - ], 6008 - "dev": true, 6009 - "optional": true, 6010 - "os": [ 6011 - "android" 6012 - ], 6013 - "engines": { 6014 - "node": ">=12" 6015 - } 6016 - }, 6017 - "node_modules/vite/node_modules/@esbuild/android-x64": { 6018 - "version": "0.21.5", 6019 - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 6020 - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 6021 - "cpu": [ 6022 - "x64" 6023 - ], 6024 - "dev": true, 6025 - "optional": true, 6026 - "os": [ 6027 - "android" 6028 - ], 6029 - "engines": { 6030 - "node": ">=12" 6031 - } 6032 - }, 6033 - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { 6034 - "version": "0.21.5", 6035 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 6036 - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 6037 - "cpu": [ 6038 - "arm64" 6039 - ], 6040 - "dev": true, 6041 - "optional": true, 6042 - "os": [ 6043 - "darwin" 6044 - ], 6045 - "engines": { 6046 - "node": ">=12" 6047 - } 6048 - }, 6049 - "node_modules/vite/node_modules/@esbuild/darwin-x64": { 6050 - "version": "0.21.5", 6051 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 6052 - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 6053 - "cpu": [ 6054 - "x64" 6055 - ], 6056 - "dev": true, 6057 - "optional": true, 6058 - "os": [ 6059 - "darwin" 6060 - ], 6061 - "engines": { 6062 - "node": ">=12" 6063 - } 6064 - }, 6065 - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { 6066 - "version": "0.21.5", 6067 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 6068 - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 6069 - "cpu": [ 6070 - "arm64" 6071 - ], 6072 - "dev": true, 6073 - "optional": true, 6074 - "os": [ 6075 - "freebsd" 6076 - ], 6077 - "engines": { 6078 - "node": ">=12" 6079 - } 6080 - }, 6081 - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { 6082 - "version": "0.21.5", 6083 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 6084 - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 6085 - "cpu": [ 6086 - "x64" 6087 - ], 6088 - "dev": true, 6089 - "optional": true, 6090 - "os": [ 6091 - "freebsd" 6092 - ], 6093 - "engines": { 6094 - "node": ">=12" 6095 - } 6096 - }, 6097 - "node_modules/vite/node_modules/@esbuild/linux-arm": { 6098 - "version": "0.21.5", 6099 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 6100 - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 6101 - "cpu": [ 6102 - "arm" 6103 - ], 6104 - "dev": true, 6105 - "optional": true, 6106 - "os": [ 6107 - "linux" 6108 - ], 6109 - "engines": { 6110 - "node": ">=12" 6111 - } 6112 - }, 6113 - "node_modules/vite/node_modules/@esbuild/linux-arm64": { 6114 - "version": "0.21.5", 6115 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 6116 - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 6117 - "cpu": [ 6118 - "arm64" 6119 - ], 6120 - "dev": true, 6121 - "optional": true, 6122 - "os": [ 6123 - "linux" 6124 - ], 6125 - "engines": { 6126 - "node": ">=12" 6127 - } 6128 - }, 6129 - "node_modules/vite/node_modules/@esbuild/linux-ia32": { 6130 - "version": "0.21.5", 6131 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 6132 - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 6133 - "cpu": [ 6134 - "ia32" 6135 - ], 6136 - "dev": true, 6137 - "optional": true, 6138 - "os": [ 6139 - "linux" 6140 - ], 6141 - "engines": { 6142 - "node": ">=12" 6143 - } 6144 - }, 6145 - "node_modules/vite/node_modules/@esbuild/linux-loong64": { 6146 - "version": "0.21.5", 6147 - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 6148 - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 6149 - "cpu": [ 6150 - "loong64" 6151 - ], 6152 - "dev": true, 6153 - "optional": true, 6154 - "os": [ 6155 - "linux" 6156 - ], 6157 - "engines": { 6158 - "node": ">=12" 6159 - } 6160 - }, 6161 - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { 6162 - "version": "0.21.5", 6163 - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 6164 - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 6165 - "cpu": [ 6166 - "mips64el" 6167 - ], 6168 - "dev": true, 6169 - "optional": true, 6170 - "os": [ 6171 - "linux" 6172 - ], 6173 - "engines": { 6174 - "node": ">=12" 6175 - } 6176 - }, 6177 - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { 6178 - "version": "0.21.5", 6179 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 6180 - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 6181 - "cpu": [ 6182 - "ppc64" 6183 - ], 6184 - "dev": true, 6185 - "optional": true, 6186 - "os": [ 6187 - "linux" 6188 - ], 6189 - "engines": { 6190 - "node": ">=12" 6191 - } 6192 - }, 6193 - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { 6194 - "version": "0.21.5", 6195 - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 6196 - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 6197 - "cpu": [ 6198 - "riscv64" 6199 - ], 6200 - "dev": true, 6201 - "optional": true, 6202 - "os": [ 6203 - "linux" 6204 - ], 6205 - "engines": { 6206 - "node": ">=12" 6207 - } 6208 - }, 6209 - "node_modules/vite/node_modules/@esbuild/linux-s390x": { 6210 - "version": "0.21.5", 6211 - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 6212 - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 6213 - "cpu": [ 6214 - "s390x" 6215 - ], 6216 - "dev": true, 6217 - "optional": true, 6218 - "os": [ 6219 - "linux" 6220 - ], 6221 - "engines": { 6222 - "node": ">=12" 6223 - } 6224 - }, 6225 - "node_modules/vite/node_modules/@esbuild/linux-x64": { 6226 - "version": "0.21.5", 6227 - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", 6228 - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 6229 - "cpu": [ 6230 - "x64" 6231 - ], 6232 - "dev": true, 6233 - "optional": true, 6234 - "os": [ 6235 - "linux" 6236 - ], 6237 - "engines": { 6238 - "node": ">=12" 6239 - } 6240 - }, 6241 - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { 6242 - "version": "0.21.5", 6243 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 6244 - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 6245 - "cpu": [ 6246 - "x64" 6247 - ], 6248 - "dev": true, 6249 - "optional": true, 6250 - "os": [ 6251 - "netbsd" 6252 - ], 6253 - "engines": { 6254 - "node": ">=12" 6255 - } 6256 - }, 6257 - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { 6258 - "version": "0.21.5", 6259 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 6260 - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 6261 - "cpu": [ 6262 - "x64" 6263 - ], 6264 - "dev": true, 6265 - "optional": true, 6266 - "os": [ 6267 - "openbsd" 6268 - ], 6269 - "engines": { 6270 - "node": ">=12" 6271 - } 6272 - }, 6273 - "node_modules/vite/node_modules/@esbuild/sunos-x64": { 6274 - "version": "0.21.5", 6275 - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 6276 - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 6277 - "cpu": [ 6278 - "x64" 6279 - ], 6280 - "dev": true, 6281 - "optional": true, 6282 - "os": [ 6283 - "sunos" 6284 - ], 6285 - "engines": { 6286 - "node": ">=12" 6287 - } 6288 - }, 6289 - "node_modules/vite/node_modules/@esbuild/win32-arm64": { 6290 - "version": "0.21.5", 6291 - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 6292 - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 6293 - "cpu": [ 6294 - "arm64" 6295 - ], 6296 - "dev": true, 6297 - "optional": true, 6298 - "os": [ 6299 - "win32" 6300 - ], 6301 - "engines": { 6302 - "node": ">=12" 6303 - } 6304 - }, 6305 - "node_modules/vite/node_modules/@esbuild/win32-ia32": { 6306 - "version": "0.21.5", 6307 - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 6308 - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 6309 - "cpu": [ 6310 - "ia32" 6311 - ], 6312 - "dev": true, 6313 - "optional": true, 6314 - "os": [ 6315 - "win32" 6316 - ], 6317 - "engines": { 6318 - "node": ">=12" 6319 - } 6320 - }, 6321 - "node_modules/vite/node_modules/@esbuild/win32-x64": { 6322 - "version": "0.21.5", 6323 - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 6324 - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 6325 - "cpu": [ 6326 - "x64" 6327 - ], 6328 - "dev": true, 6329 - "optional": true, 6330 - "os": [ 6331 - "win32" 6332 - ], 6333 - "engines": { 6334 - "node": ">=12" 6335 - } 6336 - }, 6337 - "node_modules/vite/node_modules/esbuild": { 6338 - "version": "0.21.5", 6339 - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", 6340 - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 6341 - "dev": true, 6342 - "hasInstallScript": true, 6343 - "bin": { 6344 - "esbuild": "bin/esbuild" 6345 - }, 6346 - "engines": { 6347 - "node": ">=12" 6348 - }, 6349 - "optionalDependencies": { 6350 - "@esbuild/aix-ppc64": "0.21.5", 6351 - "@esbuild/android-arm": "0.21.5", 6352 - "@esbuild/android-arm64": "0.21.5", 6353 - "@esbuild/android-x64": "0.21.5", 6354 - "@esbuild/darwin-arm64": "0.21.5", 6355 - "@esbuild/darwin-x64": "0.21.5", 6356 - "@esbuild/freebsd-arm64": "0.21.5", 6357 - "@esbuild/freebsd-x64": "0.21.5", 6358 - "@esbuild/linux-arm": "0.21.5", 6359 - "@esbuild/linux-arm64": "0.21.5", 6360 - "@esbuild/linux-ia32": "0.21.5", 6361 - "@esbuild/linux-loong64": "0.21.5", 6362 - "@esbuild/linux-mips64el": "0.21.5", 6363 - "@esbuild/linux-ppc64": "0.21.5", 6364 - "@esbuild/linux-riscv64": "0.21.5", 6365 - "@esbuild/linux-s390x": "0.21.5", 6366 - "@esbuild/linux-x64": "0.21.5", 6367 - "@esbuild/netbsd-x64": "0.21.5", 6368 - "@esbuild/openbsd-x64": "0.21.5", 6369 - "@esbuild/sunos-x64": "0.21.5", 6370 - "@esbuild/win32-arm64": "0.21.5", 6371 - "@esbuild/win32-ia32": "0.21.5", 6372 - "@esbuild/win32-x64": "0.21.5" 6373 - } 6374 - }, 6375 - "node_modules/vitest": { 6376 - "version": "2.0.5", 6377 - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz", 6378 - "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==", 6379 - "dev": true, 6380 - "dependencies": { 6381 - "@ampproject/remapping": "^2.3.0", 6382 - "@vitest/expect": "2.0.5", 6383 - "@vitest/pretty-format": "^2.0.5", 6384 - "@vitest/runner": "2.0.5", 6385 - "@vitest/snapshot": "2.0.5", 6386 - "@vitest/spy": "2.0.5", 6387 - "@vitest/utils": "2.0.5", 6388 - "chai": "^5.1.1", 6389 - "debug": "^4.3.5", 6390 - "execa": "^8.0.1", 6391 - "magic-string": "^0.30.10", 6392 - "pathe": "^1.1.2", 6393 - "std-env": "^3.7.0", 6394 - "tinybench": "^2.8.0", 6395 - "tinypool": "^1.0.0", 6396 - "tinyrainbow": "^1.2.0", 6397 - "vite": "^5.0.0", 6398 - "vite-node": "2.0.5", 6399 - "why-is-node-running": "^2.3.0" 6400 - }, 6401 - "bin": { 6402 - "vitest": "vitest.mjs" 6403 - }, 6404 - "engines": { 6405 - "node": "^18.0.0 || >=20.0.0" 6406 - }, 6407 - "funding": { 6408 - "url": "https://opencollective.com/vitest" 6409 - }, 6410 - "peerDependencies": { 6411 - "@edge-runtime/vm": "*", 6412 - "@types/node": "^18.0.0 || >=20.0.0", 6413 - "@vitest/browser": "2.0.5", 6414 - "@vitest/ui": "2.0.5", 6415 - "happy-dom": "*", 6416 - "jsdom": "*" 6417 - }, 6418 - "peerDependenciesMeta": { 6419 - "@edge-runtime/vm": { 6420 - "optional": true 6421 - }, 6422 - "@types/node": { 6423 - "optional": true 6424 - }, 6425 - "@vitest/browser": { 6426 - "optional": true 6427 - }, 6428 - "@vitest/ui": { 6429 - "optional": true 6430 - }, 6431 - "happy-dom": { 6432 - "optional": true 6433 - }, 6434 - "jsdom": { 6435 - "optional": true 6436 - } 6437 - } 6438 - }, 6439 - "node_modules/vitest/node_modules/debug": { 6440 - "version": "4.3.6", 6441 - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", 6442 - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", 6443 - "dev": true, 6444 - "dependencies": { 6445 - "ms": "2.1.2" 6446 - }, 6447 - "engines": { 6448 - "node": ">=6.0" 6449 - }, 6450 - "peerDependenciesMeta": { 6451 - "supports-color": { 6452 - "optional": true 6453 - } 6454 - } 6455 - }, 6456 - "node_modules/vitest/node_modules/ms": { 6457 - "version": "2.1.2", 6458 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 6459 - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 6460 - "dev": true 6461 - }, 6462 4115 "node_modules/webidl-conversions": { 6463 4116 "version": "4.0.2", 6464 4117 "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", ··· 6491 4144 "node": ">= 8" 6492 4145 } 6493 4146 }, 6494 - "node_modules/why-is-node-running": { 6495 - "version": "2.3.0", 6496 - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", 6497 - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", 6498 - "dev": true, 6499 - "dependencies": { 6500 - "siginfo": "^2.0.0", 6501 - "stackback": "0.0.2" 6502 - }, 6503 - "bin": { 6504 - "why-is-node-running": "cli.js" 6505 - }, 6506 - "engines": { 6507 - "node": ">=8" 6508 - } 6509 - }, 6510 - "node_modules/wrap-ansi": { 6511 - "version": "9.0.0", 6512 - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", 6513 - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", 6514 - "dev": true, 6515 - "dependencies": { 6516 - "ansi-styles": "^6.2.1", 6517 - "string-width": "^7.0.0", 6518 - "strip-ansi": "^7.1.0" 6519 - }, 6520 - "engines": { 6521 - "node": ">=18" 6522 - }, 6523 - "funding": { 6524 - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 6525 - } 6526 - }, 6527 4147 "node_modules/wrap-ansi-cjs": { 6528 4148 "name": "wrap-ansi", 6529 4149 "version": "7.0.0", ··· 6592 4212 "node": ">=8" 6593 4213 } 6594 4214 }, 6595 - "node_modules/wrap-ansi/node_modules/ansi-styles": { 6596 - "version": "6.2.1", 6597 - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 6598 - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 6599 - "dev": true, 6600 - "engines": { 6601 - "node": ">=12" 6602 - }, 6603 - "funding": { 6604 - "url": "https://github.com/chalk/ansi-styles?sponsor=1" 6605 - } 6606 - }, 6607 4215 "node_modules/wrappy": { 6608 4216 "version": "1.0.2", 6609 4217 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", ··· 6634 4242 "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", 6635 4243 "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", 6636 4244 "dev": true, 4245 + "optional": true, 4246 + "peer": true, 6637 4247 "bin": { 6638 4248 "yaml": "bin.mjs" 6639 4249 },
+2 -23
package.json
··· 11 11 "build": "tsup", 12 12 "start": "node dist/index.js", 13 13 "lexgen": "lex gen-server ./src/lexicon ./lexicons/*", 14 - "clean": "rimraf dist coverage", 15 - "lint": "biome check src/", 16 - "lint:fix": "biome check src/ --fix", 17 - "format": "biome format src/", 18 - "test": "vitest run" 14 + "clean": "rimraf dist coverage" 19 15 }, 20 16 "dependencies": { 21 17 "@atproto/identity": "^0.4.0", 22 - "@atproto/jwk-jose": "0.1.2-rc.0", 23 18 "@atproto/lexicon": "0.4.1-rc.0", 24 19 "@atproto/oauth-client-node": "0.0.2-rc.2", 25 20 "@atproto/repo": "0.4.2-rc.0", 26 21 "@atproto/syntax": "^0.3.0", 27 22 "@atproto/xrpc-server": "0.5.4-rc.0", 28 23 "better-sqlite3": "^11.1.2", 29 - "cors": "^2.8.5", 30 24 "dotenv": "^16.4.5", 31 25 "envalid": "^8.0.0", 32 26 "express": "^4.19.2", 33 - "express-rate-limit": "^7.2.0", 34 - "helmet": "^7.1.0", 35 - "http-status-codes": "^2.3.0", 36 27 "iron-session": "^8.0.2", 37 28 "kysely": "^0.27.4", 38 29 "multiformats": "^9.9.0", 39 30 "pino": "^9.3.2", 40 - "pino-http": "^10.0.0", 41 31 "uhtml": "^4.5.9" 42 32 }, 43 33 "devDependencies": { 44 34 "@atproto/lex-cli": "^0.4.1", 45 - "@biomejs/biome": "1.8.3", 46 35 "@types/better-sqlite3": "^7.6.11", 47 - "@types/cors": "^2.8.17", 48 36 "@types/express": "^4.17.21", 49 - "lint-staged": "^15.2.2", 50 37 "pino-pretty": "^11.0.0", 51 38 "rimraf": "^5.0.0", 52 - "supertest": "^7.0.0", 53 39 "ts-node": "^10.9.2", 54 40 "tsup": "^8.0.2", 55 41 "tsx": "^4.7.2", 56 - "typescript": "^5.4.4", 57 - "vite-tsconfig-paths": "^4.3.2", 58 - "vitest": "^2.0.0" 59 - }, 60 - "lint-staged": { 61 - "*.{js,ts,cjs,mjs,d.cts,d.mts,json,jsonc}": [ 62 - "biome check --apply --no-errors-on-unmatched" 63 - ] 42 + "typescript": "^5.4.4" 64 43 }, 65 44 "tsup": { 66 45 "entry": [
-1
src/auth/client.ts
··· 1 - import { JoseKey } from '@atproto/jwk-jose' 2 1 import { NodeOAuthClient } from '@atproto/oauth-client-node' 3 2 import type { Database } from '#/db' 4 3 import { env } from '#/env'
+1 -3
src/auth/session.ts
··· 1 - 'use server' 2 - 3 1 import assert from 'node:assert' 4 2 import type { IncomingMessage, ServerResponse } from 'node:http' 5 3 import { getIronSession } from 'iron-session' 6 4 import { env } from '#/env' 7 - import { AppContext } from '#/config' 5 + import { AppContext } from '#/index' 8 6 9 7 export type Session = { did: string } 10 8
-13
src/config.ts
··· 1 - import type { OAuthClient } from '@atproto/oauth-client-node' 2 - import type pino from 'pino' 3 - import type { Database } from '#/db' 4 - import type { Ingester } from '#/firehose/ingester' 5 - import { Resolver } from '#/ident/types' 6 - 7 - export type AppContext = { 8 - db: Database 9 - ingester: Ingester 10 - logger: pino.Logger 11 - oauthClient: OAuthClient 12 - resolver: Resolver 13 - }
-1
src/env.ts
··· 13 13 PUBLIC_URL: str({}), 14 14 DB_PATH: str({ devDefault: ':memory:' }), 15 15 COOKIE_SECRET: str({ devDefault: '00000000000000000000000000000000' }), 16 - CORS_ORIGIN: str({ devDefault: testOnly('http://localhost:3000') }), 17 16 COMMON_RATE_LIMIT_MAX_REQUESTS: num({ devDefault: testOnly(1000) }), 18 17 COMMON_RATE_LIMIT_WINDOW_MS: num({ devDefault: testOnly(1000) }), 19 18 })
+5
src/ident/resolver.ts src/firehose/resolver.ts
··· 3 3 const HOUR = 60e3 * 60 4 4 const DAY = HOUR * 24 5 5 6 + export interface Resolver { 7 + resolveDidToHandle(did: string): Promise<string> 8 + resolveDidsToHandles(dids: string[]): Promise<Record<string, string>> 9 + } 10 + 6 11 export function createResolver() { 7 12 const resolver = new IdResolver({ 8 13 didCache: new MemoryCache(HOUR, DAY),
-4
src/ident/types.ts
··· 1 - export interface Resolver { 2 - resolveDidToHandle(did: string): Promise<string> 3 - resolveDidsToHandles(dids: string[]): Promise<Record<string, string>> 4 - }
+81 -1
src/index.ts
··· 1 - import { Server } from '#/server' 1 + import events from 'node:events' 2 + import type http from 'node:http' 3 + import express, { type Express } from 'express' 4 + import { pino } from 'pino' 5 + import type { OAuthClient } from '@atproto/oauth-client-node' 6 + 7 + import { createDb, migrateToLatest } from '#/db' 8 + import { env } from '#/env' 9 + import { Ingester } from '#/firehose/ingester' 10 + import { createRouter } from '#/routes' 11 + import { createClient } from '#/auth/client' 12 + import { createResolver, Resolver } from '#/firehose/resolver' 13 + import type { Database } from '#/db' 14 + 15 + export type AppContext = { 16 + db: Database 17 + ingester: Ingester 18 + logger: pino.Logger 19 + oauthClient: OAuthClient 20 + resolver: Resolver 21 + } 22 + 23 + export class Server { 24 + constructor( 25 + public app: express.Application, 26 + public server: http.Server, 27 + public ctx: AppContext 28 + ) {} 29 + 30 + static async create() { 31 + const { NODE_ENV, HOST, PORT, DB_PATH } = env 32 + 33 + const logger = pino({ name: 'server start' }) 34 + const db = createDb(DB_PATH) 35 + await migrateToLatest(db) 36 + const ingester = new Ingester(db) 37 + const oauthClient = await createClient(db) 38 + const resolver = createResolver() 39 + ingester.start() 40 + const ctx = { 41 + db, 42 + ingester, 43 + logger, 44 + oauthClient, 45 + resolver, 46 + } 47 + 48 + const app: Express = express() 49 + 50 + // Set the application to trust the reverse proxy 51 + app.set('trust proxy', true) 52 + 53 + // Middlewares 54 + app.use(express.json()) 55 + app.use(express.urlencoded({ extended: true })) 56 + 57 + // Routes 58 + const router = createRouter(ctx) 59 + app.use(router) 60 + 61 + // Error handlers 62 + app.use((_req, res) => res.sendStatus(404)) 63 + 64 + const server = app.listen(env.PORT) 65 + await events.once(server, 'listening') 66 + logger.info(`Server (${NODE_ENV}) running on port http://${HOST}:${PORT}`) 67 + 68 + return new Server(app, server, ctx) 69 + } 70 + 71 + async close() { 72 + this.ctx.logger.info('sigint received, shutting down') 73 + this.ctx.ingester.destroy() 74 + return new Promise<void>((resolve) => { 75 + this.server.close(() => { 76 + this.ctx.logger.info('server closed') 77 + resolve() 78 + }) 79 + }) 80 + } 81 + } 2 82 3 83 const run = async () => { 4 84 const server = await Server.create()
-13
src/middleware/errorHandler.ts
··· 1 - import type { ErrorRequestHandler, RequestHandler } from 'express' 2 - import { StatusCodes } from 'http-status-codes' 3 - 4 - const unexpectedRequest: RequestHandler = (_req, res) => { 5 - res.sendStatus(StatusCodes.NOT_FOUND) 6 - } 7 - 8 - const addErrorToRequestLog: ErrorRequestHandler = (err, _req, res, next) => { 9 - res.locals.err = err 10 - next(err) 11 - } 12 - 13 - export default () => [unexpectedRequest, addErrorToRequestLog]
-90
src/middleware/requestLogger.ts
··· 1 - import { randomUUID } from 'node:crypto' 2 - import type { IncomingMessage, ServerResponse } from 'node:http' 3 - import type { Request, RequestHandler, Response } from 'express' 4 - import { StatusCodes, getReasonPhrase } from 'http-status-codes' 5 - import type { LevelWithSilent } from 'pino' 6 - import { type CustomAttributeKeys, type Options, pinoHttp } from 'pino-http' 7 - 8 - import { env } from '#/env' 9 - 10 - enum LogLevel { 11 - Fatal = 'fatal', 12 - Error = 'error', 13 - Warn = 'warn', 14 - Info = 'info', 15 - Debug = 'debug', 16 - Trace = 'trace', 17 - Silent = 'silent', 18 - } 19 - 20 - type PinoCustomProps = { 21 - request: Request 22 - response: Response 23 - error: Error 24 - responseBody: unknown 25 - } 26 - 27 - const requestLogger = (options?: Options): RequestHandler[] => { 28 - const pinoOptions: Options = { 29 - enabled: env.isProduction, 30 - customProps: customProps as unknown as Options['customProps'], 31 - redact: [], 32 - genReqId, 33 - customLogLevel, 34 - customSuccessMessage, 35 - customReceivedMessage: (req) => `request received: ${req.method}`, 36 - customErrorMessage: (_req, res) => `request errored with status code: ${res.statusCode}`, 37 - customAttributeKeys, 38 - ...options, 39 - } 40 - return [responseBodyMiddleware, pinoHttp(pinoOptions)] 41 - } 42 - 43 - const customAttributeKeys: CustomAttributeKeys = { 44 - req: 'request', 45 - res: 'response', 46 - err: 'error', 47 - responseTime: 'timeTaken', 48 - } 49 - 50 - const customProps = (req: Request, res: Response): PinoCustomProps => ({ 51 - request: req, 52 - response: res, 53 - error: res.locals.err, 54 - responseBody: res.locals.responseBody, 55 - }) 56 - 57 - const responseBodyMiddleware: RequestHandler = (_req, res, next) => { 58 - const isNotProduction = !env.isProduction 59 - if (isNotProduction) { 60 - const originalSend = res.send 61 - res.send = (content) => { 62 - res.locals.responseBody = content 63 - res.send = originalSend 64 - return originalSend.call(res, content) 65 - } 66 - } 67 - next() 68 - } 69 - 70 - const customLogLevel = (_req: IncomingMessage, res: ServerResponse<IncomingMessage>, err?: Error): LevelWithSilent => { 71 - if (err || res.statusCode >= StatusCodes.INTERNAL_SERVER_ERROR) return LogLevel.Error 72 - if (res.statusCode >= StatusCodes.BAD_REQUEST) return LogLevel.Warn 73 - if (res.statusCode >= StatusCodes.MULTIPLE_CHOICES) return LogLevel.Silent 74 - return LogLevel.Info 75 - } 76 - 77 - const customSuccessMessage = (req: IncomingMessage, res: ServerResponse<IncomingMessage>) => { 78 - if (res.statusCode === StatusCodes.NOT_FOUND) return getReasonPhrase(StatusCodes.NOT_FOUND) 79 - return `${req.method} completed` 80 - } 81 - 82 - const genReqId = (req: IncomingMessage, res: ServerResponse<IncomingMessage>) => { 83 - const existingID = req.id ?? req.headers['x-request-id'] 84 - if (existingID) return existingID 85 - const id = randomUUID() 86 - res.setHeader('X-Request-Id', id) 87 - return id 88 - } 89 - 90 - export default requestLogger()
src/public/home.js src/pages/public/home.js
src/public/styles.css src/pages/public/styles.css
+16 -3
src/routes/index.ts src/routes.ts
··· 3 3 import { isValidHandle } from '@atproto/syntax' 4 4 import express from 'express' 5 5 import { createSession, destroySession, getSessionAgent } from '#/auth/session' 6 - import type { AppContext } from '#/config' 6 + import type { AppContext } from '#/index' 7 7 import { home } from '#/pages/home' 8 8 import { login } from '#/pages/login' 9 9 import { page } from '#/view' 10 - import { handler } from './util' 11 10 import * as Status from '#/lexicon/types/com/example/status' 12 11 12 + const handler = 13 + (fn: express.Handler) => 14 + async ( 15 + req: express.Request, 16 + res: express.Response, 17 + next: express.NextFunction 18 + ) => { 19 + try { 20 + await fn(req, res, next) 21 + } catch (err) { 22 + next(err) 23 + } 24 + } 25 + 13 26 export const createRouter = (ctx: AppContext) => { 14 27 const router = express.Router() 15 28 16 - router.use('/public', express.static(path.join(__dirname, '..', 'public'))) 29 + router.use('/public', express.static(path.join(__dirname, 'pages', 'public'))) 17 30 18 31 router.get( 19 32 '/client-metadata.json',
-10
src/routes/util.ts
··· 1 - import type express from 'express' 2 - 3 - export const handler = 4 - (fn: express.Handler) => async (req: express.Request, res: express.Response, next: express.NextFunction) => { 5 - try { 6 - await fn(req, res, next) 7 - } catch (err) { 8 - next(err) 9 - } 10 - }
-93
src/server.ts
··· 1 - import events from 'node:events' 2 - import type http from 'node:http' 3 - import cors from 'cors' 4 - import express, { type Express } from 'express' 5 - import helmet from 'helmet' 6 - import { pino } from 'pino' 7 - 8 - import { createDb, migrateToLatest } from '#/db' 9 - import { env } from '#/env' 10 - import { Ingester } from '#/firehose/ingester' 11 - import errorHandler from '#/middleware/errorHandler' 12 - import requestLogger from '#/middleware/requestLogger' 13 - import { createRouter } from '#/routes' 14 - import { createClient } from '#/auth/client' 15 - import { createResolver } from '#/ident/resolver' 16 - import type { AppContext } from '#/config' 17 - 18 - export class Server { 19 - constructor( 20 - public app: express.Application, 21 - public server: http.Server, 22 - public ctx: AppContext 23 - ) {} 24 - 25 - static async create() { 26 - const { NODE_ENV, HOST, PORT, DB_PATH } = env 27 - 28 - const logger = pino({ name: 'server start' }) 29 - const db = createDb(DB_PATH) 30 - await migrateToLatest(db) 31 - const ingester = new Ingester(db) 32 - const oauthClient = await createClient(db) 33 - const resolver = createResolver() 34 - ingester.start() 35 - const ctx = { 36 - db, 37 - ingester, 38 - logger, 39 - oauthClient, 40 - resolver, 41 - } 42 - 43 - const app: Express = express() 44 - 45 - // Set the application to trust the reverse proxy 46 - app.set('trust proxy', true) 47 - 48 - // TODO: middleware for sqlite server 49 - // TODO: middleware for OAuth 50 - 51 - // Middlewares 52 - app.use(express.json()) 53 - app.use(express.urlencoded({ extended: true })) 54 - app.use(cors({ origin: env.CORS_ORIGIN, credentials: true })) 55 - app.use( 56 - helmet({ 57 - contentSecurityPolicy: { 58 - directives: { 59 - // allow oauth redirect when submitting login form 60 - formAction: null, 61 - }, 62 - }, 63 - }) 64 - ) 65 - 66 - // Request logging 67 - app.use(requestLogger) 68 - 69 - // Routes 70 - const router = createRouter(ctx) 71 - app.use(router) 72 - 73 - // Error handlers 74 - app.use(errorHandler()) 75 - 76 - const server = app.listen(env.PORT) 77 - await events.once(server, 'listening') 78 - logger.info(`Server (${NODE_ENV}) running on port http://${HOST}:${PORT}`) 79 - 80 - return new Server(app, server, ctx) 81 - } 82 - 83 - async close() { 84 - this.ctx.logger.info('sigint received, shutting down') 85 - this.ctx.ingester.destroy() 86 - return new Promise<void>((resolve) => { 87 - this.server.close(() => { 88 - this.ctx.logger.info('server closed') 89 - resolve() 90 - }) 91 - }) 92 - } 93 - }
+1 -2
tsconfig.json
··· 12 12 "strict": true, 13 13 "esModuleInterop": true, 14 14 "skipLibCheck": true, 15 - "forceConsistentCasingInFileNames": true, 16 - "types": ["vitest/globals"] 15 + "forceConsistentCasingInFileNames": true 17 16 }, 18 17 "include": ["src/**/*"], 19 18 "exclude": ["node_modules"]
-13
vite.config.mts
··· 1 - import tsconfigPaths from "vite-tsconfig-paths"; 2 - import { defineConfig } from "vitest/config"; 3 - 4 - export default defineConfig({ 5 - test: { 6 - coverage: { 7 - exclude: ["**/node_modules/**", "**/index.ts"], 8 - }, 9 - globals: true, 10 - restoreMocks: true, 11 - }, 12 - plugins: [tsconfigPaths()], 13 - });