├── .nvmrc ├── .gitignore ├── tsconfig.src.json ├── ws └── package.json ├── http └── package.json ├── tsconfig.json ├── release.config.json ├── tsconfig.build.json ├── vitest.config.ts ├── tsconfig.test.json ├── vitest.setup.ts ├── tsconfig.base.json ├── tsup.config.ts ├── tests ├── http.ipv6.test.ts ├── middleware-override.test.ts ├── http.test.ts └── ws.test.ts ├── .github └── workflows │ ├── ci.yml │ └── release.yaml ├── csr.pem ├── LICENSE.md ├── cert.pem ├── key.pem ├── package.json ├── README.md ├── src ├── ws.ts └── http.ts └── pnpm-lock.yaml /.nvmrc: -------------------------------------------------------------------------------- 1 | v20 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | lib 3 | *.DS_Store -------------------------------------------------------------------------------- /tsconfig.src.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "include": ["./src"] 4 | } 5 | -------------------------------------------------------------------------------- /ws/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "main": "../lib/ws.js", 4 | "typings": "../lib/ws.d.ts" 5 | } 6 | -------------------------------------------------------------------------------- /http/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "main": "../lib/http.js", 4 | "types": "../lib/http.d.ts" 5 | } 6 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.src.json" }, 5 | { "path": "./tsconfig.test.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /release.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": [ 3 | { 4 | "name": "latest", 5 | "use": "pnpm publish --no-git-checks", 6 | "prerelease": true 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.src.json", 3 | "compilerOptions": { 4 | "outDir": "./lib", 5 | "declaration": true, 6 | "emitDeclarationOnly": true, 7 | "sourceMap": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config' 2 | 3 | export default defineConfig({ 4 | test: { 5 | globals: true, 6 | environment: 'node', 7 | setupFiles: ['./vitest.setup.ts'], 8 | }, 9 | }) 10 | -------------------------------------------------------------------------------- /tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "include": ["./tests", "./vitest.setup.ts"], 4 | "references": [{ "path": "./tsconfig.src.json" }], 5 | "compilerOptions": { 6 | "types": ["vitest/globals"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /vitest.setup.ts: -------------------------------------------------------------------------------- 1 | import { setGlobalDispatcher, Agent } from 'undici' 2 | 3 | beforeAll(() => { 4 | setGlobalDispatcher( 5 | new Agent({ 6 | connect: { 7 | /** 8 | * @note Allow insecure connections to HTTPS servers 9 | * with self-signed certificates in tests. 10 | */ 11 | rejectUnauthorized: false, 12 | }, 13 | }), 14 | ) 15 | }) 16 | -------------------------------------------------------------------------------- /tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "skipLibCheck": true, 5 | "noUncheckedIndexedAccess": true, 6 | "module": "nodenext", 7 | "moduleResolution": "nodenext", 8 | "moduleDetection": "force", 9 | "esModuleInterop": true, 10 | "verbatimModuleSyntax": true, 11 | "types": ["node"] 12 | }, 13 | "exclude": ["node_modules"] 14 | } 15 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { fileURLToPath } from 'node:url' 2 | import { defineConfig } from 'tsup' 3 | 4 | export default defineConfig({ 5 | entry: ['./src/http.ts', './src/ws.ts'], 6 | outDir: './lib', 7 | format: 'esm', 8 | dts: true, 9 | tsconfig: fileURLToPath(new URL('./tsconfig.build.json', import.meta.url)), 10 | clean: true, 11 | splitting: true, 12 | treeshake: true, 13 | }) 14 | -------------------------------------------------------------------------------- /tests/http.ipv6.test.ts: -------------------------------------------------------------------------------- 1 | import { createTestHttpServer } from '../src/http.js' 2 | 3 | test('returns correct server URL when using IPv6 address', async () => { 4 | await using server = await createTestHttpServer({ 5 | hostname: '::1', 6 | protocols: ['http', 'https'] 7 | }) 8 | 9 | expect(server.http.url().href).toMatch(/^http:\/\/\[::1\]:\d{4,}\/$/) 10 | expect(server.https.url().href).toMatch(/^https:\/\/\[::1\]:\d{4,}\/$/) 11 | }) 12 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | workflow_dispatch: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | 15 | - name: Set up Node.js 16 | uses: actions/setup-node@v4 17 | with: 18 | node-version: 20 19 | always-auth: true 20 | registry-url: https://registry.npmjs.org 21 | 22 | - uses: pnpm/action-setup@v4 23 | with: 24 | version: 9.14.2 25 | 26 | - name: Install dependencies 27 | run: pnpm install 28 | 29 | - name: Tests 30 | run: pnpm test 31 | 32 | - name: Build 33 | run: pnpm build 34 | -------------------------------------------------------------------------------- /tests/middleware-override.test.ts: -------------------------------------------------------------------------------- 1 | import { createTestHttpServer } from '../src/http.js' 2 | 3 | it('allows overriding the default CORS middleware', async () => { 4 | await using server = await createTestHttpServer({ 5 | defineRoutes(router) { 6 | router.options('/resource', () => { 7 | return new Response(null, { 8 | status: 204, 9 | headers: { 10 | 'Access-Control-Allow-Origin': 'https://example.com', 11 | 'Access-Control-Allow-Headers': 'origin, content-type', 12 | }, 13 | }) 14 | }) 15 | } 16 | }) 17 | 18 | const response = await fetch(server.http.url('/resource'), { 19 | method: 'OPTIONS', 20 | }) 21 | 22 | // Receives a custom preflight response from the server. 23 | expect(response.headers.get('Access-Control-Allow-Origin')).toBe( 24 | 'https://example.com', 25 | ) 26 | expect(response.headers.get('Access-Control-Allow-Headers')).toBe( 27 | 'origin, content-type', 28 | ) 29 | }) 30 | -------------------------------------------------------------------------------- /csr.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE REQUEST----- 2 | MIICijCCAXICAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx 3 | ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN 4 | AQEBBQADggEPADCCAQoCggEBALNNVrTrNIG2abQ0CpNGmhlHQV/ZFinUf9NRB56H 5 | ZrcvSgHZtjC/W1fPkkTfhYCvBIilc7rYmKXAFOFwjtPmck/1lmdj+b1f7JPBGqQF 6 | krydnNFA4zfHFAlPOLRiU/MJl7a0hXGcJIq0Q4gE56zSyBMuP+RzDbcQS26P0k5R 7 | qf+nJJmf3/CwAlaVSceojzefgtStjXTwciWIJ7z9eimMGIlr9NifDQytpp4hdmcl 8 | Pubapu76z3kQPoHu0e8hpp+iGaY16DLbX333Ha16v818cpZMnJ4bZPknegXijG1B 9 | KeBnY+JJyLFh5IhTMynYGXlRsm9ATer6BOtOVgY2GC8UOIECAwEAAaAAMA0GCSqG 10 | SIb3DQEBCwUAA4IBAQAedDJKfm8ombLAJmLWgb4Z85jeoAGz5DnwfUm8BJItKXex 11 | pSYHUR8EAcv0D8NjlpX/Nm+H4/DKgfbEjuddnH9KwhvtF21GDeY8eHwUNqGVn366 12 | RegfaD6szeBC+w1IGnoX7MpAusfENCE2yF1inK/ECIESrfhz8W33vJGOlhn7iLjW 13 | ClxVKe1BoHmf90RMKYserksZf0Sy7QvYAo5vcwFtZMkNQ056fc2i69FEPSDdOG17 14 | WJJ/iz961aRPOGaH5bEq9akSD8zLRVaNx/Ko0Byzu625lp7nbC/6hQ84Yco2nliB 15 | 9EHTVvHVWIrikk7O+Ebh6C1qjoZlFMHmEDwkOFdH 16 | -----END CERTIFICATE REQUEST----- 17 | -------------------------------------------------------------------------------- /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | name: release 2 | 3 | on: 4 | schedule: 5 | - cron: '0 1 * * *' 6 | workflow_dispatch: 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | with: 14 | fetch-depth: 0 15 | token: ${{ secrets.GH_ADMIN_TOKEN }} 16 | 17 | - name: Set up Node.js 18 | uses: actions/setup-node@v4 19 | with: 20 | node-version: 20 21 | always-auth: true 22 | registry-url: https://registry.npmjs.org 23 | 24 | - name: Setup Git 25 | run: | 26 | git config --local user.name "Artem Zakharchenko" 27 | git config --local user.email "kettanaito@gmail.com" 28 | 29 | - uses: pnpm/action-setup@v4 30 | with: 31 | version: 9.14.2 32 | 33 | - name: Install dependencies 34 | run: pnpm install 35 | 36 | - name: Release 37 | run: pnpm release 38 | env: 39 | GITHUB_TOKEN: ${{ secrets.GH_ADMIN_TOKEN }} 40 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 41 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021-present Artem Zakharchenko 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDOzCCAiOgAwIBAgIUDfPWUj/Hg5cjvXli42/4Iqg/3dMwDQYJKoZIhvcNAQEL 3 | BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM 4 | GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAgFw0yNDA4MDgxMzE2MDFaGA8yMTI0 5 | MDcxNTEzMTYwMVowRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx 6 | ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN 7 | AQEBBQADggEPADCCAQoCggEBALNNVrTrNIG2abQ0CpNGmhlHQV/ZFinUf9NRB56H 8 | ZrcvSgHZtjC/W1fPkkTfhYCvBIilc7rYmKXAFOFwjtPmck/1lmdj+b1f7JPBGqQF 9 | krydnNFA4zfHFAlPOLRiU/MJl7a0hXGcJIq0Q4gE56zSyBMuP+RzDbcQS26P0k5R 10 | qf+nJJmf3/CwAlaVSceojzefgtStjXTwciWIJ7z9eimMGIlr9NifDQytpp4hdmcl 11 | Pubapu76z3kQPoHu0e8hpp+iGaY16DLbX333Ha16v818cpZMnJ4bZPknegXijG1B 12 | KeBnY+JJyLFh5IhTMynYGXlRsm9ATer6BOtOVgY2GC8UOIECAwEAAaMhMB8wHQYD 13 | VR0OBBYEFIIOLNWqINUcGkk6ykwGsEFMMs66MA0GCSqGSIb3DQEBCwUAA4IBAQBa 14 | lPo20Jd6lbE52HBxE/S13oor+Huy4E4eqdoSO/qaWpDNwL2HAhLPkrfRvwugTi9m 15 | Bf2jhQBugglRLBKO5kcfd/axCfVuliheOkSbTvB2S1U+tTIGxFpNR0cUyxQom8jR 16 | AVRbEt8oWiJML5CcGvWb6fBDosfsQiIfXp26WPZASVK7NYMlMsQp1Q++j0F8X5bh 17 | ILDEQCHZZLN0i7Mq32Tn/g1AcCxrwG31jVmfra+cJDJmHLZEx3wM+6qRrIC5UClt 18 | hLRFOmDXZTYwccWSRe4SdKyNF/3/tZ5vyZdY5pR0hpAGd1fqMTl5nCq5atGD15sf 19 | lNDnNpxI26w5E0TgaQq9 20 | -----END CERTIFICATE----- 21 | -------------------------------------------------------------------------------- /key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCzTVa06zSBtmm0 3 | NAqTRpoZR0Ff2RYp1H/TUQeeh2a3L0oB2bYwv1tXz5JE34WArwSIpXO62JilwBTh 4 | cI7T5nJP9ZZnY/m9X+yTwRqkBZK8nZzRQOM3xxQJTzi0YlPzCZe2tIVxnCSKtEOI 5 | BOes0sgTLj/kcw23EEtuj9JOUan/pySZn9/wsAJWlUnHqI83n4LUrY108HIliCe8 6 | /XopjBiJa/TYnw0MraaeIXZnJT7m2qbu+s95ED6B7tHvIaafohmmNegy21999x2t 7 | er/NfHKWTJyeG2T5J3oF4oxtQSngZ2PiScixYeSIUzMp2Bl5UbJvQE3q+gTrTlYG 8 | NhgvFDiBAgMBAAECggEAApuFGu0ocPbBgTOYQlkJ/6kcZ3zufzlgZab2qMJ2VJWC 9 | +F6iFd1BZuFMQHdxsIGbEsXwDSGi0F/6YAt+W6xjw53GwvQDCPejOTH/ykD+x8va 10 | IMEx45RpE2XeUwZgeOAgVlY4KSeWXnSWzEEXuI/CvGQZ3VZsbZC/vcsWW/CAzgiX 11 | wqsaWTBV4pxbfcJWnRNj/Wh4P10RcmkI/cRNsY7iOF5Fd5pvbqT+uVvpMyT9aPiG 12 | 6822vUkEkZKqG73SJmAocFu6YLDijMrGMhQs7vrZXnXxEPouzRWwqjoFhFrutJz9 13 | TSPxHX7uD3QPZEf3eZVC0jKn0n2jrxckalQPGhkT2QKBgQDpWV+yMylod0LQ5elL 14 | pwMsKu6evHNeryJO3s26di+KDvWkLyU6ZcqYnk5GY06ptvRDOG8jOspMhL7ajOHi 15 | yUlBnQshHVWFIRDTXnWhBOWOpI8sUR0DKlZSCejaxUMKPDqODEbarISPjWexWznD 16 | NIMdwmZ5SLgC77OnQnLyQfoE7QKBgQDEtOtt4LijP+W3m7TD0+oVBiNAzh9YZ2Yu 17 | OPQXOfNNvAEON0ShJkhuUHdY3dFoNM8vJnq4T8JoBEMQvBQC8fMrR6ZUi7I5JvUH 18 | SvLj4P61ZHJp7v3dsoUX0EbkEm52BiT98DsnMOxDSJdcL/zROBSskqsMrOqbRojC 19 | 5hfVyDeDZQKBgQCv+kbBDPRdZBNvlvOpqfoqhPYPn+8hqNImyMA9roOLilyVxTg+ 20 | IiX3kutVCe947hCn4RdvahbGPhXwm+5+KW6lnNmXz5d/HsChpsru89JrEI8ozMMk 21 | b/lJRU/mLH2yall+ZqPIpfISkIFyr2mQXTnEZ6cAMGcVT9Acg3BMYpU6wQKBgQCs 22 | TIDPvQBd1nFj85pR0cR/Z+HnOOVR7TgekrqTwanxVBVkm1qdAUh+gDMZ/yoW6fL0 23 | rPLfkNWLgPgxp1yr+7xxE5CJC9gvoYUNP0QkAQd6YaKqUbHCyEU2R7RgwBhLfzRV 24 | zmAyAvNgOCyEjnAX3tSVGN+E+c2B9zWB6kPEeVzO1QKBgQCP1YS0XuR3XWjPOqVv 25 | 6I2npZ53Agb2BYZiuLiHI75dD3ndMx2x0IqQG54eivTFBUZk3m5r1qjZq1159Gjs 26 | pOo0WojSbTf3WYOY2P0k3PqOuE+6hikrwHtQKlujLaJnuBwKPtZQdPvPPN4C4fIx 27 | y9r7XFynV6raHyI1r5xreq48eQ== 28 | -----END PRIVATE KEY----- 29 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "name": "@epic-web/test-server", 4 | "version": "0.1.6", 5 | "description": "Utility for creating HTTP and WebSocket servers for testing", 6 | "main": "./lib/index.js", 7 | "exports": { 8 | "./http": { 9 | "types": "./lib/http.d.ts", 10 | "default": "./lib/http.js" 11 | }, 12 | "./ws": { 13 | "types": "./lib/ws.d.ts", 14 | "default": "./lib/ws.js" 15 | }, 16 | "./package.json": "./package.json" 17 | }, 18 | "files": [ 19 | "./lib", 20 | "./http", 21 | "./ws", 22 | "./key.pem", 23 | "./cert.pem" 24 | ], 25 | "scripts": { 26 | "test": "vitest", 27 | "build": "tsup", 28 | "prepack": "pnpm test && pnpm build", 29 | "release": "release publish" 30 | }, 31 | "engines": { 32 | "node": ">=20" 33 | }, 34 | "keywords": [ 35 | "test", 36 | "server", 37 | "http", 38 | "websocket", 39 | "testing", 40 | "local" 41 | ], 42 | "author": "Artem Zakharchenko ", 43 | "license": "MIT", 44 | "repository": { 45 | "type": "git", 46 | "url": "https://github.com/epicweb-dev/test-server" 47 | }, 48 | "publishConfig": { 49 | "access": "public" 50 | }, 51 | "prettier": { 52 | "semi": false, 53 | "singleQuote": true, 54 | "trailingComma": "all", 55 | "arrowParens": "always" 56 | }, 57 | "dependencies": { 58 | "@hono/node-server": "^1.12.1", 59 | "@hono/node-ws": "^1.0.4", 60 | "@open-draft/deferred-promise": "^2.2.0", 61 | "@types/ws": "^8.18.1", 62 | "hono": "^4.5.8", 63 | "ws": "^8.18.1" 64 | }, 65 | "devDependencies": { 66 | "@ossjs/release": "^0.8.1", 67 | "@types/node": "^20.0.0", 68 | "tsup": "^8.2.4", 69 | "typescript": "^5.5.4", 70 | "undici": "^6.19.8", 71 | "vitest": "^3.1.2" 72 | } 73 | } -------------------------------------------------------------------------------- /tests/http.test.ts: -------------------------------------------------------------------------------- 1 | import { createTestHttpServer } from '../src/http.js' 2 | 3 | const books = [ 4 | 'The Lord of the Rings', 5 | 'The Song of Ice and Fire' 6 | ] 7 | 8 | test('creates an HTTP server', async () => { 9 | await using server = await createTestHttpServer({ 10 | defineRoutes(router) { 11 | router.get('/', () => new Response()) 12 | } 13 | }) 14 | const response = await fetch(server.http.url('/'), { method: 'HEAD' }) 15 | expect(response.status).toBe(200) 16 | }) 17 | 18 | test('creates an HTTPS server', async () => { 19 | await using server = await createTestHttpServer({ 20 | protocols: ['https'], 21 | defineRoutes(router) { 22 | router.get('/', () => new Response()) 23 | } 24 | }) 25 | const response = await fetch(server.https.url('/'), { 26 | method: 'HEAD', 27 | }) 28 | expect(response.status).toBe(200) 29 | }) 30 | 31 | test('applies the root router to HTTP server', async () => { 32 | await using server = await createTestHttpServer({ 33 | defineRoutes(router) { 34 | router.get('/books', () => Response.json(books)) 35 | } 36 | }) 37 | const httpResponse = await fetch(server.http.url('/books')) 38 | const httpResponseBody = await httpResponse.json() 39 | 40 | expect(httpResponseBody).toEqual([ 41 | 'The Lord of the Rings', 42 | 'The Song of Ice and Fire', 43 | ]) 44 | }) 45 | 46 | test('applies the root router to HTTPS server', async () => { 47 | await using server = await createTestHttpServer({ 48 | protocols: ['https'], 49 | defineRoutes(router) { 50 | router.get('/books', () => Response.json(books)) 51 | } 52 | }) 53 | const httpsResponse = await fetch(server.https.url('/books')) 54 | const httpsResponseBody = await httpsResponse.json() 55 | 56 | expect(httpsResponseBody).toEqual([ 57 | 'The Lord of the Rings', 58 | 'The Song of Ice and Fire', 59 | ]) 60 | }) 61 | 62 | test('returns server addresses', async () => { 63 | await using server = await createTestHttpServer({ 64 | protocols: ['http', 'https'], 65 | defineRoutes(router) { 66 | router.get('/', () => new Response()) 67 | } 68 | }) 69 | const httpUrl = server.http.url() 70 | expect(httpUrl.protocol).toBe('http:') 71 | expect(httpUrl.hostname).toBe('127.0.0.1') 72 | expect(httpUrl.port).toMatch(/^\d+$/) 73 | 74 | const httpsUrl = server.https.url() 75 | expect(httpsUrl.protocol).toBe('https:') 76 | expect(httpsUrl.hostname).toBe('127.0.0.1') 77 | expect(httpsUrl.port).toMatch(/^\d+$/) 78 | }) 79 | -------------------------------------------------------------------------------- /tests/ws.test.ts: -------------------------------------------------------------------------------- 1 | import { WebSocket } from 'undici' 2 | import { createTestHttpServer } from '../src/http.js' 3 | import { createWebSocketMiddleware } from '../src/ws.js' 4 | import { WebSocketServer } from 'ws' 5 | 6 | it('returns correct WebSocket URL', async () => { 7 | await using server = await createTestHttpServer() 8 | await using wss = createWebSocketMiddleware({ server, pathname: '/ws' }) 9 | expect(wss.ws.url().pathname).toBe('/ws') 10 | }) 11 | 12 | it('can be used as a disposable utility', async () => { 13 | await using server = await createTestHttpServer() 14 | await using wss = createWebSocketMiddleware({ server }) 15 | 16 | wss.on('connection', (ws) => { 17 | ws.send('hello from server') 18 | }) 19 | 20 | const client = new WebSocket(wss.ws.url()) 21 | const messageCallback = vi.fn() 22 | client.onmessage = messageCallback 23 | client.onerror = (error) => console.log(error.message) 24 | 25 | await vi.waitFor(() => { 26 | expect(client.readyState).toBe(client.OPEN) 27 | }) 28 | 29 | await vi.waitFor(() => { 30 | expect(messageCallback).toHaveBeenCalledOnce() 31 | expect(messageCallback).toHaveBeenCalledWith(expect.objectContaining({ 32 | type: 'message', 33 | data: 'hello from server' 34 | })) 35 | }) 36 | }) 37 | 38 | it('creates a WebSocket server', async () => { 39 | await using server = await createTestHttpServer() 40 | await using wss = createWebSocketMiddleware({ server }) 41 | 42 | const connectionListener = vi.fn() 43 | wss.once('connection', connectionListener) 44 | 45 | const client = new WebSocket(wss.ws.url()) 46 | const openCallback = vi.fn() 47 | const errorCallback = vi.fn() 48 | client.onopen = openCallback 49 | client.onerror = errorCallback 50 | 51 | await vi.waitFor(() => { 52 | expect(openCallback).toHaveBeenCalledOnce() 53 | }) 54 | 55 | expect(connectionListener).toHaveBeenCalledOnce() 56 | expect(errorCallback).not.toHaveBeenCalled() 57 | }) 58 | 59 | it('creates a secure WebSocket connection', async () => { 60 | await using server = await createTestHttpServer({ protocols: ['https'] }) 61 | await using wss = createWebSocketMiddleware({ server }) 62 | 63 | const connectionListener = vi.fn() 64 | wss.once('connection', connectionListener) 65 | 66 | const client = new WebSocket(wss.wss.url()) 67 | const openCallback = vi.fn() 68 | const errorCallback = vi.fn() 69 | client.onopen = openCallback 70 | client.onerror = errorCallback 71 | 72 | await vi.waitFor(() => { 73 | expect(openCallback).toHaveBeenCalledOnce() 74 | }) 75 | 76 | expect(connectionListener).toHaveBeenCalledOnce() 77 | expect(errorCallback).not.toHaveBeenCalled() 78 | }) 79 | 80 | 81 | it('disconnects all clients when closing the server', async () => { 82 | await using server = await createTestHttpServer({ 83 | protocols: ['http', 'https'] 84 | }) 85 | await using wss = createWebSocketMiddleware({ server }) 86 | 87 | const firstClient = new WebSocket(wss.ws.url()) 88 | const secondClient = new WebSocket(wss.wss.url()) 89 | 90 | await Promise.all([ 91 | new Promise((resolve, reject) => { 92 | firstClient.onopen = resolve 93 | firstClient.onerror = reject 94 | }), 95 | new Promise((resolve, reject) => { 96 | secondClient.onopen = resolve 97 | secondClient.onerror = reject 98 | }), 99 | ]) 100 | 101 | await wss.close() 102 | 103 | // All clients must be disconnected once the "close" Promise resolves. 104 | expect(firstClient.readyState).toBe(WebSocket.CLOSED) 105 | expect(secondClient.readyState).toBe(WebSocket.CLOSED) 106 | }) 107 | 108 | it('exposes the raw WebSocket server reference under `wss.raw`', async () => { 109 | await using server = await createTestHttpServer() 110 | await using wss = createWebSocketMiddleware({ server }) 111 | 112 | expect(wss.raw).toBeInstanceOf(WebSocketServer) 113 | }) 114 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Test Server 2 | 3 | Utility for creating HTTP and WebSocket servers for testing. 4 | 5 | ## Features 6 | 7 | - **Compact**. Spawn servers on-demand while keeping the test setup to the minimum. 8 | - **Automatically disposable**. This utility is build with the [`using`](https://www.totaltypescript.com/typescript-5-2-new-keyword-using) keyword in mind. Any servers you spawn are automatically closed once nothing is using them. 9 | - **Standard-based**. Handle requests and responses using the web standards. This library uses [Hono](https://hono.dev/) to spawn servers. 10 | 11 | ## Install 12 | 13 | ```sh 14 | npm install @epic-web/test-server 15 | ``` 16 | 17 | ## Usage 18 | 19 | ### HTTP server 20 | 21 | ```ts 22 | import { createTestHttpServer } from '@epic-web/test-server/http' 23 | 24 | it('fetches the list of numbers', async () => { 25 | // Create a disposable "server" instance. 26 | await using server = await createTestHttpServer({ 27 | defineRoutes(router) { 28 | router.get('/numbers', () => { 29 | return Response.json([1, 2, 3]) 30 | }) 31 | } 32 | }) 33 | 34 | // Construct URLs relatively to the test server. 35 | const response = await fetch(server.http.url('/numbers')) 36 | await expect(response.json()).resolves.toEqual([1, 2, 3]) 37 | }) 38 | ``` 39 | 40 | ### WebSocket server 41 | 42 | ```ts 43 | import { createTestHttpServer } from '@epic-web/test-server/http' 44 | import { createWebSocketMiddleware } from '@epic-web/test-server/ws' 45 | 46 | it('handles WebSocket communication', async () => { 47 | await using server = await createTestHttpServer() 48 | // Attach WebSockets as a middleware to an existing HTTP server. 49 | await using wss = createWebSocketMiddleware({ server }) 50 | 51 | // Handle WebSocket connections. 52 | wss.ws.on('connect', (socket) => console.log('new connection!')) 53 | 54 | const client = new WebSocket(wss.ws.url()) 55 | }) 56 | ``` 57 | 58 | ## API 59 | 60 | ### `createTestHttpServer([options])` 61 | 62 | Creates an HTTP server instance. 63 | 64 | - `options` (optional) 65 | - `protocols`, (optional) `Array<'http' | 'https'>` (default: `['http']`), the list of protocols to use when spawning the test server. Providing multiple values will spawn multiple servers with the corresponding controls via `server.http` and `server.https`. 66 | - `defineRoutes`, (optional) `(router: Router) => void`, a function describing the server's routes. 67 | - Returns: [Promise<`TestHttpServer`>](#testhttpserver) 68 | 69 | ### `TestHttpServer` 70 | 71 | #### `TestHttpServer.http.url([pathname])` 72 | 73 | - `pathname` (optional, default: `/`), `string`, a pathname to resolve against the server's URL. 74 | - Returns: `URL`. 75 | 76 | Calling the `.url()` method without any arguments returns this server's URL: 77 | 78 | ```ts 79 | server.http.url() // URL 80 | ``` 81 | 82 | Providing the `pathname` argument returns a URL for that path: 83 | 84 | ```ts 85 | server.http.url('/resource') // URL 86 | ``` 87 | 88 | #### `TestHttpServer.close()` 89 | 90 | Closes the HTTP server, aborting any pending requests. 91 | 92 | > [!IMPORTANT] 93 | > The `createTestHttpServer()` is a _disposable_ utility. It means that JavaScript will automatically dispose of the server instance (i.e. close it) when nothing else is referencing the `server` object. _You don't have to manually close the server_. But you _can_ close the server amidst a test, if that's what your test needs. 94 | 95 | ### `createWebSocketMiddleware(options)` 96 | 97 | - `options` 98 | - `server`, [`TestHttpServer`](#testhttpserver), a reference to the existing test HTTP server object. 99 | - Returns: [TestWebSocketServer](#testwebsocketserver) 100 | 101 | > Note: The WebSocket middleware will automatically attach itself to all spawned HTTP servers. If you are using multiple servers at once (e.g. HTTP + HTTPS), both `wss.ws` and `wss.wss` APIs will be available for WebSockets respectively. 102 | 103 | ### `TestWebSocketServer` 104 | 105 | #### `TestWebSocketServer.on(type, listener)` 106 | 107 | Adds a listener for the given event. 108 | 109 | ```ts 110 | wss.ws.on('connection', () => {}) 111 | wss.wss.on('connection', () => {}) 112 | ``` 113 | 114 | #### `TestWebSocketServer.once(type, listener)` 115 | 116 | Adds a one-time listener for the given event. 117 | 118 | #### `TestWebSocketServer.off(type, listener)` 119 | 120 | Removes a listener from the given event. 121 | -------------------------------------------------------------------------------- /src/ws.ts: -------------------------------------------------------------------------------- 1 | import type { IncomingMessage } from 'node:http' 2 | import type { Socket } from 'node:net' 3 | import type { EventEmitter } from 'node:events' 4 | import { randomUUID } from 'node:crypto' 5 | import { WebSocketServer } from 'ws' 6 | import { type ServerType } from '@hono/node-server' 7 | import { DeferredPromise } from '@open-draft/deferred-promise' 8 | import { 9 | type TestHttpServerProtocol, 10 | kServer, 11 | getServerUrl, 12 | kServers, 13 | type TestHttpServer, 14 | kEmitter, 15 | toRelativePathname, 16 | } from './http.js' 17 | 18 | function buildWebSocketApi( 19 | protocol: TestHttpServerProtocol, 20 | server: ServerType, 21 | pathname: string, 22 | ) { 23 | const baseUrl = new URL( 24 | toRelativePathname(pathname), 25 | getServerUrl(protocol, server), 26 | ) 27 | // Always set the protocol to the WebSocket protocol 28 | // to save the upgrade roundtrip on requests. 29 | baseUrl.protocol = baseUrl.protocol.replace('http', 'ws') 30 | 31 | return { 32 | url() { 33 | return baseUrl 34 | }, 35 | } 36 | } 37 | 38 | export interface TestWebSocketServerOptions { 39 | server: TestHttpServer 40 | pathname?: string 41 | } 42 | 43 | /** 44 | * Attach a disposable WebSocket middleware to the given HTTP test server. 45 | * 46 | * @example 47 | * await using server = await createTestHttpServer() 48 | * await using wss = createWebSocketMiddleware({ server }) 49 | */ 50 | export function createWebSocketMiddleware(options: TestWebSocketServerOptions) { 51 | const emitter: EventEmitter = Reflect.get(options.server, kEmitter) 52 | const pathname = options.pathname ?? `/ws/${randomUUID()}` 53 | 54 | const wss = new WebSocketServer({ 55 | noServer: true, 56 | path: pathname, 57 | }) 58 | 59 | const handleUpgrade = ( 60 | request: IncomingMessage, 61 | socket: Socket, 62 | head: Buffer, 63 | ) => { 64 | if (request.url !== pathname) { 65 | return 66 | } 67 | 68 | wss.handleUpgrade(request, socket, head, (ws) => { 69 | wss.emit('connection', ws, request) 70 | }) 71 | } 72 | 73 | const subscriptions: Array = [] 74 | 75 | const addUpgradeListener = (server: ServerType) => { 76 | server.on('upgrade', handleUpgrade) 77 | 78 | // Store the removal of the event listeners so it can be replayed 79 | // during the cleanup without having to reference the `server` again. 80 | subscriptions.push(() => server.removeListener('upgrade', handleUpgrade)) 81 | } 82 | 83 | // First, see if the test server already has server instances running. 84 | // E.g. when calling this middleware inside of a test. 85 | const servers: Array = Reflect.get(options.server, kServers) 86 | servers.forEach((server) => { 87 | addUpgradeListener(server) 88 | }) 89 | 90 | // Add a listener to whenever the test server starts listening. 91 | // This is handy when adding this middleware to a test server in the setup phase. 92 | emitter.on('listen', (server: ServerType) => { 93 | addUpgradeListener(server) 94 | }) 95 | 96 | return { 97 | async [Symbol.asyncDispose]() { 98 | await this.close() 99 | }, 100 | 101 | raw: wss, 102 | on: wss.on.bind(wss), 103 | once: wss.once.bind(wss), 104 | off: wss.off.bind(wss), 105 | 106 | get ws() { 107 | const server: ServerType = Reflect.get(options.server.http, kServer) 108 | return buildWebSocketApi('http', server, pathname) 109 | }, 110 | 111 | get wss() { 112 | const server: ServerType = Reflect.get(options.server.https, kServer) 113 | return buildWebSocketApi('https', server, pathname) 114 | }, 115 | 116 | async close() { 117 | let effect 118 | while ((effect = subscriptions.pop())) { 119 | effect() 120 | } 121 | 122 | if (wss.clients.size === 0) { 123 | return 124 | } 125 | 126 | const pendingClientClosures: Array> = [] 127 | 128 | wss.clients.forEach((client) => { 129 | client.close() 130 | const clientClosedPromise = new DeferredPromise() 131 | pendingClientClosures.push(clientClosedPromise) 132 | client.once('close', clientClosedPromise.resolve) 133 | }) 134 | 135 | await Promise.all(pendingClientClosures) 136 | 137 | /** 138 | * @note I don't think `wss.close()` is necessary since we want to 139 | * keep the actual HTTP server running even if the WebSocket middleware is disposed of. 140 | */ 141 | }, 142 | } 143 | } 144 | -------------------------------------------------------------------------------- /src/http.ts: -------------------------------------------------------------------------------- 1 | import fs from 'node:fs' 2 | import https from 'node:https' 3 | import type { Socket } from 'node:net' 4 | import EventEmitter from 'node:events' 5 | import { Hono } from 'hono' 6 | import { cors } from 'hono/cors' 7 | import { serve, type ServerType } from '@hono/node-server' 8 | import { DeferredPromise } from '@open-draft/deferred-promise' 9 | 10 | export type TestHttpServerProtocol = 'http' | 'https' 11 | type ServeOptions = Parameters[0] 12 | 13 | export interface TestHttpServer { 14 | [Symbol.asyncDispose](): Promise 15 | 16 | close: () => Promise 17 | http: TestHttpServerApi 18 | https: TestHttpServerApi 19 | } 20 | 21 | export interface TestHttpServerOptions { 22 | protocols?: Array 23 | hostname?: string 24 | defineRoutes?: (router: Hono) => void 25 | } 26 | 27 | export interface TestHttpServerApi { 28 | url: UrlBuilderFunction 29 | } 30 | 31 | interface UrlBuilderFunction { 32 | (pathname?: string): URL 33 | } 34 | 35 | export const DEFAULT_PROTOCOLS: Array = ['http'] 36 | 37 | /** 38 | * @note Store the current file's URL in a separate variable 39 | * so that `URL` instances don't get resolves against the "http://" 40 | * scheme (as Vite does normally in the browser) in JSDOM. 41 | * This will force urls to use the "file:// scheme. 42 | */ 43 | const BASE_URL = import.meta.url 44 | 45 | const SSL_CERT_PATH = new URL('../cert.pem', BASE_URL) 46 | const SSL_KEY_PATH = new URL('../key.pem', BASE_URL) 47 | 48 | export const kApp = Symbol('kApp') 49 | export const kServer = Symbol('kServer') 50 | export const kServers = Symbol('kServers') 51 | export const kEmitter = Symbol('kEmitter') 52 | 53 | /** 54 | * Create a disposable HTTP server. 55 | * 56 | * @example 57 | * await using server = await createTestHttpServer({ 58 | * defineRoutes(router) { 59 | * router.get('/resource', () => new Response('Hello world!')) 60 | * } 61 | * }) 62 | */ 63 | export async function createTestHttpServer( 64 | options?: TestHttpServerOptions, 65 | ): Promise { 66 | const protocols = Array.from( 67 | new Set( 68 | typeof options === 'object' && Array.isArray(options.protocols) 69 | ? options.protocols 70 | : DEFAULT_PROTOCOLS, 71 | ), 72 | ) 73 | const sockets = new Set() 74 | const emitter = new EventEmitter() 75 | 76 | const rootRouter = new Hono() 77 | rootRouter.get('/', () => { 78 | return new Response('Test server is listening') 79 | }) 80 | 81 | if ( 82 | typeof options === 'object' && 83 | typeof options.defineRoutes === 'function' 84 | ) { 85 | options.defineRoutes(rootRouter) 86 | } 87 | 88 | /** 89 | * @note Apply the default CORS middleware last so `defineRoutes` 90 | * could override it. Request handlers are sensitive to order. 91 | */ 92 | rootRouter.use(cors()) 93 | 94 | const app = new Hono(rootRouter) 95 | const serveOptions = { 96 | fetch: app.fetch, 97 | hostname: options?.hostname || '127.0.0.1', 98 | port: 0, 99 | } satisfies ServeOptions 100 | 101 | const servers = new Map() 102 | const serverInits = new Map( 103 | protocols.map((protocol) => { 104 | switch (protocol) { 105 | case 'http': { 106 | return ['http', serveOptions] 107 | } 108 | 109 | case 'https': { 110 | return [ 111 | 'https', 112 | { 113 | ...serveOptions, 114 | createServer: https.createServer, 115 | serverOptions: { 116 | key: fs.readFileSync(SSL_KEY_PATH), 117 | cert: fs.readFileSync(SSL_CERT_PATH), 118 | }, 119 | } satisfies ServeOptions, 120 | ] 121 | } 122 | 123 | default: { 124 | throw new Error(`Unsupported server protocol "${protocol}"`) 125 | } 126 | } 127 | }), 128 | ) 129 | 130 | const abortAllConnections = async () => { 131 | const pendingAborts: Array> = [] 132 | for (const socket of sockets) { 133 | pendingAborts.push(abortConnection(socket)) 134 | } 135 | return Promise.all(pendingAborts) 136 | } 137 | 138 | const listen = async () => { 139 | const pendingListens = [] 140 | for (const [protocol, serveOptions] of serverInits) { 141 | pendingListens.push( 142 | startHttpServer(serveOptions).then((server) => { 143 | subscribeToConnections(server, sockets) 144 | servers.set(protocol, server) 145 | 146 | emitter.emit('listen', server) 147 | }), 148 | ) 149 | } 150 | await Promise.all(pendingListens) 151 | } 152 | 153 | const api: TestHttpServer = { 154 | async [Symbol.asyncDispose]() { 155 | await this.close() 156 | }, 157 | 158 | async close() { 159 | await abortAllConnections() 160 | 161 | const pendingClosures = [] 162 | for (const [, server] of servers) { 163 | pendingClosures.push(closeHttpServer(server)) 164 | } 165 | await Promise.all(pendingClosures) 166 | 167 | servers.clear() 168 | }, 169 | 170 | get http() { 171 | const server = servers.get('http') 172 | 173 | if (server == null) { 174 | throw new Error( 175 | 'HTTP server is not defined. Did you forget to include "http" in the "protocols" option?', 176 | ) 177 | } 178 | 179 | return buildServerApi('http', server, app) 180 | }, 181 | 182 | get https() { 183 | const server = servers.get('https') 184 | 185 | if (server == null) { 186 | throw new Error( 187 | 'HTTPS server is not defined. Did you forget to include "https" in the "protocols" option?', 188 | ) 189 | } 190 | 191 | return buildServerApi('https', server, app) 192 | }, 193 | } 194 | 195 | Object.defineProperty(api, kEmitter, { value: emitter }) 196 | Object.defineProperty(api, kApp, { value: app }) 197 | Object.defineProperty(api, kServers, { value: servers }) 198 | 199 | await listen() 200 | 201 | return api 202 | } 203 | 204 | async function startHttpServer(options: ServeOptions): Promise { 205 | const listenPromise = new DeferredPromise() 206 | 207 | const server = serve(options, () => { 208 | listenPromise.resolve(server) 209 | }) 210 | server.once('error', (error) => { 211 | console.error(error) 212 | listenPromise.reject(error) 213 | }) 214 | 215 | return listenPromise 216 | } 217 | 218 | async function closeHttpServer(server: ServerType): Promise { 219 | if (!server.listening) { 220 | return Promise.resolve() 221 | } 222 | 223 | const closePromise = new DeferredPromise() 224 | 225 | server.close((error) => { 226 | if (error) { 227 | closePromise.reject(error) 228 | } 229 | closePromise.resolve() 230 | }) 231 | 232 | return closePromise.then(() => { 233 | server.unref() 234 | }) 235 | } 236 | 237 | function subscribeToConnections(server: ServerType, sockets: Set) { 238 | server.on('connection', (socket) => { 239 | sockets.add(socket) 240 | socket.once('close', () => { 241 | sockets.delete(socket) 242 | }) 243 | }) 244 | } 245 | 246 | async function abortConnection(socket: Socket): Promise { 247 | if (socket.destroyed) { 248 | return Promise.resolve() 249 | } 250 | 251 | const abortPromise = new DeferredPromise() 252 | 253 | socket.destroy() 254 | socket 255 | .on('close', () => abortPromise.resolve()) 256 | .once('error', (error) => abortPromise.reject(error)) 257 | 258 | return abortPromise 259 | } 260 | 261 | export function createUrlBuilder( 262 | baseUrl: string | URL, 263 | forceRelativePathname?: boolean, 264 | ): UrlBuilderFunction { 265 | return (pathname = '/') => { 266 | return new URL( 267 | forceRelativePathname ? toRelativePathname(pathname) : pathname, 268 | baseUrl, 269 | ) 270 | } 271 | } 272 | 273 | export function toRelativePathname(pathname: string): string { 274 | return !pathname.startsWith('.') ? '.' + pathname : pathname 275 | } 276 | 277 | export function getServerUrl(protocol: string, server: ServerType): URL { 278 | let url: URL 279 | const address = server.address() 280 | 281 | if (address == null) { 282 | throw new Error('Failed to get server URL: server.address() returned null') 283 | } 284 | 285 | if (typeof address === 'string') { 286 | url = new URL(address) 287 | } else { 288 | const hostname = 289 | address.address.includes(':') && 290 | !address.address.startsWith('[') && 291 | !address.address.endsWith(']') 292 | ? `[${address.address}]` 293 | : address.address 294 | 295 | url = new URL(`http://${hostname}`) 296 | url.port = address.port.toString() ?? '' 297 | 298 | if (protocol === 'https') { 299 | url.protocol = 'https:' 300 | } 301 | } 302 | 303 | return url 304 | } 305 | 306 | function buildServerApi( 307 | protocol: TestHttpServerProtocol, 308 | server: ServerType, 309 | app: Hono, 310 | ): TestHttpServerApi { 311 | const baseUrl = getServerUrl(protocol, server) 312 | const api: TestHttpServerApi = { 313 | url: createUrlBuilder(baseUrl), 314 | } 315 | 316 | Object.defineProperty(api, kServer, { value: server }) 317 | 318 | return api 319 | } 320 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@hono/node-server': 12 | specifier: ^1.12.1 13 | version: 1.12.1 14 | '@hono/node-ws': 15 | specifier: ^1.0.4 16 | version: 1.0.4(@hono/node-server@1.12.1) 17 | '@open-draft/deferred-promise': 18 | specifier: ^2.2.0 19 | version: 2.2.0 20 | '@types/ws': 21 | specifier: ^8.18.1 22 | version: 8.18.1 23 | hono: 24 | specifier: ^4.5.8 25 | version: 4.5.8 26 | ws: 27 | specifier: ^8.18.1 28 | version: 8.18.1 29 | devDependencies: 30 | '@ossjs/release': 31 | specifier: ^0.8.1 32 | version: 0.8.1 33 | '@types/node': 34 | specifier: ^20.0.0 35 | version: 20.16.1 36 | tsup: 37 | specifier: ^8.2.4 38 | version: 8.2.4(postcss@8.4.41)(typescript@5.5.4) 39 | typescript: 40 | specifier: ^5.5.4 41 | version: 5.5.4 42 | undici: 43 | specifier: ^6.19.8 44 | version: 6.19.8 45 | vitest: 46 | specifier: ^3.1.2 47 | version: 3.1.2(@types/node@20.16.1) 48 | 49 | packages: 50 | 51 | '@esbuild/aix-ppc64@0.21.5': 52 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 53 | engines: {node: '>=12'} 54 | cpu: [ppc64] 55 | os: [aix] 56 | 57 | '@esbuild/aix-ppc64@0.23.1': 58 | resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} 59 | engines: {node: '>=18'} 60 | cpu: [ppc64] 61 | os: [aix] 62 | 63 | '@esbuild/android-arm64@0.21.5': 64 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 65 | engines: {node: '>=12'} 66 | cpu: [arm64] 67 | os: [android] 68 | 69 | '@esbuild/android-arm64@0.23.1': 70 | resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} 71 | engines: {node: '>=18'} 72 | cpu: [arm64] 73 | os: [android] 74 | 75 | '@esbuild/android-arm@0.21.5': 76 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 77 | engines: {node: '>=12'} 78 | cpu: [arm] 79 | os: [android] 80 | 81 | '@esbuild/android-arm@0.23.1': 82 | resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} 83 | engines: {node: '>=18'} 84 | cpu: [arm] 85 | os: [android] 86 | 87 | '@esbuild/android-x64@0.21.5': 88 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 89 | engines: {node: '>=12'} 90 | cpu: [x64] 91 | os: [android] 92 | 93 | '@esbuild/android-x64@0.23.1': 94 | resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} 95 | engines: {node: '>=18'} 96 | cpu: [x64] 97 | os: [android] 98 | 99 | '@esbuild/darwin-arm64@0.21.5': 100 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 101 | engines: {node: '>=12'} 102 | cpu: [arm64] 103 | os: [darwin] 104 | 105 | '@esbuild/darwin-arm64@0.23.1': 106 | resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} 107 | engines: {node: '>=18'} 108 | cpu: [arm64] 109 | os: [darwin] 110 | 111 | '@esbuild/darwin-x64@0.21.5': 112 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 113 | engines: {node: '>=12'} 114 | cpu: [x64] 115 | os: [darwin] 116 | 117 | '@esbuild/darwin-x64@0.23.1': 118 | resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} 119 | engines: {node: '>=18'} 120 | cpu: [x64] 121 | os: [darwin] 122 | 123 | '@esbuild/freebsd-arm64@0.21.5': 124 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 125 | engines: {node: '>=12'} 126 | cpu: [arm64] 127 | os: [freebsd] 128 | 129 | '@esbuild/freebsd-arm64@0.23.1': 130 | resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} 131 | engines: {node: '>=18'} 132 | cpu: [arm64] 133 | os: [freebsd] 134 | 135 | '@esbuild/freebsd-x64@0.21.5': 136 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 137 | engines: {node: '>=12'} 138 | cpu: [x64] 139 | os: [freebsd] 140 | 141 | '@esbuild/freebsd-x64@0.23.1': 142 | resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} 143 | engines: {node: '>=18'} 144 | cpu: [x64] 145 | os: [freebsd] 146 | 147 | '@esbuild/linux-arm64@0.21.5': 148 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 149 | engines: {node: '>=12'} 150 | cpu: [arm64] 151 | os: [linux] 152 | 153 | '@esbuild/linux-arm64@0.23.1': 154 | resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} 155 | engines: {node: '>=18'} 156 | cpu: [arm64] 157 | os: [linux] 158 | 159 | '@esbuild/linux-arm@0.21.5': 160 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 161 | engines: {node: '>=12'} 162 | cpu: [arm] 163 | os: [linux] 164 | 165 | '@esbuild/linux-arm@0.23.1': 166 | resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} 167 | engines: {node: '>=18'} 168 | cpu: [arm] 169 | os: [linux] 170 | 171 | '@esbuild/linux-ia32@0.21.5': 172 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 173 | engines: {node: '>=12'} 174 | cpu: [ia32] 175 | os: [linux] 176 | 177 | '@esbuild/linux-ia32@0.23.1': 178 | resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} 179 | engines: {node: '>=18'} 180 | cpu: [ia32] 181 | os: [linux] 182 | 183 | '@esbuild/linux-loong64@0.21.5': 184 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 185 | engines: {node: '>=12'} 186 | cpu: [loong64] 187 | os: [linux] 188 | 189 | '@esbuild/linux-loong64@0.23.1': 190 | resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} 191 | engines: {node: '>=18'} 192 | cpu: [loong64] 193 | os: [linux] 194 | 195 | '@esbuild/linux-mips64el@0.21.5': 196 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 197 | engines: {node: '>=12'} 198 | cpu: [mips64el] 199 | os: [linux] 200 | 201 | '@esbuild/linux-mips64el@0.23.1': 202 | resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} 203 | engines: {node: '>=18'} 204 | cpu: [mips64el] 205 | os: [linux] 206 | 207 | '@esbuild/linux-ppc64@0.21.5': 208 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 209 | engines: {node: '>=12'} 210 | cpu: [ppc64] 211 | os: [linux] 212 | 213 | '@esbuild/linux-ppc64@0.23.1': 214 | resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} 215 | engines: {node: '>=18'} 216 | cpu: [ppc64] 217 | os: [linux] 218 | 219 | '@esbuild/linux-riscv64@0.21.5': 220 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 221 | engines: {node: '>=12'} 222 | cpu: [riscv64] 223 | os: [linux] 224 | 225 | '@esbuild/linux-riscv64@0.23.1': 226 | resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} 227 | engines: {node: '>=18'} 228 | cpu: [riscv64] 229 | os: [linux] 230 | 231 | '@esbuild/linux-s390x@0.21.5': 232 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 233 | engines: {node: '>=12'} 234 | cpu: [s390x] 235 | os: [linux] 236 | 237 | '@esbuild/linux-s390x@0.23.1': 238 | resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} 239 | engines: {node: '>=18'} 240 | cpu: [s390x] 241 | os: [linux] 242 | 243 | '@esbuild/linux-x64@0.21.5': 244 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 245 | engines: {node: '>=12'} 246 | cpu: [x64] 247 | os: [linux] 248 | 249 | '@esbuild/linux-x64@0.23.1': 250 | resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} 251 | engines: {node: '>=18'} 252 | cpu: [x64] 253 | os: [linux] 254 | 255 | '@esbuild/netbsd-x64@0.21.5': 256 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 257 | engines: {node: '>=12'} 258 | cpu: [x64] 259 | os: [netbsd] 260 | 261 | '@esbuild/netbsd-x64@0.23.1': 262 | resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} 263 | engines: {node: '>=18'} 264 | cpu: [x64] 265 | os: [netbsd] 266 | 267 | '@esbuild/openbsd-arm64@0.23.1': 268 | resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} 269 | engines: {node: '>=18'} 270 | cpu: [arm64] 271 | os: [openbsd] 272 | 273 | '@esbuild/openbsd-x64@0.21.5': 274 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 275 | engines: {node: '>=12'} 276 | cpu: [x64] 277 | os: [openbsd] 278 | 279 | '@esbuild/openbsd-x64@0.23.1': 280 | resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} 281 | engines: {node: '>=18'} 282 | cpu: [x64] 283 | os: [openbsd] 284 | 285 | '@esbuild/sunos-x64@0.21.5': 286 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 287 | engines: {node: '>=12'} 288 | cpu: [x64] 289 | os: [sunos] 290 | 291 | '@esbuild/sunos-x64@0.23.1': 292 | resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} 293 | engines: {node: '>=18'} 294 | cpu: [x64] 295 | os: [sunos] 296 | 297 | '@esbuild/win32-arm64@0.21.5': 298 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 299 | engines: {node: '>=12'} 300 | cpu: [arm64] 301 | os: [win32] 302 | 303 | '@esbuild/win32-arm64@0.23.1': 304 | resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} 305 | engines: {node: '>=18'} 306 | cpu: [arm64] 307 | os: [win32] 308 | 309 | '@esbuild/win32-ia32@0.21.5': 310 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 311 | engines: {node: '>=12'} 312 | cpu: [ia32] 313 | os: [win32] 314 | 315 | '@esbuild/win32-ia32@0.23.1': 316 | resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} 317 | engines: {node: '>=18'} 318 | cpu: [ia32] 319 | os: [win32] 320 | 321 | '@esbuild/win32-x64@0.21.5': 322 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 323 | engines: {node: '>=12'} 324 | cpu: [x64] 325 | os: [win32] 326 | 327 | '@esbuild/win32-x64@0.23.1': 328 | resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} 329 | engines: {node: '>=18'} 330 | cpu: [x64] 331 | os: [win32] 332 | 333 | '@hono/node-server@1.12.1': 334 | resolution: {integrity: sha512-C9l+08O8xtXB7Ppmy8DjBFH1hYji7JKzsU32Yt1poIIbdPp6S7aOI8IldDHD9YFJ55lv2c21ovNrmxatlHfhAg==} 335 | engines: {node: '>=18.14.1'} 336 | 337 | '@hono/node-ws@1.0.4': 338 | resolution: {integrity: sha512-0j1TMp67U5ym0CIlvPKcKtD0f2ZjaS/EnhOxFLs3bVfV+/4WInBE7hVe2x/7PLEsNIUK9+jVL8lPd28rzTAcZg==} 339 | engines: {node: '>=18.14.1'} 340 | peerDependencies: 341 | '@hono/node-server': ^1.11.1 342 | 343 | '@isaacs/cliui@8.0.2': 344 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 345 | engines: {node: '>=12'} 346 | 347 | '@jridgewell/gen-mapping@0.3.5': 348 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 349 | engines: {node: '>=6.0.0'} 350 | 351 | '@jridgewell/resolve-uri@3.1.2': 352 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 353 | engines: {node: '>=6.0.0'} 354 | 355 | '@jridgewell/set-array@1.2.1': 356 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 357 | engines: {node: '>=6.0.0'} 358 | 359 | '@jridgewell/sourcemap-codec@1.5.0': 360 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 361 | 362 | '@jridgewell/trace-mapping@0.3.25': 363 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 364 | 365 | '@nodelib/fs.scandir@2.1.5': 366 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 367 | engines: {node: '>= 8'} 368 | 369 | '@nodelib/fs.stat@2.0.5': 370 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 371 | engines: {node: '>= 8'} 372 | 373 | '@nodelib/fs.walk@1.2.8': 374 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 375 | engines: {node: '>= 8'} 376 | 377 | '@open-draft/deferred-promise@2.2.0': 378 | resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} 379 | 380 | '@open-draft/until@2.1.0': 381 | resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} 382 | 383 | '@ossjs/release@0.8.1': 384 | resolution: {integrity: sha512-gApVH7M47Mkh9GNMpd/LJi72KlCUcl/t0lbTP082APlHIQUzyQObcMyfLOjEwRdxyyYJtKlbTMzoDf/+NNIIiQ==} 385 | hasBin: true 386 | 387 | '@pkgjs/parseargs@0.11.0': 388 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 389 | engines: {node: '>=14'} 390 | 391 | '@rollup/rollup-android-arm-eabi@4.21.0': 392 | resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} 393 | cpu: [arm] 394 | os: [android] 395 | 396 | '@rollup/rollup-android-arm64@4.21.0': 397 | resolution: {integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==} 398 | cpu: [arm64] 399 | os: [android] 400 | 401 | '@rollup/rollup-darwin-arm64@4.21.0': 402 | resolution: {integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==} 403 | cpu: [arm64] 404 | os: [darwin] 405 | 406 | '@rollup/rollup-darwin-x64@4.21.0': 407 | resolution: {integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==} 408 | cpu: [x64] 409 | os: [darwin] 410 | 411 | '@rollup/rollup-linux-arm-gnueabihf@4.21.0': 412 | resolution: {integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==} 413 | cpu: [arm] 414 | os: [linux] 415 | 416 | '@rollup/rollup-linux-arm-musleabihf@4.21.0': 417 | resolution: {integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==} 418 | cpu: [arm] 419 | os: [linux] 420 | 421 | '@rollup/rollup-linux-arm64-gnu@4.21.0': 422 | resolution: {integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==} 423 | cpu: [arm64] 424 | os: [linux] 425 | 426 | '@rollup/rollup-linux-arm64-musl@4.21.0': 427 | resolution: {integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==} 428 | cpu: [arm64] 429 | os: [linux] 430 | 431 | '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': 432 | resolution: {integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==} 433 | cpu: [ppc64] 434 | os: [linux] 435 | 436 | '@rollup/rollup-linux-riscv64-gnu@4.21.0': 437 | resolution: {integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==} 438 | cpu: [riscv64] 439 | os: [linux] 440 | 441 | '@rollup/rollup-linux-s390x-gnu@4.21.0': 442 | resolution: {integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==} 443 | cpu: [s390x] 444 | os: [linux] 445 | 446 | '@rollup/rollup-linux-x64-gnu@4.21.0': 447 | resolution: {integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==} 448 | cpu: [x64] 449 | os: [linux] 450 | 451 | '@rollup/rollup-linux-x64-musl@4.21.0': 452 | resolution: {integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==} 453 | cpu: [x64] 454 | os: [linux] 455 | 456 | '@rollup/rollup-win32-arm64-msvc@4.21.0': 457 | resolution: {integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==} 458 | cpu: [arm64] 459 | os: [win32] 460 | 461 | '@rollup/rollup-win32-ia32-msvc@4.21.0': 462 | resolution: {integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==} 463 | cpu: [ia32] 464 | os: [win32] 465 | 466 | '@rollup/rollup-win32-x64-msvc@4.21.0': 467 | resolution: {integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==} 468 | cpu: [x64] 469 | os: [win32] 470 | 471 | '@types/conventional-commits-parser@3.0.6': 472 | resolution: {integrity: sha512-z4crlplLzL9uA5kbE4ZghAf5RbrEr1UL/uNGGgxYbJjI0jRBjuYKuasbo13ANZsSapLTM2DLZk6LDcjemow4qQ==} 473 | 474 | '@types/estree@1.0.5': 475 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 476 | 477 | '@types/issue-parser@3.0.5': 478 | resolution: {integrity: sha512-fvOrnb7uS6qRme16tfyxy9SjOgx47Krkt/ilLS7axP3SWtJb9GZlduWX2bAsJOnr1HuCwJh88rCidzCZ1LwuZg==} 479 | 480 | '@types/minimist@1.2.5': 481 | resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} 482 | 483 | '@types/node-fetch@2.6.11': 484 | resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} 485 | 486 | '@types/node@16.18.105': 487 | resolution: {integrity: sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA==} 488 | 489 | '@types/node@20.16.1': 490 | resolution: {integrity: sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==} 491 | 492 | '@types/rc@1.2.4': 493 | resolution: {integrity: sha512-xD6+epQoMH79A1uwmJIq25D+XZ57jUzCQ1DGSvs3tGKdx7QDYOOaMh6m5KBkEIW4+Cy5++bZ7NLDfdpNiYVKYA==} 494 | 495 | '@types/registry-auth-token@4.2.4': 496 | resolution: {integrity: sha512-NsLrPRVZBHXXcDa/3vB3Aqla9xZ0bY8GRcD0UlhpMPeNcht540agdE6mOjYB2BZi/tIHxWD5qtRZ6YDZ4hTiqg==} 497 | 498 | '@types/semver@7.5.8': 499 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} 500 | 501 | '@types/ws@8.18.1': 502 | resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} 503 | 504 | '@types/yargs-parser@21.0.3': 505 | resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} 506 | 507 | '@types/yargs@17.0.33': 508 | resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} 509 | 510 | '@vitest/expect@3.1.2': 511 | resolution: {integrity: sha512-O8hJgr+zREopCAqWl3uCVaOdqJwZ9qaDwUP7vy3Xigad0phZe9APxKhPcDNqYYi0rX5oMvwJMSCAXY2afqeTSA==} 512 | 513 | '@vitest/mocker@3.1.2': 514 | resolution: {integrity: sha512-kOtd6K2lc7SQ0mBqYv/wdGedlqPdM/B38paPY+OwJ1XiNi44w3Fpog82UfOibmHaV9Wod18A09I9SCKLyDMqgw==} 515 | peerDependencies: 516 | msw: ^2.4.9 517 | vite: ^5.0.0 || ^6.0.0 518 | peerDependenciesMeta: 519 | msw: 520 | optional: true 521 | vite: 522 | optional: true 523 | 524 | '@vitest/pretty-format@3.1.2': 525 | resolution: {integrity: sha512-R0xAiHuWeDjTSB3kQ3OQpT8Rx3yhdOAIm/JM4axXxnG7Q/fS8XUwggv/A4xzbQA+drYRjzkMnpYnOGAc4oeq8w==} 526 | 527 | '@vitest/runner@3.1.2': 528 | resolution: {integrity: sha512-bhLib9l4xb4sUMPXnThbnhX2Yi8OutBMA8Yahxa7yavQsFDtwY/jrUZwpKp2XH9DhRFJIeytlyGpXCqZ65nR+g==} 529 | 530 | '@vitest/snapshot@3.1.2': 531 | resolution: {integrity: sha512-Q1qkpazSF/p4ApZg1vfZSQ5Yw6OCQxVMVrLjslbLFA1hMDrT2uxtqMaw8Tc/jy5DLka1sNs1Y7rBcftMiaSH/Q==} 532 | 533 | '@vitest/spy@3.1.2': 534 | resolution: {integrity: sha512-OEc5fSXMws6sHVe4kOFyDSj/+4MSwst0ib4un0DlcYgQvRuYQ0+M2HyqGaauUMnjq87tmUaMNDxKQx7wNfVqPA==} 535 | 536 | '@vitest/utils@3.1.2': 537 | resolution: {integrity: sha512-5GGd0ytZ7BH3H6JTj9Kw7Prn1Nbg0wZVrIvou+UWxm54d+WoXXgAgjFJ8wn3LdagWLFSEfpPeyYrByZaGEZHLg==} 538 | 539 | JSONStream@1.3.5: 540 | resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} 541 | hasBin: true 542 | 543 | ansi-regex@5.0.1: 544 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 545 | engines: {node: '>=8'} 546 | 547 | ansi-regex@6.0.1: 548 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 549 | engines: {node: '>=12'} 550 | 551 | ansi-styles@3.2.1: 552 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 553 | engines: {node: '>=4'} 554 | 555 | ansi-styles@4.3.0: 556 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 557 | engines: {node: '>=8'} 558 | 559 | ansi-styles@6.2.1: 560 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 561 | engines: {node: '>=12'} 562 | 563 | any-promise@1.3.0: 564 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 565 | 566 | anymatch@3.1.3: 567 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 568 | engines: {node: '>= 8'} 569 | 570 | args@5.0.3: 571 | resolution: {integrity: sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==} 572 | engines: {node: '>= 6.0.0'} 573 | 574 | argv-formatter@1.0.0: 575 | resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} 576 | 577 | array-union@2.1.0: 578 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 579 | engines: {node: '>=8'} 580 | 581 | assertion-error@2.0.1: 582 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 583 | engines: {node: '>=12'} 584 | 585 | asynckit@0.4.0: 586 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 587 | 588 | atomic-sleep@1.0.0: 589 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 590 | engines: {node: '>=8.0.0'} 591 | 592 | balanced-match@1.0.2: 593 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 594 | 595 | binary-extensions@2.3.0: 596 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 597 | engines: {node: '>=8'} 598 | 599 | brace-expansion@2.0.1: 600 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 601 | 602 | braces@3.0.3: 603 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 604 | engines: {node: '>=8'} 605 | 606 | bundle-require@5.0.0: 607 | resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} 608 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 609 | peerDependencies: 610 | esbuild: '>=0.18' 611 | 612 | cac@6.7.14: 613 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 614 | engines: {node: '>=8'} 615 | 616 | camelcase@5.0.0: 617 | resolution: {integrity: sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==} 618 | engines: {node: '>=6'} 619 | 620 | chai@5.2.0: 621 | resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} 622 | engines: {node: '>=12'} 623 | 624 | chalk@2.4.2: 625 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 626 | engines: {node: '>=4'} 627 | 628 | check-error@2.1.1: 629 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 630 | engines: {node: '>= 16'} 631 | 632 | chokidar@3.6.0: 633 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 634 | engines: {node: '>= 8.10.0'} 635 | 636 | cliui@8.0.1: 637 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 638 | engines: {node: '>=12'} 639 | 640 | color-convert@1.9.3: 641 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 642 | 643 | color-convert@2.0.1: 644 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 645 | engines: {node: '>=7.0.0'} 646 | 647 | color-name@1.1.3: 648 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 649 | 650 | color-name@1.1.4: 651 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 652 | 653 | colorette@2.0.20: 654 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 655 | 656 | combined-stream@1.0.8: 657 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 658 | engines: {node: '>= 0.8'} 659 | 660 | commander@4.1.1: 661 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 662 | engines: {node: '>= 6'} 663 | 664 | consola@3.2.3: 665 | resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} 666 | engines: {node: ^14.18.0 || >=16.10.0} 667 | 668 | conventional-commits-parser@5.0.0: 669 | resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} 670 | engines: {node: '>=16'} 671 | hasBin: true 672 | 673 | core-util-is@1.0.3: 674 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 675 | 676 | cross-spawn@7.0.3: 677 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 678 | engines: {node: '>= 8'} 679 | 680 | dateformat@4.6.3: 681 | resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} 682 | 683 | debug@4.3.6: 684 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} 685 | engines: {node: '>=6.0'} 686 | peerDependencies: 687 | supports-color: '*' 688 | peerDependenciesMeta: 689 | supports-color: 690 | optional: true 691 | 692 | debug@4.4.0: 693 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 694 | engines: {node: '>=6.0'} 695 | peerDependencies: 696 | supports-color: '*' 697 | peerDependenciesMeta: 698 | supports-color: 699 | optional: true 700 | 701 | deep-eql@5.0.2: 702 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 703 | engines: {node: '>=6'} 704 | 705 | deep-extend@0.6.0: 706 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 707 | engines: {node: '>=4.0.0'} 708 | 709 | delayed-stream@1.0.0: 710 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 711 | engines: {node: '>=0.4.0'} 712 | 713 | dir-glob@3.0.1: 714 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 715 | engines: {node: '>=8'} 716 | 717 | duplexer2@0.1.4: 718 | resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} 719 | 720 | duplexify@4.1.3: 721 | resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} 722 | 723 | eastasianwidth@0.2.0: 724 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 725 | 726 | emoji-regex@8.0.0: 727 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 728 | 729 | emoji-regex@9.2.2: 730 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 731 | 732 | end-of-stream@1.4.4: 733 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 734 | 735 | es-module-lexer@1.7.0: 736 | resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 737 | 738 | esbuild@0.21.5: 739 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 740 | engines: {node: '>=12'} 741 | hasBin: true 742 | 743 | esbuild@0.23.1: 744 | resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} 745 | engines: {node: '>=18'} 746 | hasBin: true 747 | 748 | escalade@3.1.2: 749 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} 750 | engines: {node: '>=6'} 751 | 752 | escape-string-regexp@1.0.5: 753 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 754 | engines: {node: '>=0.8.0'} 755 | 756 | estree-walker@3.0.3: 757 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 758 | 759 | execa@5.1.1: 760 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 761 | engines: {node: '>=10'} 762 | 763 | expect-type@1.2.1: 764 | resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} 765 | engines: {node: '>=12.0.0'} 766 | 767 | fast-glob@3.3.2: 768 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 769 | engines: {node: '>=8.6.0'} 770 | 771 | fast-redact@3.5.0: 772 | resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} 773 | engines: {node: '>=6'} 774 | 775 | fast-safe-stringify@2.1.1: 776 | resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 777 | 778 | fastq@1.17.1: 779 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 780 | 781 | fdir@6.4.4: 782 | resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} 783 | peerDependencies: 784 | picomatch: ^3 || ^4 785 | peerDependenciesMeta: 786 | picomatch: 787 | optional: true 788 | 789 | fill-range@7.1.1: 790 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 791 | engines: {node: '>=8'} 792 | 793 | foreground-child@3.3.0: 794 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 795 | engines: {node: '>=14'} 796 | 797 | form-data@4.0.0: 798 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 799 | engines: {node: '>= 6'} 800 | 801 | fsevents@2.3.3: 802 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 803 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 804 | os: [darwin] 805 | 806 | get-caller-file@2.0.5: 807 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 808 | engines: {node: 6.* || 8.* || >= 10.*} 809 | 810 | get-func-name@2.0.2: 811 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} 812 | 813 | get-stream@6.0.1: 814 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 815 | engines: {node: '>=10'} 816 | 817 | git-log-parser@1.2.1: 818 | resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} 819 | 820 | glob-parent@5.1.2: 821 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 822 | engines: {node: '>= 6'} 823 | 824 | glob@10.4.5: 825 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 826 | hasBin: true 827 | 828 | globby@11.1.0: 829 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 830 | engines: {node: '>=10'} 831 | 832 | has-flag@3.0.0: 833 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 834 | engines: {node: '>=4'} 835 | 836 | hono@4.5.8: 837 | resolution: {integrity: sha512-pqpSlcdqGkpTTRpLYU1PnCz52gVr0zVR9H5GzMyJWuKQLLEBQxh96q45QizJ2PPX8NATtz2mu31/PKW/Jt+90Q==} 838 | engines: {node: '>=16.0.0'} 839 | 840 | human-signals@2.1.0: 841 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 842 | engines: {node: '>=10.17.0'} 843 | 844 | ignore@5.3.2: 845 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 846 | engines: {node: '>= 4'} 847 | 848 | inherits@2.0.4: 849 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 850 | 851 | ini@1.3.8: 852 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 853 | 854 | is-binary-path@2.1.0: 855 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 856 | engines: {node: '>=8'} 857 | 858 | is-extglob@2.1.1: 859 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 860 | engines: {node: '>=0.10.0'} 861 | 862 | is-fullwidth-code-point@3.0.0: 863 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 864 | engines: {node: '>=8'} 865 | 866 | is-glob@4.0.3: 867 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 868 | engines: {node: '>=0.10.0'} 869 | 870 | is-number@7.0.0: 871 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 872 | engines: {node: '>=0.12.0'} 873 | 874 | is-stream@2.0.1: 875 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 876 | engines: {node: '>=8'} 877 | 878 | is-text-path@2.0.0: 879 | resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} 880 | engines: {node: '>=8'} 881 | 882 | isarray@1.0.0: 883 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 884 | 885 | isexe@2.0.0: 886 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 887 | 888 | issue-parser@6.0.0: 889 | resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==} 890 | engines: {node: '>=10.13'} 891 | 892 | jackspeak@3.4.3: 893 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 894 | 895 | joycon@3.1.1: 896 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 897 | engines: {node: '>=10'} 898 | 899 | jsonparse@1.3.1: 900 | resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} 901 | engines: {'0': node >= 0.2.0} 902 | 903 | leven@2.1.0: 904 | resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} 905 | engines: {node: '>=0.10.0'} 906 | 907 | lilconfig@3.1.2: 908 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} 909 | engines: {node: '>=14'} 910 | 911 | lines-and-columns@1.2.4: 912 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 913 | 914 | load-tsconfig@0.2.5: 915 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 916 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 917 | 918 | lodash.capitalize@4.2.1: 919 | resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} 920 | 921 | lodash.escaperegexp@4.1.2: 922 | resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} 923 | 924 | lodash.isplainobject@4.0.6: 925 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 926 | 927 | lodash.isstring@4.0.1: 928 | resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} 929 | 930 | lodash.sortby@4.7.0: 931 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 932 | 933 | lodash.uniqby@4.7.0: 934 | resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} 935 | 936 | loupe@3.1.1: 937 | resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} 938 | 939 | loupe@3.1.3: 940 | resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} 941 | 942 | lru-cache@10.4.3: 943 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 944 | 945 | magic-string@0.30.17: 946 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 947 | 948 | meow@12.1.1: 949 | resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} 950 | engines: {node: '>=16.10'} 951 | 952 | merge-stream@2.0.0: 953 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 954 | 955 | merge2@1.4.1: 956 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 957 | engines: {node: '>= 8'} 958 | 959 | micromatch@4.0.7: 960 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} 961 | engines: {node: '>=8.6'} 962 | 963 | mime-db@1.52.0: 964 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 965 | engines: {node: '>= 0.6'} 966 | 967 | mime-types@2.1.35: 968 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 969 | engines: {node: '>= 0.6'} 970 | 971 | mimic-fn@2.1.0: 972 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 973 | engines: {node: '>=6'} 974 | 975 | minimatch@9.0.5: 976 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 977 | engines: {node: '>=16 || 14 >=14.17'} 978 | 979 | minimist@1.2.8: 980 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 981 | 982 | minipass@7.1.2: 983 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 984 | engines: {node: '>=16 || 14 >=14.17'} 985 | 986 | mri@1.1.4: 987 | resolution: {integrity: sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==} 988 | engines: {node: '>=4'} 989 | 990 | ms@2.1.2: 991 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 992 | 993 | ms@2.1.3: 994 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 995 | 996 | mz@2.7.0: 997 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 998 | 999 | nanoid@3.3.7: 1000 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1001 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1002 | hasBin: true 1003 | 1004 | node-fetch@2.6.7: 1005 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} 1006 | engines: {node: 4.x || >=6.0.0} 1007 | peerDependencies: 1008 | encoding: ^0.1.0 1009 | peerDependenciesMeta: 1010 | encoding: 1011 | optional: true 1012 | 1013 | normalize-path@3.0.0: 1014 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1015 | engines: {node: '>=0.10.0'} 1016 | 1017 | npm-run-path@4.0.1: 1018 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1019 | engines: {node: '>=8'} 1020 | 1021 | object-assign@4.1.1: 1022 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1023 | engines: {node: '>=0.10.0'} 1024 | 1025 | on-exit-leak-free@0.2.0: 1026 | resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} 1027 | 1028 | once@1.4.0: 1029 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1030 | 1031 | onetime@5.1.2: 1032 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1033 | engines: {node: '>=6'} 1034 | 1035 | outvariant@1.4.3: 1036 | resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} 1037 | 1038 | package-json-from-dist@1.0.0: 1039 | resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} 1040 | 1041 | path-key@3.1.1: 1042 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1043 | engines: {node: '>=8'} 1044 | 1045 | path-scurry@1.11.1: 1046 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1047 | engines: {node: '>=16 || 14 >=14.18'} 1048 | 1049 | path-type@4.0.0: 1050 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1051 | engines: {node: '>=8'} 1052 | 1053 | pathe@2.0.3: 1054 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1055 | 1056 | pathval@2.0.0: 1057 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1058 | engines: {node: '>= 14.16'} 1059 | 1060 | picocolors@1.0.1: 1061 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 1062 | 1063 | picomatch@2.3.1: 1064 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1065 | engines: {node: '>=8.6'} 1066 | 1067 | picomatch@4.0.2: 1068 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1069 | engines: {node: '>=12'} 1070 | 1071 | pino-abstract-transport@0.5.0: 1072 | resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} 1073 | 1074 | pino-pretty@7.6.1: 1075 | resolution: {integrity: sha512-H7N6ZYkiyrfwBGW9CSjx0uyO9Q2Lyt73881+OTYk8v3TiTdgN92QHrWlEq/LeWw5XtDP64jeSk3mnc6T+xX9/w==} 1076 | hasBin: true 1077 | 1078 | pino-std-serializers@4.0.0: 1079 | resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} 1080 | 1081 | pino@7.11.0: 1082 | resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} 1083 | hasBin: true 1084 | 1085 | pirates@4.0.6: 1086 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1087 | engines: {node: '>= 6'} 1088 | 1089 | postcss-load-config@6.0.1: 1090 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1091 | engines: {node: '>= 18'} 1092 | peerDependencies: 1093 | jiti: '>=1.21.0' 1094 | postcss: '>=8.0.9' 1095 | tsx: ^4.8.1 1096 | yaml: ^2.4.2 1097 | peerDependenciesMeta: 1098 | jiti: 1099 | optional: true 1100 | postcss: 1101 | optional: true 1102 | tsx: 1103 | optional: true 1104 | yaml: 1105 | optional: true 1106 | 1107 | postcss@8.4.41: 1108 | resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} 1109 | engines: {node: ^10 || ^12 || >=14} 1110 | 1111 | process-nextick-args@2.0.1: 1112 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 1113 | 1114 | process-warning@1.0.0: 1115 | resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} 1116 | 1117 | pump@3.0.0: 1118 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 1119 | 1120 | punycode@2.3.1: 1121 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1122 | engines: {node: '>=6'} 1123 | 1124 | queue-microtask@1.2.3: 1125 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1126 | 1127 | quick-format-unescaped@4.0.4: 1128 | resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 1129 | 1130 | rc@1.2.8: 1131 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 1132 | hasBin: true 1133 | 1134 | readable-stream@2.3.8: 1135 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} 1136 | 1137 | readable-stream@3.6.2: 1138 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 1139 | engines: {node: '>= 6'} 1140 | 1141 | readdirp@3.6.0: 1142 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1143 | engines: {node: '>=8.10.0'} 1144 | 1145 | real-require@0.1.0: 1146 | resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} 1147 | engines: {node: '>= 12.13.0'} 1148 | 1149 | registry-auth-token@4.2.2: 1150 | resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} 1151 | engines: {node: '>=6.0.0'} 1152 | 1153 | require-directory@2.1.1: 1154 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1155 | engines: {node: '>=0.10.0'} 1156 | 1157 | resolve-from@5.0.0: 1158 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1159 | engines: {node: '>=8'} 1160 | 1161 | reusify@1.0.4: 1162 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1163 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1164 | 1165 | rfdc@1.4.1: 1166 | resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 1167 | 1168 | rollup@4.21.0: 1169 | resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==} 1170 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1171 | hasBin: true 1172 | 1173 | run-parallel@1.2.0: 1174 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1175 | 1176 | safe-buffer@5.1.2: 1177 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1178 | 1179 | safe-buffer@5.2.1: 1180 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1181 | 1182 | safe-stable-stringify@2.4.3: 1183 | resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} 1184 | engines: {node: '>=10'} 1185 | 1186 | secure-json-parse@2.7.0: 1187 | resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} 1188 | 1189 | semver@7.6.3: 1190 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1191 | engines: {node: '>=10'} 1192 | hasBin: true 1193 | 1194 | shebang-command@2.0.0: 1195 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1196 | engines: {node: '>=8'} 1197 | 1198 | shebang-regex@3.0.0: 1199 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1200 | engines: {node: '>=8'} 1201 | 1202 | siginfo@2.0.0: 1203 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1204 | 1205 | signal-exit@3.0.7: 1206 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1207 | 1208 | signal-exit@4.1.0: 1209 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1210 | engines: {node: '>=14'} 1211 | 1212 | slash@3.0.0: 1213 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1214 | engines: {node: '>=8'} 1215 | 1216 | sonic-boom@2.8.0: 1217 | resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} 1218 | 1219 | source-map-js@1.2.0: 1220 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 1221 | engines: {node: '>=0.10.0'} 1222 | 1223 | source-map@0.8.0-beta.0: 1224 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1225 | engines: {node: '>= 8'} 1226 | 1227 | spawn-error-forwarder@1.0.0: 1228 | resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} 1229 | 1230 | split2@1.0.0: 1231 | resolution: {integrity: sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==} 1232 | 1233 | split2@4.2.0: 1234 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 1235 | engines: {node: '>= 10.x'} 1236 | 1237 | stackback@0.0.2: 1238 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1239 | 1240 | std-env@3.9.0: 1241 | resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} 1242 | 1243 | stream-combiner2@1.1.1: 1244 | resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} 1245 | 1246 | stream-shift@1.0.3: 1247 | resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} 1248 | 1249 | string-width@4.2.3: 1250 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1251 | engines: {node: '>=8'} 1252 | 1253 | string-width@5.1.2: 1254 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1255 | engines: {node: '>=12'} 1256 | 1257 | string_decoder@1.1.1: 1258 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 1259 | 1260 | string_decoder@1.3.0: 1261 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1262 | 1263 | strip-ansi@6.0.1: 1264 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1265 | engines: {node: '>=8'} 1266 | 1267 | strip-ansi@7.1.0: 1268 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1269 | engines: {node: '>=12'} 1270 | 1271 | strip-final-newline@2.0.0: 1272 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1273 | engines: {node: '>=6'} 1274 | 1275 | strip-json-comments@2.0.1: 1276 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 1277 | engines: {node: '>=0.10.0'} 1278 | 1279 | strip-json-comments@3.1.1: 1280 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1281 | engines: {node: '>=8'} 1282 | 1283 | sucrase@3.35.0: 1284 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1285 | engines: {node: '>=16 || 14 >=14.17'} 1286 | hasBin: true 1287 | 1288 | supports-color@5.5.0: 1289 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1290 | engines: {node: '>=4'} 1291 | 1292 | text-extensions@2.4.0: 1293 | resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} 1294 | engines: {node: '>=8'} 1295 | 1296 | thenify-all@1.6.0: 1297 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1298 | engines: {node: '>=0.8'} 1299 | 1300 | thenify@3.3.1: 1301 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1302 | 1303 | thread-stream@0.15.2: 1304 | resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} 1305 | 1306 | through2@2.0.5: 1307 | resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} 1308 | 1309 | through@2.3.8: 1310 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} 1311 | 1312 | tinybench@2.9.0: 1313 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1314 | 1315 | tinyexec@0.3.2: 1316 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1317 | 1318 | tinyglobby@0.2.13: 1319 | resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} 1320 | engines: {node: '>=12.0.0'} 1321 | 1322 | tinypool@1.0.2: 1323 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 1324 | engines: {node: ^18.0.0 || >=20.0.0} 1325 | 1326 | tinyrainbow@2.0.0: 1327 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1328 | engines: {node: '>=14.0.0'} 1329 | 1330 | tinyspy@3.0.2: 1331 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1332 | engines: {node: '>=14.0.0'} 1333 | 1334 | to-regex-range@5.0.1: 1335 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1336 | engines: {node: '>=8.0'} 1337 | 1338 | tr46@0.0.3: 1339 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1340 | 1341 | tr46@1.0.1: 1342 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1343 | 1344 | traverse@0.6.8: 1345 | resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} 1346 | engines: {node: '>= 0.4'} 1347 | 1348 | tree-kill@1.2.2: 1349 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1350 | hasBin: true 1351 | 1352 | ts-interface-checker@0.1.13: 1353 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1354 | 1355 | tsup@8.2.4: 1356 | resolution: {integrity: sha512-akpCPePnBnC/CXgRrcy72ZSntgIEUa1jN0oJbbvpALWKNOz1B7aM+UVDWGRGIO/T/PZugAESWDJUAb5FD48o8Q==} 1357 | engines: {node: '>=18'} 1358 | hasBin: true 1359 | peerDependencies: 1360 | '@microsoft/api-extractor': ^7.36.0 1361 | '@swc/core': ^1 1362 | postcss: ^8.4.12 1363 | typescript: '>=4.5.0' 1364 | peerDependenciesMeta: 1365 | '@microsoft/api-extractor': 1366 | optional: true 1367 | '@swc/core': 1368 | optional: true 1369 | postcss: 1370 | optional: true 1371 | typescript: 1372 | optional: true 1373 | 1374 | typescript@5.5.4: 1375 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} 1376 | engines: {node: '>=14.17'} 1377 | hasBin: true 1378 | 1379 | undici-types@6.19.8: 1380 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 1381 | 1382 | undici@6.19.8: 1383 | resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} 1384 | engines: {node: '>=18.17'} 1385 | 1386 | util-deprecate@1.0.2: 1387 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1388 | 1389 | vite-node@3.1.2: 1390 | resolution: {integrity: sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==} 1391 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1392 | hasBin: true 1393 | 1394 | vite@5.4.2: 1395 | resolution: {integrity: sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==} 1396 | engines: {node: ^18.0.0 || >=20.0.0} 1397 | hasBin: true 1398 | peerDependencies: 1399 | '@types/node': ^18.0.0 || >=20.0.0 1400 | less: '*' 1401 | lightningcss: ^1.21.0 1402 | sass: '*' 1403 | sass-embedded: '*' 1404 | stylus: '*' 1405 | sugarss: '*' 1406 | terser: ^5.4.0 1407 | peerDependenciesMeta: 1408 | '@types/node': 1409 | optional: true 1410 | less: 1411 | optional: true 1412 | lightningcss: 1413 | optional: true 1414 | sass: 1415 | optional: true 1416 | sass-embedded: 1417 | optional: true 1418 | stylus: 1419 | optional: true 1420 | sugarss: 1421 | optional: true 1422 | terser: 1423 | optional: true 1424 | 1425 | vitest@3.1.2: 1426 | resolution: {integrity: sha512-WaxpJe092ID1C0mr+LH9MmNrhfzi8I65EX/NRU/Ld016KqQNRgxSOlGNP1hHN+a/F8L15Mh8klwaF77zR3GeDQ==} 1427 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1428 | hasBin: true 1429 | peerDependencies: 1430 | '@edge-runtime/vm': '*' 1431 | '@types/debug': ^4.1.12 1432 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1433 | '@vitest/browser': 3.1.2 1434 | '@vitest/ui': 3.1.2 1435 | happy-dom: '*' 1436 | jsdom: '*' 1437 | peerDependenciesMeta: 1438 | '@edge-runtime/vm': 1439 | optional: true 1440 | '@types/debug': 1441 | optional: true 1442 | '@types/node': 1443 | optional: true 1444 | '@vitest/browser': 1445 | optional: true 1446 | '@vitest/ui': 1447 | optional: true 1448 | happy-dom: 1449 | optional: true 1450 | jsdom: 1451 | optional: true 1452 | 1453 | webidl-conversions@3.0.1: 1454 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1455 | 1456 | webidl-conversions@4.0.2: 1457 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 1458 | 1459 | whatwg-url@5.0.0: 1460 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1461 | 1462 | whatwg-url@7.1.0: 1463 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 1464 | 1465 | which@2.0.2: 1466 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1467 | engines: {node: '>= 8'} 1468 | hasBin: true 1469 | 1470 | why-is-node-running@2.3.0: 1471 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1472 | engines: {node: '>=8'} 1473 | hasBin: true 1474 | 1475 | wrap-ansi@7.0.0: 1476 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1477 | engines: {node: '>=10'} 1478 | 1479 | wrap-ansi@8.1.0: 1480 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1481 | engines: {node: '>=12'} 1482 | 1483 | wrappy@1.0.2: 1484 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1485 | 1486 | ws@8.18.1: 1487 | resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} 1488 | engines: {node: '>=10.0.0'} 1489 | peerDependencies: 1490 | bufferutil: ^4.0.1 1491 | utf-8-validate: '>=5.0.2' 1492 | peerDependenciesMeta: 1493 | bufferutil: 1494 | optional: true 1495 | utf-8-validate: 1496 | optional: true 1497 | 1498 | xtend@4.0.2: 1499 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 1500 | engines: {node: '>=0.4'} 1501 | 1502 | y18n@5.0.8: 1503 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1504 | engines: {node: '>=10'} 1505 | 1506 | yargs-parser@21.1.1: 1507 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 1508 | engines: {node: '>=12'} 1509 | 1510 | yargs@17.7.2: 1511 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 1512 | engines: {node: '>=12'} 1513 | 1514 | snapshots: 1515 | 1516 | '@esbuild/aix-ppc64@0.21.5': 1517 | optional: true 1518 | 1519 | '@esbuild/aix-ppc64@0.23.1': 1520 | optional: true 1521 | 1522 | '@esbuild/android-arm64@0.21.5': 1523 | optional: true 1524 | 1525 | '@esbuild/android-arm64@0.23.1': 1526 | optional: true 1527 | 1528 | '@esbuild/android-arm@0.21.5': 1529 | optional: true 1530 | 1531 | '@esbuild/android-arm@0.23.1': 1532 | optional: true 1533 | 1534 | '@esbuild/android-x64@0.21.5': 1535 | optional: true 1536 | 1537 | '@esbuild/android-x64@0.23.1': 1538 | optional: true 1539 | 1540 | '@esbuild/darwin-arm64@0.21.5': 1541 | optional: true 1542 | 1543 | '@esbuild/darwin-arm64@0.23.1': 1544 | optional: true 1545 | 1546 | '@esbuild/darwin-x64@0.21.5': 1547 | optional: true 1548 | 1549 | '@esbuild/darwin-x64@0.23.1': 1550 | optional: true 1551 | 1552 | '@esbuild/freebsd-arm64@0.21.5': 1553 | optional: true 1554 | 1555 | '@esbuild/freebsd-arm64@0.23.1': 1556 | optional: true 1557 | 1558 | '@esbuild/freebsd-x64@0.21.5': 1559 | optional: true 1560 | 1561 | '@esbuild/freebsd-x64@0.23.1': 1562 | optional: true 1563 | 1564 | '@esbuild/linux-arm64@0.21.5': 1565 | optional: true 1566 | 1567 | '@esbuild/linux-arm64@0.23.1': 1568 | optional: true 1569 | 1570 | '@esbuild/linux-arm@0.21.5': 1571 | optional: true 1572 | 1573 | '@esbuild/linux-arm@0.23.1': 1574 | optional: true 1575 | 1576 | '@esbuild/linux-ia32@0.21.5': 1577 | optional: true 1578 | 1579 | '@esbuild/linux-ia32@0.23.1': 1580 | optional: true 1581 | 1582 | '@esbuild/linux-loong64@0.21.5': 1583 | optional: true 1584 | 1585 | '@esbuild/linux-loong64@0.23.1': 1586 | optional: true 1587 | 1588 | '@esbuild/linux-mips64el@0.21.5': 1589 | optional: true 1590 | 1591 | '@esbuild/linux-mips64el@0.23.1': 1592 | optional: true 1593 | 1594 | '@esbuild/linux-ppc64@0.21.5': 1595 | optional: true 1596 | 1597 | '@esbuild/linux-ppc64@0.23.1': 1598 | optional: true 1599 | 1600 | '@esbuild/linux-riscv64@0.21.5': 1601 | optional: true 1602 | 1603 | '@esbuild/linux-riscv64@0.23.1': 1604 | optional: true 1605 | 1606 | '@esbuild/linux-s390x@0.21.5': 1607 | optional: true 1608 | 1609 | '@esbuild/linux-s390x@0.23.1': 1610 | optional: true 1611 | 1612 | '@esbuild/linux-x64@0.21.5': 1613 | optional: true 1614 | 1615 | '@esbuild/linux-x64@0.23.1': 1616 | optional: true 1617 | 1618 | '@esbuild/netbsd-x64@0.21.5': 1619 | optional: true 1620 | 1621 | '@esbuild/netbsd-x64@0.23.1': 1622 | optional: true 1623 | 1624 | '@esbuild/openbsd-arm64@0.23.1': 1625 | optional: true 1626 | 1627 | '@esbuild/openbsd-x64@0.21.5': 1628 | optional: true 1629 | 1630 | '@esbuild/openbsd-x64@0.23.1': 1631 | optional: true 1632 | 1633 | '@esbuild/sunos-x64@0.21.5': 1634 | optional: true 1635 | 1636 | '@esbuild/sunos-x64@0.23.1': 1637 | optional: true 1638 | 1639 | '@esbuild/win32-arm64@0.21.5': 1640 | optional: true 1641 | 1642 | '@esbuild/win32-arm64@0.23.1': 1643 | optional: true 1644 | 1645 | '@esbuild/win32-ia32@0.21.5': 1646 | optional: true 1647 | 1648 | '@esbuild/win32-ia32@0.23.1': 1649 | optional: true 1650 | 1651 | '@esbuild/win32-x64@0.21.5': 1652 | optional: true 1653 | 1654 | '@esbuild/win32-x64@0.23.1': 1655 | optional: true 1656 | 1657 | '@hono/node-server@1.12.1': {} 1658 | 1659 | '@hono/node-ws@1.0.4(@hono/node-server@1.12.1)': 1660 | dependencies: 1661 | '@hono/node-server': 1.12.1 1662 | ws: 8.18.1 1663 | transitivePeerDependencies: 1664 | - bufferutil 1665 | - utf-8-validate 1666 | 1667 | '@isaacs/cliui@8.0.2': 1668 | dependencies: 1669 | string-width: 5.1.2 1670 | string-width-cjs: string-width@4.2.3 1671 | strip-ansi: 7.1.0 1672 | strip-ansi-cjs: strip-ansi@6.0.1 1673 | wrap-ansi: 8.1.0 1674 | wrap-ansi-cjs: wrap-ansi@7.0.0 1675 | 1676 | '@jridgewell/gen-mapping@0.3.5': 1677 | dependencies: 1678 | '@jridgewell/set-array': 1.2.1 1679 | '@jridgewell/sourcemap-codec': 1.5.0 1680 | '@jridgewell/trace-mapping': 0.3.25 1681 | 1682 | '@jridgewell/resolve-uri@3.1.2': {} 1683 | 1684 | '@jridgewell/set-array@1.2.1': {} 1685 | 1686 | '@jridgewell/sourcemap-codec@1.5.0': {} 1687 | 1688 | '@jridgewell/trace-mapping@0.3.25': 1689 | dependencies: 1690 | '@jridgewell/resolve-uri': 3.1.2 1691 | '@jridgewell/sourcemap-codec': 1.5.0 1692 | 1693 | '@nodelib/fs.scandir@2.1.5': 1694 | dependencies: 1695 | '@nodelib/fs.stat': 2.0.5 1696 | run-parallel: 1.2.0 1697 | 1698 | '@nodelib/fs.stat@2.0.5': {} 1699 | 1700 | '@nodelib/fs.walk@1.2.8': 1701 | dependencies: 1702 | '@nodelib/fs.scandir': 2.1.5 1703 | fastq: 1.17.1 1704 | 1705 | '@open-draft/deferred-promise@2.2.0': {} 1706 | 1707 | '@open-draft/until@2.1.0': {} 1708 | 1709 | '@ossjs/release@0.8.1': 1710 | dependencies: 1711 | '@open-draft/deferred-promise': 2.2.0 1712 | '@open-draft/until': 2.1.0 1713 | '@types/conventional-commits-parser': 3.0.6 1714 | '@types/issue-parser': 3.0.5 1715 | '@types/node': 16.18.105 1716 | '@types/node-fetch': 2.6.11 1717 | '@types/rc': 1.2.4 1718 | '@types/registry-auth-token': 4.2.4 1719 | '@types/semver': 7.5.8 1720 | '@types/yargs': 17.0.33 1721 | conventional-commits-parser: 5.0.0 1722 | get-stream: 6.0.1 1723 | git-log-parser: 1.2.1 1724 | issue-parser: 6.0.0 1725 | node-fetch: 2.6.7 1726 | outvariant: 1.4.3 1727 | pino: 7.11.0 1728 | pino-pretty: 7.6.1 1729 | rc: 1.2.8 1730 | registry-auth-token: 4.2.2 1731 | semver: 7.6.3 1732 | yargs: 17.7.2 1733 | transitivePeerDependencies: 1734 | - encoding 1735 | 1736 | '@pkgjs/parseargs@0.11.0': 1737 | optional: true 1738 | 1739 | '@rollup/rollup-android-arm-eabi@4.21.0': 1740 | optional: true 1741 | 1742 | '@rollup/rollup-android-arm64@4.21.0': 1743 | optional: true 1744 | 1745 | '@rollup/rollup-darwin-arm64@4.21.0': 1746 | optional: true 1747 | 1748 | '@rollup/rollup-darwin-x64@4.21.0': 1749 | optional: true 1750 | 1751 | '@rollup/rollup-linux-arm-gnueabihf@4.21.0': 1752 | optional: true 1753 | 1754 | '@rollup/rollup-linux-arm-musleabihf@4.21.0': 1755 | optional: true 1756 | 1757 | '@rollup/rollup-linux-arm64-gnu@4.21.0': 1758 | optional: true 1759 | 1760 | '@rollup/rollup-linux-arm64-musl@4.21.0': 1761 | optional: true 1762 | 1763 | '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': 1764 | optional: true 1765 | 1766 | '@rollup/rollup-linux-riscv64-gnu@4.21.0': 1767 | optional: true 1768 | 1769 | '@rollup/rollup-linux-s390x-gnu@4.21.0': 1770 | optional: true 1771 | 1772 | '@rollup/rollup-linux-x64-gnu@4.21.0': 1773 | optional: true 1774 | 1775 | '@rollup/rollup-linux-x64-musl@4.21.0': 1776 | optional: true 1777 | 1778 | '@rollup/rollup-win32-arm64-msvc@4.21.0': 1779 | optional: true 1780 | 1781 | '@rollup/rollup-win32-ia32-msvc@4.21.0': 1782 | optional: true 1783 | 1784 | '@rollup/rollup-win32-x64-msvc@4.21.0': 1785 | optional: true 1786 | 1787 | '@types/conventional-commits-parser@3.0.6': 1788 | dependencies: 1789 | '@types/node': 20.16.1 1790 | 1791 | '@types/estree@1.0.5': {} 1792 | 1793 | '@types/issue-parser@3.0.5': {} 1794 | 1795 | '@types/minimist@1.2.5': {} 1796 | 1797 | '@types/node-fetch@2.6.11': 1798 | dependencies: 1799 | '@types/node': 20.16.1 1800 | form-data: 4.0.0 1801 | 1802 | '@types/node@16.18.105': {} 1803 | 1804 | '@types/node@20.16.1': 1805 | dependencies: 1806 | undici-types: 6.19.8 1807 | 1808 | '@types/rc@1.2.4': 1809 | dependencies: 1810 | '@types/minimist': 1.2.5 1811 | 1812 | '@types/registry-auth-token@4.2.4': {} 1813 | 1814 | '@types/semver@7.5.8': {} 1815 | 1816 | '@types/ws@8.18.1': 1817 | dependencies: 1818 | '@types/node': 20.16.1 1819 | 1820 | '@types/yargs-parser@21.0.3': {} 1821 | 1822 | '@types/yargs@17.0.33': 1823 | dependencies: 1824 | '@types/yargs-parser': 21.0.3 1825 | 1826 | '@vitest/expect@3.1.2': 1827 | dependencies: 1828 | '@vitest/spy': 3.1.2 1829 | '@vitest/utils': 3.1.2 1830 | chai: 5.2.0 1831 | tinyrainbow: 2.0.0 1832 | 1833 | '@vitest/mocker@3.1.2(vite@5.4.2(@types/node@20.16.1))': 1834 | dependencies: 1835 | '@vitest/spy': 3.1.2 1836 | estree-walker: 3.0.3 1837 | magic-string: 0.30.17 1838 | optionalDependencies: 1839 | vite: 5.4.2(@types/node@20.16.1) 1840 | 1841 | '@vitest/pretty-format@3.1.2': 1842 | dependencies: 1843 | tinyrainbow: 2.0.0 1844 | 1845 | '@vitest/runner@3.1.2': 1846 | dependencies: 1847 | '@vitest/utils': 3.1.2 1848 | pathe: 2.0.3 1849 | 1850 | '@vitest/snapshot@3.1.2': 1851 | dependencies: 1852 | '@vitest/pretty-format': 3.1.2 1853 | magic-string: 0.30.17 1854 | pathe: 2.0.3 1855 | 1856 | '@vitest/spy@3.1.2': 1857 | dependencies: 1858 | tinyspy: 3.0.2 1859 | 1860 | '@vitest/utils@3.1.2': 1861 | dependencies: 1862 | '@vitest/pretty-format': 3.1.2 1863 | loupe: 3.1.3 1864 | tinyrainbow: 2.0.0 1865 | 1866 | JSONStream@1.3.5: 1867 | dependencies: 1868 | jsonparse: 1.3.1 1869 | through: 2.3.8 1870 | 1871 | ansi-regex@5.0.1: {} 1872 | 1873 | ansi-regex@6.0.1: {} 1874 | 1875 | ansi-styles@3.2.1: 1876 | dependencies: 1877 | color-convert: 1.9.3 1878 | 1879 | ansi-styles@4.3.0: 1880 | dependencies: 1881 | color-convert: 2.0.1 1882 | 1883 | ansi-styles@6.2.1: {} 1884 | 1885 | any-promise@1.3.0: {} 1886 | 1887 | anymatch@3.1.3: 1888 | dependencies: 1889 | normalize-path: 3.0.0 1890 | picomatch: 2.3.1 1891 | 1892 | args@5.0.3: 1893 | dependencies: 1894 | camelcase: 5.0.0 1895 | chalk: 2.4.2 1896 | leven: 2.1.0 1897 | mri: 1.1.4 1898 | 1899 | argv-formatter@1.0.0: {} 1900 | 1901 | array-union@2.1.0: {} 1902 | 1903 | assertion-error@2.0.1: {} 1904 | 1905 | asynckit@0.4.0: {} 1906 | 1907 | atomic-sleep@1.0.0: {} 1908 | 1909 | balanced-match@1.0.2: {} 1910 | 1911 | binary-extensions@2.3.0: {} 1912 | 1913 | brace-expansion@2.0.1: 1914 | dependencies: 1915 | balanced-match: 1.0.2 1916 | 1917 | braces@3.0.3: 1918 | dependencies: 1919 | fill-range: 7.1.1 1920 | 1921 | bundle-require@5.0.0(esbuild@0.23.1): 1922 | dependencies: 1923 | esbuild: 0.23.1 1924 | load-tsconfig: 0.2.5 1925 | 1926 | cac@6.7.14: {} 1927 | 1928 | camelcase@5.0.0: {} 1929 | 1930 | chai@5.2.0: 1931 | dependencies: 1932 | assertion-error: 2.0.1 1933 | check-error: 2.1.1 1934 | deep-eql: 5.0.2 1935 | loupe: 3.1.1 1936 | pathval: 2.0.0 1937 | 1938 | chalk@2.4.2: 1939 | dependencies: 1940 | ansi-styles: 3.2.1 1941 | escape-string-regexp: 1.0.5 1942 | supports-color: 5.5.0 1943 | 1944 | check-error@2.1.1: {} 1945 | 1946 | chokidar@3.6.0: 1947 | dependencies: 1948 | anymatch: 3.1.3 1949 | braces: 3.0.3 1950 | glob-parent: 5.1.2 1951 | is-binary-path: 2.1.0 1952 | is-glob: 4.0.3 1953 | normalize-path: 3.0.0 1954 | readdirp: 3.6.0 1955 | optionalDependencies: 1956 | fsevents: 2.3.3 1957 | 1958 | cliui@8.0.1: 1959 | dependencies: 1960 | string-width: 4.2.3 1961 | strip-ansi: 6.0.1 1962 | wrap-ansi: 7.0.0 1963 | 1964 | color-convert@1.9.3: 1965 | dependencies: 1966 | color-name: 1.1.3 1967 | 1968 | color-convert@2.0.1: 1969 | dependencies: 1970 | color-name: 1.1.4 1971 | 1972 | color-name@1.1.3: {} 1973 | 1974 | color-name@1.1.4: {} 1975 | 1976 | colorette@2.0.20: {} 1977 | 1978 | combined-stream@1.0.8: 1979 | dependencies: 1980 | delayed-stream: 1.0.0 1981 | 1982 | commander@4.1.1: {} 1983 | 1984 | consola@3.2.3: {} 1985 | 1986 | conventional-commits-parser@5.0.0: 1987 | dependencies: 1988 | JSONStream: 1.3.5 1989 | is-text-path: 2.0.0 1990 | meow: 12.1.1 1991 | split2: 4.2.0 1992 | 1993 | core-util-is@1.0.3: {} 1994 | 1995 | cross-spawn@7.0.3: 1996 | dependencies: 1997 | path-key: 3.1.1 1998 | shebang-command: 2.0.0 1999 | which: 2.0.2 2000 | 2001 | dateformat@4.6.3: {} 2002 | 2003 | debug@4.3.6: 2004 | dependencies: 2005 | ms: 2.1.2 2006 | 2007 | debug@4.4.0: 2008 | dependencies: 2009 | ms: 2.1.3 2010 | 2011 | deep-eql@5.0.2: {} 2012 | 2013 | deep-extend@0.6.0: {} 2014 | 2015 | delayed-stream@1.0.0: {} 2016 | 2017 | dir-glob@3.0.1: 2018 | dependencies: 2019 | path-type: 4.0.0 2020 | 2021 | duplexer2@0.1.4: 2022 | dependencies: 2023 | readable-stream: 2.3.8 2024 | 2025 | duplexify@4.1.3: 2026 | dependencies: 2027 | end-of-stream: 1.4.4 2028 | inherits: 2.0.4 2029 | readable-stream: 3.6.2 2030 | stream-shift: 1.0.3 2031 | 2032 | eastasianwidth@0.2.0: {} 2033 | 2034 | emoji-regex@8.0.0: {} 2035 | 2036 | emoji-regex@9.2.2: {} 2037 | 2038 | end-of-stream@1.4.4: 2039 | dependencies: 2040 | once: 1.4.0 2041 | 2042 | es-module-lexer@1.7.0: {} 2043 | 2044 | esbuild@0.21.5: 2045 | optionalDependencies: 2046 | '@esbuild/aix-ppc64': 0.21.5 2047 | '@esbuild/android-arm': 0.21.5 2048 | '@esbuild/android-arm64': 0.21.5 2049 | '@esbuild/android-x64': 0.21.5 2050 | '@esbuild/darwin-arm64': 0.21.5 2051 | '@esbuild/darwin-x64': 0.21.5 2052 | '@esbuild/freebsd-arm64': 0.21.5 2053 | '@esbuild/freebsd-x64': 0.21.5 2054 | '@esbuild/linux-arm': 0.21.5 2055 | '@esbuild/linux-arm64': 0.21.5 2056 | '@esbuild/linux-ia32': 0.21.5 2057 | '@esbuild/linux-loong64': 0.21.5 2058 | '@esbuild/linux-mips64el': 0.21.5 2059 | '@esbuild/linux-ppc64': 0.21.5 2060 | '@esbuild/linux-riscv64': 0.21.5 2061 | '@esbuild/linux-s390x': 0.21.5 2062 | '@esbuild/linux-x64': 0.21.5 2063 | '@esbuild/netbsd-x64': 0.21.5 2064 | '@esbuild/openbsd-x64': 0.21.5 2065 | '@esbuild/sunos-x64': 0.21.5 2066 | '@esbuild/win32-arm64': 0.21.5 2067 | '@esbuild/win32-ia32': 0.21.5 2068 | '@esbuild/win32-x64': 0.21.5 2069 | 2070 | esbuild@0.23.1: 2071 | optionalDependencies: 2072 | '@esbuild/aix-ppc64': 0.23.1 2073 | '@esbuild/android-arm': 0.23.1 2074 | '@esbuild/android-arm64': 0.23.1 2075 | '@esbuild/android-x64': 0.23.1 2076 | '@esbuild/darwin-arm64': 0.23.1 2077 | '@esbuild/darwin-x64': 0.23.1 2078 | '@esbuild/freebsd-arm64': 0.23.1 2079 | '@esbuild/freebsd-x64': 0.23.1 2080 | '@esbuild/linux-arm': 0.23.1 2081 | '@esbuild/linux-arm64': 0.23.1 2082 | '@esbuild/linux-ia32': 0.23.1 2083 | '@esbuild/linux-loong64': 0.23.1 2084 | '@esbuild/linux-mips64el': 0.23.1 2085 | '@esbuild/linux-ppc64': 0.23.1 2086 | '@esbuild/linux-riscv64': 0.23.1 2087 | '@esbuild/linux-s390x': 0.23.1 2088 | '@esbuild/linux-x64': 0.23.1 2089 | '@esbuild/netbsd-x64': 0.23.1 2090 | '@esbuild/openbsd-arm64': 0.23.1 2091 | '@esbuild/openbsd-x64': 0.23.1 2092 | '@esbuild/sunos-x64': 0.23.1 2093 | '@esbuild/win32-arm64': 0.23.1 2094 | '@esbuild/win32-ia32': 0.23.1 2095 | '@esbuild/win32-x64': 0.23.1 2096 | 2097 | escalade@3.1.2: {} 2098 | 2099 | escape-string-regexp@1.0.5: {} 2100 | 2101 | estree-walker@3.0.3: 2102 | dependencies: 2103 | '@types/estree': 1.0.5 2104 | 2105 | execa@5.1.1: 2106 | dependencies: 2107 | cross-spawn: 7.0.3 2108 | get-stream: 6.0.1 2109 | human-signals: 2.1.0 2110 | is-stream: 2.0.1 2111 | merge-stream: 2.0.0 2112 | npm-run-path: 4.0.1 2113 | onetime: 5.1.2 2114 | signal-exit: 3.0.7 2115 | strip-final-newline: 2.0.0 2116 | 2117 | expect-type@1.2.1: {} 2118 | 2119 | fast-glob@3.3.2: 2120 | dependencies: 2121 | '@nodelib/fs.stat': 2.0.5 2122 | '@nodelib/fs.walk': 1.2.8 2123 | glob-parent: 5.1.2 2124 | merge2: 1.4.1 2125 | micromatch: 4.0.7 2126 | 2127 | fast-redact@3.5.0: {} 2128 | 2129 | fast-safe-stringify@2.1.1: {} 2130 | 2131 | fastq@1.17.1: 2132 | dependencies: 2133 | reusify: 1.0.4 2134 | 2135 | fdir@6.4.4(picomatch@4.0.2): 2136 | optionalDependencies: 2137 | picomatch: 4.0.2 2138 | 2139 | fill-range@7.1.1: 2140 | dependencies: 2141 | to-regex-range: 5.0.1 2142 | 2143 | foreground-child@3.3.0: 2144 | dependencies: 2145 | cross-spawn: 7.0.3 2146 | signal-exit: 4.1.0 2147 | 2148 | form-data@4.0.0: 2149 | dependencies: 2150 | asynckit: 0.4.0 2151 | combined-stream: 1.0.8 2152 | mime-types: 2.1.35 2153 | 2154 | fsevents@2.3.3: 2155 | optional: true 2156 | 2157 | get-caller-file@2.0.5: {} 2158 | 2159 | get-func-name@2.0.2: {} 2160 | 2161 | get-stream@6.0.1: {} 2162 | 2163 | git-log-parser@1.2.1: 2164 | dependencies: 2165 | argv-formatter: 1.0.0 2166 | spawn-error-forwarder: 1.0.0 2167 | split2: 1.0.0 2168 | stream-combiner2: 1.1.1 2169 | through2: 2.0.5 2170 | traverse: 0.6.8 2171 | 2172 | glob-parent@5.1.2: 2173 | dependencies: 2174 | is-glob: 4.0.3 2175 | 2176 | glob@10.4.5: 2177 | dependencies: 2178 | foreground-child: 3.3.0 2179 | jackspeak: 3.4.3 2180 | minimatch: 9.0.5 2181 | minipass: 7.1.2 2182 | package-json-from-dist: 1.0.0 2183 | path-scurry: 1.11.1 2184 | 2185 | globby@11.1.0: 2186 | dependencies: 2187 | array-union: 2.1.0 2188 | dir-glob: 3.0.1 2189 | fast-glob: 3.3.2 2190 | ignore: 5.3.2 2191 | merge2: 1.4.1 2192 | slash: 3.0.0 2193 | 2194 | has-flag@3.0.0: {} 2195 | 2196 | hono@4.5.8: {} 2197 | 2198 | human-signals@2.1.0: {} 2199 | 2200 | ignore@5.3.2: {} 2201 | 2202 | inherits@2.0.4: {} 2203 | 2204 | ini@1.3.8: {} 2205 | 2206 | is-binary-path@2.1.0: 2207 | dependencies: 2208 | binary-extensions: 2.3.0 2209 | 2210 | is-extglob@2.1.1: {} 2211 | 2212 | is-fullwidth-code-point@3.0.0: {} 2213 | 2214 | is-glob@4.0.3: 2215 | dependencies: 2216 | is-extglob: 2.1.1 2217 | 2218 | is-number@7.0.0: {} 2219 | 2220 | is-stream@2.0.1: {} 2221 | 2222 | is-text-path@2.0.0: 2223 | dependencies: 2224 | text-extensions: 2.4.0 2225 | 2226 | isarray@1.0.0: {} 2227 | 2228 | isexe@2.0.0: {} 2229 | 2230 | issue-parser@6.0.0: 2231 | dependencies: 2232 | lodash.capitalize: 4.2.1 2233 | lodash.escaperegexp: 4.1.2 2234 | lodash.isplainobject: 4.0.6 2235 | lodash.isstring: 4.0.1 2236 | lodash.uniqby: 4.7.0 2237 | 2238 | jackspeak@3.4.3: 2239 | dependencies: 2240 | '@isaacs/cliui': 8.0.2 2241 | optionalDependencies: 2242 | '@pkgjs/parseargs': 0.11.0 2243 | 2244 | joycon@3.1.1: {} 2245 | 2246 | jsonparse@1.3.1: {} 2247 | 2248 | leven@2.1.0: {} 2249 | 2250 | lilconfig@3.1.2: {} 2251 | 2252 | lines-and-columns@1.2.4: {} 2253 | 2254 | load-tsconfig@0.2.5: {} 2255 | 2256 | lodash.capitalize@4.2.1: {} 2257 | 2258 | lodash.escaperegexp@4.1.2: {} 2259 | 2260 | lodash.isplainobject@4.0.6: {} 2261 | 2262 | lodash.isstring@4.0.1: {} 2263 | 2264 | lodash.sortby@4.7.0: {} 2265 | 2266 | lodash.uniqby@4.7.0: {} 2267 | 2268 | loupe@3.1.1: 2269 | dependencies: 2270 | get-func-name: 2.0.2 2271 | 2272 | loupe@3.1.3: {} 2273 | 2274 | lru-cache@10.4.3: {} 2275 | 2276 | magic-string@0.30.17: 2277 | dependencies: 2278 | '@jridgewell/sourcemap-codec': 1.5.0 2279 | 2280 | meow@12.1.1: {} 2281 | 2282 | merge-stream@2.0.0: {} 2283 | 2284 | merge2@1.4.1: {} 2285 | 2286 | micromatch@4.0.7: 2287 | dependencies: 2288 | braces: 3.0.3 2289 | picomatch: 2.3.1 2290 | 2291 | mime-db@1.52.0: {} 2292 | 2293 | mime-types@2.1.35: 2294 | dependencies: 2295 | mime-db: 1.52.0 2296 | 2297 | mimic-fn@2.1.0: {} 2298 | 2299 | minimatch@9.0.5: 2300 | dependencies: 2301 | brace-expansion: 2.0.1 2302 | 2303 | minimist@1.2.8: {} 2304 | 2305 | minipass@7.1.2: {} 2306 | 2307 | mri@1.1.4: {} 2308 | 2309 | ms@2.1.2: {} 2310 | 2311 | ms@2.1.3: {} 2312 | 2313 | mz@2.7.0: 2314 | dependencies: 2315 | any-promise: 1.3.0 2316 | object-assign: 4.1.1 2317 | thenify-all: 1.6.0 2318 | 2319 | nanoid@3.3.7: {} 2320 | 2321 | node-fetch@2.6.7: 2322 | dependencies: 2323 | whatwg-url: 5.0.0 2324 | 2325 | normalize-path@3.0.0: {} 2326 | 2327 | npm-run-path@4.0.1: 2328 | dependencies: 2329 | path-key: 3.1.1 2330 | 2331 | object-assign@4.1.1: {} 2332 | 2333 | on-exit-leak-free@0.2.0: {} 2334 | 2335 | once@1.4.0: 2336 | dependencies: 2337 | wrappy: 1.0.2 2338 | 2339 | onetime@5.1.2: 2340 | dependencies: 2341 | mimic-fn: 2.1.0 2342 | 2343 | outvariant@1.4.3: {} 2344 | 2345 | package-json-from-dist@1.0.0: {} 2346 | 2347 | path-key@3.1.1: {} 2348 | 2349 | path-scurry@1.11.1: 2350 | dependencies: 2351 | lru-cache: 10.4.3 2352 | minipass: 7.1.2 2353 | 2354 | path-type@4.0.0: {} 2355 | 2356 | pathe@2.0.3: {} 2357 | 2358 | pathval@2.0.0: {} 2359 | 2360 | picocolors@1.0.1: {} 2361 | 2362 | picomatch@2.3.1: {} 2363 | 2364 | picomatch@4.0.2: {} 2365 | 2366 | pino-abstract-transport@0.5.0: 2367 | dependencies: 2368 | duplexify: 4.1.3 2369 | split2: 4.2.0 2370 | 2371 | pino-pretty@7.6.1: 2372 | dependencies: 2373 | args: 5.0.3 2374 | colorette: 2.0.20 2375 | dateformat: 4.6.3 2376 | fast-safe-stringify: 2.1.1 2377 | joycon: 3.1.1 2378 | on-exit-leak-free: 0.2.0 2379 | pino-abstract-transport: 0.5.0 2380 | pump: 3.0.0 2381 | readable-stream: 3.6.2 2382 | rfdc: 1.4.1 2383 | secure-json-parse: 2.7.0 2384 | sonic-boom: 2.8.0 2385 | strip-json-comments: 3.1.1 2386 | 2387 | pino-std-serializers@4.0.0: {} 2388 | 2389 | pino@7.11.0: 2390 | dependencies: 2391 | atomic-sleep: 1.0.0 2392 | fast-redact: 3.5.0 2393 | on-exit-leak-free: 0.2.0 2394 | pino-abstract-transport: 0.5.0 2395 | pino-std-serializers: 4.0.0 2396 | process-warning: 1.0.0 2397 | quick-format-unescaped: 4.0.4 2398 | real-require: 0.1.0 2399 | safe-stable-stringify: 2.4.3 2400 | sonic-boom: 2.8.0 2401 | thread-stream: 0.15.2 2402 | 2403 | pirates@4.0.6: {} 2404 | 2405 | postcss-load-config@6.0.1(postcss@8.4.41): 2406 | dependencies: 2407 | lilconfig: 3.1.2 2408 | optionalDependencies: 2409 | postcss: 8.4.41 2410 | 2411 | postcss@8.4.41: 2412 | dependencies: 2413 | nanoid: 3.3.7 2414 | picocolors: 1.0.1 2415 | source-map-js: 1.2.0 2416 | 2417 | process-nextick-args@2.0.1: {} 2418 | 2419 | process-warning@1.0.0: {} 2420 | 2421 | pump@3.0.0: 2422 | dependencies: 2423 | end-of-stream: 1.4.4 2424 | once: 1.4.0 2425 | 2426 | punycode@2.3.1: {} 2427 | 2428 | queue-microtask@1.2.3: {} 2429 | 2430 | quick-format-unescaped@4.0.4: {} 2431 | 2432 | rc@1.2.8: 2433 | dependencies: 2434 | deep-extend: 0.6.0 2435 | ini: 1.3.8 2436 | minimist: 1.2.8 2437 | strip-json-comments: 2.0.1 2438 | 2439 | readable-stream@2.3.8: 2440 | dependencies: 2441 | core-util-is: 1.0.3 2442 | inherits: 2.0.4 2443 | isarray: 1.0.0 2444 | process-nextick-args: 2.0.1 2445 | safe-buffer: 5.1.2 2446 | string_decoder: 1.1.1 2447 | util-deprecate: 1.0.2 2448 | 2449 | readable-stream@3.6.2: 2450 | dependencies: 2451 | inherits: 2.0.4 2452 | string_decoder: 1.3.0 2453 | util-deprecate: 1.0.2 2454 | 2455 | readdirp@3.6.0: 2456 | dependencies: 2457 | picomatch: 2.3.1 2458 | 2459 | real-require@0.1.0: {} 2460 | 2461 | registry-auth-token@4.2.2: 2462 | dependencies: 2463 | rc: 1.2.8 2464 | 2465 | require-directory@2.1.1: {} 2466 | 2467 | resolve-from@5.0.0: {} 2468 | 2469 | reusify@1.0.4: {} 2470 | 2471 | rfdc@1.4.1: {} 2472 | 2473 | rollup@4.21.0: 2474 | dependencies: 2475 | '@types/estree': 1.0.5 2476 | optionalDependencies: 2477 | '@rollup/rollup-android-arm-eabi': 4.21.0 2478 | '@rollup/rollup-android-arm64': 4.21.0 2479 | '@rollup/rollup-darwin-arm64': 4.21.0 2480 | '@rollup/rollup-darwin-x64': 4.21.0 2481 | '@rollup/rollup-linux-arm-gnueabihf': 4.21.0 2482 | '@rollup/rollup-linux-arm-musleabihf': 4.21.0 2483 | '@rollup/rollup-linux-arm64-gnu': 4.21.0 2484 | '@rollup/rollup-linux-arm64-musl': 4.21.0 2485 | '@rollup/rollup-linux-powerpc64le-gnu': 4.21.0 2486 | '@rollup/rollup-linux-riscv64-gnu': 4.21.0 2487 | '@rollup/rollup-linux-s390x-gnu': 4.21.0 2488 | '@rollup/rollup-linux-x64-gnu': 4.21.0 2489 | '@rollup/rollup-linux-x64-musl': 4.21.0 2490 | '@rollup/rollup-win32-arm64-msvc': 4.21.0 2491 | '@rollup/rollup-win32-ia32-msvc': 4.21.0 2492 | '@rollup/rollup-win32-x64-msvc': 4.21.0 2493 | fsevents: 2.3.3 2494 | 2495 | run-parallel@1.2.0: 2496 | dependencies: 2497 | queue-microtask: 1.2.3 2498 | 2499 | safe-buffer@5.1.2: {} 2500 | 2501 | safe-buffer@5.2.1: {} 2502 | 2503 | safe-stable-stringify@2.4.3: {} 2504 | 2505 | secure-json-parse@2.7.0: {} 2506 | 2507 | semver@7.6.3: {} 2508 | 2509 | shebang-command@2.0.0: 2510 | dependencies: 2511 | shebang-regex: 3.0.0 2512 | 2513 | shebang-regex@3.0.0: {} 2514 | 2515 | siginfo@2.0.0: {} 2516 | 2517 | signal-exit@3.0.7: {} 2518 | 2519 | signal-exit@4.1.0: {} 2520 | 2521 | slash@3.0.0: {} 2522 | 2523 | sonic-boom@2.8.0: 2524 | dependencies: 2525 | atomic-sleep: 1.0.0 2526 | 2527 | source-map-js@1.2.0: {} 2528 | 2529 | source-map@0.8.0-beta.0: 2530 | dependencies: 2531 | whatwg-url: 7.1.0 2532 | 2533 | spawn-error-forwarder@1.0.0: {} 2534 | 2535 | split2@1.0.0: 2536 | dependencies: 2537 | through2: 2.0.5 2538 | 2539 | split2@4.2.0: {} 2540 | 2541 | stackback@0.0.2: {} 2542 | 2543 | std-env@3.9.0: {} 2544 | 2545 | stream-combiner2@1.1.1: 2546 | dependencies: 2547 | duplexer2: 0.1.4 2548 | readable-stream: 2.3.8 2549 | 2550 | stream-shift@1.0.3: {} 2551 | 2552 | string-width@4.2.3: 2553 | dependencies: 2554 | emoji-regex: 8.0.0 2555 | is-fullwidth-code-point: 3.0.0 2556 | strip-ansi: 6.0.1 2557 | 2558 | string-width@5.1.2: 2559 | dependencies: 2560 | eastasianwidth: 0.2.0 2561 | emoji-regex: 9.2.2 2562 | strip-ansi: 7.1.0 2563 | 2564 | string_decoder@1.1.1: 2565 | dependencies: 2566 | safe-buffer: 5.1.2 2567 | 2568 | string_decoder@1.3.0: 2569 | dependencies: 2570 | safe-buffer: 5.2.1 2571 | 2572 | strip-ansi@6.0.1: 2573 | dependencies: 2574 | ansi-regex: 5.0.1 2575 | 2576 | strip-ansi@7.1.0: 2577 | dependencies: 2578 | ansi-regex: 6.0.1 2579 | 2580 | strip-final-newline@2.0.0: {} 2581 | 2582 | strip-json-comments@2.0.1: {} 2583 | 2584 | strip-json-comments@3.1.1: {} 2585 | 2586 | sucrase@3.35.0: 2587 | dependencies: 2588 | '@jridgewell/gen-mapping': 0.3.5 2589 | commander: 4.1.1 2590 | glob: 10.4.5 2591 | lines-and-columns: 1.2.4 2592 | mz: 2.7.0 2593 | pirates: 4.0.6 2594 | ts-interface-checker: 0.1.13 2595 | 2596 | supports-color@5.5.0: 2597 | dependencies: 2598 | has-flag: 3.0.0 2599 | 2600 | text-extensions@2.4.0: {} 2601 | 2602 | thenify-all@1.6.0: 2603 | dependencies: 2604 | thenify: 3.3.1 2605 | 2606 | thenify@3.3.1: 2607 | dependencies: 2608 | any-promise: 1.3.0 2609 | 2610 | thread-stream@0.15.2: 2611 | dependencies: 2612 | real-require: 0.1.0 2613 | 2614 | through2@2.0.5: 2615 | dependencies: 2616 | readable-stream: 2.3.8 2617 | xtend: 4.0.2 2618 | 2619 | through@2.3.8: {} 2620 | 2621 | tinybench@2.9.0: {} 2622 | 2623 | tinyexec@0.3.2: {} 2624 | 2625 | tinyglobby@0.2.13: 2626 | dependencies: 2627 | fdir: 6.4.4(picomatch@4.0.2) 2628 | picomatch: 4.0.2 2629 | 2630 | tinypool@1.0.2: {} 2631 | 2632 | tinyrainbow@2.0.0: {} 2633 | 2634 | tinyspy@3.0.2: {} 2635 | 2636 | to-regex-range@5.0.1: 2637 | dependencies: 2638 | is-number: 7.0.0 2639 | 2640 | tr46@0.0.3: {} 2641 | 2642 | tr46@1.0.1: 2643 | dependencies: 2644 | punycode: 2.3.1 2645 | 2646 | traverse@0.6.8: {} 2647 | 2648 | tree-kill@1.2.2: {} 2649 | 2650 | ts-interface-checker@0.1.13: {} 2651 | 2652 | tsup@8.2.4(postcss@8.4.41)(typescript@5.5.4): 2653 | dependencies: 2654 | bundle-require: 5.0.0(esbuild@0.23.1) 2655 | cac: 6.7.14 2656 | chokidar: 3.6.0 2657 | consola: 3.2.3 2658 | debug: 4.3.6 2659 | esbuild: 0.23.1 2660 | execa: 5.1.1 2661 | globby: 11.1.0 2662 | joycon: 3.1.1 2663 | picocolors: 1.0.1 2664 | postcss-load-config: 6.0.1(postcss@8.4.41) 2665 | resolve-from: 5.0.0 2666 | rollup: 4.21.0 2667 | source-map: 0.8.0-beta.0 2668 | sucrase: 3.35.0 2669 | tree-kill: 1.2.2 2670 | optionalDependencies: 2671 | postcss: 8.4.41 2672 | typescript: 5.5.4 2673 | transitivePeerDependencies: 2674 | - jiti 2675 | - supports-color 2676 | - tsx 2677 | - yaml 2678 | 2679 | typescript@5.5.4: {} 2680 | 2681 | undici-types@6.19.8: {} 2682 | 2683 | undici@6.19.8: {} 2684 | 2685 | util-deprecate@1.0.2: {} 2686 | 2687 | vite-node@3.1.2(@types/node@20.16.1): 2688 | dependencies: 2689 | cac: 6.7.14 2690 | debug: 4.4.0 2691 | es-module-lexer: 1.7.0 2692 | pathe: 2.0.3 2693 | vite: 5.4.2(@types/node@20.16.1) 2694 | transitivePeerDependencies: 2695 | - '@types/node' 2696 | - less 2697 | - lightningcss 2698 | - sass 2699 | - sass-embedded 2700 | - stylus 2701 | - sugarss 2702 | - supports-color 2703 | - terser 2704 | 2705 | vite@5.4.2(@types/node@20.16.1): 2706 | dependencies: 2707 | esbuild: 0.21.5 2708 | postcss: 8.4.41 2709 | rollup: 4.21.0 2710 | optionalDependencies: 2711 | '@types/node': 20.16.1 2712 | fsevents: 2.3.3 2713 | 2714 | vitest@3.1.2(@types/node@20.16.1): 2715 | dependencies: 2716 | '@vitest/expect': 3.1.2 2717 | '@vitest/mocker': 3.1.2(vite@5.4.2(@types/node@20.16.1)) 2718 | '@vitest/pretty-format': 3.1.2 2719 | '@vitest/runner': 3.1.2 2720 | '@vitest/snapshot': 3.1.2 2721 | '@vitest/spy': 3.1.2 2722 | '@vitest/utils': 3.1.2 2723 | chai: 5.2.0 2724 | debug: 4.4.0 2725 | expect-type: 1.2.1 2726 | magic-string: 0.30.17 2727 | pathe: 2.0.3 2728 | std-env: 3.9.0 2729 | tinybench: 2.9.0 2730 | tinyexec: 0.3.2 2731 | tinyglobby: 0.2.13 2732 | tinypool: 1.0.2 2733 | tinyrainbow: 2.0.0 2734 | vite: 5.4.2(@types/node@20.16.1) 2735 | vite-node: 3.1.2(@types/node@20.16.1) 2736 | why-is-node-running: 2.3.0 2737 | optionalDependencies: 2738 | '@types/node': 20.16.1 2739 | transitivePeerDependencies: 2740 | - less 2741 | - lightningcss 2742 | - msw 2743 | - sass 2744 | - sass-embedded 2745 | - stylus 2746 | - sugarss 2747 | - supports-color 2748 | - terser 2749 | 2750 | webidl-conversions@3.0.1: {} 2751 | 2752 | webidl-conversions@4.0.2: {} 2753 | 2754 | whatwg-url@5.0.0: 2755 | dependencies: 2756 | tr46: 0.0.3 2757 | webidl-conversions: 3.0.1 2758 | 2759 | whatwg-url@7.1.0: 2760 | dependencies: 2761 | lodash.sortby: 4.7.0 2762 | tr46: 1.0.1 2763 | webidl-conversions: 4.0.2 2764 | 2765 | which@2.0.2: 2766 | dependencies: 2767 | isexe: 2.0.0 2768 | 2769 | why-is-node-running@2.3.0: 2770 | dependencies: 2771 | siginfo: 2.0.0 2772 | stackback: 0.0.2 2773 | 2774 | wrap-ansi@7.0.0: 2775 | dependencies: 2776 | ansi-styles: 4.3.0 2777 | string-width: 4.2.3 2778 | strip-ansi: 6.0.1 2779 | 2780 | wrap-ansi@8.1.0: 2781 | dependencies: 2782 | ansi-styles: 6.2.1 2783 | string-width: 5.1.2 2784 | strip-ansi: 7.1.0 2785 | 2786 | wrappy@1.0.2: {} 2787 | 2788 | ws@8.18.1: {} 2789 | 2790 | xtend@4.0.2: {} 2791 | 2792 | y18n@5.0.8: {} 2793 | 2794 | yargs-parser@21.1.1: {} 2795 | 2796 | yargs@17.7.2: 2797 | dependencies: 2798 | cliui: 8.0.1 2799 | escalade: 3.1.2 2800 | get-caller-file: 2.0.5 2801 | require-directory: 2.1.1 2802 | string-width: 4.2.3 2803 | y18n: 5.0.8 2804 | yargs-parser: 21.1.1 2805 | --------------------------------------------------------------------------------