├── .github └── workflows │ └── main.yml ├── .gitignore ├── .release-it.json ├── LICENSE.md ├── README.md ├── docs └── preview.png ├── eslint.config.mjs ├── jest.config.json ├── package.json ├── pnpm-lock.yaml ├── prettier.config.mjs ├── src ├── bin │ └── cli.ts ├── config │ ├── index.ts │ └── static.ts ├── index.ts ├── prettifier.ts └── utils │ ├── color.ts │ ├── error.ts │ ├── format.ts │ └── index.ts ├── test ├── fixtures │ ├── fastify.ts │ ├── index.ts │ ├── target.mjs │ └── target.ts └── spec │ ├── index.test.ts │ ├── pino.spec.ts │ └── plugin.spec.ts ├── tsconfig.json └── vitest.config.ts /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: main 2 | 3 | on: 4 | push: 5 | branches: [master] 6 | pull_request: 7 | branches: [master] 8 | workflow_dispatch: 9 | 10 | jobs: 11 | test: 12 | runs-on: ubuntu-latest 13 | strategy: 14 | matrix: 15 | node: ["lts/-1", "lts/*"] 16 | name: Test on node@v${{ matrix.node }} 17 | steps: 18 | - name: Checkout 🛎️ 19 | uses: actions/checkout@v4 20 | - name: Setup pnpm 🔧 21 | uses: pnpm/action-setup@v3 22 | with: 23 | version: 9 24 | - name: Setup node 🔧 25 | uses: actions/setup-node@v4 26 | with: 27 | node-version: ${{ matrix.node }} 28 | check-latest: true 29 | cache: "pnpm" 30 | - name: Install 🪄 31 | run: pnpm install --frozen-lockfile 32 | - name: Lint 🔍 33 | run: pnpm run lint 34 | - name: Prettier 🔍 35 | run: pnpm run prettycheck 36 | - name: TypeScript 🔍 37 | run: pnpm run typecheck 38 | - name: Vitest 🔍 39 | run: pnpm run spec 40 | build: 41 | runs-on: ubuntu-latest 42 | strategy: 43 | matrix: 44 | node: ["lts/-1", "lts/*"] 45 | name: Build on node@v${{ matrix.node }} 46 | steps: 47 | - name: Checkout 🛎️ 48 | uses: actions/checkout@v4 49 | - name: Setup pnpm 🔧 50 | uses: pnpm/action-setup@v3 51 | with: 52 | version: 9 53 | - name: Setup node 🔧 54 | uses: actions/setup-node@v4 55 | with: 56 | node-version: ${{ matrix.node }} 57 | check-latest: true 58 | cache: "pnpm" 59 | - name: Install 🪄 60 | run: pnpm install --frozen-lockfile 61 | - name: Build 💎 62 | run: pnpm run build 63 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | dist/ 3 | lib/ 4 | node_modules/ 5 | .vscode/ 6 | .idea/ 7 | *.tsbuildinfo 8 | -------------------------------------------------------------------------------- /.release-it.json: -------------------------------------------------------------------------------- 1 | { 2 | "git": { 3 | "commitMessage": "chore(release): cut the v${version} release" 4 | }, 5 | "github": { 6 | "release": true 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2020 Olivier Louvignes 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 6 | documentation files (the "Software"), to deal in the Software without restriction, including without limitation the 7 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit 8 | persons to whom the Software is furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the 11 | Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 14 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 15 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 16 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PinoPrettyCompact 2 | 3 | 4 |

5 | 6 | npm version 7 | 8 | 9 | npm total downloads 10 | 11 | 12 | npm monthly downloads 13 | 14 | 15 | npm license 16 | 17 |
18 | 19 | build status 20 | 21 | 22 | dependencies status 23 | 24 |

25 | 26 | 27 | ## Features 28 | 29 | Compact pino-based prettifier for [fastify](https://github.com/fastify/fastify). 30 | 31 | - Relies on [kolorist](https://github.com/marvinhagemeister/kolorist) for the coloring. 32 | 33 | - Usually used along [@mgcrea/fastify-request-logger](https://github.com/mgcrea/fastify-request-logger) to log requests. 34 | 35 | - Built with [TypeScript](https://www.typescriptlang.org/) for static type checking with exported types along the 36 | library. 37 | 38 | ## Preview 39 | 40 |

41 | Preview 42 |

43 | 44 | ## Usage 45 | 46 | ```bash 47 | npm install @mgcrea/pino-pretty-compact @mgcrea/fastify-request-logger --save 48 | # or 49 | pnpm add @mgcrea/pino-pretty-compact @mgcrea/fastify-request-logger 50 | ``` 51 | 52 | ```ts 53 | import createFastify, { FastifyInstance, FastifyServerOptions } from "fastify"; 54 | import fastifyRequestLogger from "@mgcrea/fastify-request-logger"; 55 | import prettifier from "@mgcrea/pino-pretty-compact"; 56 | 57 | export const buildFastify = (options: FastifyServerOptions = {}): FastifyInstance => { 58 | const fastify = createFastify({ 59 | logger: { 60 | level: "debug", 61 | transport: { 62 | target: "@mgcrea/pino-pretty-compact", 63 | options: { 64 | translateTime: "HH:MM:ss Z", 65 | ignore: "pid,hostname", 66 | }, 67 | }, 68 | }, 69 | ...options, 70 | }); 71 | 72 | fastify.register(fastifyRequestLogger); 73 | 74 | return fastify; 75 | }; 76 | ``` 77 | 78 | ### Options 79 | 80 | You can use any [PinoPrettyOptions](https://github.com/pinojs/pino-pretty/blob/v9.1.1/index.d.ts#L38) 81 | 82 | ## Authors 83 | 84 | - [Olivier Louvignes](https://github.com/mgcrea) <> 85 | 86 | ### Credits 87 | 88 | Heavily inspired from 89 | 90 | - [pino-pretty](https://github.com/pinojs/pino-pretty) by [Matteo Collina](https://github.com/mcollina) 91 | 92 | ## License 93 | 94 | ```txt 95 | The MIT License 96 | 97 | Copyright (c) 2020 Olivier Louvignes 98 | 99 | Permission is hereby granted, free of charge, to any person obtaining a copy 100 | of this software and associated documentation files (the "Software"), to deal 101 | in the Software without restriction, including without limitation the rights 102 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 103 | copies of the Software, and to permit persons to whom the Software is 104 | furnished to do so, subject to the following conditions: 105 | 106 | The above copyright notice and this permission notice shall be included in 107 | all copies or substantial portions of the Software. 108 | 109 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 110 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 111 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 112 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 113 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 114 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 115 | THE SOFTWARE. 116 | ``` 117 | -------------------------------------------------------------------------------- /docs/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mgcrea/pino-pretty-compact/9c60783f58d79fa447a213410fae5af2da81233f/docs/preview.png -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import baseConfig from "@mgcrea/eslint-config-node"; 3 | 4 | /** 5 | * Eslint configuration 6 | * @see https://jestjs.io/docs/configuration 7 | * @type {import('eslint').Linter.Config[]} 8 | */ 9 | export default [ 10 | ...baseConfig, 11 | { 12 | rules: { 13 | "no-console": "warn", 14 | }, 15 | }, 16 | { 17 | languageOptions: { 18 | parserOptions: { 19 | project: ["./tsconfig.json"], 20 | }, 21 | }, 22 | }, 23 | ]; 24 | -------------------------------------------------------------------------------- /jest.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "preset": "ts-jest", 3 | "testEnvironment": "node", 4 | "setupFiles": ["/test/setup.ts"], 5 | "moduleNameMapper": { 6 | "^src/(.*)$": "/src/$1", 7 | "^test/(.*)$": "/test/$1" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@mgcrea/pino-pretty-compact", 3 | "version": "1.4.2", 4 | "description": "Compact request logger plugin for fastify written in TypeScript", 5 | "author": "Olivier Louvignes ", 6 | "repository": "github:mgcrea/pino-pretty-compact", 7 | "license": "MIT", 8 | "access": "public", 9 | "type": "module", 10 | "exports": { 11 | ".": { 12 | "types": "./dist/index.d.ts", 13 | "require": "./dist/index.cjs", 14 | "import": "./dist/index.js" 15 | } 16 | }, 17 | "main": "./dist/index.cjs", 18 | "module": "./dist/index.js", 19 | "types": "./dist/index.d.ts", 20 | "files": [ 21 | "dist" 22 | ], 23 | "bin": { 24 | "pino-pretty-compact": "./dist/bin/cli.js" 25 | }, 26 | "scripts": { 27 | "start": "npm run spec -- --watch", 28 | "build": "tsup --entry src/index.ts --format cjs,esm --no-splitting --sourcemap --dts --clean --entry src/bin/cli.ts", 29 | "lint": "eslint src/ test/ --ignore-pattern test/fixtures/target.mjs", 30 | "prettycheck": "prettier --check src/ test/", 31 | "prettify": "prettier --write src/ test/", 32 | "typecheck": "tsc --noEmit", 33 | "spec": "vitest --run", 34 | "test": "npm run lint && npm run prettycheck && npm run typecheck && npm run spec", 35 | "prepublishOnly": "npm run build" 36 | }, 37 | "keywords": [ 38 | "pino", 39 | "pretty", 40 | "compact", 41 | "fastify", 42 | "logger" 43 | ], 44 | "devDependencies": { 45 | "@mgcrea/eslint-config-node": "^0.12.16", 46 | "@mgcrea/fastify-request-logger": "^1.8.0", 47 | "@tsconfig/esm": "^1.0.5", 48 | "@tsconfig/node-lts": "^22.0.0", 49 | "@tsconfig/strictest": "^2.0.5", 50 | "@types/http-errors": "^2.0.4", 51 | "@types/node": "^22.9.0", 52 | "eslint": "^9.14.0", 53 | "fastify": "^5.1.0", 54 | "http-errors": "^2.0.0", 55 | "pino": "^9.5.0", 56 | "pino-std-serializers": "^7.0.0", 57 | "prettier": "^3.3.3", 58 | "prettier-plugin-organize-imports": "^4.1.0", 59 | "tsup": "^8.3.5", 60 | "typescript": "^5.6.3", 61 | "vite-tsconfig-paths": "^5.1.2", 62 | "vitest": "^2.1.4" 63 | }, 64 | "dependencies": { 65 | "kolorist": "^1.8.0", 66 | "pino-pretty": "^13.0.0" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | kolorist: 12 | specifier: ^1.8.0 13 | version: 1.8.0 14 | pino-pretty: 15 | specifier: ^13.0.0 16 | version: 13.0.0 17 | devDependencies: 18 | '@mgcrea/eslint-config-node': 19 | specifier: ^0.12.16 20 | version: 0.12.16(@typescript-eslint/utils@8.14.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(prettier@3.3.3)(typescript@5.6.3)(vitest@2.1.4(@types/node@22.9.0)) 21 | '@mgcrea/fastify-request-logger': 22 | specifier: ^1.8.0 23 | version: 1.8.0 24 | '@tsconfig/esm': 25 | specifier: ^1.0.5 26 | version: 1.0.5 27 | '@tsconfig/node-lts': 28 | specifier: ^22.0.0 29 | version: 22.0.0 30 | '@tsconfig/strictest': 31 | specifier: ^2.0.5 32 | version: 2.0.5 33 | '@types/http-errors': 34 | specifier: ^2.0.4 35 | version: 2.0.4 36 | '@types/node': 37 | specifier: ^22.9.0 38 | version: 22.9.0 39 | eslint: 40 | specifier: ^9.14.0 41 | version: 9.14.0 42 | fastify: 43 | specifier: ^5.1.0 44 | version: 5.1.0 45 | http-errors: 46 | specifier: ^2.0.0 47 | version: 2.0.0 48 | pino: 49 | specifier: ^9.5.0 50 | version: 9.5.0 51 | pino-std-serializers: 52 | specifier: ^7.0.0 53 | version: 7.0.0 54 | prettier: 55 | specifier: ^3.3.3 56 | version: 3.3.3 57 | prettier-plugin-organize-imports: 58 | specifier: ^4.1.0 59 | version: 4.1.0(prettier@3.3.3)(typescript@5.6.3) 60 | tsup: 61 | specifier: ^8.3.5 62 | version: 8.3.5(postcss@8.4.49)(typescript@5.6.3) 63 | typescript: 64 | specifier: ^5.6.3 65 | version: 5.6.3 66 | vite-tsconfig-paths: 67 | specifier: ^5.1.2 68 | version: 5.1.2(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)) 69 | vitest: 70 | specifier: ^2.1.4 71 | version: 2.1.4(@types/node@22.9.0) 72 | 73 | packages: 74 | 75 | '@esbuild/aix-ppc64@0.21.5': 76 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 77 | engines: {node: '>=12'} 78 | cpu: [ppc64] 79 | os: [aix] 80 | 81 | '@esbuild/aix-ppc64@0.24.0': 82 | resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} 83 | engines: {node: '>=18'} 84 | cpu: [ppc64] 85 | os: [aix] 86 | 87 | '@esbuild/android-arm64@0.21.5': 88 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 89 | engines: {node: '>=12'} 90 | cpu: [arm64] 91 | os: [android] 92 | 93 | '@esbuild/android-arm64@0.24.0': 94 | resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} 95 | engines: {node: '>=18'} 96 | cpu: [arm64] 97 | os: [android] 98 | 99 | '@esbuild/android-arm@0.21.5': 100 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 101 | engines: {node: '>=12'} 102 | cpu: [arm] 103 | os: [android] 104 | 105 | '@esbuild/android-arm@0.24.0': 106 | resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} 107 | engines: {node: '>=18'} 108 | cpu: [arm] 109 | os: [android] 110 | 111 | '@esbuild/android-x64@0.21.5': 112 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 113 | engines: {node: '>=12'} 114 | cpu: [x64] 115 | os: [android] 116 | 117 | '@esbuild/android-x64@0.24.0': 118 | resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} 119 | engines: {node: '>=18'} 120 | cpu: [x64] 121 | os: [android] 122 | 123 | '@esbuild/darwin-arm64@0.21.5': 124 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 125 | engines: {node: '>=12'} 126 | cpu: [arm64] 127 | os: [darwin] 128 | 129 | '@esbuild/darwin-arm64@0.24.0': 130 | resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} 131 | engines: {node: '>=18'} 132 | cpu: [arm64] 133 | os: [darwin] 134 | 135 | '@esbuild/darwin-x64@0.21.5': 136 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 137 | engines: {node: '>=12'} 138 | cpu: [x64] 139 | os: [darwin] 140 | 141 | '@esbuild/darwin-x64@0.24.0': 142 | resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} 143 | engines: {node: '>=18'} 144 | cpu: [x64] 145 | os: [darwin] 146 | 147 | '@esbuild/freebsd-arm64@0.21.5': 148 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 149 | engines: {node: '>=12'} 150 | cpu: [arm64] 151 | os: [freebsd] 152 | 153 | '@esbuild/freebsd-arm64@0.24.0': 154 | resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} 155 | engines: {node: '>=18'} 156 | cpu: [arm64] 157 | os: [freebsd] 158 | 159 | '@esbuild/freebsd-x64@0.21.5': 160 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 161 | engines: {node: '>=12'} 162 | cpu: [x64] 163 | os: [freebsd] 164 | 165 | '@esbuild/freebsd-x64@0.24.0': 166 | resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} 167 | engines: {node: '>=18'} 168 | cpu: [x64] 169 | os: [freebsd] 170 | 171 | '@esbuild/linux-arm64@0.21.5': 172 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 173 | engines: {node: '>=12'} 174 | cpu: [arm64] 175 | os: [linux] 176 | 177 | '@esbuild/linux-arm64@0.24.0': 178 | resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} 179 | engines: {node: '>=18'} 180 | cpu: [arm64] 181 | os: [linux] 182 | 183 | '@esbuild/linux-arm@0.21.5': 184 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 185 | engines: {node: '>=12'} 186 | cpu: [arm] 187 | os: [linux] 188 | 189 | '@esbuild/linux-arm@0.24.0': 190 | resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} 191 | engines: {node: '>=18'} 192 | cpu: [arm] 193 | os: [linux] 194 | 195 | '@esbuild/linux-ia32@0.21.5': 196 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 197 | engines: {node: '>=12'} 198 | cpu: [ia32] 199 | os: [linux] 200 | 201 | '@esbuild/linux-ia32@0.24.0': 202 | resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} 203 | engines: {node: '>=18'} 204 | cpu: [ia32] 205 | os: [linux] 206 | 207 | '@esbuild/linux-loong64@0.21.5': 208 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 209 | engines: {node: '>=12'} 210 | cpu: [loong64] 211 | os: [linux] 212 | 213 | '@esbuild/linux-loong64@0.24.0': 214 | resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} 215 | engines: {node: '>=18'} 216 | cpu: [loong64] 217 | os: [linux] 218 | 219 | '@esbuild/linux-mips64el@0.21.5': 220 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 221 | engines: {node: '>=12'} 222 | cpu: [mips64el] 223 | os: [linux] 224 | 225 | '@esbuild/linux-mips64el@0.24.0': 226 | resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} 227 | engines: {node: '>=18'} 228 | cpu: [mips64el] 229 | os: [linux] 230 | 231 | '@esbuild/linux-ppc64@0.21.5': 232 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 233 | engines: {node: '>=12'} 234 | cpu: [ppc64] 235 | os: [linux] 236 | 237 | '@esbuild/linux-ppc64@0.24.0': 238 | resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} 239 | engines: {node: '>=18'} 240 | cpu: [ppc64] 241 | os: [linux] 242 | 243 | '@esbuild/linux-riscv64@0.21.5': 244 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 245 | engines: {node: '>=12'} 246 | cpu: [riscv64] 247 | os: [linux] 248 | 249 | '@esbuild/linux-riscv64@0.24.0': 250 | resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} 251 | engines: {node: '>=18'} 252 | cpu: [riscv64] 253 | os: [linux] 254 | 255 | '@esbuild/linux-s390x@0.21.5': 256 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 257 | engines: {node: '>=12'} 258 | cpu: [s390x] 259 | os: [linux] 260 | 261 | '@esbuild/linux-s390x@0.24.0': 262 | resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} 263 | engines: {node: '>=18'} 264 | cpu: [s390x] 265 | os: [linux] 266 | 267 | '@esbuild/linux-x64@0.21.5': 268 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 269 | engines: {node: '>=12'} 270 | cpu: [x64] 271 | os: [linux] 272 | 273 | '@esbuild/linux-x64@0.24.0': 274 | resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} 275 | engines: {node: '>=18'} 276 | cpu: [x64] 277 | os: [linux] 278 | 279 | '@esbuild/netbsd-x64@0.21.5': 280 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 281 | engines: {node: '>=12'} 282 | cpu: [x64] 283 | os: [netbsd] 284 | 285 | '@esbuild/netbsd-x64@0.24.0': 286 | resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} 287 | engines: {node: '>=18'} 288 | cpu: [x64] 289 | os: [netbsd] 290 | 291 | '@esbuild/openbsd-arm64@0.24.0': 292 | resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} 293 | engines: {node: '>=18'} 294 | cpu: [arm64] 295 | os: [openbsd] 296 | 297 | '@esbuild/openbsd-x64@0.21.5': 298 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 299 | engines: {node: '>=12'} 300 | cpu: [x64] 301 | os: [openbsd] 302 | 303 | '@esbuild/openbsd-x64@0.24.0': 304 | resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} 305 | engines: {node: '>=18'} 306 | cpu: [x64] 307 | os: [openbsd] 308 | 309 | '@esbuild/sunos-x64@0.21.5': 310 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 311 | engines: {node: '>=12'} 312 | cpu: [x64] 313 | os: [sunos] 314 | 315 | '@esbuild/sunos-x64@0.24.0': 316 | resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} 317 | engines: {node: '>=18'} 318 | cpu: [x64] 319 | os: [sunos] 320 | 321 | '@esbuild/win32-arm64@0.21.5': 322 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 323 | engines: {node: '>=12'} 324 | cpu: [arm64] 325 | os: [win32] 326 | 327 | '@esbuild/win32-arm64@0.24.0': 328 | resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} 329 | engines: {node: '>=18'} 330 | cpu: [arm64] 331 | os: [win32] 332 | 333 | '@esbuild/win32-ia32@0.21.5': 334 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 335 | engines: {node: '>=12'} 336 | cpu: [ia32] 337 | os: [win32] 338 | 339 | '@esbuild/win32-ia32@0.24.0': 340 | resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} 341 | engines: {node: '>=18'} 342 | cpu: [ia32] 343 | os: [win32] 344 | 345 | '@esbuild/win32-x64@0.21.5': 346 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 347 | engines: {node: '>=12'} 348 | cpu: [x64] 349 | os: [win32] 350 | 351 | '@esbuild/win32-x64@0.24.0': 352 | resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} 353 | engines: {node: '>=18'} 354 | cpu: [x64] 355 | os: [win32] 356 | 357 | '@eslint-community/eslint-utils@4.4.0': 358 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 359 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 360 | peerDependencies: 361 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 362 | 363 | '@eslint-community/regexpp@4.12.1': 364 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 365 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 366 | 367 | '@eslint/config-array@0.18.0': 368 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 369 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 370 | 371 | '@eslint/core@0.7.0': 372 | resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} 373 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 374 | 375 | '@eslint/eslintrc@3.1.0': 376 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 377 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 378 | 379 | '@eslint/js@9.14.0': 380 | resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==} 381 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 382 | 383 | '@eslint/object-schema@2.1.4': 384 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 385 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 386 | 387 | '@eslint/plugin-kit@0.2.2': 388 | resolution: {integrity: sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==} 389 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 390 | 391 | '@fastify/ajv-compiler@4.0.1': 392 | resolution: {integrity: sha512-DxrBdgsjNLP0YM6W5Hd6/Fmj43S8zMKiFJYgi+Ri3htTGAowPVG/tG1wpnWLMjufEnehRivUCKZ1pLDIoZdTuw==} 393 | 394 | '@fastify/error@4.0.0': 395 | resolution: {integrity: sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==} 396 | 397 | '@fastify/fast-json-stringify-compiler@5.0.1': 398 | resolution: {integrity: sha512-f2d3JExJgFE3UbdFcpPwqNUEoHWmt8pAKf8f+9YuLESdefA0WgqxeT6DrGL4Yrf/9ihXNSKOqpjEmurV405meA==} 399 | 400 | '@fastify/merge-json-schemas@0.1.1': 401 | resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==} 402 | 403 | '@humanfs/core@0.19.1': 404 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 405 | engines: {node: '>=18.18.0'} 406 | 407 | '@humanfs/node@0.16.6': 408 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 409 | engines: {node: '>=18.18.0'} 410 | 411 | '@humanwhocodes/module-importer@1.0.1': 412 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 413 | engines: {node: '>=12.22'} 414 | 415 | '@humanwhocodes/retry@0.3.1': 416 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 417 | engines: {node: '>=18.18'} 418 | 419 | '@humanwhocodes/retry@0.4.1': 420 | resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} 421 | engines: {node: '>=18.18'} 422 | 423 | '@isaacs/cliui@8.0.2': 424 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 425 | engines: {node: '>=12'} 426 | 427 | '@jridgewell/gen-mapping@0.3.3': 428 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 429 | engines: {node: '>=6.0.0'} 430 | 431 | '@jridgewell/resolve-uri@3.1.0': 432 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 433 | engines: {node: '>=6.0.0'} 434 | 435 | '@jridgewell/set-array@1.1.2': 436 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 437 | engines: {node: '>=6.0.0'} 438 | 439 | '@jridgewell/sourcemap-codec@1.4.14': 440 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 441 | 442 | '@jridgewell/sourcemap-codec@1.4.15': 443 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 444 | 445 | '@jridgewell/sourcemap-codec@1.5.0': 446 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 447 | 448 | '@jridgewell/trace-mapping@0.3.18': 449 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 450 | 451 | '@mgcrea/eslint-config-node@0.12.16': 452 | resolution: {integrity: sha512-UJBDeVMpEXhDR1c5NEY7TxfAG3t3mhe+bgHTSQkirKHu3BowuXifIrgvOe60WqfR8J2ZcHPVGf2/SJ99SiCnDw==} 453 | 454 | '@mgcrea/fastify-request-logger@1.8.0': 455 | resolution: {integrity: sha512-5+ufdp61NBrpiqXsSEVkAslW248sJ/E4T6uR68QJ9VMzoMab2nkvVzykSo4fKy085Pvtjlyna2my9sRm+a/afw==} 456 | 457 | '@nodelib/fs.scandir@2.1.5': 458 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 459 | engines: {node: '>= 8'} 460 | 461 | '@nodelib/fs.stat@2.0.5': 462 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 463 | engines: {node: '>= 8'} 464 | 465 | '@nodelib/fs.walk@1.2.8': 466 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 467 | engines: {node: '>= 8'} 468 | 469 | '@pkgjs/parseargs@0.11.0': 470 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 471 | engines: {node: '>=14'} 472 | 473 | '@pkgr/core@0.1.1': 474 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} 475 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 476 | 477 | '@rollup/rollup-android-arm-eabi@4.25.0': 478 | resolution: {integrity: sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==} 479 | cpu: [arm] 480 | os: [android] 481 | 482 | '@rollup/rollup-android-arm64@4.25.0': 483 | resolution: {integrity: sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==} 484 | cpu: [arm64] 485 | os: [android] 486 | 487 | '@rollup/rollup-darwin-arm64@4.25.0': 488 | resolution: {integrity: sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==} 489 | cpu: [arm64] 490 | os: [darwin] 491 | 492 | '@rollup/rollup-darwin-x64@4.25.0': 493 | resolution: {integrity: sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==} 494 | cpu: [x64] 495 | os: [darwin] 496 | 497 | '@rollup/rollup-freebsd-arm64@4.25.0': 498 | resolution: {integrity: sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==} 499 | cpu: [arm64] 500 | os: [freebsd] 501 | 502 | '@rollup/rollup-freebsd-x64@4.25.0': 503 | resolution: {integrity: sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==} 504 | cpu: [x64] 505 | os: [freebsd] 506 | 507 | '@rollup/rollup-linux-arm-gnueabihf@4.25.0': 508 | resolution: {integrity: sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==} 509 | cpu: [arm] 510 | os: [linux] 511 | 512 | '@rollup/rollup-linux-arm-musleabihf@4.25.0': 513 | resolution: {integrity: sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==} 514 | cpu: [arm] 515 | os: [linux] 516 | 517 | '@rollup/rollup-linux-arm64-gnu@4.25.0': 518 | resolution: {integrity: sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==} 519 | cpu: [arm64] 520 | os: [linux] 521 | 522 | '@rollup/rollup-linux-arm64-musl@4.25.0': 523 | resolution: {integrity: sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==} 524 | cpu: [arm64] 525 | os: [linux] 526 | 527 | '@rollup/rollup-linux-powerpc64le-gnu@4.25.0': 528 | resolution: {integrity: sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==} 529 | cpu: [ppc64] 530 | os: [linux] 531 | 532 | '@rollup/rollup-linux-riscv64-gnu@4.25.0': 533 | resolution: {integrity: sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==} 534 | cpu: [riscv64] 535 | os: [linux] 536 | 537 | '@rollup/rollup-linux-s390x-gnu@4.25.0': 538 | resolution: {integrity: sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==} 539 | cpu: [s390x] 540 | os: [linux] 541 | 542 | '@rollup/rollup-linux-x64-gnu@4.25.0': 543 | resolution: {integrity: sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==} 544 | cpu: [x64] 545 | os: [linux] 546 | 547 | '@rollup/rollup-linux-x64-musl@4.25.0': 548 | resolution: {integrity: sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==} 549 | cpu: [x64] 550 | os: [linux] 551 | 552 | '@rollup/rollup-win32-arm64-msvc@4.25.0': 553 | resolution: {integrity: sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==} 554 | cpu: [arm64] 555 | os: [win32] 556 | 557 | '@rollup/rollup-win32-ia32-msvc@4.25.0': 558 | resolution: {integrity: sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==} 559 | cpu: [ia32] 560 | os: [win32] 561 | 562 | '@rollup/rollup-win32-x64-msvc@4.25.0': 563 | resolution: {integrity: sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==} 564 | cpu: [x64] 565 | os: [win32] 566 | 567 | '@tsconfig/esm@1.0.5': 568 | resolution: {integrity: sha512-JzoZ0h299JRLPfV5VBsMq1TuMy+OmU9bdV/7NcjfRojL0eIcA1k5ESrtjWrDwJRJnk9B0QmgR0rq04LERbdfWw==} 569 | deprecated: this package has been deprecated 570 | 571 | '@tsconfig/node-lts@22.0.0': 572 | resolution: {integrity: sha512-6y6CBFe0etz2xU1s0rGOj7pLsvbYXM9l/RNmBQOKI3S5DFrp1jigxx8uYupG5O6cCNXNlOE/1gquoQH01+kz5w==} 573 | 574 | '@tsconfig/strictest@2.0.5': 575 | resolution: {integrity: sha512-ec4tjL2Rr0pkZ5hww65c+EEPYwxOi4Ryv+0MtjeaSQRJyq322Q27eOQiFbuNgw2hpL4hB1/W/HBGk3VKS43osg==} 576 | 577 | '@types/estree@1.0.6': 578 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 579 | 580 | '@types/http-errors@2.0.4': 581 | resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} 582 | 583 | '@types/json-schema@7.0.15': 584 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 585 | 586 | '@types/node@22.9.0': 587 | resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} 588 | 589 | '@typescript-eslint/eslint-plugin@8.14.0': 590 | resolution: {integrity: sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==} 591 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 592 | peerDependencies: 593 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 594 | eslint: ^8.57.0 || ^9.0.0 595 | typescript: '*' 596 | peerDependenciesMeta: 597 | typescript: 598 | optional: true 599 | 600 | '@typescript-eslint/parser@8.14.0': 601 | resolution: {integrity: sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==} 602 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 603 | peerDependencies: 604 | eslint: ^8.57.0 || ^9.0.0 605 | typescript: '*' 606 | peerDependenciesMeta: 607 | typescript: 608 | optional: true 609 | 610 | '@typescript-eslint/scope-manager@8.14.0': 611 | resolution: {integrity: sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==} 612 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 613 | 614 | '@typescript-eslint/type-utils@8.14.0': 615 | resolution: {integrity: sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==} 616 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 617 | peerDependencies: 618 | typescript: '*' 619 | peerDependenciesMeta: 620 | typescript: 621 | optional: true 622 | 623 | '@typescript-eslint/types@8.14.0': 624 | resolution: {integrity: sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==} 625 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 626 | 627 | '@typescript-eslint/typescript-estree@8.14.0': 628 | resolution: {integrity: sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==} 629 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 630 | peerDependencies: 631 | typescript: '*' 632 | peerDependenciesMeta: 633 | typescript: 634 | optional: true 635 | 636 | '@typescript-eslint/utils@8.14.0': 637 | resolution: {integrity: sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==} 638 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 639 | peerDependencies: 640 | eslint: ^8.57.0 || ^9.0.0 641 | 642 | '@typescript-eslint/visitor-keys@8.14.0': 643 | resolution: {integrity: sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==} 644 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 645 | 646 | '@vitest/eslint-plugin@1.1.8': 647 | resolution: {integrity: sha512-Vej6LT38XxPayXi1RoiExxWgZWuNsx7kMudvRXHsuoYl0BykFB7vAR2OwFpuVFCkW35UW/DQ3EYB1Qj3IYHXvQ==} 648 | peerDependencies: 649 | '@typescript-eslint/utils': '>= 8.0' 650 | eslint: '>= 8.57.0' 651 | typescript: '>= 5.0.0' 652 | vitest: '*' 653 | peerDependenciesMeta: 654 | typescript: 655 | optional: true 656 | vitest: 657 | optional: true 658 | 659 | '@vitest/expect@2.1.4': 660 | resolution: {integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==} 661 | 662 | '@vitest/mocker@2.1.4': 663 | resolution: {integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==} 664 | peerDependencies: 665 | msw: ^2.4.9 666 | vite: ^5.0.0 667 | peerDependenciesMeta: 668 | msw: 669 | optional: true 670 | vite: 671 | optional: true 672 | 673 | '@vitest/pretty-format@2.1.4': 674 | resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==} 675 | 676 | '@vitest/runner@2.1.4': 677 | resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==} 678 | 679 | '@vitest/snapshot@2.1.4': 680 | resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==} 681 | 682 | '@vitest/spy@2.1.4': 683 | resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==} 684 | 685 | '@vitest/utils@2.1.4': 686 | resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} 687 | 688 | abstract-logging@2.0.1: 689 | resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} 690 | 691 | acorn-jsx@5.3.2: 692 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 693 | peerDependencies: 694 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 695 | 696 | acorn@8.14.0: 697 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 698 | engines: {node: '>=0.4.0'} 699 | hasBin: true 700 | 701 | ajv-formats@3.0.1: 702 | resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} 703 | peerDependencies: 704 | ajv: ^8.0.0 705 | peerDependenciesMeta: 706 | ajv: 707 | optional: true 708 | 709 | ajv@6.12.6: 710 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 711 | 712 | ajv@8.12.0: 713 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} 714 | 715 | ansi-regex@5.0.1: 716 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 717 | engines: {node: '>=8'} 718 | 719 | ansi-regex@6.1.0: 720 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 721 | engines: {node: '>=12'} 722 | 723 | ansi-styles@4.3.0: 724 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 725 | engines: {node: '>=8'} 726 | 727 | ansi-styles@6.2.1: 728 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 729 | engines: {node: '>=12'} 730 | 731 | any-promise@1.3.0: 732 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 733 | 734 | argparse@2.0.1: 735 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 736 | 737 | assertion-error@2.0.1: 738 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 739 | engines: {node: '>=12'} 740 | 741 | atomic-sleep@1.0.0: 742 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 743 | engines: {node: '>=8.0.0'} 744 | 745 | avvio@9.1.0: 746 | resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==} 747 | 748 | balanced-match@1.0.2: 749 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 750 | 751 | brace-expansion@1.1.11: 752 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 753 | 754 | brace-expansion@2.0.1: 755 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 756 | 757 | braces@3.0.2: 758 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 759 | engines: {node: '>=8'} 760 | 761 | bundle-require@5.0.0: 762 | resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} 763 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 764 | peerDependencies: 765 | esbuild: '>=0.18' 766 | 767 | cac@6.7.14: 768 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 769 | engines: {node: '>=8'} 770 | 771 | callsites@3.1.0: 772 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 773 | engines: {node: '>=6'} 774 | 775 | chai@5.1.2: 776 | resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} 777 | engines: {node: '>=12'} 778 | 779 | chalk@4.1.2: 780 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 781 | engines: {node: '>=10'} 782 | 783 | check-error@2.1.1: 784 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 785 | engines: {node: '>= 16'} 786 | 787 | chokidar@4.0.1: 788 | resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} 789 | engines: {node: '>= 14.16.0'} 790 | 791 | color-convert@2.0.1: 792 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 793 | engines: {node: '>=7.0.0'} 794 | 795 | color-name@1.1.4: 796 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 797 | 798 | colorette@2.0.20: 799 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 800 | 801 | commander@4.1.1: 802 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 803 | engines: {node: '>= 6'} 804 | 805 | concat-map@0.0.1: 806 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 807 | 808 | consola@3.2.3: 809 | resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} 810 | engines: {node: ^14.18.0 || >=16.10.0} 811 | 812 | cookie@1.0.1: 813 | resolution: {integrity: sha512-Xd8lFX4LM9QEEwxQpF9J9NTUh8pmdJO0cyRJhFiDoLTk2eH8FXlRv2IFGYVadZpqI3j8fhNrSdKCeYPxiAhLXw==} 814 | engines: {node: '>=18'} 815 | 816 | cross-spawn@7.0.3: 817 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 818 | engines: {node: '>= 8'} 819 | 820 | dateformat@4.6.3: 821 | resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} 822 | 823 | debug@4.3.4: 824 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 825 | engines: {node: '>=6.0'} 826 | peerDependencies: 827 | supports-color: '*' 828 | peerDependenciesMeta: 829 | supports-color: 830 | optional: true 831 | 832 | debug@4.3.7: 833 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 834 | engines: {node: '>=6.0'} 835 | peerDependencies: 836 | supports-color: '*' 837 | peerDependenciesMeta: 838 | supports-color: 839 | optional: true 840 | 841 | deep-eql@5.0.2: 842 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 843 | engines: {node: '>=6'} 844 | 845 | deep-is@0.1.4: 846 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 847 | 848 | depd@2.0.0: 849 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 850 | engines: {node: '>= 0.8'} 851 | 852 | eastasianwidth@0.2.0: 853 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 854 | 855 | emoji-regex@8.0.0: 856 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 857 | 858 | emoji-regex@9.2.2: 859 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 860 | 861 | end-of-stream@1.4.4: 862 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 863 | 864 | esbuild@0.21.5: 865 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 866 | engines: {node: '>=12'} 867 | hasBin: true 868 | 869 | esbuild@0.24.0: 870 | resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} 871 | engines: {node: '>=18'} 872 | hasBin: true 873 | 874 | escape-string-regexp@4.0.0: 875 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 876 | engines: {node: '>=10'} 877 | 878 | eslint-config-prettier@9.1.0: 879 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 880 | hasBin: true 881 | peerDependencies: 882 | eslint: '>=7.0.0' 883 | 884 | eslint-plugin-prettier@5.2.1: 885 | resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} 886 | engines: {node: ^14.18.0 || >=16.0.0} 887 | peerDependencies: 888 | '@types/eslint': '>=8.0.0' 889 | eslint: '>=8.0.0' 890 | eslint-config-prettier: '*' 891 | prettier: '>=3.0.0' 892 | peerDependenciesMeta: 893 | '@types/eslint': 894 | optional: true 895 | eslint-config-prettier: 896 | optional: true 897 | 898 | eslint-scope@8.2.0: 899 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 900 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 901 | 902 | eslint-visitor-keys@3.4.1: 903 | resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} 904 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 905 | 906 | eslint-visitor-keys@3.4.3: 907 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 908 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 909 | 910 | eslint-visitor-keys@4.2.0: 911 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 912 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 913 | 914 | eslint@9.14.0: 915 | resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==} 916 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 917 | hasBin: true 918 | peerDependencies: 919 | jiti: '*' 920 | peerDependenciesMeta: 921 | jiti: 922 | optional: true 923 | 924 | espree@10.3.0: 925 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 926 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 927 | 928 | esquery@1.5.0: 929 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 930 | engines: {node: '>=0.10'} 931 | 932 | esrecurse@4.3.0: 933 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 934 | engines: {node: '>=4.0'} 935 | 936 | estraverse@5.3.0: 937 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 938 | engines: {node: '>=4.0'} 939 | 940 | estree-walker@3.0.3: 941 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 942 | 943 | esutils@2.0.3: 944 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 945 | engines: {node: '>=0.10.0'} 946 | 947 | expect-type@1.1.0: 948 | resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} 949 | engines: {node: '>=12.0.0'} 950 | 951 | fast-copy@3.0.2: 952 | resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} 953 | 954 | fast-decode-uri-component@1.0.1: 955 | resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} 956 | 957 | fast-deep-equal@3.1.3: 958 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 959 | 960 | fast-diff@1.3.0: 961 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 962 | 963 | fast-glob@3.3.2: 964 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 965 | engines: {node: '>=8.6.0'} 966 | 967 | fast-json-stable-stringify@2.1.0: 968 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 969 | 970 | fast-json-stringify@6.0.0: 971 | resolution: {integrity: sha512-FGMKZwniMTgZh7zQp9b6XnBVxUmKVahQLQeRQHqwYmPDqDhcEKZ3BaQsxelFFI5PY7nN71OEeiL47/zUWcYe1A==} 972 | 973 | fast-levenshtein@2.0.6: 974 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 975 | 976 | fast-querystring@1.1.2: 977 | resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 978 | 979 | fast-redact@3.2.0: 980 | resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} 981 | engines: {node: '>=6'} 982 | 983 | fast-safe-stringify@2.1.1: 984 | resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 985 | 986 | fast-uri@2.4.0: 987 | resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==} 988 | 989 | fast-uri@3.0.3: 990 | resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} 991 | 992 | fastify-plugin@5.0.1: 993 | resolution: {integrity: sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ==} 994 | 995 | fastify@5.1.0: 996 | resolution: {integrity: sha512-0SdUC5AoiSgMSc2Vxwv3WyKzyGMDJRAW/PgNsK1kZrnkO6MeqUIW9ovVg9F2UGIqtIcclYMyeJa4rK6OZc7Jxg==} 997 | 998 | fastq@1.15.0: 999 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1000 | 1001 | fastq@1.17.1: 1002 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 1003 | 1004 | fdir@6.4.2: 1005 | resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} 1006 | peerDependencies: 1007 | picomatch: ^3 || ^4 1008 | peerDependenciesMeta: 1009 | picomatch: 1010 | optional: true 1011 | 1012 | file-entry-cache@8.0.0: 1013 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1014 | engines: {node: '>=16.0.0'} 1015 | 1016 | fill-range@7.0.1: 1017 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1018 | engines: {node: '>=8'} 1019 | 1020 | find-my-way@9.1.0: 1021 | resolution: {integrity: sha512-Y5jIsuYR4BwWDYYQ2A/RWWE6gD8a0FMgtU+HOq1WKku+Cwdz8M1v8wcAmRXXM1/iqtoqg06v+LjAxMYbCjViMw==} 1022 | engines: {node: '>=14'} 1023 | 1024 | find-up@5.0.0: 1025 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1026 | engines: {node: '>=10'} 1027 | 1028 | flat-cache@4.0.1: 1029 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1030 | engines: {node: '>=16'} 1031 | 1032 | flatted@3.3.1: 1033 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 1034 | 1035 | foreground-child@3.3.0: 1036 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 1037 | engines: {node: '>=14'} 1038 | 1039 | forwarded@0.2.0: 1040 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1041 | engines: {node: '>= 0.6'} 1042 | 1043 | fsevents@2.3.2: 1044 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1045 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1046 | os: [darwin] 1047 | 1048 | fsevents@2.3.3: 1049 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1050 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1051 | os: [darwin] 1052 | 1053 | glob-parent@5.1.2: 1054 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1055 | engines: {node: '>= 6'} 1056 | 1057 | glob-parent@6.0.2: 1058 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1059 | engines: {node: '>=10.13.0'} 1060 | 1061 | glob@10.4.5: 1062 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1063 | hasBin: true 1064 | 1065 | globals@14.0.0: 1066 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1067 | engines: {node: '>=18'} 1068 | 1069 | globrex@0.1.2: 1070 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1071 | 1072 | graphemer@1.4.0: 1073 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1074 | 1075 | has-flag@4.0.0: 1076 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1077 | engines: {node: '>=8'} 1078 | 1079 | help-me@5.0.0: 1080 | resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} 1081 | 1082 | http-errors@2.0.0: 1083 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1084 | engines: {node: '>= 0.8'} 1085 | 1086 | ignore@5.2.4: 1087 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1088 | engines: {node: '>= 4'} 1089 | 1090 | ignore@5.3.2: 1091 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1092 | engines: {node: '>= 4'} 1093 | 1094 | import-fresh@3.3.0: 1095 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1096 | engines: {node: '>=6'} 1097 | 1098 | imurmurhash@0.1.4: 1099 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1100 | engines: {node: '>=0.8.19'} 1101 | 1102 | inherits@2.0.4: 1103 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1104 | 1105 | ipaddr.js@1.9.1: 1106 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1107 | engines: {node: '>= 0.10'} 1108 | 1109 | is-extglob@2.1.1: 1110 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1111 | engines: {node: '>=0.10.0'} 1112 | 1113 | is-fullwidth-code-point@3.0.0: 1114 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1115 | engines: {node: '>=8'} 1116 | 1117 | is-glob@4.0.3: 1118 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1119 | engines: {node: '>=0.10.0'} 1120 | 1121 | is-number@7.0.0: 1122 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1123 | engines: {node: '>=0.12.0'} 1124 | 1125 | isexe@2.0.0: 1126 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1127 | 1128 | jackspeak@3.4.3: 1129 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1130 | 1131 | joycon@3.1.1: 1132 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1133 | engines: {node: '>=10'} 1134 | 1135 | js-yaml@4.1.0: 1136 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1137 | hasBin: true 1138 | 1139 | json-buffer@3.0.1: 1140 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1141 | 1142 | json-schema-ref-resolver@1.0.1: 1143 | resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==} 1144 | 1145 | json-schema-traverse@0.4.1: 1146 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1147 | 1148 | json-schema-traverse@1.0.0: 1149 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1150 | 1151 | json-stable-stringify-without-jsonify@1.0.1: 1152 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1153 | 1154 | keyv@4.5.4: 1155 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1156 | 1157 | kolorist@1.8.0: 1158 | resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} 1159 | 1160 | levn@0.4.1: 1161 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1162 | engines: {node: '>= 0.8.0'} 1163 | 1164 | light-my-request@6.3.0: 1165 | resolution: {integrity: sha512-bWTAPJmeWQH5suJNYwG0f5cs0p6ho9e6f1Ppoxv5qMosY+s9Ir2+ZLvvHcgA7VTDop4zl/NCHhOVVqU+kd++Ow==} 1166 | 1167 | lilconfig@3.1.2: 1168 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} 1169 | engines: {node: '>=14'} 1170 | 1171 | lines-and-columns@1.2.4: 1172 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1173 | 1174 | load-tsconfig@0.2.5: 1175 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1176 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1177 | 1178 | locate-path@6.0.0: 1179 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1180 | engines: {node: '>=10'} 1181 | 1182 | lodash.merge@4.6.2: 1183 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1184 | 1185 | lodash.sortby@4.7.0: 1186 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1187 | 1188 | loupe@3.1.2: 1189 | resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} 1190 | 1191 | lru-cache@10.4.3: 1192 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1193 | 1194 | magic-string@0.30.12: 1195 | resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} 1196 | 1197 | merge2@1.4.1: 1198 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1199 | engines: {node: '>= 8'} 1200 | 1201 | micromatch@4.0.5: 1202 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1203 | engines: {node: '>=8.6'} 1204 | 1205 | minimatch@3.1.2: 1206 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1207 | 1208 | minimatch@9.0.5: 1209 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1210 | engines: {node: '>=16 || 14 >=14.17'} 1211 | 1212 | minimist@1.2.8: 1213 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1214 | 1215 | minipass@7.1.2: 1216 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1217 | engines: {node: '>=16 || 14 >=14.17'} 1218 | 1219 | ms@2.1.2: 1220 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1221 | 1222 | ms@2.1.3: 1223 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1224 | 1225 | mz@2.7.0: 1226 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1227 | 1228 | nanoid@3.3.7: 1229 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1230 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1231 | hasBin: true 1232 | 1233 | natural-compare@1.4.0: 1234 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1235 | 1236 | object-assign@4.1.1: 1237 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1238 | engines: {node: '>=0.10.0'} 1239 | 1240 | on-exit-leak-free@2.1.0: 1241 | resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} 1242 | 1243 | once@1.4.0: 1244 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1245 | 1246 | optionator@0.9.4: 1247 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1248 | engines: {node: '>= 0.8.0'} 1249 | 1250 | p-limit@3.1.0: 1251 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1252 | engines: {node: '>=10'} 1253 | 1254 | p-locate@5.0.0: 1255 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1256 | engines: {node: '>=10'} 1257 | 1258 | package-json-from-dist@1.0.1: 1259 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1260 | 1261 | parent-module@1.0.1: 1262 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1263 | engines: {node: '>=6'} 1264 | 1265 | path-exists@4.0.0: 1266 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1267 | engines: {node: '>=8'} 1268 | 1269 | path-key@3.1.1: 1270 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1271 | engines: {node: '>=8'} 1272 | 1273 | path-scurry@1.11.1: 1274 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1275 | engines: {node: '>=16 || 14 >=14.18'} 1276 | 1277 | pathe@1.1.2: 1278 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 1279 | 1280 | pathval@2.0.0: 1281 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1282 | engines: {node: '>= 14.16'} 1283 | 1284 | picocolors@1.1.1: 1285 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1286 | 1287 | picomatch@2.3.1: 1288 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1289 | engines: {node: '>=8.6'} 1290 | 1291 | picomatch@4.0.2: 1292 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1293 | engines: {node: '>=12'} 1294 | 1295 | pino-abstract-transport@2.0.0: 1296 | resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} 1297 | 1298 | pino-pretty@13.0.0: 1299 | resolution: {integrity: sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==} 1300 | hasBin: true 1301 | 1302 | pino-std-serializers@7.0.0: 1303 | resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} 1304 | 1305 | pino@9.5.0: 1306 | resolution: {integrity: sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==} 1307 | hasBin: true 1308 | 1309 | pirates@4.0.5: 1310 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 1311 | engines: {node: '>= 6'} 1312 | 1313 | postcss-load-config@6.0.1: 1314 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1315 | engines: {node: '>= 18'} 1316 | peerDependencies: 1317 | jiti: '>=1.21.0' 1318 | postcss: '>=8.0.9' 1319 | tsx: ^4.8.1 1320 | yaml: ^2.4.2 1321 | peerDependenciesMeta: 1322 | jiti: 1323 | optional: true 1324 | postcss: 1325 | optional: true 1326 | tsx: 1327 | optional: true 1328 | yaml: 1329 | optional: true 1330 | 1331 | postcss@8.4.49: 1332 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} 1333 | engines: {node: ^10 || ^12 || >=14} 1334 | 1335 | prelude-ls@1.2.1: 1336 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1337 | engines: {node: '>= 0.8.0'} 1338 | 1339 | prettier-linter-helpers@1.0.0: 1340 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 1341 | engines: {node: '>=6.0.0'} 1342 | 1343 | prettier-plugin-organize-imports@4.1.0: 1344 | resolution: {integrity: sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==} 1345 | peerDependencies: 1346 | prettier: '>=2.0' 1347 | typescript: '>=2.9' 1348 | vue-tsc: ^2.1.0 1349 | peerDependenciesMeta: 1350 | vue-tsc: 1351 | optional: true 1352 | 1353 | prettier@3.3.3: 1354 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 1355 | engines: {node: '>=14'} 1356 | hasBin: true 1357 | 1358 | process-warning@4.0.0: 1359 | resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} 1360 | 1361 | proxy-addr@2.0.7: 1362 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1363 | engines: {node: '>= 0.10'} 1364 | 1365 | pump@3.0.0: 1366 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 1367 | 1368 | punycode@2.3.0: 1369 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1370 | engines: {node: '>=6'} 1371 | 1372 | queue-microtask@1.2.3: 1373 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1374 | 1375 | quick-format-unescaped@4.0.4: 1376 | resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 1377 | 1378 | readdirp@4.0.2: 1379 | resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} 1380 | engines: {node: '>= 14.16.0'} 1381 | 1382 | real-require@0.2.0: 1383 | resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 1384 | engines: {node: '>= 12.13.0'} 1385 | 1386 | require-from-string@2.0.2: 1387 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 1388 | engines: {node: '>=0.10.0'} 1389 | 1390 | resolve-from@4.0.0: 1391 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1392 | engines: {node: '>=4'} 1393 | 1394 | resolve-from@5.0.0: 1395 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1396 | engines: {node: '>=8'} 1397 | 1398 | ret@0.5.0: 1399 | resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} 1400 | engines: {node: '>=10'} 1401 | 1402 | reusify@1.0.4: 1403 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1404 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1405 | 1406 | rfdc@1.4.1: 1407 | resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 1408 | 1409 | rollup@4.25.0: 1410 | resolution: {integrity: sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==} 1411 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1412 | hasBin: true 1413 | 1414 | run-parallel@1.2.0: 1415 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1416 | 1417 | safe-regex2@4.0.0: 1418 | resolution: {integrity: sha512-Hvjfv25jPDVr3U+4LDzBuZPPOymELG3PYcSk5hcevooo1yxxamQL/bHs/GrEPGmMoMEwRrHVGiCA1pXi97B8Ew==} 1419 | 1420 | safe-stable-stringify@2.4.3: 1421 | resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} 1422 | engines: {node: '>=10'} 1423 | 1424 | secure-json-parse@2.7.0: 1425 | resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} 1426 | 1427 | semver@7.6.3: 1428 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1429 | engines: {node: '>=10'} 1430 | hasBin: true 1431 | 1432 | set-cookie-parser@2.6.0: 1433 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 1434 | 1435 | setprototypeof@1.2.0: 1436 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 1437 | 1438 | shebang-command@2.0.0: 1439 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1440 | engines: {node: '>=8'} 1441 | 1442 | shebang-regex@3.0.0: 1443 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1444 | engines: {node: '>=8'} 1445 | 1446 | siginfo@2.0.0: 1447 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1448 | 1449 | signal-exit@4.1.0: 1450 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1451 | engines: {node: '>=14'} 1452 | 1453 | sonic-boom@4.2.0: 1454 | resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} 1455 | 1456 | source-map-js@1.2.1: 1457 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1458 | engines: {node: '>=0.10.0'} 1459 | 1460 | source-map@0.8.0-beta.0: 1461 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1462 | engines: {node: '>= 8'} 1463 | 1464 | split2@4.2.0: 1465 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 1466 | engines: {node: '>= 10.x'} 1467 | 1468 | stackback@0.0.2: 1469 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1470 | 1471 | statuses@2.0.1: 1472 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 1473 | engines: {node: '>= 0.8'} 1474 | 1475 | std-env@3.8.0: 1476 | resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} 1477 | 1478 | string-width@4.2.3: 1479 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1480 | engines: {node: '>=8'} 1481 | 1482 | string-width@5.1.2: 1483 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1484 | engines: {node: '>=12'} 1485 | 1486 | strip-ansi@6.0.1: 1487 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1488 | engines: {node: '>=8'} 1489 | 1490 | strip-ansi@7.1.0: 1491 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1492 | engines: {node: '>=12'} 1493 | 1494 | strip-json-comments@3.1.1: 1495 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1496 | engines: {node: '>=8'} 1497 | 1498 | sucrase@3.35.0: 1499 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1500 | engines: {node: '>=16 || 14 >=14.17'} 1501 | hasBin: true 1502 | 1503 | supports-color@7.2.0: 1504 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1505 | engines: {node: '>=8'} 1506 | 1507 | synckit@0.9.2: 1508 | resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} 1509 | engines: {node: ^14.18.0 || >=16.0.0} 1510 | 1511 | text-table@0.2.0: 1512 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1513 | 1514 | thenify-all@1.6.0: 1515 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1516 | engines: {node: '>=0.8'} 1517 | 1518 | thenify@3.3.1: 1519 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1520 | 1521 | thread-stream@3.1.0: 1522 | resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} 1523 | 1524 | tinybench@2.9.0: 1525 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1526 | 1527 | tinyexec@0.3.1: 1528 | resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} 1529 | 1530 | tinyglobby@0.2.10: 1531 | resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} 1532 | engines: {node: '>=12.0.0'} 1533 | 1534 | tinypool@1.0.1: 1535 | resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} 1536 | engines: {node: ^18.0.0 || >=20.0.0} 1537 | 1538 | tinyrainbow@1.2.0: 1539 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} 1540 | engines: {node: '>=14.0.0'} 1541 | 1542 | tinyspy@3.0.2: 1543 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1544 | engines: {node: '>=14.0.0'} 1545 | 1546 | to-regex-range@5.0.1: 1547 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1548 | engines: {node: '>=8.0'} 1549 | 1550 | toad-cache@3.7.0: 1551 | resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} 1552 | engines: {node: '>=12'} 1553 | 1554 | toidentifier@1.0.1: 1555 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 1556 | engines: {node: '>=0.6'} 1557 | 1558 | tr46@1.0.1: 1559 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1560 | 1561 | tree-kill@1.2.2: 1562 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1563 | hasBin: true 1564 | 1565 | ts-api-utils@1.4.0: 1566 | resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} 1567 | engines: {node: '>=16'} 1568 | peerDependencies: 1569 | typescript: '>=4.2.0' 1570 | 1571 | ts-interface-checker@0.1.13: 1572 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1573 | 1574 | tsconfck@3.1.4: 1575 | resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==} 1576 | engines: {node: ^18 || >=20} 1577 | hasBin: true 1578 | peerDependencies: 1579 | typescript: ^5.0.0 1580 | peerDependenciesMeta: 1581 | typescript: 1582 | optional: true 1583 | 1584 | tslib@2.8.1: 1585 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1586 | 1587 | tsup@8.3.5: 1588 | resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} 1589 | engines: {node: '>=18'} 1590 | hasBin: true 1591 | peerDependencies: 1592 | '@microsoft/api-extractor': ^7.36.0 1593 | '@swc/core': ^1 1594 | postcss: ^8.4.12 1595 | typescript: '>=4.5.0' 1596 | peerDependenciesMeta: 1597 | '@microsoft/api-extractor': 1598 | optional: true 1599 | '@swc/core': 1600 | optional: true 1601 | postcss: 1602 | optional: true 1603 | typescript: 1604 | optional: true 1605 | 1606 | type-check@0.4.0: 1607 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1608 | engines: {node: '>= 0.8.0'} 1609 | 1610 | typescript-eslint@8.14.0: 1611 | resolution: {integrity: sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==} 1612 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1613 | peerDependencies: 1614 | typescript: '*' 1615 | peerDependenciesMeta: 1616 | typescript: 1617 | optional: true 1618 | 1619 | typescript@5.6.3: 1620 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 1621 | engines: {node: '>=14.17'} 1622 | hasBin: true 1623 | 1624 | undici-types@6.19.8: 1625 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 1626 | 1627 | uri-js@4.4.1: 1628 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1629 | 1630 | vite-node@2.1.4: 1631 | resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==} 1632 | engines: {node: ^18.0.0 || >=20.0.0} 1633 | hasBin: true 1634 | 1635 | vite-tsconfig-paths@5.1.2: 1636 | resolution: {integrity: sha512-gEIbKfJzSEv0yR3XS2QEocKetONoWkbROj6hGx0FHM18qKUojhvcokQsxQx5nMkelZq2n37zbSGCJn+FSODSjA==} 1637 | peerDependencies: 1638 | vite: '*' 1639 | peerDependenciesMeta: 1640 | vite: 1641 | optional: true 1642 | 1643 | vite@5.4.11: 1644 | resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} 1645 | engines: {node: ^18.0.0 || >=20.0.0} 1646 | hasBin: true 1647 | peerDependencies: 1648 | '@types/node': ^18.0.0 || >=20.0.0 1649 | less: '*' 1650 | lightningcss: ^1.21.0 1651 | sass: '*' 1652 | sass-embedded: '*' 1653 | stylus: '*' 1654 | sugarss: '*' 1655 | terser: ^5.4.0 1656 | peerDependenciesMeta: 1657 | '@types/node': 1658 | optional: true 1659 | less: 1660 | optional: true 1661 | lightningcss: 1662 | optional: true 1663 | sass: 1664 | optional: true 1665 | sass-embedded: 1666 | optional: true 1667 | stylus: 1668 | optional: true 1669 | sugarss: 1670 | optional: true 1671 | terser: 1672 | optional: true 1673 | 1674 | vitest@2.1.4: 1675 | resolution: {integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==} 1676 | engines: {node: ^18.0.0 || >=20.0.0} 1677 | hasBin: true 1678 | peerDependencies: 1679 | '@edge-runtime/vm': '*' 1680 | '@types/node': ^18.0.0 || >=20.0.0 1681 | '@vitest/browser': 2.1.4 1682 | '@vitest/ui': 2.1.4 1683 | happy-dom: '*' 1684 | jsdom: '*' 1685 | peerDependenciesMeta: 1686 | '@edge-runtime/vm': 1687 | optional: true 1688 | '@types/node': 1689 | optional: true 1690 | '@vitest/browser': 1691 | optional: true 1692 | '@vitest/ui': 1693 | optional: true 1694 | happy-dom: 1695 | optional: true 1696 | jsdom: 1697 | optional: true 1698 | 1699 | webidl-conversions@4.0.2: 1700 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 1701 | 1702 | whatwg-url@7.1.0: 1703 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 1704 | 1705 | which@2.0.2: 1706 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1707 | engines: {node: '>= 8'} 1708 | hasBin: true 1709 | 1710 | why-is-node-running@2.3.0: 1711 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1712 | engines: {node: '>=8'} 1713 | hasBin: true 1714 | 1715 | word-wrap@1.2.5: 1716 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1717 | engines: {node: '>=0.10.0'} 1718 | 1719 | wrap-ansi@7.0.0: 1720 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1721 | engines: {node: '>=10'} 1722 | 1723 | wrap-ansi@8.1.0: 1724 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1725 | engines: {node: '>=12'} 1726 | 1727 | wrappy@1.0.2: 1728 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1729 | 1730 | yocto-queue@0.1.0: 1731 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1732 | engines: {node: '>=10'} 1733 | 1734 | snapshots: 1735 | 1736 | '@esbuild/aix-ppc64@0.21.5': 1737 | optional: true 1738 | 1739 | '@esbuild/aix-ppc64@0.24.0': 1740 | optional: true 1741 | 1742 | '@esbuild/android-arm64@0.21.5': 1743 | optional: true 1744 | 1745 | '@esbuild/android-arm64@0.24.0': 1746 | optional: true 1747 | 1748 | '@esbuild/android-arm@0.21.5': 1749 | optional: true 1750 | 1751 | '@esbuild/android-arm@0.24.0': 1752 | optional: true 1753 | 1754 | '@esbuild/android-x64@0.21.5': 1755 | optional: true 1756 | 1757 | '@esbuild/android-x64@0.24.0': 1758 | optional: true 1759 | 1760 | '@esbuild/darwin-arm64@0.21.5': 1761 | optional: true 1762 | 1763 | '@esbuild/darwin-arm64@0.24.0': 1764 | optional: true 1765 | 1766 | '@esbuild/darwin-x64@0.21.5': 1767 | optional: true 1768 | 1769 | '@esbuild/darwin-x64@0.24.0': 1770 | optional: true 1771 | 1772 | '@esbuild/freebsd-arm64@0.21.5': 1773 | optional: true 1774 | 1775 | '@esbuild/freebsd-arm64@0.24.0': 1776 | optional: true 1777 | 1778 | '@esbuild/freebsd-x64@0.21.5': 1779 | optional: true 1780 | 1781 | '@esbuild/freebsd-x64@0.24.0': 1782 | optional: true 1783 | 1784 | '@esbuild/linux-arm64@0.21.5': 1785 | optional: true 1786 | 1787 | '@esbuild/linux-arm64@0.24.0': 1788 | optional: true 1789 | 1790 | '@esbuild/linux-arm@0.21.5': 1791 | optional: true 1792 | 1793 | '@esbuild/linux-arm@0.24.0': 1794 | optional: true 1795 | 1796 | '@esbuild/linux-ia32@0.21.5': 1797 | optional: true 1798 | 1799 | '@esbuild/linux-ia32@0.24.0': 1800 | optional: true 1801 | 1802 | '@esbuild/linux-loong64@0.21.5': 1803 | optional: true 1804 | 1805 | '@esbuild/linux-loong64@0.24.0': 1806 | optional: true 1807 | 1808 | '@esbuild/linux-mips64el@0.21.5': 1809 | optional: true 1810 | 1811 | '@esbuild/linux-mips64el@0.24.0': 1812 | optional: true 1813 | 1814 | '@esbuild/linux-ppc64@0.21.5': 1815 | optional: true 1816 | 1817 | '@esbuild/linux-ppc64@0.24.0': 1818 | optional: true 1819 | 1820 | '@esbuild/linux-riscv64@0.21.5': 1821 | optional: true 1822 | 1823 | '@esbuild/linux-riscv64@0.24.0': 1824 | optional: true 1825 | 1826 | '@esbuild/linux-s390x@0.21.5': 1827 | optional: true 1828 | 1829 | '@esbuild/linux-s390x@0.24.0': 1830 | optional: true 1831 | 1832 | '@esbuild/linux-x64@0.21.5': 1833 | optional: true 1834 | 1835 | '@esbuild/linux-x64@0.24.0': 1836 | optional: true 1837 | 1838 | '@esbuild/netbsd-x64@0.21.5': 1839 | optional: true 1840 | 1841 | '@esbuild/netbsd-x64@0.24.0': 1842 | optional: true 1843 | 1844 | '@esbuild/openbsd-arm64@0.24.0': 1845 | optional: true 1846 | 1847 | '@esbuild/openbsd-x64@0.21.5': 1848 | optional: true 1849 | 1850 | '@esbuild/openbsd-x64@0.24.0': 1851 | optional: true 1852 | 1853 | '@esbuild/sunos-x64@0.21.5': 1854 | optional: true 1855 | 1856 | '@esbuild/sunos-x64@0.24.0': 1857 | optional: true 1858 | 1859 | '@esbuild/win32-arm64@0.21.5': 1860 | optional: true 1861 | 1862 | '@esbuild/win32-arm64@0.24.0': 1863 | optional: true 1864 | 1865 | '@esbuild/win32-ia32@0.21.5': 1866 | optional: true 1867 | 1868 | '@esbuild/win32-ia32@0.24.0': 1869 | optional: true 1870 | 1871 | '@esbuild/win32-x64@0.21.5': 1872 | optional: true 1873 | 1874 | '@esbuild/win32-x64@0.24.0': 1875 | optional: true 1876 | 1877 | '@eslint-community/eslint-utils@4.4.0(eslint@9.14.0)': 1878 | dependencies: 1879 | eslint: 9.14.0 1880 | eslint-visitor-keys: 3.4.1 1881 | 1882 | '@eslint-community/regexpp@4.12.1': {} 1883 | 1884 | '@eslint/config-array@0.18.0': 1885 | dependencies: 1886 | '@eslint/object-schema': 2.1.4 1887 | debug: 4.3.4 1888 | minimatch: 3.1.2 1889 | transitivePeerDependencies: 1890 | - supports-color 1891 | 1892 | '@eslint/core@0.7.0': {} 1893 | 1894 | '@eslint/eslintrc@3.1.0': 1895 | dependencies: 1896 | ajv: 6.12.6 1897 | debug: 4.3.4 1898 | espree: 10.3.0 1899 | globals: 14.0.0 1900 | ignore: 5.2.4 1901 | import-fresh: 3.3.0 1902 | js-yaml: 4.1.0 1903 | minimatch: 3.1.2 1904 | strip-json-comments: 3.1.1 1905 | transitivePeerDependencies: 1906 | - supports-color 1907 | 1908 | '@eslint/js@9.14.0': {} 1909 | 1910 | '@eslint/object-schema@2.1.4': {} 1911 | 1912 | '@eslint/plugin-kit@0.2.2': 1913 | dependencies: 1914 | levn: 0.4.1 1915 | 1916 | '@fastify/ajv-compiler@4.0.1': 1917 | dependencies: 1918 | ajv: 8.12.0 1919 | ajv-formats: 3.0.1(ajv@8.12.0) 1920 | fast-uri: 3.0.3 1921 | 1922 | '@fastify/error@4.0.0': {} 1923 | 1924 | '@fastify/fast-json-stringify-compiler@5.0.1': 1925 | dependencies: 1926 | fast-json-stringify: 6.0.0 1927 | 1928 | '@fastify/merge-json-schemas@0.1.1': 1929 | dependencies: 1930 | fast-deep-equal: 3.1.3 1931 | 1932 | '@humanfs/core@0.19.1': {} 1933 | 1934 | '@humanfs/node@0.16.6': 1935 | dependencies: 1936 | '@humanfs/core': 0.19.1 1937 | '@humanwhocodes/retry': 0.3.1 1938 | 1939 | '@humanwhocodes/module-importer@1.0.1': {} 1940 | 1941 | '@humanwhocodes/retry@0.3.1': {} 1942 | 1943 | '@humanwhocodes/retry@0.4.1': {} 1944 | 1945 | '@isaacs/cliui@8.0.2': 1946 | dependencies: 1947 | string-width: 5.1.2 1948 | string-width-cjs: string-width@4.2.3 1949 | strip-ansi: 7.1.0 1950 | strip-ansi-cjs: strip-ansi@6.0.1 1951 | wrap-ansi: 8.1.0 1952 | wrap-ansi-cjs: wrap-ansi@7.0.0 1953 | 1954 | '@jridgewell/gen-mapping@0.3.3': 1955 | dependencies: 1956 | '@jridgewell/set-array': 1.1.2 1957 | '@jridgewell/sourcemap-codec': 1.4.15 1958 | '@jridgewell/trace-mapping': 0.3.18 1959 | 1960 | '@jridgewell/resolve-uri@3.1.0': {} 1961 | 1962 | '@jridgewell/set-array@1.1.2': {} 1963 | 1964 | '@jridgewell/sourcemap-codec@1.4.14': {} 1965 | 1966 | '@jridgewell/sourcemap-codec@1.4.15': {} 1967 | 1968 | '@jridgewell/sourcemap-codec@1.5.0': {} 1969 | 1970 | '@jridgewell/trace-mapping@0.3.18': 1971 | dependencies: 1972 | '@jridgewell/resolve-uri': 3.1.0 1973 | '@jridgewell/sourcemap-codec': 1.4.14 1974 | 1975 | '@mgcrea/eslint-config-node@0.12.16(@typescript-eslint/utils@8.14.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(prettier@3.3.3)(typescript@5.6.3)(vitest@2.1.4(@types/node@22.9.0))': 1976 | dependencies: 1977 | '@eslint/js': 9.14.0 1978 | '@vitest/eslint-plugin': 1.1.8(@typescript-eslint/utils@8.14.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)(vitest@2.1.4(@types/node@22.9.0)) 1979 | eslint-config-prettier: 9.1.0(eslint@9.14.0) 1980 | eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.14.0))(eslint@9.14.0)(prettier@3.3.3) 1981 | typescript-eslint: 8.14.0(eslint@9.14.0)(typescript@5.6.3) 1982 | transitivePeerDependencies: 1983 | - '@types/eslint' 1984 | - '@typescript-eslint/utils' 1985 | - eslint 1986 | - prettier 1987 | - supports-color 1988 | - typescript 1989 | - vitest 1990 | 1991 | '@mgcrea/fastify-request-logger@1.8.0': 1992 | dependencies: 1993 | fastify-plugin: 5.0.1 1994 | kolorist: 1.8.0 1995 | 1996 | '@nodelib/fs.scandir@2.1.5': 1997 | dependencies: 1998 | '@nodelib/fs.stat': 2.0.5 1999 | run-parallel: 1.2.0 2000 | 2001 | '@nodelib/fs.stat@2.0.5': {} 2002 | 2003 | '@nodelib/fs.walk@1.2.8': 2004 | dependencies: 2005 | '@nodelib/fs.scandir': 2.1.5 2006 | fastq: 1.15.0 2007 | 2008 | '@pkgjs/parseargs@0.11.0': 2009 | optional: true 2010 | 2011 | '@pkgr/core@0.1.1': {} 2012 | 2013 | '@rollup/rollup-android-arm-eabi@4.25.0': 2014 | optional: true 2015 | 2016 | '@rollup/rollup-android-arm64@4.25.0': 2017 | optional: true 2018 | 2019 | '@rollup/rollup-darwin-arm64@4.25.0': 2020 | optional: true 2021 | 2022 | '@rollup/rollup-darwin-x64@4.25.0': 2023 | optional: true 2024 | 2025 | '@rollup/rollup-freebsd-arm64@4.25.0': 2026 | optional: true 2027 | 2028 | '@rollup/rollup-freebsd-x64@4.25.0': 2029 | optional: true 2030 | 2031 | '@rollup/rollup-linux-arm-gnueabihf@4.25.0': 2032 | optional: true 2033 | 2034 | '@rollup/rollup-linux-arm-musleabihf@4.25.0': 2035 | optional: true 2036 | 2037 | '@rollup/rollup-linux-arm64-gnu@4.25.0': 2038 | optional: true 2039 | 2040 | '@rollup/rollup-linux-arm64-musl@4.25.0': 2041 | optional: true 2042 | 2043 | '@rollup/rollup-linux-powerpc64le-gnu@4.25.0': 2044 | optional: true 2045 | 2046 | '@rollup/rollup-linux-riscv64-gnu@4.25.0': 2047 | optional: true 2048 | 2049 | '@rollup/rollup-linux-s390x-gnu@4.25.0': 2050 | optional: true 2051 | 2052 | '@rollup/rollup-linux-x64-gnu@4.25.0': 2053 | optional: true 2054 | 2055 | '@rollup/rollup-linux-x64-musl@4.25.0': 2056 | optional: true 2057 | 2058 | '@rollup/rollup-win32-arm64-msvc@4.25.0': 2059 | optional: true 2060 | 2061 | '@rollup/rollup-win32-ia32-msvc@4.25.0': 2062 | optional: true 2063 | 2064 | '@rollup/rollup-win32-x64-msvc@4.25.0': 2065 | optional: true 2066 | 2067 | '@tsconfig/esm@1.0.5': {} 2068 | 2069 | '@tsconfig/node-lts@22.0.0': {} 2070 | 2071 | '@tsconfig/strictest@2.0.5': {} 2072 | 2073 | '@types/estree@1.0.6': {} 2074 | 2075 | '@types/http-errors@2.0.4': {} 2076 | 2077 | '@types/json-schema@7.0.15': {} 2078 | 2079 | '@types/node@22.9.0': 2080 | dependencies: 2081 | undici-types: 6.19.8 2082 | 2083 | '@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)': 2084 | dependencies: 2085 | '@eslint-community/regexpp': 4.12.1 2086 | '@typescript-eslint/parser': 8.14.0(eslint@9.14.0)(typescript@5.6.3) 2087 | '@typescript-eslint/scope-manager': 8.14.0 2088 | '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0)(typescript@5.6.3) 2089 | '@typescript-eslint/utils': 8.14.0(eslint@9.14.0)(typescript@5.6.3) 2090 | '@typescript-eslint/visitor-keys': 8.14.0 2091 | eslint: 9.14.0 2092 | graphemer: 1.4.0 2093 | ignore: 5.3.2 2094 | natural-compare: 1.4.0 2095 | ts-api-utils: 1.4.0(typescript@5.6.3) 2096 | optionalDependencies: 2097 | typescript: 5.6.3 2098 | transitivePeerDependencies: 2099 | - supports-color 2100 | 2101 | '@typescript-eslint/parser@8.14.0(eslint@9.14.0)(typescript@5.6.3)': 2102 | dependencies: 2103 | '@typescript-eslint/scope-manager': 8.14.0 2104 | '@typescript-eslint/types': 8.14.0 2105 | '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) 2106 | '@typescript-eslint/visitor-keys': 8.14.0 2107 | debug: 4.3.4 2108 | eslint: 9.14.0 2109 | optionalDependencies: 2110 | typescript: 5.6.3 2111 | transitivePeerDependencies: 2112 | - supports-color 2113 | 2114 | '@typescript-eslint/scope-manager@8.14.0': 2115 | dependencies: 2116 | '@typescript-eslint/types': 8.14.0 2117 | '@typescript-eslint/visitor-keys': 8.14.0 2118 | 2119 | '@typescript-eslint/type-utils@8.14.0(eslint@9.14.0)(typescript@5.6.3)': 2120 | dependencies: 2121 | '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) 2122 | '@typescript-eslint/utils': 8.14.0(eslint@9.14.0)(typescript@5.6.3) 2123 | debug: 4.3.4 2124 | ts-api-utils: 1.4.0(typescript@5.6.3) 2125 | optionalDependencies: 2126 | typescript: 5.6.3 2127 | transitivePeerDependencies: 2128 | - eslint 2129 | - supports-color 2130 | 2131 | '@typescript-eslint/types@8.14.0': {} 2132 | 2133 | '@typescript-eslint/typescript-estree@8.14.0(typescript@5.6.3)': 2134 | dependencies: 2135 | '@typescript-eslint/types': 8.14.0 2136 | '@typescript-eslint/visitor-keys': 8.14.0 2137 | debug: 4.3.4 2138 | fast-glob: 3.3.2 2139 | is-glob: 4.0.3 2140 | minimatch: 9.0.5 2141 | semver: 7.6.3 2142 | ts-api-utils: 1.4.0(typescript@5.6.3) 2143 | optionalDependencies: 2144 | typescript: 5.6.3 2145 | transitivePeerDependencies: 2146 | - supports-color 2147 | 2148 | '@typescript-eslint/utils@8.14.0(eslint@9.14.0)(typescript@5.6.3)': 2149 | dependencies: 2150 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0) 2151 | '@typescript-eslint/scope-manager': 8.14.0 2152 | '@typescript-eslint/types': 8.14.0 2153 | '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) 2154 | eslint: 9.14.0 2155 | transitivePeerDependencies: 2156 | - supports-color 2157 | - typescript 2158 | 2159 | '@typescript-eslint/visitor-keys@8.14.0': 2160 | dependencies: 2161 | '@typescript-eslint/types': 8.14.0 2162 | eslint-visitor-keys: 3.4.3 2163 | 2164 | '@vitest/eslint-plugin@1.1.8(@typescript-eslint/utils@8.14.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3)(vitest@2.1.4(@types/node@22.9.0))': 2165 | dependencies: 2166 | '@typescript-eslint/utils': 8.14.0(eslint@9.14.0)(typescript@5.6.3) 2167 | eslint: 9.14.0 2168 | optionalDependencies: 2169 | typescript: 5.6.3 2170 | vitest: 2.1.4(@types/node@22.9.0) 2171 | 2172 | '@vitest/expect@2.1.4': 2173 | dependencies: 2174 | '@vitest/spy': 2.1.4 2175 | '@vitest/utils': 2.1.4 2176 | chai: 5.1.2 2177 | tinyrainbow: 1.2.0 2178 | 2179 | '@vitest/mocker@2.1.4(vite@5.4.11(@types/node@22.9.0))': 2180 | dependencies: 2181 | '@vitest/spy': 2.1.4 2182 | estree-walker: 3.0.3 2183 | magic-string: 0.30.12 2184 | optionalDependencies: 2185 | vite: 5.4.11(@types/node@22.9.0) 2186 | 2187 | '@vitest/pretty-format@2.1.4': 2188 | dependencies: 2189 | tinyrainbow: 1.2.0 2190 | 2191 | '@vitest/runner@2.1.4': 2192 | dependencies: 2193 | '@vitest/utils': 2.1.4 2194 | pathe: 1.1.2 2195 | 2196 | '@vitest/snapshot@2.1.4': 2197 | dependencies: 2198 | '@vitest/pretty-format': 2.1.4 2199 | magic-string: 0.30.12 2200 | pathe: 1.1.2 2201 | 2202 | '@vitest/spy@2.1.4': 2203 | dependencies: 2204 | tinyspy: 3.0.2 2205 | 2206 | '@vitest/utils@2.1.4': 2207 | dependencies: 2208 | '@vitest/pretty-format': 2.1.4 2209 | loupe: 3.1.2 2210 | tinyrainbow: 1.2.0 2211 | 2212 | abstract-logging@2.0.1: {} 2213 | 2214 | acorn-jsx@5.3.2(acorn@8.14.0): 2215 | dependencies: 2216 | acorn: 8.14.0 2217 | 2218 | acorn@8.14.0: {} 2219 | 2220 | ajv-formats@3.0.1(ajv@8.12.0): 2221 | optionalDependencies: 2222 | ajv: 8.12.0 2223 | 2224 | ajv@6.12.6: 2225 | dependencies: 2226 | fast-deep-equal: 3.1.3 2227 | fast-json-stable-stringify: 2.1.0 2228 | json-schema-traverse: 0.4.1 2229 | uri-js: 4.4.1 2230 | 2231 | ajv@8.12.0: 2232 | dependencies: 2233 | fast-deep-equal: 3.1.3 2234 | json-schema-traverse: 1.0.0 2235 | require-from-string: 2.0.2 2236 | uri-js: 4.4.1 2237 | 2238 | ansi-regex@5.0.1: {} 2239 | 2240 | ansi-regex@6.1.0: {} 2241 | 2242 | ansi-styles@4.3.0: 2243 | dependencies: 2244 | color-convert: 2.0.1 2245 | 2246 | ansi-styles@6.2.1: {} 2247 | 2248 | any-promise@1.3.0: {} 2249 | 2250 | argparse@2.0.1: {} 2251 | 2252 | assertion-error@2.0.1: {} 2253 | 2254 | atomic-sleep@1.0.0: {} 2255 | 2256 | avvio@9.1.0: 2257 | dependencies: 2258 | '@fastify/error': 4.0.0 2259 | fastq: 1.17.1 2260 | 2261 | balanced-match@1.0.2: {} 2262 | 2263 | brace-expansion@1.1.11: 2264 | dependencies: 2265 | balanced-match: 1.0.2 2266 | concat-map: 0.0.1 2267 | 2268 | brace-expansion@2.0.1: 2269 | dependencies: 2270 | balanced-match: 1.0.2 2271 | 2272 | braces@3.0.2: 2273 | dependencies: 2274 | fill-range: 7.0.1 2275 | 2276 | bundle-require@5.0.0(esbuild@0.24.0): 2277 | dependencies: 2278 | esbuild: 0.24.0 2279 | load-tsconfig: 0.2.5 2280 | 2281 | cac@6.7.14: {} 2282 | 2283 | callsites@3.1.0: {} 2284 | 2285 | chai@5.1.2: 2286 | dependencies: 2287 | assertion-error: 2.0.1 2288 | check-error: 2.1.1 2289 | deep-eql: 5.0.2 2290 | loupe: 3.1.2 2291 | pathval: 2.0.0 2292 | 2293 | chalk@4.1.2: 2294 | dependencies: 2295 | ansi-styles: 4.3.0 2296 | supports-color: 7.2.0 2297 | 2298 | check-error@2.1.1: {} 2299 | 2300 | chokidar@4.0.1: 2301 | dependencies: 2302 | readdirp: 4.0.2 2303 | 2304 | color-convert@2.0.1: 2305 | dependencies: 2306 | color-name: 1.1.4 2307 | 2308 | color-name@1.1.4: {} 2309 | 2310 | colorette@2.0.20: {} 2311 | 2312 | commander@4.1.1: {} 2313 | 2314 | concat-map@0.0.1: {} 2315 | 2316 | consola@3.2.3: {} 2317 | 2318 | cookie@1.0.1: {} 2319 | 2320 | cross-spawn@7.0.3: 2321 | dependencies: 2322 | path-key: 3.1.1 2323 | shebang-command: 2.0.0 2324 | which: 2.0.2 2325 | 2326 | dateformat@4.6.3: {} 2327 | 2328 | debug@4.3.4: 2329 | dependencies: 2330 | ms: 2.1.2 2331 | 2332 | debug@4.3.7: 2333 | dependencies: 2334 | ms: 2.1.3 2335 | 2336 | deep-eql@5.0.2: {} 2337 | 2338 | deep-is@0.1.4: {} 2339 | 2340 | depd@2.0.0: {} 2341 | 2342 | eastasianwidth@0.2.0: {} 2343 | 2344 | emoji-regex@8.0.0: {} 2345 | 2346 | emoji-regex@9.2.2: {} 2347 | 2348 | end-of-stream@1.4.4: 2349 | dependencies: 2350 | once: 1.4.0 2351 | 2352 | esbuild@0.21.5: 2353 | optionalDependencies: 2354 | '@esbuild/aix-ppc64': 0.21.5 2355 | '@esbuild/android-arm': 0.21.5 2356 | '@esbuild/android-arm64': 0.21.5 2357 | '@esbuild/android-x64': 0.21.5 2358 | '@esbuild/darwin-arm64': 0.21.5 2359 | '@esbuild/darwin-x64': 0.21.5 2360 | '@esbuild/freebsd-arm64': 0.21.5 2361 | '@esbuild/freebsd-x64': 0.21.5 2362 | '@esbuild/linux-arm': 0.21.5 2363 | '@esbuild/linux-arm64': 0.21.5 2364 | '@esbuild/linux-ia32': 0.21.5 2365 | '@esbuild/linux-loong64': 0.21.5 2366 | '@esbuild/linux-mips64el': 0.21.5 2367 | '@esbuild/linux-ppc64': 0.21.5 2368 | '@esbuild/linux-riscv64': 0.21.5 2369 | '@esbuild/linux-s390x': 0.21.5 2370 | '@esbuild/linux-x64': 0.21.5 2371 | '@esbuild/netbsd-x64': 0.21.5 2372 | '@esbuild/openbsd-x64': 0.21.5 2373 | '@esbuild/sunos-x64': 0.21.5 2374 | '@esbuild/win32-arm64': 0.21.5 2375 | '@esbuild/win32-ia32': 0.21.5 2376 | '@esbuild/win32-x64': 0.21.5 2377 | 2378 | esbuild@0.24.0: 2379 | optionalDependencies: 2380 | '@esbuild/aix-ppc64': 0.24.0 2381 | '@esbuild/android-arm': 0.24.0 2382 | '@esbuild/android-arm64': 0.24.0 2383 | '@esbuild/android-x64': 0.24.0 2384 | '@esbuild/darwin-arm64': 0.24.0 2385 | '@esbuild/darwin-x64': 0.24.0 2386 | '@esbuild/freebsd-arm64': 0.24.0 2387 | '@esbuild/freebsd-x64': 0.24.0 2388 | '@esbuild/linux-arm': 0.24.0 2389 | '@esbuild/linux-arm64': 0.24.0 2390 | '@esbuild/linux-ia32': 0.24.0 2391 | '@esbuild/linux-loong64': 0.24.0 2392 | '@esbuild/linux-mips64el': 0.24.0 2393 | '@esbuild/linux-ppc64': 0.24.0 2394 | '@esbuild/linux-riscv64': 0.24.0 2395 | '@esbuild/linux-s390x': 0.24.0 2396 | '@esbuild/linux-x64': 0.24.0 2397 | '@esbuild/netbsd-x64': 0.24.0 2398 | '@esbuild/openbsd-arm64': 0.24.0 2399 | '@esbuild/openbsd-x64': 0.24.0 2400 | '@esbuild/sunos-x64': 0.24.0 2401 | '@esbuild/win32-arm64': 0.24.0 2402 | '@esbuild/win32-ia32': 0.24.0 2403 | '@esbuild/win32-x64': 0.24.0 2404 | 2405 | escape-string-regexp@4.0.0: {} 2406 | 2407 | eslint-config-prettier@9.1.0(eslint@9.14.0): 2408 | dependencies: 2409 | eslint: 9.14.0 2410 | 2411 | eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.14.0))(eslint@9.14.0)(prettier@3.3.3): 2412 | dependencies: 2413 | eslint: 9.14.0 2414 | prettier: 3.3.3 2415 | prettier-linter-helpers: 1.0.0 2416 | synckit: 0.9.2 2417 | optionalDependencies: 2418 | eslint-config-prettier: 9.1.0(eslint@9.14.0) 2419 | 2420 | eslint-scope@8.2.0: 2421 | dependencies: 2422 | esrecurse: 4.3.0 2423 | estraverse: 5.3.0 2424 | 2425 | eslint-visitor-keys@3.4.1: {} 2426 | 2427 | eslint-visitor-keys@3.4.3: {} 2428 | 2429 | eslint-visitor-keys@4.2.0: {} 2430 | 2431 | eslint@9.14.0: 2432 | dependencies: 2433 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0) 2434 | '@eslint-community/regexpp': 4.12.1 2435 | '@eslint/config-array': 0.18.0 2436 | '@eslint/core': 0.7.0 2437 | '@eslint/eslintrc': 3.1.0 2438 | '@eslint/js': 9.14.0 2439 | '@eslint/plugin-kit': 0.2.2 2440 | '@humanfs/node': 0.16.6 2441 | '@humanwhocodes/module-importer': 1.0.1 2442 | '@humanwhocodes/retry': 0.4.1 2443 | '@types/estree': 1.0.6 2444 | '@types/json-schema': 7.0.15 2445 | ajv: 6.12.6 2446 | chalk: 4.1.2 2447 | cross-spawn: 7.0.3 2448 | debug: 4.3.4 2449 | escape-string-regexp: 4.0.0 2450 | eslint-scope: 8.2.0 2451 | eslint-visitor-keys: 4.2.0 2452 | espree: 10.3.0 2453 | esquery: 1.5.0 2454 | esutils: 2.0.3 2455 | fast-deep-equal: 3.1.3 2456 | file-entry-cache: 8.0.0 2457 | find-up: 5.0.0 2458 | glob-parent: 6.0.2 2459 | ignore: 5.2.4 2460 | imurmurhash: 0.1.4 2461 | is-glob: 4.0.3 2462 | json-stable-stringify-without-jsonify: 1.0.1 2463 | lodash.merge: 4.6.2 2464 | minimatch: 3.1.2 2465 | natural-compare: 1.4.0 2466 | optionator: 0.9.4 2467 | text-table: 0.2.0 2468 | transitivePeerDependencies: 2469 | - supports-color 2470 | 2471 | espree@10.3.0: 2472 | dependencies: 2473 | acorn: 8.14.0 2474 | acorn-jsx: 5.3.2(acorn@8.14.0) 2475 | eslint-visitor-keys: 4.2.0 2476 | 2477 | esquery@1.5.0: 2478 | dependencies: 2479 | estraverse: 5.3.0 2480 | 2481 | esrecurse@4.3.0: 2482 | dependencies: 2483 | estraverse: 5.3.0 2484 | 2485 | estraverse@5.3.0: {} 2486 | 2487 | estree-walker@3.0.3: 2488 | dependencies: 2489 | '@types/estree': 1.0.6 2490 | 2491 | esutils@2.0.3: {} 2492 | 2493 | expect-type@1.1.0: {} 2494 | 2495 | fast-copy@3.0.2: {} 2496 | 2497 | fast-decode-uri-component@1.0.1: {} 2498 | 2499 | fast-deep-equal@3.1.3: {} 2500 | 2501 | fast-diff@1.3.0: {} 2502 | 2503 | fast-glob@3.3.2: 2504 | dependencies: 2505 | '@nodelib/fs.stat': 2.0.5 2506 | '@nodelib/fs.walk': 1.2.8 2507 | glob-parent: 5.1.2 2508 | merge2: 1.4.1 2509 | micromatch: 4.0.5 2510 | 2511 | fast-json-stable-stringify@2.1.0: {} 2512 | 2513 | fast-json-stringify@6.0.0: 2514 | dependencies: 2515 | '@fastify/merge-json-schemas': 0.1.1 2516 | ajv: 8.12.0 2517 | ajv-formats: 3.0.1(ajv@8.12.0) 2518 | fast-deep-equal: 3.1.3 2519 | fast-uri: 2.4.0 2520 | json-schema-ref-resolver: 1.0.1 2521 | rfdc: 1.4.1 2522 | 2523 | fast-levenshtein@2.0.6: {} 2524 | 2525 | fast-querystring@1.1.2: 2526 | dependencies: 2527 | fast-decode-uri-component: 1.0.1 2528 | 2529 | fast-redact@3.2.0: {} 2530 | 2531 | fast-safe-stringify@2.1.1: {} 2532 | 2533 | fast-uri@2.4.0: {} 2534 | 2535 | fast-uri@3.0.3: {} 2536 | 2537 | fastify-plugin@5.0.1: {} 2538 | 2539 | fastify@5.1.0: 2540 | dependencies: 2541 | '@fastify/ajv-compiler': 4.0.1 2542 | '@fastify/error': 4.0.0 2543 | '@fastify/fast-json-stringify-compiler': 5.0.1 2544 | abstract-logging: 2.0.1 2545 | avvio: 9.1.0 2546 | fast-json-stringify: 6.0.0 2547 | find-my-way: 9.1.0 2548 | light-my-request: 6.3.0 2549 | pino: 9.5.0 2550 | process-warning: 4.0.0 2551 | proxy-addr: 2.0.7 2552 | rfdc: 1.4.1 2553 | secure-json-parse: 2.7.0 2554 | semver: 7.6.3 2555 | toad-cache: 3.7.0 2556 | 2557 | fastq@1.15.0: 2558 | dependencies: 2559 | reusify: 1.0.4 2560 | 2561 | fastq@1.17.1: 2562 | dependencies: 2563 | reusify: 1.0.4 2564 | 2565 | fdir@6.4.2(picomatch@4.0.2): 2566 | optionalDependencies: 2567 | picomatch: 4.0.2 2568 | 2569 | file-entry-cache@8.0.0: 2570 | dependencies: 2571 | flat-cache: 4.0.1 2572 | 2573 | fill-range@7.0.1: 2574 | dependencies: 2575 | to-regex-range: 5.0.1 2576 | 2577 | find-my-way@9.1.0: 2578 | dependencies: 2579 | fast-deep-equal: 3.1.3 2580 | fast-querystring: 1.1.2 2581 | safe-regex2: 4.0.0 2582 | 2583 | find-up@5.0.0: 2584 | dependencies: 2585 | locate-path: 6.0.0 2586 | path-exists: 4.0.0 2587 | 2588 | flat-cache@4.0.1: 2589 | dependencies: 2590 | flatted: 3.3.1 2591 | keyv: 4.5.4 2592 | 2593 | flatted@3.3.1: {} 2594 | 2595 | foreground-child@3.3.0: 2596 | dependencies: 2597 | cross-spawn: 7.0.3 2598 | signal-exit: 4.1.0 2599 | 2600 | forwarded@0.2.0: {} 2601 | 2602 | fsevents@2.3.2: 2603 | optional: true 2604 | 2605 | fsevents@2.3.3: 2606 | optional: true 2607 | 2608 | glob-parent@5.1.2: 2609 | dependencies: 2610 | is-glob: 4.0.3 2611 | 2612 | glob-parent@6.0.2: 2613 | dependencies: 2614 | is-glob: 4.0.3 2615 | 2616 | glob@10.4.5: 2617 | dependencies: 2618 | foreground-child: 3.3.0 2619 | jackspeak: 3.4.3 2620 | minimatch: 9.0.5 2621 | minipass: 7.1.2 2622 | package-json-from-dist: 1.0.1 2623 | path-scurry: 1.11.1 2624 | 2625 | globals@14.0.0: {} 2626 | 2627 | globrex@0.1.2: {} 2628 | 2629 | graphemer@1.4.0: {} 2630 | 2631 | has-flag@4.0.0: {} 2632 | 2633 | help-me@5.0.0: {} 2634 | 2635 | http-errors@2.0.0: 2636 | dependencies: 2637 | depd: 2.0.0 2638 | inherits: 2.0.4 2639 | setprototypeof: 1.2.0 2640 | statuses: 2.0.1 2641 | toidentifier: 1.0.1 2642 | 2643 | ignore@5.2.4: {} 2644 | 2645 | ignore@5.3.2: {} 2646 | 2647 | import-fresh@3.3.0: 2648 | dependencies: 2649 | parent-module: 1.0.1 2650 | resolve-from: 4.0.0 2651 | 2652 | imurmurhash@0.1.4: {} 2653 | 2654 | inherits@2.0.4: {} 2655 | 2656 | ipaddr.js@1.9.1: {} 2657 | 2658 | is-extglob@2.1.1: {} 2659 | 2660 | is-fullwidth-code-point@3.0.0: {} 2661 | 2662 | is-glob@4.0.3: 2663 | dependencies: 2664 | is-extglob: 2.1.1 2665 | 2666 | is-number@7.0.0: {} 2667 | 2668 | isexe@2.0.0: {} 2669 | 2670 | jackspeak@3.4.3: 2671 | dependencies: 2672 | '@isaacs/cliui': 8.0.2 2673 | optionalDependencies: 2674 | '@pkgjs/parseargs': 0.11.0 2675 | 2676 | joycon@3.1.1: {} 2677 | 2678 | js-yaml@4.1.0: 2679 | dependencies: 2680 | argparse: 2.0.1 2681 | 2682 | json-buffer@3.0.1: {} 2683 | 2684 | json-schema-ref-resolver@1.0.1: 2685 | dependencies: 2686 | fast-deep-equal: 3.1.3 2687 | 2688 | json-schema-traverse@0.4.1: {} 2689 | 2690 | json-schema-traverse@1.0.0: {} 2691 | 2692 | json-stable-stringify-without-jsonify@1.0.1: {} 2693 | 2694 | keyv@4.5.4: 2695 | dependencies: 2696 | json-buffer: 3.0.1 2697 | 2698 | kolorist@1.8.0: {} 2699 | 2700 | levn@0.4.1: 2701 | dependencies: 2702 | prelude-ls: 1.2.1 2703 | type-check: 0.4.0 2704 | 2705 | light-my-request@6.3.0: 2706 | dependencies: 2707 | cookie: 1.0.1 2708 | process-warning: 4.0.0 2709 | set-cookie-parser: 2.6.0 2710 | 2711 | lilconfig@3.1.2: {} 2712 | 2713 | lines-and-columns@1.2.4: {} 2714 | 2715 | load-tsconfig@0.2.5: {} 2716 | 2717 | locate-path@6.0.0: 2718 | dependencies: 2719 | p-locate: 5.0.0 2720 | 2721 | lodash.merge@4.6.2: {} 2722 | 2723 | lodash.sortby@4.7.0: {} 2724 | 2725 | loupe@3.1.2: {} 2726 | 2727 | lru-cache@10.4.3: {} 2728 | 2729 | magic-string@0.30.12: 2730 | dependencies: 2731 | '@jridgewell/sourcemap-codec': 1.5.0 2732 | 2733 | merge2@1.4.1: {} 2734 | 2735 | micromatch@4.0.5: 2736 | dependencies: 2737 | braces: 3.0.2 2738 | picomatch: 2.3.1 2739 | 2740 | minimatch@3.1.2: 2741 | dependencies: 2742 | brace-expansion: 1.1.11 2743 | 2744 | minimatch@9.0.5: 2745 | dependencies: 2746 | brace-expansion: 2.0.1 2747 | 2748 | minimist@1.2.8: {} 2749 | 2750 | minipass@7.1.2: {} 2751 | 2752 | ms@2.1.2: {} 2753 | 2754 | ms@2.1.3: {} 2755 | 2756 | mz@2.7.0: 2757 | dependencies: 2758 | any-promise: 1.3.0 2759 | object-assign: 4.1.1 2760 | thenify-all: 1.6.0 2761 | 2762 | nanoid@3.3.7: {} 2763 | 2764 | natural-compare@1.4.0: {} 2765 | 2766 | object-assign@4.1.1: {} 2767 | 2768 | on-exit-leak-free@2.1.0: {} 2769 | 2770 | once@1.4.0: 2771 | dependencies: 2772 | wrappy: 1.0.2 2773 | 2774 | optionator@0.9.4: 2775 | dependencies: 2776 | deep-is: 0.1.4 2777 | fast-levenshtein: 2.0.6 2778 | levn: 0.4.1 2779 | prelude-ls: 1.2.1 2780 | type-check: 0.4.0 2781 | word-wrap: 1.2.5 2782 | 2783 | p-limit@3.1.0: 2784 | dependencies: 2785 | yocto-queue: 0.1.0 2786 | 2787 | p-locate@5.0.0: 2788 | dependencies: 2789 | p-limit: 3.1.0 2790 | 2791 | package-json-from-dist@1.0.1: {} 2792 | 2793 | parent-module@1.0.1: 2794 | dependencies: 2795 | callsites: 3.1.0 2796 | 2797 | path-exists@4.0.0: {} 2798 | 2799 | path-key@3.1.1: {} 2800 | 2801 | path-scurry@1.11.1: 2802 | dependencies: 2803 | lru-cache: 10.4.3 2804 | minipass: 7.1.2 2805 | 2806 | pathe@1.1.2: {} 2807 | 2808 | pathval@2.0.0: {} 2809 | 2810 | picocolors@1.1.1: {} 2811 | 2812 | picomatch@2.3.1: {} 2813 | 2814 | picomatch@4.0.2: {} 2815 | 2816 | pino-abstract-transport@2.0.0: 2817 | dependencies: 2818 | split2: 4.2.0 2819 | 2820 | pino-pretty@13.0.0: 2821 | dependencies: 2822 | colorette: 2.0.20 2823 | dateformat: 4.6.3 2824 | fast-copy: 3.0.2 2825 | fast-safe-stringify: 2.1.1 2826 | help-me: 5.0.0 2827 | joycon: 3.1.1 2828 | minimist: 1.2.8 2829 | on-exit-leak-free: 2.1.0 2830 | pino-abstract-transport: 2.0.0 2831 | pump: 3.0.0 2832 | secure-json-parse: 2.7.0 2833 | sonic-boom: 4.2.0 2834 | strip-json-comments: 3.1.1 2835 | 2836 | pino-std-serializers@7.0.0: {} 2837 | 2838 | pino@9.5.0: 2839 | dependencies: 2840 | atomic-sleep: 1.0.0 2841 | fast-redact: 3.2.0 2842 | on-exit-leak-free: 2.1.0 2843 | pino-abstract-transport: 2.0.0 2844 | pino-std-serializers: 7.0.0 2845 | process-warning: 4.0.0 2846 | quick-format-unescaped: 4.0.4 2847 | real-require: 0.2.0 2848 | safe-stable-stringify: 2.4.3 2849 | sonic-boom: 4.2.0 2850 | thread-stream: 3.1.0 2851 | 2852 | pirates@4.0.5: {} 2853 | 2854 | postcss-load-config@6.0.1(postcss@8.4.49): 2855 | dependencies: 2856 | lilconfig: 3.1.2 2857 | optionalDependencies: 2858 | postcss: 8.4.49 2859 | 2860 | postcss@8.4.49: 2861 | dependencies: 2862 | nanoid: 3.3.7 2863 | picocolors: 1.1.1 2864 | source-map-js: 1.2.1 2865 | 2866 | prelude-ls@1.2.1: {} 2867 | 2868 | prettier-linter-helpers@1.0.0: 2869 | dependencies: 2870 | fast-diff: 1.3.0 2871 | 2872 | prettier-plugin-organize-imports@4.1.0(prettier@3.3.3)(typescript@5.6.3): 2873 | dependencies: 2874 | prettier: 3.3.3 2875 | typescript: 5.6.3 2876 | 2877 | prettier@3.3.3: {} 2878 | 2879 | process-warning@4.0.0: {} 2880 | 2881 | proxy-addr@2.0.7: 2882 | dependencies: 2883 | forwarded: 0.2.0 2884 | ipaddr.js: 1.9.1 2885 | 2886 | pump@3.0.0: 2887 | dependencies: 2888 | end-of-stream: 1.4.4 2889 | once: 1.4.0 2890 | 2891 | punycode@2.3.0: {} 2892 | 2893 | queue-microtask@1.2.3: {} 2894 | 2895 | quick-format-unescaped@4.0.4: {} 2896 | 2897 | readdirp@4.0.2: {} 2898 | 2899 | real-require@0.2.0: {} 2900 | 2901 | require-from-string@2.0.2: {} 2902 | 2903 | resolve-from@4.0.0: {} 2904 | 2905 | resolve-from@5.0.0: {} 2906 | 2907 | ret@0.5.0: {} 2908 | 2909 | reusify@1.0.4: {} 2910 | 2911 | rfdc@1.4.1: {} 2912 | 2913 | rollup@4.25.0: 2914 | dependencies: 2915 | '@types/estree': 1.0.6 2916 | optionalDependencies: 2917 | '@rollup/rollup-android-arm-eabi': 4.25.0 2918 | '@rollup/rollup-android-arm64': 4.25.0 2919 | '@rollup/rollup-darwin-arm64': 4.25.0 2920 | '@rollup/rollup-darwin-x64': 4.25.0 2921 | '@rollup/rollup-freebsd-arm64': 4.25.0 2922 | '@rollup/rollup-freebsd-x64': 4.25.0 2923 | '@rollup/rollup-linux-arm-gnueabihf': 4.25.0 2924 | '@rollup/rollup-linux-arm-musleabihf': 4.25.0 2925 | '@rollup/rollup-linux-arm64-gnu': 4.25.0 2926 | '@rollup/rollup-linux-arm64-musl': 4.25.0 2927 | '@rollup/rollup-linux-powerpc64le-gnu': 4.25.0 2928 | '@rollup/rollup-linux-riscv64-gnu': 4.25.0 2929 | '@rollup/rollup-linux-s390x-gnu': 4.25.0 2930 | '@rollup/rollup-linux-x64-gnu': 4.25.0 2931 | '@rollup/rollup-linux-x64-musl': 4.25.0 2932 | '@rollup/rollup-win32-arm64-msvc': 4.25.0 2933 | '@rollup/rollup-win32-ia32-msvc': 4.25.0 2934 | '@rollup/rollup-win32-x64-msvc': 4.25.0 2935 | fsevents: 2.3.2 2936 | 2937 | run-parallel@1.2.0: 2938 | dependencies: 2939 | queue-microtask: 1.2.3 2940 | 2941 | safe-regex2@4.0.0: 2942 | dependencies: 2943 | ret: 0.5.0 2944 | 2945 | safe-stable-stringify@2.4.3: {} 2946 | 2947 | secure-json-parse@2.7.0: {} 2948 | 2949 | semver@7.6.3: {} 2950 | 2951 | set-cookie-parser@2.6.0: {} 2952 | 2953 | setprototypeof@1.2.0: {} 2954 | 2955 | shebang-command@2.0.0: 2956 | dependencies: 2957 | shebang-regex: 3.0.0 2958 | 2959 | shebang-regex@3.0.0: {} 2960 | 2961 | siginfo@2.0.0: {} 2962 | 2963 | signal-exit@4.1.0: {} 2964 | 2965 | sonic-boom@4.2.0: 2966 | dependencies: 2967 | atomic-sleep: 1.0.0 2968 | 2969 | source-map-js@1.2.1: {} 2970 | 2971 | source-map@0.8.0-beta.0: 2972 | dependencies: 2973 | whatwg-url: 7.1.0 2974 | 2975 | split2@4.2.0: {} 2976 | 2977 | stackback@0.0.2: {} 2978 | 2979 | statuses@2.0.1: {} 2980 | 2981 | std-env@3.8.0: {} 2982 | 2983 | string-width@4.2.3: 2984 | dependencies: 2985 | emoji-regex: 8.0.0 2986 | is-fullwidth-code-point: 3.0.0 2987 | strip-ansi: 6.0.1 2988 | 2989 | string-width@5.1.2: 2990 | dependencies: 2991 | eastasianwidth: 0.2.0 2992 | emoji-regex: 9.2.2 2993 | strip-ansi: 7.1.0 2994 | 2995 | strip-ansi@6.0.1: 2996 | dependencies: 2997 | ansi-regex: 5.0.1 2998 | 2999 | strip-ansi@7.1.0: 3000 | dependencies: 3001 | ansi-regex: 6.1.0 3002 | 3003 | strip-json-comments@3.1.1: {} 3004 | 3005 | sucrase@3.35.0: 3006 | dependencies: 3007 | '@jridgewell/gen-mapping': 0.3.3 3008 | commander: 4.1.1 3009 | glob: 10.4.5 3010 | lines-and-columns: 1.2.4 3011 | mz: 2.7.0 3012 | pirates: 4.0.5 3013 | ts-interface-checker: 0.1.13 3014 | 3015 | supports-color@7.2.0: 3016 | dependencies: 3017 | has-flag: 4.0.0 3018 | 3019 | synckit@0.9.2: 3020 | dependencies: 3021 | '@pkgr/core': 0.1.1 3022 | tslib: 2.8.1 3023 | 3024 | text-table@0.2.0: {} 3025 | 3026 | thenify-all@1.6.0: 3027 | dependencies: 3028 | thenify: 3.3.1 3029 | 3030 | thenify@3.3.1: 3031 | dependencies: 3032 | any-promise: 1.3.0 3033 | 3034 | thread-stream@3.1.0: 3035 | dependencies: 3036 | real-require: 0.2.0 3037 | 3038 | tinybench@2.9.0: {} 3039 | 3040 | tinyexec@0.3.1: {} 3041 | 3042 | tinyglobby@0.2.10: 3043 | dependencies: 3044 | fdir: 6.4.2(picomatch@4.0.2) 3045 | picomatch: 4.0.2 3046 | 3047 | tinypool@1.0.1: {} 3048 | 3049 | tinyrainbow@1.2.0: {} 3050 | 3051 | tinyspy@3.0.2: {} 3052 | 3053 | to-regex-range@5.0.1: 3054 | dependencies: 3055 | is-number: 7.0.0 3056 | 3057 | toad-cache@3.7.0: {} 3058 | 3059 | toidentifier@1.0.1: {} 3060 | 3061 | tr46@1.0.1: 3062 | dependencies: 3063 | punycode: 2.3.0 3064 | 3065 | tree-kill@1.2.2: {} 3066 | 3067 | ts-api-utils@1.4.0(typescript@5.6.3): 3068 | dependencies: 3069 | typescript: 5.6.3 3070 | 3071 | ts-interface-checker@0.1.13: {} 3072 | 3073 | tsconfck@3.1.4(typescript@5.6.3): 3074 | optionalDependencies: 3075 | typescript: 5.6.3 3076 | 3077 | tslib@2.8.1: {} 3078 | 3079 | tsup@8.3.5(postcss@8.4.49)(typescript@5.6.3): 3080 | dependencies: 3081 | bundle-require: 5.0.0(esbuild@0.24.0) 3082 | cac: 6.7.14 3083 | chokidar: 4.0.1 3084 | consola: 3.2.3 3085 | debug: 4.3.7 3086 | esbuild: 0.24.0 3087 | joycon: 3.1.1 3088 | picocolors: 1.1.1 3089 | postcss-load-config: 6.0.1(postcss@8.4.49) 3090 | resolve-from: 5.0.0 3091 | rollup: 4.25.0 3092 | source-map: 0.8.0-beta.0 3093 | sucrase: 3.35.0 3094 | tinyexec: 0.3.1 3095 | tinyglobby: 0.2.10 3096 | tree-kill: 1.2.2 3097 | optionalDependencies: 3098 | postcss: 8.4.49 3099 | typescript: 5.6.3 3100 | transitivePeerDependencies: 3101 | - jiti 3102 | - supports-color 3103 | - tsx 3104 | - yaml 3105 | 3106 | type-check@0.4.0: 3107 | dependencies: 3108 | prelude-ls: 1.2.1 3109 | 3110 | typescript-eslint@8.14.0(eslint@9.14.0)(typescript@5.6.3): 3111 | dependencies: 3112 | '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0)(typescript@5.6.3))(eslint@9.14.0)(typescript@5.6.3) 3113 | '@typescript-eslint/parser': 8.14.0(eslint@9.14.0)(typescript@5.6.3) 3114 | '@typescript-eslint/utils': 8.14.0(eslint@9.14.0)(typescript@5.6.3) 3115 | optionalDependencies: 3116 | typescript: 5.6.3 3117 | transitivePeerDependencies: 3118 | - eslint 3119 | - supports-color 3120 | 3121 | typescript@5.6.3: {} 3122 | 3123 | undici-types@6.19.8: {} 3124 | 3125 | uri-js@4.4.1: 3126 | dependencies: 3127 | punycode: 2.3.0 3128 | 3129 | vite-node@2.1.4(@types/node@22.9.0): 3130 | dependencies: 3131 | cac: 6.7.14 3132 | debug: 4.3.7 3133 | pathe: 1.1.2 3134 | vite: 5.4.11(@types/node@22.9.0) 3135 | transitivePeerDependencies: 3136 | - '@types/node' 3137 | - less 3138 | - lightningcss 3139 | - sass 3140 | - sass-embedded 3141 | - stylus 3142 | - sugarss 3143 | - supports-color 3144 | - terser 3145 | 3146 | vite-tsconfig-paths@5.1.2(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.0)): 3147 | dependencies: 3148 | debug: 4.3.4 3149 | globrex: 0.1.2 3150 | tsconfck: 3.1.4(typescript@5.6.3) 3151 | optionalDependencies: 3152 | vite: 5.4.11(@types/node@22.9.0) 3153 | transitivePeerDependencies: 3154 | - supports-color 3155 | - typescript 3156 | 3157 | vite@5.4.11(@types/node@22.9.0): 3158 | dependencies: 3159 | esbuild: 0.21.5 3160 | postcss: 8.4.49 3161 | rollup: 4.25.0 3162 | optionalDependencies: 3163 | '@types/node': 22.9.0 3164 | fsevents: 2.3.3 3165 | 3166 | vitest@2.1.4(@types/node@22.9.0): 3167 | dependencies: 3168 | '@vitest/expect': 2.1.4 3169 | '@vitest/mocker': 2.1.4(vite@5.4.11(@types/node@22.9.0)) 3170 | '@vitest/pretty-format': 2.1.4 3171 | '@vitest/runner': 2.1.4 3172 | '@vitest/snapshot': 2.1.4 3173 | '@vitest/spy': 2.1.4 3174 | '@vitest/utils': 2.1.4 3175 | chai: 5.1.2 3176 | debug: 4.3.7 3177 | expect-type: 1.1.0 3178 | magic-string: 0.30.12 3179 | pathe: 1.1.2 3180 | std-env: 3.8.0 3181 | tinybench: 2.9.0 3182 | tinyexec: 0.3.1 3183 | tinypool: 1.0.1 3184 | tinyrainbow: 1.2.0 3185 | vite: 5.4.11(@types/node@22.9.0) 3186 | vite-node: 2.1.4(@types/node@22.9.0) 3187 | why-is-node-running: 2.3.0 3188 | optionalDependencies: 3189 | '@types/node': 22.9.0 3190 | transitivePeerDependencies: 3191 | - less 3192 | - lightningcss 3193 | - msw 3194 | - sass 3195 | - sass-embedded 3196 | - stylus 3197 | - sugarss 3198 | - supports-color 3199 | - terser 3200 | 3201 | webidl-conversions@4.0.2: {} 3202 | 3203 | whatwg-url@7.1.0: 3204 | dependencies: 3205 | lodash.sortby: 4.7.0 3206 | tr46: 1.0.1 3207 | webidl-conversions: 4.0.2 3208 | 3209 | which@2.0.2: 3210 | dependencies: 3211 | isexe: 2.0.0 3212 | 3213 | why-is-node-running@2.3.0: 3214 | dependencies: 3215 | siginfo: 2.0.0 3216 | stackback: 0.0.2 3217 | 3218 | word-wrap@1.2.5: {} 3219 | 3220 | wrap-ansi@7.0.0: 3221 | dependencies: 3222 | ansi-styles: 4.3.0 3223 | string-width: 4.2.3 3224 | strip-ansi: 6.0.1 3225 | 3226 | wrap-ansi@8.1.0: 3227 | dependencies: 3228 | ansi-styles: 6.2.1 3229 | string-width: 5.1.2 3230 | strip-ansi: 7.1.0 3231 | 3232 | wrappy@1.0.2: {} 3233 | 3234 | yocto-queue@0.1.0: {} 3235 | -------------------------------------------------------------------------------- /prettier.config.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | 3 | /** 4 | * Prettier configuration 5 | * @see https://prettier.io/docs/en/configuration.html 6 | * @type {import("prettier").Config} 7 | */ 8 | export default { 9 | printWidth: 110, 10 | plugins: ["prettier-plugin-organize-imports"], 11 | organizeImportsSkipDestructiveCodeActions: false, 12 | }; 13 | -------------------------------------------------------------------------------- /src/bin/cli.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { pipeline } from "node:stream/promises"; 4 | import { build } from "../prettifier"; 5 | 6 | const stream = build({}); 7 | 8 | const main = async () => { 9 | await pipeline(process.stdin, stream); 10 | }; 11 | 12 | void main(); 13 | -------------------------------------------------------------------------------- /src/config/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./static"; 2 | -------------------------------------------------------------------------------- /src/config/static.ts: -------------------------------------------------------------------------------- 1 | export const { OS_HOSTNAME } = process.env; 2 | 3 | export enum LOG_LEVEL { 4 | TRACE = 10, 5 | DEBUG = 20, 6 | INFO = 30, 7 | WARN = 40, 8 | ERROR = 50, 9 | FATAL = 60, 10 | } 11 | 12 | export const LOG_LEVEL_LABEL: Record = { 13 | [LOG_LEVEL.TRACE]: "trace", 14 | [LOG_LEVEL.DEBUG]: "debug", 15 | [LOG_LEVEL.INFO]: " info", 16 | [LOG_LEVEL.WARN]: " warn", 17 | [LOG_LEVEL.ERROR]: "error", 18 | [LOG_LEVEL.FATAL]: "fatal", 19 | }; 20 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./utils/color"; 2 | 3 | import { build } from "./prettifier"; 4 | export default build; 5 | -------------------------------------------------------------------------------- /src/prettifier.ts: -------------------------------------------------------------------------------- 1 | import * as color from "kolorist"; 2 | import { EOL } from "os"; 3 | import type { LogDescriptor } from "pino"; 4 | import type PinoPretty from "pino-pretty"; 5 | import prettifier from "pino-pretty"; 6 | import type { LOG_LEVEL } from "./config"; 7 | import { 8 | colorJson, 9 | colorMsgForLevel, 10 | formatError, 11 | formatHostname, 12 | formatLevel, 13 | formatPlugin, 14 | formatProcessId, 15 | formatRequestId, 16 | formatSessionId, 17 | isSerializedError, 18 | serializeError, 19 | } from "./utils"; 20 | 21 | // eslint-disable-next-line @typescript-eslint/consistent-type-definitions 22 | export interface LogObject extends LogDescriptor { 23 | level: LOG_LEVEL; 24 | time: number; 25 | msg: string; 26 | pid: number; 27 | hostname: string; 28 | reqId?: string | number; 29 | sessionId?: string | number; 30 | plugin?: string; 31 | silent?: boolean; 32 | [s: string]: unknown; 33 | } 34 | 35 | const defaultOptions /*: PinoPretty.PrettyOptions*/ = { 36 | ignore: "pid,hostname", 37 | colorize: color.options.enabled, 38 | errorLikeObjectKeys: ["error", "err"], 39 | singleLine: true, 40 | hideObject: true, 41 | translateTime: "yyyy-mm-dd'T'HH:MM:sso", 42 | }; 43 | 44 | type PrettyOptions = PinoPretty.PrettyOptions; 45 | 46 | const prettifyTime = (inputData: string) => color.gray(String(inputData)); 47 | 48 | export const build = (options: PinoPretty.PrettyOptions) => { 49 | const { 50 | errorLikeObjectKeys = defaultOptions.errorLikeObjectKeys, 51 | ignore = defaultOptions.ignore, 52 | colorize = defaultOptions.colorize, 53 | } = options; 54 | const ignoredKeys = ignore.split(","); 55 | 56 | // Force colorize 57 | if (colorize && !color.options.enabled) { 58 | color.options.enabled = true; 59 | color.options.supportLevel = 2; /* SupportLevel.ansi256 */ 60 | } 61 | 62 | const messageFormat: PrettyOptions["messageFormat"] = (log, messageKey, _leveLabel) => { 63 | const { level, time, msg, reqId, sessionId, plugin, silent, ...otherProps } = log as LogObject; 64 | if (silent) { 65 | return ""; 66 | } 67 | const output = []; 68 | // Fastify request id 69 | if (!ignoredKeys.includes("reqId") && reqId) { 70 | output.push(formatRequestId(reqId), " "); 71 | } 72 | // Fastify session id 73 | if (!ignoredKeys.includes("sessionId") && sessionId) { 74 | output.push(formatSessionId(sessionId), " "); 75 | } 76 | // Message or error 77 | const firstErrorKey = errorLikeObjectKeys.find((key) => log[key]); 78 | if (firstErrorKey) { 79 | const error = log[firstErrorKey]; 80 | const serializedError = isSerializedError(error) ? error : serializeError(error); 81 | output.push(formatError(serializedError, level), EOL); 82 | } else { 83 | const formattedMsg = colorMsgForLevel(level)(String(log[messageKey])); 84 | output.push(formattedMsg); 85 | } 86 | // Fastify plugin name 87 | if (!ignoredKeys.includes("plugin") && plugin) { 88 | output.push(" ", formatPlugin(plugin)); 89 | } 90 | // Other props 91 | const outputProps = Object.keys(otherProps).reduce>((soFar, key) => { 92 | if (errorLikeObjectKeys.includes(key) || ignoredKeys.includes(key) || ["req", "res"].includes(key)) { 93 | return soFar; 94 | } 95 | soFar[key] = otherProps[key]; 96 | return soFar; 97 | }, {}); 98 | if (Object.keys(outputProps).length > 0) { 99 | output.push(" ", colorJson(outputProps)); 100 | } 101 | return output.concat(EOL).join(""); 102 | }; 103 | 104 | const customPrettifiers = { 105 | time: prettifyTime, 106 | level: formatLevel, 107 | hostname: formatHostname, 108 | pid: formatProcessId, 109 | } as unknown as NonNullable; 110 | 111 | return prettifier({ 112 | ...defaultOptions, 113 | customPrettifiers, 114 | messageFormat, 115 | ...options, 116 | colorize: false, 117 | }); 118 | }; 119 | -------------------------------------------------------------------------------- /src/utils/color.ts: -------------------------------------------------------------------------------- 1 | import * as color from "kolorist"; 2 | 3 | export const colorString = (s: unknown): string => color.green(`'${String(s)}'`); 4 | export const colorKeyword = (s: unknown): string => color.blue(String(s)); 5 | export const colorJson = (s: unknown): string => color.green(JSON.stringify(s)); 6 | export const colorStringArray = (a: unknown[]): string => `[ ${a.map(colorString).join(", ")} ]`; 7 | export const colorNumber = (n: unknown): string => color.yellow(String(n)); 8 | export const colorBoolean = (b: unknown): string => color.yellow(b ? "true" : "false"); 9 | export const colorDate = (d: Date): string => color.magenta(d.toISOString()); 10 | -------------------------------------------------------------------------------- /src/utils/error.ts: -------------------------------------------------------------------------------- 1 | import type { SerializedError } from "pino-std-serializers"; 2 | 3 | export const isObject = (maybeObject: unknown): maybeObject is Record => 4 | typeof maybeObject === "object" && maybeObject !== null; 5 | 6 | export const isString = (maybeString: unknown): maybeString is string => typeof maybeString === "string"; 7 | 8 | export const isValidError = (maybeError: unknown): maybeError is Error => { 9 | return ( 10 | isObject(maybeError) && 11 | "message" in maybeError && 12 | isString(maybeError["message"]) && 13 | "stack" in maybeError && 14 | isString(maybeError["stack"]) 15 | ); 16 | }; 17 | 18 | export const isSerializedError = (maybeError: unknown): maybeError is SerializedError => { 19 | return isObject(maybeError) && "raw" in maybeError && maybeError["raw"] instanceof Error; 20 | }; 21 | 22 | export const serializeError = (maybeError: unknown): SerializedError => { 23 | const raw = isValidError(maybeError) ? maybeError : new Error(String(maybeError)); 24 | return { 25 | type: "Error", 26 | message: raw.message, 27 | stack: String(raw.stack), 28 | raw, 29 | }; 30 | }; 31 | -------------------------------------------------------------------------------- /src/utils/format.ts: -------------------------------------------------------------------------------- 1 | import * as color from "kolorist"; 2 | import type { SerializedError } from "pino"; 3 | import { LOG_LEVEL, LOG_LEVEL_LABEL } from "../config"; 4 | 5 | const CWD = process.cwd(); 6 | const CWD_REGEX = new RegExp(CWD, "g"); 7 | 8 | export const colorForLevel = (level: LOG_LEVEL) => { 9 | switch (level) { 10 | case LOG_LEVEL.TRACE: 11 | return color.gray; 12 | case LOG_LEVEL.DEBUG: 13 | return color.cyan; 14 | case LOG_LEVEL.INFO: 15 | return color.green; 16 | case LOG_LEVEL.WARN: 17 | return color.yellow; 18 | case LOG_LEVEL.ERROR: 19 | return (...args: Parameters) => color.bold(color.red(...args)); 20 | case LOG_LEVEL.FATAL: 21 | return (...args: Parameters) => color.bold(color.bgRed(...args)); 22 | default: 23 | return color.white; 24 | } 25 | }; 26 | export const colorMsgForLevel = (level: LOG_LEVEL) => { 27 | switch (level) { 28 | case LOG_LEVEL.TRACE: 29 | return color.gray; 30 | case LOG_LEVEL.DEBUG: 31 | return color.white; 32 | case LOG_LEVEL.INFO: 33 | return color.white; 34 | case LOG_LEVEL.WARN: 35 | return color.yellow; 36 | case LOG_LEVEL.ERROR: 37 | return (...args: Parameters) => color.bold(color.red(...args)); 38 | case LOG_LEVEL.FATAL: 39 | return (...args: Parameters) => color.bold(color.bgRed(...args)); 40 | default: 41 | return color.white; 42 | } 43 | }; 44 | 45 | import { EOL } from "os"; 46 | export const formatTime = (time: number): string => new Date(time).toISOString(); 47 | export const colorizeTime = (time: string): string => color.gray(time); 48 | export const formatLevel = (level: LOG_LEVEL): string => colorForLevel(level)(LOG_LEVEL_LABEL[level]); 49 | export const formatProcessId = (pid: number): string => color.magenta(`*${pid}`); 50 | export const formatHostname = (hostname: string | number): string => color.gray(`@${hostname}`); 51 | export const formatSessionId = (id: string | number): string => color.magenta(`%${id}`); 52 | export const formatRequestId = (id: string | number): string => color.magenta(`#${id}`); 53 | export const formatPlugin = (plugin: string): string => color.gray(`(${plugin})`); 54 | export const formatErrorStack = (stack: string): string => 55 | color.gray(stack.replace(CWD_REGEX, ".").split(EOL).slice(1).join(EOL)); 56 | 57 | export const formatError = (error: SerializedError, level: LOG_LEVEL): string => { 58 | const { statusCode = 500, type = String(error["name"]), stack = `${EOL} at ???` } = error; 59 | // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison 60 | const supportsArt = color.options.supportLevel === 2; /* SupportLevel.ansi256 */ 61 | const icon = supportsArt ? "×" : "x"; 62 | 63 | const isInternalError = !statusCode || statusCode >= 500; 64 | const output = [ 65 | color[isInternalError ? "red" : "yellow"](`${icon}${type} `), 66 | color.magenta(Number(statusCode)), 67 | ]; 68 | 69 | if (isInternalError) { 70 | output.push(colorForLevel(level)(`: ${error.message}`), EOL, formatErrorStack(stack)); 71 | } else { 72 | output.push(`: ${error.message}`); 73 | } 74 | return output.join(""); 75 | }; 76 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./color"; 2 | export * from "./error"; 3 | export * from "./format"; 4 | -------------------------------------------------------------------------------- /test/fixtures/fastify.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | import fastifyRequestLogger from "@mgcrea/fastify-request-logger"; 3 | import createFastify, { type FastifyInstance, type FastifyServerOptions } from "fastify"; 4 | import createError from "http-errors"; 5 | import { fsyncSync } from "node:fs"; 6 | 7 | type BuilfFastifyOptions = FastifyServerOptions; 8 | 9 | const logger: FastifyServerOptions["logger"] = { 10 | level: "debug", 11 | transport: { 12 | target: require.resolve("./target.mjs"), 13 | options: { 14 | colorize: true, 15 | sync: true, 16 | }, 17 | }, 18 | }; 19 | 20 | export const buildFastify = (options: BuilfFastifyOptions = {}): FastifyInstance => { 21 | const { ...fastifyOptions } = options; 22 | const fastify = createFastify({ logger, disableRequestLogging: true, ...fastifyOptions }); 23 | 24 | fastify.register(fastifyRequestLogger); 25 | 26 | fastify.get("/", (request, reply) => { 27 | reply.send({ hello: "world", method: request.method }); 28 | }); 29 | 30 | fastify.get("/400", () => { 31 | throw createError(400); 32 | }); 33 | 34 | fastify.get("/500", () => { 35 | throw createError(500); 36 | }); 37 | 38 | fastify.post("/", (request, reply) => { 39 | request.log.info({ sessionId: "abcdef" }, "Created a new session"); 40 | reply.send({ hello: "world", method: request.method }); 41 | }); 42 | fastify.get("/silent", (request, reply) => { 43 | request.log.info({ sessionId: "abcdef", silent: true }, "Created a new session"); 44 | reply.send({ hello: "world", method: request.method }); 45 | }); 46 | 47 | return fastify; 48 | }; 49 | 50 | process.on("uncaughtException", (err) => { 51 | console.error("uncaughtException", err); 52 | fsyncSync(1); 53 | }); 54 | process.on("unhandledRejection", (reason, _promise) => { 55 | console.error("unhandledRejection", reason); 56 | fsyncSync(1); 57 | }); 58 | -------------------------------------------------------------------------------- /test/fixtures/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./fastify"; 2 | -------------------------------------------------------------------------------- /test/fixtures/target.mjs: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 2 | // @ts-ignore 3 | import pretty from "../../dist/index.js"; 4 | 5 | export default pretty; 6 | -------------------------------------------------------------------------------- /test/fixtures/target.ts: -------------------------------------------------------------------------------- 1 | import pretty from "../../src"; 2 | 3 | export default pretty; 4 | -------------------------------------------------------------------------------- /test/spec/index.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, test } from "vitest"; 2 | 3 | describe("module", () => { 4 | test("src exports", async () => { 5 | const module = await import("../../src"); 6 | expect(Object.keys(module)).toMatchInlineSnapshot(` 7 | [ 8 | "colorString", 9 | "colorKeyword", 10 | "colorJson", 11 | "colorStringArray", 12 | "colorNumber", 13 | "colorBoolean", 14 | "colorDate", 15 | "default", 16 | ] 17 | `); 18 | }); 19 | test("dist exports", async () => { 20 | const module = await import("../../dist"); 21 | expect(Object.keys(module)).toMatchInlineSnapshot(` 22 | [ 23 | "colorBoolean", 24 | "colorDate", 25 | "colorJson", 26 | "colorKeyword", 27 | "colorNumber", 28 | "colorString", 29 | "colorStringArray", 30 | "default", 31 | ] 32 | `); 33 | }); 34 | }); 35 | -------------------------------------------------------------------------------- /test/spec/pino.spec.ts: -------------------------------------------------------------------------------- 1 | import pino from "pino"; 2 | import { describe, expect, it, vi } from "vitest"; 3 | 4 | describe("with pino directly", () => { 5 | it("should properly work when passed as a transpord", () => { 6 | const log = pino({ level: "debug", transport: { target: "@mgcrea/pino-pretty-compact" } }); 7 | expect(log).toBeDefined(); 8 | const spy = vi.spyOn(log, "info"); 9 | log.info("foo"); 10 | expect(spy).toHaveBeenCalledOnce(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /test/spec/plugin.spec.ts: -------------------------------------------------------------------------------- 1 | import { fsyncSync } from "node:fs"; 2 | import { buildFastify } from "test/fixtures"; 3 | import { afterAll, beforeAll, describe, expect, it } from "vitest"; 4 | 5 | let fastify: ReturnType; 6 | beforeAll(() => { 7 | fastify = buildFastify(); 8 | }); 9 | 10 | describe("with fastify path", () => { 11 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 12 | const context = new Map([ 13 | ["payload", { foo: "bar" }], 14 | ["token", "abc"], 15 | ]); 16 | afterAll(() => { 17 | void fastify.close(); 18 | fsyncSync(1); 19 | }); 20 | it("should properly log a GET request", async () => { 21 | const response = await fastify.inject({ 22 | method: "GET", 23 | url: "/", 24 | headers: { 25 | authorization: `Bearer ${context.get("token")}`, 26 | }, 27 | }); 28 | expect(response.statusCode).toEqual(200); 29 | }); 30 | it("should properly log a POST request", async () => { 31 | const response = await fastify.inject({ 32 | method: "POST", 33 | url: "/", 34 | payload: context.get("payload"), 35 | }); 36 | expect(response.statusCode).toEqual(200); 37 | }); 38 | it("should properly log a 400 error", async () => { 39 | const response = await fastify.inject({ 40 | method: "GET", 41 | url: "/400", 42 | }); 43 | expect(response.statusCode).toEqual(400); 44 | }); 45 | it("should properly log a 500 error", async () => { 46 | const response = await fastify.inject({ 47 | method: "GET", 48 | url: "/500", 49 | }); 50 | expect(response.statusCode).toEqual(500); 51 | }); 52 | it("should properly log a 404 error", async () => { 53 | const response = await fastify.inject({ 54 | method: "GET", 55 | url: "/404", 56 | }); 57 | expect(response.statusCode).toEqual(404); 58 | }); 59 | it("should silence log", async () => { 60 | const response = await fastify.inject({ 61 | method: "GET", 62 | url: "/silent", 63 | }); 64 | expect(response.statusCode).toEqual(200); 65 | }); 66 | }); 67 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "@tsconfig/node-lts/tsconfig.json", 4 | "@tsconfig/strictest/tsconfig.json", 5 | "@tsconfig/esm/tsconfig.json" 6 | ], 7 | "compilerOptions": { 8 | "baseUrl": ".", 9 | "outDir": "dist", 10 | "paths": { 11 | "src/*": ["./src/*"], 12 | "test/*": ["./test/*"] 13 | }, 14 | "esModuleInterop": true 15 | }, 16 | "include": ["src", "test", "*.mjs"] 17 | } 18 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import tsconfigPaths from "vite-tsconfig-paths"; 2 | import { defineConfig } from "vitest/config"; 3 | 4 | export default defineConfig({ 5 | plugins: [tsconfigPaths()], 6 | }); 7 | --------------------------------------------------------------------------------