From bb2d7ccf57916f053b899949b807743d5b57ee60 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Sat, 16 Nov 2024 10:13:38 -0500 Subject: [PATCH 01/15] Start v12 --- .github/workflows/publish.yml | 11 +- .github/workflows/test.yml | 11 +- bun.lockb | Bin 0 -> 42348 bytes package.json | 8 +- pnpm-lock.yaml | 1025 --------------------------------- src/apns.ts | 83 ++- src/errors.ts | 24 + tsconfig.json | 2 +- 8 files changed, 70 insertions(+), 1094 deletions(-) create mode 100755 bun.lockb delete mode 100644 pnpm-lock.yaml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3734f96..7476b5a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,19 +10,16 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v3 - with: - version: 9 + - uses: oven-sh/setup-bun@v2 - name: Use Node.js uses: actions/setup-node@v4 with: - node-version: 20 - cache: pnpm + node-version: 22 - - run: pnpm install --frozen-lockfile + - run: bun install --frozen-lockfile - - run: pnpm build + - run: bun run build - run: | echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_ACCESS_TOKEN }}" > .npmrc diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6546c10..eae333c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,21 +15,18 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v3 - with: - version: 9 + - uses: oven-sh/setup-bun@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - cache: pnpm - - run: pnpm install --frozen-lockfile + - run: bun install --frozen-lockfile - - run: pnpm lint + - run: bun run lint - - run: pnpm test + - run: bun run test env: APNS_PUSH_TOKEN: ${{ secrets.APNS_PUSH_TOKEN }} APNS_SIGNING_KEY: ${{ secrets.APNS_SIGNING_KEY }} diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..f6007443ee717f71011a65b8c6fa64f91931a555 GIT binary patch literal 42348 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index f5e0ae8..8b9b855 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "apns2", - "version": "11.8.0", + "version": "12.0.0", "description": "Node client for connecting to Apple's Push Notification Service using the new HTTP/2 protocol with JSON web tokens.", "author": "Andrew Barba ", "main": "dist/index.js", "types": "dist/index.d.ts", "license": "MIT", "engines": { - "node": ">=16" + "node": ">=20" }, "repository": { "url": "https://github.com/AndrewBarba/apns2" @@ -29,11 +29,11 @@ ], "dependencies": { "fast-jwt": "^4.0.5", - "fetch-http2": "^1.5.0" + "undici": "^6.21.0" }, "devDependencies": { "@biomejs/biome": "^1.9.4", - "@tsconfig/node16": "^16.1.3", + "@tsconfig/node20": "^20.1.4", "@types/node": "^22.9.0", "chai": "^5.1.2", "typescript": "^5.6.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 81caf84..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,1025 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - fast-jwt: - specifier: ^4.0.5 - version: 4.0.5 - fetch-http2: - specifier: ^1.5.0 - version: 1.5.0 - devDependencies: - '@biomejs/biome': - specifier: ^1.9.4 - version: 1.9.4 - '@tsconfig/node16': - specifier: ^16.1.3 - version: 16.1.3 - '@types/node': - specifier: ^22.9.0 - version: 22.9.0 - chai: - specifier: ^5.1.2 - version: 5.1.2 - typescript: - specifier: ^5.6.3 - version: 5.6.3 - vitest: - specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.0) - -packages: - - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} - engines: {node: '>=14.21.3'} - hasBin: true - - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@lukeed/ms@2.0.2': - resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} - engines: {node: '>=8'} - - '@rollup/rollup-android-arm-eabi@4.27.0': - resolution: {integrity: sha512-e312hTjuM89YLqlcqEs7mSvwhxN5pgXqRobUob7Jsz1wDQlpAb2WTX4jzvrx5NrL1h2SE4fGdHSNyPxbLfzyeA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.27.0': - resolution: {integrity: sha512-cBUOny8GNXP++gN00Bo5L04I2oqUEFAU0OSDb+4hqp4/R/pZL/zlGzp7lJkhtPX52Rj+PIe0S8aOqhK4hztxHQ==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.27.0': - resolution: {integrity: sha512-aauK2M2ptFQQYdOqbKGYCg1LHlPbm6IxepSnHLLaMIGcd9YBiKRGl2+KtzQL/IkurP+b54EKBkvtZaWXijmzfQ==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.27.0': - resolution: {integrity: sha512-VAjOnHUwpvxf3XT33sMpsLGKq24Rz1sTQhLuUicYrV9pxB4TNi0w11qAGPOyR+dQu/iZf88DmEmG0+2Gaqa1gg==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.27.0': - resolution: {integrity: sha512-I2eRlZG87gl6WxP6PvSB5bfFA1btE7tWnG6QAoEU/0Gr47f6KaxRwiRfBujHlzkuMPqtpTlSOW4aOEOyMtQqfg==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.27.0': - resolution: {integrity: sha512-G05JNYFdjikD/2hJTf1gHdD5KjI2TotjiDn17amHtB5JgwrRF1EA9hJ3TRGIvT3zGXilNWWlR71R/2TT1pXRDg==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.27.0': - resolution: {integrity: sha512-FMXxMZ7qnMULwgdmGSFVlOduAhFyqDPoK1A2Q8HBkzGYX9SMFU3ITKfLdIiCzTaaj/pt1OiEbpF2szUw6Kh++Q==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.27.0': - resolution: {integrity: sha512-0315TiPsJfOY+jAwEeqxcy9yVcAy/jg99GrMcd/L7CRESzi1vhyLPbnkDnz7giaEttSRf/d3llJYfoC+44Nl3A==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.27.0': - resolution: {integrity: sha512-4zCKY5E9djPyHzvoCWIouFsuAvg+dk+rNia8lz1bjKpzKz02QvK4JPHyjcDT8CFR2J/aA98WccCirdDOy+VDWQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.27.0': - resolution: {integrity: sha512-6St9rrPSLbYBbbJAClpU4gmnO7cdZCMMzx2MT0UCIIIevoLAmsCDOAG6t3J/RgN4CPUpdaGr/UnPqQTHZ4oDwA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.27.0': - resolution: {integrity: sha512-dIBfp8NDrgvwUJxyqFv7501coIba+7xxBJy1gQEF0RGkIKa3Tq0Mh3sF9hmstDLtaMt7gL2aXsCNG9SCKyVVZg==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.27.0': - resolution: {integrity: sha512-Pu7xLHRy+5UjFCKR/vWsbFmiBYUC9993v99YoKWhAgK4VsdNuWHPs17NuCJEtVsZpYCNVPbRyBpQw58Ma8BmeA==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.27.0': - resolution: {integrity: sha512-2Q9qQnk/eWdvXzzHl22y7tpDHREppFUh7N6cCs70HZEbQSgB7wd/2S/B05SSiyAiIn5BL+fYiASLds5bz0IQFw==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.27.0': - resolution: {integrity: sha512-CNnqMZ4Yz0Ga0A75qux7DNChq0P9oAWn2S7yjZPRC+AaEF8Ysw5K/1lzT25/a3reJ4V2abcShIVG+tfZHb1UrQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.27.0': - resolution: {integrity: sha512-dS1+eCbbao54XB+wLW6uuwRkChq4L0UfKhd3wvt6s+EN1rTIi24ee5Lk3HfRGq9J2jsRm12/AGKLA0kd82Sp/g==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.27.0': - resolution: {integrity: sha512-VrYQHY5+Y71OU/uOSRE9lLhph16bbuWGrMwGwZDPxCUXUW5NgLA+K+q0kv7rafHRlnrsZSVcMOkZskzTNnR3ZQ==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.27.0': - resolution: {integrity: sha512-LCqk4Xi3e4GzLqaq+QDM7gP5DtJ/RgWMzV3U2brwp/vEz9RTA5YBgIDP69xYfrTXexes6xPsOIquy79+kLifiA==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.27.0': - resolution: {integrity: sha512-dj2ZolfViR3chLWwSHID2mBzLLwYvXFldIplR6BSkdACXqAsrcmItKTff4h7enYB3Ugoh0v41WbxijE9HJb1Hw==} - cpu: [x64] - os: [win32] - - '@tsconfig/node16@16.1.3': - resolution: {integrity: sha512-9nTOUBn+EMKO6rtSZJk+DcqsfgtlERGT9XPJ5PRj/HNENPCBY1yu/JEj5wT6GLtbCLBO2k46SeXDaY0pjMqypw==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/node@22.9.0': - resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} - - '@vitest/expect@2.1.5': - resolution: {integrity: sha512-nZSBTW1XIdpZvEJyoP/Sy8fUg0b8od7ZpGDkTUcfJ7wz/VoZAFzFfLyxVxGFhUjJzhYqSbIpfMtl/+k/dpWa3Q==} - - '@vitest/mocker@2.1.5': - resolution: {integrity: sha512-XYW6l3UuBmitWqSUXTNXcVBUCRytDogBsWuNXQijc00dtnU/9OqpXWp4OJroVrad/gLIomAq9aW8yWDBtMthhQ==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/pretty-format@2.1.5': - resolution: {integrity: sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==} - - '@vitest/runner@2.1.5': - resolution: {integrity: sha512-pKHKy3uaUdh7X6p1pxOkgkVAFW7r2I818vHDthYLvUyjRfkKOU6P45PztOch4DZarWQne+VOaIMwA/erSSpB9g==} - - '@vitest/snapshot@2.1.5': - resolution: {integrity: sha512-zmYw47mhfdfnYbuhkQvkkzYroXUumrwWDGlMjpdUr4jBd3HZiV2w7CQHj+z7AAS4VOtWxI4Zt4bWt4/sKcoIjg==} - - '@vitest/spy@2.1.5': - resolution: {integrity: sha512-aWZF3P0r3w6DiYTVskOYuhBc7EMc3jvn1TkBg8ttylFFRqNN2XGD7V5a4aQdk6QiUzZQ4klNBSpCLJgWNdIiNw==} - - '@vitest/utils@2.1.5': - resolution: {integrity: sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==} - - asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - bn.js@4.12.1: - resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - chai@5.1.2: - resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} - engines: {node: '>=12'} - - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} - engines: {node: '>=12.0.0'} - - fast-jwt@4.0.5: - resolution: {integrity: sha512-QnpNdn0955GT7SlT8iMgYfhTsityUWysrQjM+Q7bGFijLp6+TNWzlbSMPvgalbrQGRg4ZaHZgMcns5fYOm5avg==} - engines: {node: '>=16'} - - fetch-http2@1.5.0: - resolution: {integrity: sha512-eijz2/iD8spkpByYnGqozYtNoYEmWIveDvEoyVTZ0bt1I/Kk42LaIn6TSFhV5eYSj/PnBeas8arZ1j6VIC3Wcw==} - engines: {node: '>=16'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - loupe@3.1.2: - resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} - - magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - mnemonist@0.39.8: - resolution: {integrity: sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - - rollup@4.27.0: - resolution: {integrity: sha512-nrOD/RrnAMssruS7bPa7MYpEuH6tUpOa43NLtxQiLKem0An8HZyXun5Ndig6JzbkJoIbaKkt85V67VCaQ59GyA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - - tinyexec@0.3.1: - resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} - - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} - engines: {node: '>=14.0.0'} - - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} - - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - vite-node@2.1.5: - resolution: {integrity: sha512-rd0QIgx74q4S1Rd56XIiL2cYEdyWn13cunYBIuqh9mpmQr7gGS0IxXoP8R6OaZtNQQLyXSWbd4rXKYUbhFpK5w==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite@5.4.11: - resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitest@2.1.5: - resolution: {integrity: sha512-P4ljsdpuzRTPI/kbND2sDZ4VmieerR2c9szEZpjc+98Z9ebvnXmM5+0tHEKqYZumXqlvnmfWsjeFOjXVriDG7A==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.5 - '@vitest/ui': 2.1.5 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true - -snapshots: - - '@biomejs/biome@1.9.4': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': - optional: true - - '@biomejs/cli-darwin-x64@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64@1.9.4': - optional: true - - '@biomejs/cli-linux-x64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-x64@1.9.4': - optional: true - - '@biomejs/cli-win32-arm64@1.9.4': - optional: true - - '@biomejs/cli-win32-x64@1.9.4': - optional: true - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@lukeed/ms@2.0.2': {} - - '@rollup/rollup-android-arm-eabi@4.27.0': - optional: true - - '@rollup/rollup-android-arm64@4.27.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.27.0': - optional: true - - '@rollup/rollup-darwin-x64@4.27.0': - optional: true - - '@rollup/rollup-freebsd-arm64@4.27.0': - optional: true - - '@rollup/rollup-freebsd-x64@4.27.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.27.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.27.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.27.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.27.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.27.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.27.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.27.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.27.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.27.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.27.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.27.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.27.0': - optional: true - - '@tsconfig/node16@16.1.3': {} - - '@types/estree@1.0.6': {} - - '@types/node@22.9.0': - dependencies: - undici-types: 6.19.8 - - '@vitest/expect@2.1.5': - dependencies: - '@vitest/spy': 2.1.5 - '@vitest/utils': 2.1.5 - chai: 5.1.2 - tinyrainbow: 1.2.0 - - '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.9.0))': - dependencies: - '@vitest/spy': 2.1.5 - estree-walker: 3.0.3 - magic-string: 0.30.12 - optionalDependencies: - vite: 5.4.11(@types/node@22.9.0) - - '@vitest/pretty-format@2.1.5': - dependencies: - tinyrainbow: 1.2.0 - - '@vitest/runner@2.1.5': - dependencies: - '@vitest/utils': 2.1.5 - pathe: 1.1.2 - - '@vitest/snapshot@2.1.5': - dependencies: - '@vitest/pretty-format': 2.1.5 - magic-string: 0.30.12 - pathe: 1.1.2 - - '@vitest/spy@2.1.5': - dependencies: - tinyspy: 3.0.2 - - '@vitest/utils@2.1.5': - dependencies: - '@vitest/pretty-format': 2.1.5 - loupe: 3.1.2 - tinyrainbow: 1.2.0 - - asn1.js@5.4.1: - dependencies: - bn.js: 4.12.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - - assertion-error@2.0.1: {} - - bn.js@4.12.1: {} - - cac@6.7.14: {} - - chai@5.1.2: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.2 - pathval: 2.0.0 - - check-error@2.1.1: {} - - debug@4.3.7: - dependencies: - ms: 2.1.3 - - deep-eql@5.0.2: {} - - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 - - es-module-lexer@1.5.4: {} - - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.6 - - expect-type@1.1.0: {} - - fast-jwt@4.0.5: - dependencies: - '@lukeed/ms': 2.0.2 - asn1.js: 5.4.1 - ecdsa-sig-formatter: 1.0.11 - mnemonist: 0.39.8 - - fetch-http2@1.5.0: {} - - fsevents@2.3.3: - optional: true - - inherits@2.0.4: {} - - loupe@3.1.2: {} - - magic-string@0.30.12: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - minimalistic-assert@1.0.1: {} - - mnemonist@0.39.8: - dependencies: - obliterator: 2.0.4 - - ms@2.1.3: {} - - nanoid@3.3.7: {} - - obliterator@2.0.4: {} - - pathe@1.1.2: {} - - pathval@2.0.0: {} - - picocolors@1.1.1: {} - - postcss@8.4.49: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - rollup@4.27.0: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.27.0 - '@rollup/rollup-android-arm64': 4.27.0 - '@rollup/rollup-darwin-arm64': 4.27.0 - '@rollup/rollup-darwin-x64': 4.27.0 - '@rollup/rollup-freebsd-arm64': 4.27.0 - '@rollup/rollup-freebsd-x64': 4.27.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.27.0 - '@rollup/rollup-linux-arm-musleabihf': 4.27.0 - '@rollup/rollup-linux-arm64-gnu': 4.27.0 - '@rollup/rollup-linux-arm64-musl': 4.27.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.27.0 - '@rollup/rollup-linux-riscv64-gnu': 4.27.0 - '@rollup/rollup-linux-s390x-gnu': 4.27.0 - '@rollup/rollup-linux-x64-gnu': 4.27.0 - '@rollup/rollup-linux-x64-musl': 4.27.0 - '@rollup/rollup-win32-arm64-msvc': 4.27.0 - '@rollup/rollup-win32-ia32-msvc': 4.27.0 - '@rollup/rollup-win32-x64-msvc': 4.27.0 - fsevents: 2.3.3 - - safe-buffer@5.2.1: {} - - safer-buffer@2.1.2: {} - - siginfo@2.0.0: {} - - source-map-js@1.2.1: {} - - stackback@0.0.2: {} - - std-env@3.8.0: {} - - tinybench@2.9.0: {} - - tinyexec@0.3.1: {} - - tinypool@1.0.2: {} - - tinyrainbow@1.2.0: {} - - tinyspy@3.0.2: {} - - typescript@5.6.3: {} - - undici-types@6.19.8: {} - - vite-node@2.1.5(@types/node@22.9.0): - dependencies: - cac: 6.7.14 - debug: 4.3.7 - es-module-lexer: 1.5.4 - pathe: 1.1.2 - vite: 5.4.11(@types/node@22.9.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite@5.4.11(@types/node@22.9.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.49 - rollup: 4.27.0 - optionalDependencies: - '@types/node': 22.9.0 - fsevents: 2.3.3 - - vitest@2.1.5(@types/node@22.9.0): - dependencies: - '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.9.0)) - '@vitest/pretty-format': 2.1.5 - '@vitest/runner': 2.1.5 - '@vitest/snapshot': 2.1.5 - '@vitest/spy': 2.1.5 - '@vitest/utils': 2.1.5 - chai: 5.1.2 - debug: 4.3.7 - expect-type: 1.1.0 - magic-string: 0.30.12 - pathe: 1.1.2 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.1 - tinypool: 1.0.2 - tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.9.0) - vite-node: 2.1.5(@types/node@22.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.9.0 - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 diff --git a/src/apns.ts b/src/apns.ts index 6c1ee14..09185dd 100644 --- a/src/apns.ts +++ b/src/apns.ts @@ -1,7 +1,7 @@ import { EventEmitter } from "node:events" import { type PrivateKey, createSigner } from "fast-jwt" -import { FetchClient, type RequestInit, type Response } from "fetch-http2" -import { Errors } from "./errors" +import { type Dispatcher, Pool } from "undici" +import { ApnsError, type ApnsResponseError, Errors } from "./errors" import { type Notification, Priority } from "./notifications/notification" // APNS version @@ -30,10 +30,7 @@ export interface ApnsOptions { defaultTopic?: string host?: Host | string requestTimeout?: number - keepAlive?: boolean | number - - // @deprecated Use keepAlive instead - pingInterval?: number + keepAlive?: boolean } export class ApnsClient extends EventEmitter { @@ -42,12 +39,8 @@ export class ApnsClient extends EventEmitter { readonly host: Host | string readonly signingKey: string | Buffer | PrivateKey readonly defaultTopic?: string - readonly requestTimeout?: number - readonly keepAlive?: boolean | number - readonly fetchClient: FetchClient - - // @deprecated Use keepAlive instead - readonly pingInterval?: number + readonly keepAlive: boolean + readonly client: Pool private _token: SigningToken | null @@ -58,10 +51,13 @@ export class ApnsClient extends EventEmitter { this.signingKey = options.signingKey this.defaultTopic = options.defaultTopic this.host = options.host ?? Host.production - this.requestTimeout = options.requestTimeout - this.keepAlive = options.keepAlive - this.pingInterval = options.pingInterval - this.fetchClient = new FetchClient() + this.keepAlive = options.keepAlive ?? true + this.client = new Pool(`https://${this.host}:443`, { + connections: this.keepAlive ? 32 : 1, + pipelining: this.keepAlive ? 1 : 0, + allowH2: true, + maxConcurrentStreams: 100, + }) this._token = null this.on(Errors.expiredProviderToken, () => this._resetSigningToken()) } @@ -72,26 +68,17 @@ export class ApnsClient extends EventEmitter { sendMany(notifications: Notification[]) { const promises = notifications.map((notification) => { - return this._send(notification).catch((error: unknown) => ({ error })) + return this._send(notification).catch((error: ApnsError) => ({ error })) }) return Promise.all(promises) } private async _send(notification: Notification) { - const token = encodeURIComponent(notification.deviceToken) - const url = `https://${this.host}/${API_VERSION}/device/${token}` const headers: Record = { authorization: `bearer ${this._getSigningToken()}`, "apns-push-type": notification.pushType, "apns-topic": notification.options.topic ?? this.defaultTopic, } - const options: RequestInit = { - method: "POST", - headers: headers, - body: JSON.stringify(notification.buildApnsOptions()), - timeout: this.requestTimeout, - keepAlive: this.keepAlive ?? this.pingInterval ?? 5000, - } if (notification.priority !== Priority.immediate) { headers["apns-priority"] = notification.priority.toString() @@ -109,40 +96,36 @@ export class ApnsClient extends EventEmitter { headers["apns-collapse-id"] = notification.options.collapseId } - const res = await this.fetchClient.fetch(url, options) + const res = await this.client.request({ + path: `/${API_VERSION}/device/${encodeURIComponent(notification.deviceToken)}`, + method: "POST", + headers: headers, + body: JSON.stringify(notification.buildApnsOptions()), + idempotent: true, + blocking: false, + }) return this._handleServerResponse(res, notification) } - private async _handleServerResponse(res: Response, notification: Notification) { - if (res.status === 200) { + private async _handleServerResponse(res: Dispatcher.ResponseData, notification: Notification) { + if (res.statusCode === 200) { return notification } - let json: { - statusCode?: number - notification?: Notification - reason?: string - } - - try { - json = await res.json() - } catch (err) { - json = { reason: Errors.unknownError } - } - - json.statusCode = res.status - json.notification = notification + const responseError = (await res.body.json()) as ApnsResponseError - // Emit specific error - if (json.reason) { - this.emit(json.reason, json) - } + const error = new ApnsError({ + statusCode: res.statusCode, + notification: notification, + response: responseError, + }) - // Emit generic error - this.emit(Errors.error, json) + // Emit specific and genericerror + this.emit(responseError.reason, error) + this.emit(Errors.error, error) - throw json + throw error } private _getSigningToken(): string { diff --git a/src/errors.ts b/src/errors.ts index e3fbda7..1bd16f7 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -1,3 +1,5 @@ +import type { Notification } from "./notifications/notification" + export enum Errors { badCertificate = "BadCertificate", badCertificateEnvironment = "BadCertificateEnvironment", @@ -32,3 +34,25 @@ export enum Errors { unknownError = "UnknownError", unregistered = "Unregistered", } + +export interface ApnsResponseError { + reason: string + timestamp: number +} + +export class ApnsError extends Error { + readonly statusCode: number + readonly notification: Notification + readonly response: ApnsResponseError + + constructor(props: { + statusCode: number + notification: Notification + response: ApnsResponseError + }) { + super("APNS Error") + this.statusCode = props.statusCode + this.notification = props.notification + this.response = props.response + } +} diff --git a/tsconfig.json b/tsconfig.json index 7630edf..b23bec8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@tsconfig/node16", + "extends": "@tsconfig/node20", "compilerOptions": { "baseUrl": ".", "declaration": true, From a70e0400639dc1140cc83e026ca56039e7b9e6c1 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Sat, 16 Nov 2024 10:20:24 -0500 Subject: [PATCH 02/15] Fix reason --- src/apns.ts | 2 ++ src/errors.ts | 8 ++++++++ test/apns2.test.ts | 1 - 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/apns.ts b/src/apns.ts index 09185dd..888b2bc 100644 --- a/src/apns.ts +++ b/src/apns.ts @@ -115,6 +115,8 @@ export class ApnsClient extends EventEmitter { const responseError = (await res.body.json()) as ApnsResponseError + console.log({ responseError }) + const error = new ApnsError({ statusCode: res.statusCode, notification: notification, diff --git a/src/errors.ts b/src/errors.ts index 1bd16f7..2e48076 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -55,4 +55,12 @@ export class ApnsError extends Error { this.notification = props.notification this.response = props.response } + + get reason() { + return this.response.reason + } + + get timestamp() { + return this.response.timestamp + } } diff --git a/test/apns2.test.ts b/test/apns2.test.ts index 7868618..5fc69ff 100644 --- a/test/apns2.test.ts +++ b/test/apns2.test.ts @@ -14,7 +14,6 @@ describe("apns", () => { keyId: "7U6GT5Q49J", signingKey: process.env.APNS_SIGNING_KEY ?? "", defaultTopic: "com.tablelist.Tablelist", - keepAlive: 100, }) }) From 5c450da1afec84a0f24c914bab078db2f2c4f0ea Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Sat, 16 Nov 2024 10:24:41 -0500 Subject: [PATCH 03/15] Update error --- src/apns.ts | 7 ++++--- test/apns2.test.ts | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/apns.ts b/src/apns.ts index 888b2bc..23b0671 100644 --- a/src/apns.ts +++ b/src/apns.ts @@ -113,9 +113,10 @@ export class ApnsClient extends EventEmitter { return notification } - const responseError = (await res.body.json()) as ApnsResponseError - - console.log({ responseError }) + const responseError = (await res.body.json().catch(() => ({ + reason: Errors.unknownError, + timestamp: Date.now(), + }))) as ApnsResponseError const error = new ApnsError({ statusCode: res.statusCode, diff --git a/test/apns2.test.ts b/test/apns2.test.ts index 5fc69ff..c9bc34d 100644 --- a/test/apns2.test.ts +++ b/test/apns2.test.ts @@ -111,9 +111,9 @@ describe("apns", () => { return promise }) - it("should fail to send a notification and emit an error", () => { + it("should fail to send a notification and emit a generic error", () => { const promise = new Promise((resolve) => { - apns.once(Errors.badDeviceToken, (err) => { + apns.once(Errors.error, (err) => { assert.equal(err.reason, Errors.badDeviceToken) resolve(null) }) From 15b13e43eac15ca50ecffd97cb41f2c0271b00c6 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Sat, 16 Nov 2024 10:26:43 -0500 Subject: [PATCH 04/15] Remove 18 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index eae333c..c2f6713 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: strategy: matrix: - node-version: [18, 20, 22] + node-version: [20, 22] steps: - uses: actions/checkout@v4 From 762f6f4620f3d61b21fb0d85c6a947a5b4ddfcbf Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Thu, 21 Nov 2024 13:19:34 -0500 Subject: [PATCH 05/15] Undici v7 --- bun.lockb | Bin 42348 -> 42369 bytes package.json | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bun.lockb b/bun.lockb index f6007443ee717f71011a65b8c6fa64f91931a555..cbe53a812a7c20e90e7a9ff2433fca167772b478 100755 GIT binary patch delta 3911 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 Ky1F~wQ~e*Y`1Xzf delta 3897 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 Date: Thu, 21 Nov 2024 13:27:34 -0500 Subject: [PATCH 06/15] Cleanup error types --- src/apns.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/apns.ts b/src/apns.ts index 23b0671..62a94d7 100644 --- a/src/apns.ts +++ b/src/apns.ts @@ -113,19 +113,19 @@ export class ApnsClient extends EventEmitter { return notification } - const responseError = (await res.body.json().catch(() => ({ + const responseError = await res.body.json().catch(() => ({ reason: Errors.unknownError, timestamp: Date.now(), - }))) as ApnsResponseError + })) const error = new ApnsError({ statusCode: res.statusCode, notification: notification, - response: responseError, + response: responseError as ApnsResponseError, }) - // Emit specific and genericerror - this.emit(responseError.reason, error) + // Emit specific and generic errors + this.emit(error.reason, error) this.emit(Errors.error, error) throw error From 99adfed24c0da429a48c2e187cb60e2eb00a7816 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Thu, 21 Nov 2024 13:29:21 -0500 Subject: [PATCH 07/15] Reset signing token in error handler --- src/apns.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/apns.ts b/src/apns.ts index 62a94d7..71e227c 100644 --- a/src/apns.ts +++ b/src/apns.ts @@ -59,7 +59,6 @@ export class ApnsClient extends EventEmitter { maxConcurrentStreams: 100, }) this._token = null - this.on(Errors.expiredProviderToken, () => this._resetSigningToken()) } send(notification: Notification) { @@ -124,6 +123,11 @@ export class ApnsClient extends EventEmitter { response: responseError as ApnsResponseError, }) + // Reset signing token if expired + if (error.reason === Errors.expiredProviderToken) { + this._token = null + } + // Emit specific and generic errors this.emit(error.reason, error) this.emit(Errors.error, error) @@ -156,8 +160,4 @@ export class ApnsClient extends EventEmitter { return token } - - private _resetSigningToken() { - this._token = null - } } From 299eb81d26c17b88d50f4bfc8dd46ab477569607 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Thu, 21 Nov 2024 13:32:22 -0500 Subject: [PATCH 08/15] Cleanup send and send many --- src/apns.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/apns.ts b/src/apns.ts index 71e227c..560889f 100644 --- a/src/apns.ts +++ b/src/apns.ts @@ -61,18 +61,14 @@ export class ApnsClient extends EventEmitter { this._token = null } - send(notification: Notification) { - return this._send(notification) - } - sendMany(notifications: Notification[]) { - const promises = notifications.map((notification) => { - return this._send(notification).catch((error: ApnsError) => ({ error })) - }) + const promises = notifications.map((notification) => + this.send(notification).catch((error: ApnsError) => ({ error })), + ) return Promise.all(promises) } - private async _send(notification: Notification) { + async send(notification: Notification) { const headers: Record = { authorization: `bearer ${this._getSigningToken()}`, "apns-push-type": notification.pushType, From 60a9df7590501116bc9733b3e82c30db51a8e017 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Wed, 27 Nov 2024 16:29:04 -0500 Subject: [PATCH 09/15] Undici v7 --- bun.lockb | Bin 42369 -> 42394 bytes package.json | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bun.lockb b/bun.lockb index cbe53a812a7c20e90e7a9ff2433fca167772b478..535b14b34f420935c51b5bc43ba48d3b715ee072 100755 GIT binary patch delta 7744 zcmeHMc~nzZx4$=x!7>C8k}w4U#eqP=JQ%>D3_%baA_yut+;AX2~y1@%+heJZF0 z^lR0Ysx7T`>OiY?q>4kU)>&&s>s+l9^zCz#OZZmpTmA2?x7NFB?fu*5?0xr{&pmga z`NufT$2hCRLjtc{vbc3*{n*2+kE}_2b}{S&1vhQeOXF$Bx7{dM7Sotw_I~4pnBY$- zin5`oT3ec;1|e?6v>9RxA{X(vE?kOeo466ORx{4GJ>~ zi&WVZrBr8XRQcJ|mzZgf`CAa}5F2$kPlrk!PCz7;2}86+^wgoP4vBM;{~MM}@SGNF zY7gi#cIt2=BI%k29hU1bTZhSr)~Jurp;(8GIyBQ^Nl|{jrkJAEp))76uR?T0%tRC- zj%D&|sM=8|2r$C}(HZd$dUr=WiYP*CMu?Yvv3tPN7IYGk z=s(k?n-IxxEJq|gJ_vi5d8xKsHB}UUSX09^KXcjh!@cen^ZdvD}{Yht5)Tx3TG8jWEvC~73C9DRw%P} zqaC9!&Gu3jmQih(CVqxvkvM3z_&SrG4vhx(!Dn5y-MJT$w5AP_^js%43o@9sL6GVvElAjePPz69+9Z_FFSmqvOR3_qnGGxoW>=mwdBn;DJA0 z@RWIdeqBv2K?@Vk7A_J^oT6E={Mw0K-&S1RcPzeF(-CB}ls1)3=j=c8!1M};jQBqH z_Z#v{dacmyV}nMEvgb7==EM8uUR-W>D!uwYeiS~O^2(7 zJ`s*Xg*)EK^M7b8t5>cz^0cf;2{-6k`*0PXy7G8oW?oS78h63duIIl#Utw2ad!#%x zTa@-maow-?u143-bGjPzA>20J$@Rq!^1~*YK$3|!oOIyAd6RJZAP7vuX%|RAo(@gO z8{s_ipFqG3rw2m{@?2;_{vn*_h8sP{B_0G$+)&yFQq0161vm`ED`rzPk}-N82CGa= zc{^|(M7&Y+05x%M(r|)}KsZRoEypcEiUu^aaRWKqj3D(b8Ep(rZ-w)w8dFrjo8IOA zOQ$h_Hq$^}H>N_~WXJI^feSntXMqU_t!13OCXi|^aM)EK734AVev9HzpUl&e)B z_gzepCK^BnFOYNE6jE(uMrUx&B|y4OsL>Fdh4GA3*e~tvmyB_X(`u7Ziev0HpcKPM zH~XbgxJ0yhrHtgn4>Rn~GQ@SHRmS&A@AgXv@=m8$xsZ~7%eT=q$4P)7)grDD}#{$C9U=$N;yoP0vDl@k@llBgOMC?p=zZ{l(cXBgp#%fKDeB< z+Lb72^KPT0An$U+aqkReM(~WzvC)?C^VgcdShE$(xFeeooZYl;dV^k_u) zuQ7*s!sUdX{&0p1&N7a-3#2;BXcY)t!Z|H2&}=0$@4*iNsVgo&$^={ojU)@%+(SfB z!I+DKMVVpsw7I#M8;QBN&L~?pm;ML@qHy{Nq=>?e9^;;h<01+*k`G~K3rejhB{6xA zP)cN^2sc(*iPCr`?;=WaNOui`lp!D0;2uMHBasaTyNr1TBFUHN@(GeO4juClB<%@A z!qrB-jYJ-T#4q+H^SlXhDpKhb1zE!ckUz}opHK}h2WpPi<^KlOFh&293Xo1J(N%OH zl1|a+@(Gd|UyejNu?mU2_YM+n;?#U3l3#~Jo;vce)e3(_4qS4Nh7BGk|9?ESo%2uT z$Nz!xoDP}8^CHyCGcS+b64CtgeWwo}ZJIjbsqcE(&#j)mXAg1)ZQiN55uEVl%2QVN zcL|?0+^tw()_&sZmL&zYulL$?eY&*N@9V%0^AT4KA{q{IRzEp*WlV({_S6}ysF;** zp(?%;e~@?Tq~jMI>jL8uTO_}o)#P_9c$rv_NNOC+XCWG*&Ms^Re4w9nTKCrrQnj74;#gD zng=g@6tK?Q947n7X&Y$6RE&>#e48YpV1`5aqJFP7bC zPm;U$9nLqNf4zq4IQFk(>ZY3GFutMr%;Zg9EEX;3TBlhtpyq>NkFNrrqtmzSk7UL6 zdc+SqygxD4V<_*&>7S>*_Gqs8#3kp|bGp+g#QcCo!@^5NCwl5XZ%IoXSvcZUuJM?L zY0fj33%$#GZw_#359b3FG#?~E3R(d5K?;~EHHUjaa@qlcgB4)vYYrQO<+Ky@1S@D~ zhzwES*|G__2p%DKh1gI9Jp|g2yTJ?O?vNCwpgmw4@}WSFR?x#B1-U1Df_yk|WeR!( zWFQ|2dytO;Ubuqx0u^#GbRzc#L4*QNqjQi;;0SUlxJD{yUzm&B54w^2!|*W*IsoP) z4}|l`gFy1Of)0jyn3T$)yEj7T?LMzK)*g^ zs`D+YUYlQ7-)wL#d&%h~y(Uqwl3yDZ-IczW7R#A=xFBtoL;3JB|5*RdGt0N;Wi$&j z6KuZQ@;s_7P5jf2?Pmr!PJ&OQij?Gm?tkx^6n(O`d3S8kQR~i>6H9UrjC$Obxnk&R z_tuXr6OW8keShAkE+@XH%p)!Hy)0K=*2GGyWgU$cmoM)5d}`~~>GGcKu$C|^zSULU{aWS2&liOI<{q+ zTj{x-qkA7a@Kk9|Yen%N^p2@pRz0AC83P-hCjNbn-DK;e=&Hr^jmVkVSEtpkG4k9j zyj9k_*4`)c*jR@rLtZ`e6Xa)qwf%>M&4Pb_uzmQ3bITfTMHF-e%yiqb4$S5Jh(PhG zoUE*U1>WCHYIM4H>6w4w9ZvPNdwo7fbNB7dwP`%vlV=mBaDH`d)w=DI(!Gav%`k|a ze>b9L?Z>^FCm(AF=upZR8X9HcX}}C5$rIsW!UQ}G8alIKnFDz6!ygppKwPFORgxA6 zO+cKSX;+6oO!!a2sMr9_VN+C1>4=z6MH4qrHObT{hKCz0ao*87X*Z1}v=SBPq5(Kh zXojg%(v0qi@TXr_d~L^aMa5v=d@N@H(n6#~NQ+@`!3-~Q;2|eMa>~P_E;+A~BQbL@ zS%OFoFytiYha`cv0tXyb^Fp~3IrT*&#URBZ;cqD=M~X)p4|57^{K=f0h%^alGSUhraLM@(1!;pp|c_6tXxgp_c zo^nMJA>m&H2{AF9$_HMtJcV>=0ure*sXD15X;=~xX%aa!|EYV(P>@a|wj`g}kq##v zPX>VaA%j6WJ_Wuk-h#Wna?Y&e06ex9W~;JP6jgJ4R=BCuRK}sF2a0{f*d{hY8Cvi5 zy#uw;1vUO+KQXqr1>JCQvPM6>TIO;q)fqKDV&7n~KeZK{N(2s{q8@v>w$R=??8WY< z0jQUtPl<&5^^^$c@yzZHYy?bi#D;g-SeahK28!9Jn_e>m%Oq`_)A(J<&`~*aZD}$MDG1jL<`$t2 zCt2+Zu+#`<=c==d3Q+aY{9ku9{+Q#hv&5V=Xopj-mgnwbGik%?+qV6^@IGqHP-84V z)Y5+8!92a@e;y-x5bP)$Y($#N3WPfZnIJIk!LrTbmx7V#%OR7V7s}nypr$8Mx#}G z!nXPu7u+(WeTZw^ImBG}rjj2JflC7yXl>^&jazN(qyNwwumSFX_~X0UR)1Eh*JN|S zVje$$jfijBR-Jp_)Z>)ifQ^|iHEf?fgBMbv*KFiM+C07^8)QFhGGXnw+Xdh14GwT& z75dhNS*ueeI3uld!thvys*Wh>TGQP@2`ZMibb1hwLpXm+Qy8sCN z%`JCD^HRMg%nU|V@g3RAgZCVK_MYy^O4S=E&0uB~KY+b$Ft?BDd2f5!A-w^6AMw#R zReDMIunl_67Bkq6zS#?m?lvo@1D-vJdV}RWxLzf7WaIMtZ0)SmS2is$r2WLwKr!yy zpYg!w9ew~C$WLm%e?OwNyH9VxhWdY$?)!7aV+F0(46=r5e3iW$=pgsOF_Or(FQI$NvPWZJ-nYQ7_T zi(+}bTQchPvDbQobvAIanh$p>giu)~)b6L+1&zN4KWm&g+Re|2 z-JS-vq-^$j#9)Tt$r;P`(YSP_bjMgQ``H}9sK z0mqP*h=axC7!UT+BGh+6Rmpv97w7W(DjgqR&D47&lR;_w#S4!DuP<{ zR(qiZtZn3f; zBS)3xr7kT|73Po|pG;+8)@&k_WT*-=i^}n9jg=QwRf%vzMG3kVIl%fwj&OUCIqXV6su zDd}II*%`&fbG`6m!n(;UDJoYhOW34F1&#G?&|b#}QN1UmFCK#PW=@M6Y+f7!utW+s z>vljyy`3(%vfdt|myNO2wpZ;{P?W97S9;~+jaCUnE)TOAP#dfQQ=N`?mb;t1MS4Z; zjSVSLDmz-&bee)ueJJc+Ru79C93itsjHQ?Ycd0ejLj<8qL!fJkEmJ4WQd=y&Vd+Hh zz?yzmPg3(6Ts!X6htP0o@gZ2%VhBI90m49K)W) delta 7786 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 Date: Wed, 27 Nov 2024 16:54:17 -0500 Subject: [PATCH 10/15] Supress warning --- bun.lockb | Bin 42394 -> 42719 bytes package.json | 1 + src/apns.ts | 10 ++++++++++ test/apns2.test.ts | 1 + 4 files changed, 12 insertions(+) diff --git a/bun.lockb b/bun.lockb index 535b14b34f420935c51b5bc43ba48d3b715ee072..67371fc92e46ff272cb2381e896327fb9ea041ce 100755 GIT binary patch delta 2456 zcmeH}ZA@EL7{||Ti@Rk*=tfq`%L;`NaG|3N3Jf-IZ@5*4)j-2|akB#kw3Kd)K<3sm zWfOxL@c6bRN@KK|$c*zwW3p_?l4-V(>2P8)XChnB7){uG`7%w^|8oK1gOY6Sn?A|! z{GW54bIv{I+;i_aCq^}2U(yU%GoLKW9{j0l?TXO*w|bqwmUrd)KDzRmvZ~^d$sgsW z-XWzTEL3Y7beT1F@2RdBtzoyXqoJ)+h!uz|79vPAs5KTwT7*bK?q-S*3D7T~Cg@pc z95g(m$Dl^!yP?aWZsoc*S}PwoRXY?oFg~T+x^E;-pNBvUy4O+4l2tUYNS1ccadU|@ zOjnUkkSVz&A_E;1QIe%thbLE4U2;)G5MHI~jl*-QUV5q!6{@%YFYi3Oa<$BmCWM1M zsg|lOMFu?{%CNEO=#0gw42}E-S#;OC$I0IWq;}OpST1rYa((~zY0q$uHU}KE{ z1z-u-1lU-$po}xHzf-KFs8^$Rqye?bT{OH$?XYdwcmT0fo?)cg4EbK5uIoOvZz1L@ zuOqgsYOEU21$f;L0)8Kd0Kd`0fXj~pwuO}Y=~HW|N^h^!)5uEspHRp5>`eXnDx+*@ zru=S|oAaJ!*jRZ!QGn-%9ZaJZ{Z_dD@8&!DTzJJ6_{{#RySb8g)%;z|%f$JAwVRdd z%#M`O#wN#?r(e50(dm{wH3b)5F)x1MT6N;i?>5$i%%3#BzW3cX9vq!o|3m(!8^2tB zGd?Y$H@yGz9nRlAcx(KM=lHef9;GNp99`PxklbW)xafi-iViv)QUhIdxTHo(dDta2 zQ8&^(G={X9GRs|33-usvrK?CiWZUkNyh`78vrIb|#o`pw(MXjnn^V+JD@ZoyWu@PB zGM0jww#Y6oPhN~hsU3AB;Xy!N5fuV1AJ5zg0-Ls@Gt5az`ry;PH=vT9KeSZpQ8q_6!0O&zk_-@ z=Pi@`q;IQd2SM_bFEY;^(ZB~qG_Wm$?6!0%k z%I7Mb%^eNCyS>}1N|0dEOb%#ClV2&4gdfE delta 2479 zcmeH}S!_&E7{|}KGo^-Ur&QZf%&j6S+#35(YH1O-)riQbrIspMoz_$>5i+;-MjFN^ zmGGb>Bt!d9^F$&c@t~Gi5)XukSP~+UY9c{`|97X8dXSea?W?od3HxR zaZ5R(WlVbZH12iF$=n-9Tj~owKFK=g?X~>O=N`*$hhF#&%?lRV&I;3fL9a{kls9j8 zSPBQDq_+@8kt#$VXdLnmC`7h18@@jnRh)vDow);4L)0R(J)bHzPgj z9fp^0mOX)|!^@)3kg0)Kyeq@TY6bWfA%PvR{is~d-^s?x?fY^D)|n1K{U~4onSjR` z6YT=WG*(F^>8?Nwyh(sxWj0`Avs8z!SI=@I3DVyiRHWm+uE`ohgrV&}`MIVx|A0p`@l^ z$>uT-whz};s^x%O&`^N{_Hq+mbGUsi++wgA zEDDDz`zdk_UGux*_(!Dpk-#1V=&gSwIjZJcJ(^okQPluCTGfBhL~Wc9TT81;HdhNV z?f&=!?%cj*v9f5a=GG>JuUAd9%Od&`aHeW$kz2>BPvbVeOt&aj>DD|Ne?|^v8qNvP z+ev)e@p{+vyA2)n(fdpG=um9gRe5#}VGBq1c { + if (warning.code === "UNDICI-H2") { + return + } + process.emit("warning", warning) + }) + } } diff --git a/test/apns2.test.ts b/test/apns2.test.ts index c9bc34d..c6ee794 100644 --- a/test/apns2.test.ts +++ b/test/apns2.test.ts @@ -1,3 +1,4 @@ +import "dotenv/config" import { assert } from "chai" import { beforeAll, describe, it } from "vitest" import { ApnsClient, Errors, Notification, SilentNotification } from "../src" From b41b66b9806841ed0bf273968731149600651d59 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Wed, 27 Nov 2024 16:58:34 -0500 Subject: [PATCH 11/15] ESM --- package.json | 6 +++++- src/apns.ts | 4 ++-- src/errors.ts | 2 +- src/index.ts | 8 ++++---- src/notifications/notification.ts | 4 ++-- src/notifications/silent-notification.ts | 2 +- test/apns2.test.ts | 2 +- 7 files changed, 16 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 56a320c..d707121 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,13 @@ "version": "12.0.0", "description": "Node client for connecting to Apple's Push Notification Service using the new HTTP/2 protocol with JSON web tokens.", "author": "Andrew Barba ", + "license": "MIT", + "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", - "license": "MIT", + "exports": { + ".": "./dist/index.js" + }, "engines": { "node": ">=20" }, diff --git a/src/apns.ts b/src/apns.ts index 59c0d7f..cc694a0 100644 --- a/src/apns.ts +++ b/src/apns.ts @@ -1,8 +1,8 @@ import { EventEmitter } from "node:events" import { type PrivateKey, createSigner } from "fast-jwt" import { type Dispatcher, Pool } from "undici" -import { ApnsError, type ApnsResponseError, Errors } from "./errors" -import { type Notification, Priority } from "./notifications/notification" +import { ApnsError, type ApnsResponseError, Errors } from "./errors.js" +import { type Notification, Priority } from "./notifications/notification.js" // APNS version const API_VERSION = 3 diff --git a/src/errors.ts b/src/errors.ts index 2e48076..6238480 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -1,4 +1,4 @@ -import type { Notification } from "./notifications/notification" +import type { Notification } from "./notifications/notification.js" export enum Errors { badCertificate = "BadCertificate", diff --git a/src/index.ts b/src/index.ts index 03967a2..b402109 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -export * from "./apns" -export * from "./errors" -export * from "./notifications/notification" -export * from "./notifications/silent-notification" +export * from "./apns.js" +export * from "./errors.js" +export * from "./notifications/notification.js" +export * from "./notifications/silent-notification.js" diff --git a/src/notifications/notification.ts b/src/notifications/notification.ts index 91d5fa3..b67dcc9 100644 --- a/src/notifications/notification.ts +++ b/src/notifications/notification.ts @@ -1,5 +1,5 @@ -import { Priority } from "./constants/priority" -import { PushType } from "./constants/push-type" +import { Priority } from "./constants/priority.js" +import { PushType } from "./constants/push-type.js" export { PushType, Priority } diff --git a/src/notifications/silent-notification.ts b/src/notifications/silent-notification.ts index 48c9f65..7450882 100644 --- a/src/notifications/silent-notification.ts +++ b/src/notifications/silent-notification.ts @@ -1,4 +1,4 @@ -import { Notification, type NotificationOptions, Priority, PushType } from "./notification" +import { Notification, type NotificationOptions, Priority, PushType } from "./notification.js" export class SilentNotification extends Notification { constructor( diff --git a/test/apns2.test.ts b/test/apns2.test.ts index c6ee794..8b68de9 100644 --- a/test/apns2.test.ts +++ b/test/apns2.test.ts @@ -1,7 +1,7 @@ import "dotenv/config" import { assert } from "chai" import { beforeAll, describe, it } from "vitest" -import { ApnsClient, Errors, Notification, SilentNotification } from "../src" +import { ApnsClient, Errors, Notification, SilentNotification } from "../src/index.js" describe("apns", () => { const deviceToken = process.env.APNS_PUSH_TOKEN ?? "" From c732c051d48185bd893eb69ff105528c4aedf68d Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Wed, 27 Nov 2024 17:00:53 -0500 Subject: [PATCH 12/15] Changelog --- CHANGELOG.md | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c95ede8..ac46242 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,16 @@ --- +## [12.0.0](https://github.com/AndrewBarba/apns2/releases/tag/12.0.0) + +1. Migrate to Undici v7 +2. ESM +3. Drop support for Node 16 and 18 + ## [11.7.1](https://github.com/AndrewBarba/apns2/releases/tag/11.7.1) -1. Fix issue with `expiration` option [#88](https://github.com/AndrewBarba/apns2/issues/88) +1. Fix issue with `expiration` option + [#88](https://github.com/AndrewBarba/apns2/issues/88) ## [11.7.0](https://github.com/AndrewBarba/apns2/releases/tag/11.7.0) @@ -38,7 +45,8 @@ 1. Define new `Host` enum for specifying APNS host 2. Add `liveactivity` push type -Thank you [278204](https://github.com/278204) and [icodebuster](https://github.com/icodebuster) +Thank you [278204](https://github.com/278204) and +[icodebuster](https://github.com/icodebuster) ## [11.1.0](https://github.com/AndrewBarba/apns2/releases/tag/11.1.0) @@ -119,16 +127,20 @@ Thank you [278204](https://github.com/278204) and [icodebuster](https://github.c ## [7.0.0](https://github.com/AndrewBarba/apns2/releases/tag/7.0.0) -1. Support [apns-push-type](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) and iOS 13 +1. Support + [apns-push-type](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) + and iOS 13 ## [6.1.0](https://github.com/AndrewBarba/apns2/releases/tag/6.1.0) -1. Support [thread-id](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html) +1. Support + [thread-id](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html) ## [6.0.0](https://github.com/AndrewBarba/apns2/releases/tag/6.0.0) 1. Remove Bluebird -2. Remove concurrency option, instead relies on the connection pool and max connections +2. Remove concurrency option, instead relies on the connection pool and max + connections 3. Accept a `Date` for the apns expiration ## [5.0.0](https://github.com/AndrewBarba/apns2/releases/tag/5.0.0) @@ -145,7 +157,8 @@ Thank you [278204](https://github.com/278204) and [icodebuster](https://github.c ## [4.0.2](https://github.com/AndrewBarba/apns2/releases/tag/4.0.2) -1. Reset signing token every 59 minutes to prevent `TooManyProviderTokenUpdates` error +1. Reset signing token every 59 minutes to prevent `TooManyProviderTokenUpdates` + error ## [4.0.1](https://github.com/AndrewBarba/apns2/releases/tag/4.0.1) @@ -154,7 +167,8 @@ Thank you [278204](https://github.com/278204) and [icodebuster](https://github.c ## [4.0.0](https://github.com/AndrewBarba/apns2/releases/tag/4.0.0) 1. Remove support for Node versions less than v8.10 -2. High-performance connection pool using [tarn](https://github.com/vincit/tarn.js) +2. High-performance connection pool using + [tarn](https://github.com/vincit/tarn.js) 3. More friendly require API, see README for updated usage ## [3.0.1](https://github.com/AndrewBarba/apns2/releases/tag/3.0.1) @@ -163,6 +177,11 @@ Thank you [278204](https://github.com/278204) and [icodebuster](https://github.c ## [3.0.0](https://github.com/AndrewBarba/apns2/releases/tag/3.0.1) -1. Introduces support for the native `http2` module in Node.js v8.4.0 or later with fall back to `node-spdy` in earlier versions of Node.js. +1. Introduces support for the native `http2` module in Node.js v8.4.0 or later + with fall back to `node-spdy` in earlier versions of Node.js. -To use the new `http2` library you must start your node process with `node --expose-http2` and apns2 will automatically use the native module. Later versions of Node.js may expose the native module without the need for a command line flag. In this case, apns2 will automatically use the native module without any additional steps on your end. +To use the new `http2` library you must start your node process with +`node --expose-http2` and apns2 will automatically use the native module. Later +versions of Node.js may expose the native module without the need for a command +line flag. In this case, apns2 will automatically use the native module without +any additional steps on your end. From 78290a72906df067270d80f44c90352b4bed7e22 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Wed, 27 Nov 2024 17:11:45 -0500 Subject: [PATCH 13/15] Use npm --- .github/workflows/publish.yml | 6 +- .github/workflows/test.yml | 8 +- bun.lockb | Bin 42719 -> 0 bytes package-lock.json | 1688 +++++++++++++++++++++++++++++++++ package.json | 2 +- 5 files changed, 1694 insertions(+), 10 deletions(-) delete mode 100755 bun.lockb create mode 100644 package-lock.json diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 7476b5a..f5c34e9 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,16 +10,14 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v2 - - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 22 - - run: bun install --frozen-lockfile + - run: npm ci - - run: bun run build + - run: npm run build - run: | echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_ACCESS_TOKEN }}" > .npmrc diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c2f6713..a8b94ab 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,18 +15,16 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v2 - - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - run: bun install --frozen-lockfile + - run: npm install --frozen-lockfile - - run: bun run lint + - run: npm run lint - - run: bun run test + - run: npm run test env: APNS_PUSH_TOKEN: ${{ secrets.APNS_PUSH_TOKEN }} APNS_SIGNING_KEY: ${{ secrets.APNS_SIGNING_KEY }} diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index 67371fc92e46ff272cb2381e896327fb9ea041ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42719 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 Wp??I$x5GA#Yy-tT%=CZn|NjBXv~#Hd diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ae19b4c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1688 @@ +{ + "name": "apns2", + "version": "12.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "apns2", + "version": "12.0.0", + "license": "MIT", + "dependencies": { + "fast-jwt": "^5.0.0", + "undici": "^7.0.0" + }, + "devDependencies": { + "@biomejs/biome": "^1.9.4", + "@tsconfig/node20": "^20.1.4", + "@types/node": "^22.10.0", + "chai": "^5.1.2", + "dotenv": "^16.4.5", + "typescript": "^5.7.2", + "vitest": "^2.1.6" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@biomejs/biome": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.9.4.tgz", + "integrity": "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==", + "dev": true, + "hasInstallScript": true, + "license": "MIT OR Apache-2.0", + "bin": { + "biome": "bin/biome" + }, + "engines": { + "node": ">=14.21.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/biome" + }, + "optionalDependencies": { + "@biomejs/cli-darwin-arm64": "1.9.4", + "@biomejs/cli-darwin-x64": "1.9.4", + "@biomejs/cli-linux-arm64": "1.9.4", + "@biomejs/cli-linux-arm64-musl": "1.9.4", + "@biomejs/cli-linux-x64": "1.9.4", + "@biomejs/cli-linux-x64-musl": "1.9.4", + "@biomejs/cli-win32-arm64": "1.9.4", + "@biomejs/cli-win32-x64": "1.9.4" + } + }, + "node_modules/@biomejs/cli-darwin-arm64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz", + "integrity": "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-darwin-x64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz", + "integrity": "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz", + "integrity": "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64-musl": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz", + "integrity": "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz", + "integrity": "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64-musl": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz", + "integrity": "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-arm64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz", + "integrity": "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-x64": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz", + "integrity": "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@lukeed/ms": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz", + "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz", + "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz", + "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz", + "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz", + "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz", + "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz", + "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz", + "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz", + "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz", + "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz", + "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz", + "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz", + "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz", + "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz", + "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz", + "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz", + "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz", + "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz", + "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tsconfig/node20": { + "version": "20.1.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz", + "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.0.tgz", + "integrity": "sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@vitest/expect": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.6.tgz", + "integrity": "sha512-9M1UR9CAmrhJOMoSwVnPh2rELPKhYo0m/CSgqw9PyStpxtkwhmdM6XYlXGKeYyERY1N6EIuzkQ7e3Lm1WKCoUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.1.6", + "@vitest/utils": "2.1.6", + "chai": "^5.1.2", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.6.tgz", + "integrity": "sha512-MHZp2Z+Q/A3am5oD4WSH04f9B0T7UvwEb+v5W0kCYMhtXGYbdyl2NUk1wdSMqGthmhpiThPDp/hEoVwu16+u1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.1.6", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.6.tgz", + "integrity": "sha512-exZyLcEnHgDMKc54TtHca4McV4sKT+NKAe9ix/yhd/qkYb/TP8HTyXRFDijV19qKqTZM0hPL4753zU/U8L/gAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.6.tgz", + "integrity": "sha512-SjkRGSFyrA82m5nz7To4CkRSEVWn/rwQISHoia/DB8c6IHIhaE/UNAo+7UfeaeJRE979XceGl00LNkIz09RFsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "2.1.6", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.6.tgz", + "integrity": "sha512-5JTWHw8iS9l3v4/VSuthCndw1lN/hpPB+mlgn1BUhFbobeIUj1J1V/Bj2t2ovGEmkXLTckFjQddsxS5T6LuVWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "2.1.6", + "magic-string": "^0.30.12", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.6.tgz", + "integrity": "sha512-oTFObV8bd4SDdRka5O+mSh5w9irgx5IetrD5i+OsUUsk/shsBoHifwCzy45SAORzAhtNiprUVaK3hSCCzZh1jQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.6.tgz", + "integrity": "sha512-ixNkFy3k4vokOUTU2blIUvOgKq/N2PW8vKIjZZYsGJCMX69MRa9J2sKqX5hY/k5O5Gty3YJChepkqZ3KM9LyIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "2.1.6", + "loupe": "^3.1.2", + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "license": "MIT" + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chai": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", + "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", + "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fast-jwt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fast-jwt/-/fast-jwt-5.0.0.tgz", + "integrity": "sha512-BJ6qXIgOjqDa2UeFJlpmuT9DnGR3hbMypL/w53lT2aLQAQh4IzX22QtQQEgoadN4AQ8K0849s2iY0KmEoBQTbg==", + "license": "Apache-2.0", + "dependencies": { + "@lukeed/ms": "^2.0.1", + "asn1.js": "^5.4.1", + "ecdsa-sig-formatter": "^1.0.11", + "mnemonist": "^0.39.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/loupe": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.14", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", + "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/mnemonist": { + "version": "0.39.8", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.39.8.tgz", + "integrity": "sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==", + "license": "MIT", + "dependencies": { + "obliterator": "^2.0.1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "license": "MIT" + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz", + "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.27.4", + "@rollup/rollup-android-arm64": "4.27.4", + "@rollup/rollup-darwin-arm64": "4.27.4", + "@rollup/rollup-darwin-x64": "4.27.4", + "@rollup/rollup-freebsd-arm64": "4.27.4", + "@rollup/rollup-freebsd-x64": "4.27.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.27.4", + "@rollup/rollup-linux-arm-musleabihf": "4.27.4", + "@rollup/rollup-linux-arm64-gnu": "4.27.4", + "@rollup/rollup-linux-arm64-musl": "4.27.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4", + "@rollup/rollup-linux-riscv64-gnu": "4.27.4", + "@rollup/rollup-linux-s390x-gnu": "4.27.4", + "@rollup/rollup-linux-x64-gnu": "4.27.4", + "@rollup/rollup-linux-x64-musl": "4.27.4", + "@rollup/rollup-win32-arm64-msvc": "4.27.4", + "@rollup/rollup-win32-ia32-msvc": "4.27.4", + "@rollup/rollup-win32-x64-msvc": "4.27.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", + "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.0.0.tgz", + "integrity": "sha512-c4xi3kWnQJrb7h2q8aJYKvUzmz7boCgz1cUCC6OwdeM5Tr2P0hDuthr2iut4ggqsz+Cnh20U/LoTzbKIdDS/Nw==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.1.tgz", + "integrity": "sha512-Ldn6gorLGr4mCdFnmeAOLweJxZ34HjKnDm4HGo6P66IEqTxQb36VEdFJQENKxWjupNfoIjvRUnswjn1hpYEpjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.24.0", + "postcss": "^8.4.49", + "rollup": "^4.23.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.6.tgz", + "integrity": "sha512-DBfJY0n9JUwnyLxPSSUmEePT21j8JZp/sR9n+/gBwQU6DcQOioPdb8/pibWfXForbirSagZCilseYIwaL3f95A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.7", + "es-module-lexer": "^1.5.4", + "pathe": "^1.1.2", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.6.tgz", + "integrity": "sha512-isUCkvPL30J4c5O5hgONeFRsDmlw6kzFEdLQHLezmDdKQHy8Ke/B/dgdTMEgU0vm+iZ0TjW8GuK83DiahBoKWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "2.1.6", + "@vitest/mocker": "2.1.6", + "@vitest/pretty-format": "^2.1.6", + "@vitest/runner": "2.1.6", + "@vitest/snapshot": "2.1.6", + "@vitest/spy": "2.1.6", + "@vitest/utils": "2.1.6", + "chai": "^5.1.2", + "debug": "^4.3.7", + "expect-type": "^1.1.0", + "magic-string": "^0.30.12", + "pathe": "^1.1.2", + "std-env": "^3.8.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.1", + "tinypool": "^1.0.1", + "tinyrainbow": "^1.2.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "2.1.6", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "2.1.6", + "@vitest/ui": "2.1.6", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + } + } +} diff --git a/package.json b/package.json index d707121..d3ea937 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "watchos" ], "dependencies": { - "fast-jwt": "^4.0.6", + "fast-jwt": "^5.0.0", "undici": "^7.0.0" }, "devDependencies": { From ba3c2895d4fb421c18507004cb5d3ec9643f8e64 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Wed, 27 Nov 2024 17:13:08 -0500 Subject: [PATCH 14/15] Use ci --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a8b94ab..7842e24 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: with: node-version: ${{ matrix.node-version }} - - run: npm install --frozen-lockfile + - run: npm ci - run: npm run lint From 1b5838ffd4ae86f619ebe8d87213a786f8ee6070 Mon Sep 17 00:00:00 2001 From: Andrew Barba Date: Wed, 27 Nov 2024 17:14:42 -0500 Subject: [PATCH 15/15] Cleanup --- tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index b23bec8..fee68f7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "@tsconfig/node20", "compilerOptions": { - "baseUrl": ".", "declaration": true, "outDir": "dist" },