From 91b8cd844a1597ad2fc78117795d49a926b6e21e Mon Sep 17 00:00:00 2001 From: Nick Kosarev Date: Wed, 19 Jun 2024 13:34:26 +0200 Subject: [PATCH] bun change to node, svelte 5, some refactoring --- .dockerignore | 2 +- .env.example | 3 + .github/workflows/test-and-lint.yml | 9 +- Dockerfile | 51 +- README.md | 9 +- bun.lockb | Bin 254702 -> 0 bytes package-lock.json | 8655 +++++++++++++++++ package.json | 17 +- .../game/actions/donateWoodToVillageAction.ts | 2 +- src/lib/game/actions/plantTreeAction.ts | 2 +- src/lib/game/actions/voteAction.ts | 2 +- .../game/{baseGame.ts => baseGame.svelte.ts} | 72 +- src/lib/game/common/inventory.ts | 2 +- .../components/wagonEngineCloudsContainer.ts | 2 +- src/lib/game/objects/baseWagon.ts | 26 +- src/lib/game/quests/baseQuest.ts | 2 +- src/lib/game/quests/noTradingPostQuest.ts | 2 +- .../game/quests/treesAreRunningOutQuest.ts | 2 +- .../services/{ => action}/actionService.ts | 76 +- src/lib/game/services/action/answer.ts | 58 + src/lib/game/services/action/interface.ts | 5 + src/lib/game/services/event/event.ts | 4 +- src/lib/game/services/event/eventService.ts | 97 +- src/lib/game/services/event/interface.ts | 36 + src/lib/game/services/interface.ts | 71 - src/lib/game/services/quest/interface.ts | 37 + .../services/{event => quest}/questService.ts | 47 +- src/lib/game/services/route/interface.ts | 22 + .../game/{common => services/route}/route.ts | 2 +- .../game/services/{ => route}/routeService.ts | 12 +- src/lib/game/services/socket/interface.ts | 5 + .../game/services/socket/webSocketService.ts | 90 + src/lib/game/services/trade/interface.ts | 6 + .../game/services/{ => trade}/tradeService.ts | 18 +- src/lib/game/services/wagon/interface.ts | 29 + .../game/services/{ => wagon}/wagonService.ts | 22 +- src/lib/game/types.ts | 62 +- src/lib/game/utils/webSocketManager.ts | 37 - src/lib/server/socket/websocket.server.ts | 25 + src/routes/(game)/play/+page.svelte | 62 +- src/routes/(game)/play/GameChunkInfo.svelte | 2 +- src/routes/(game)/play/GameCommand.svelte | 4 +- src/routes/(game)/play/GameEventCard.svelte | 2 +- src/routes/(game)/play/GameEvents.svelte | 2 +- src/routes/(game)/play/GameInterface.svelte | 4 +- .../(game)/play/GamePollProgress.svelte | 2 +- src/routes/(game)/play/GameQuestTask.svelte | 2 +- .../(game)/play/GameQuestTaskProgress.svelte | 4 +- src/routes/(game)/play/GameRouteInfo.svelte | 4 +- src/routes/(server)/api/socket/+server.ts | 20 + src/routes/(website)/+page.svelte | 12 +- svelte.config.js | 2 +- 52 files changed, 9252 insertions(+), 491 deletions(-) delete mode 100644 bun.lockb create mode 100644 package-lock.json rename src/lib/game/{baseGame.ts => baseGame.svelte.ts} (87%) rename src/lib/game/services/{ => action}/actionService.ts (91%) create mode 100644 src/lib/game/services/action/answer.ts create mode 100644 src/lib/game/services/action/interface.ts create mode 100644 src/lib/game/services/event/interface.ts create mode 100644 src/lib/game/services/quest/interface.ts rename src/lib/game/services/{event => quest}/questService.ts (84%) create mode 100644 src/lib/game/services/route/interface.ts rename src/lib/game/{common => services/route}/route.ts (97%) rename src/lib/game/services/{ => route}/routeService.ts (89%) create mode 100644 src/lib/game/services/socket/interface.ts create mode 100644 src/lib/game/services/socket/webSocketService.ts create mode 100644 src/lib/game/services/trade/interface.ts rename src/lib/game/services/{ => trade}/tradeService.ts (92%) create mode 100644 src/lib/game/services/wagon/interface.ts rename src/lib/game/services/{ => wagon}/wagonService.ts (87%) delete mode 100644 src/lib/game/utils/webSocketManager.ts create mode 100644 src/lib/server/socket/websocket.server.ts create mode 100644 src/routes/(server)/api/socket/+server.ts diff --git a/.dockerignore b/.dockerignore index 282d8ed0..7ee74781 100644 --- a/.dockerignore +++ b/.dockerignore @@ -15,7 +15,7 @@ README.md build package docker-compose* -LICENSE +LICENSE.txt Makefile helm-charts .env diff --git a/.env.example b/.env.example index a310c1dd..f0d13c1e 100644 --- a/.env.example +++ b/.env.example @@ -18,5 +18,8 @@ PUBLIC_COOKIE_KEY="" # Our secret... PRIVATE_JWT_SECRET_KEY="" +# WebSocket server with event messages +PUBLIC_WEBSOCKET_URL="ws://localhost:4002" + # Example of local DB DATABASE_URL="postgresql://postgres:postgres@localhost:6432/db?schema=public&connect_timeout=300" \ No newline at end of file diff --git a/.github/workflows/test-and-lint.yml b/.github/workflows/test-and-lint.yml index 2b593918..5154199b 100644 --- a/.github/workflows/test-and-lint.yml +++ b/.github/workflows/test-and-lint.yml @@ -12,15 +12,14 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v1 - - run: bun install + - run: npm ci --legacy-peer-deps - name: ESLint - run: bun run lint + run: npm run lint - name: Find circular dependencies - run: bun run lint:deps + run: npm run lint:deps - name: Check Svelte files - run: bun run check + run: npm run check diff --git a/Dockerfile b/Dockerfile index c0a17361..e92e2eb5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,17 @@ -FROM oven/bun:1 as base -WORKDIR /usr/src/app - -# install dependencies into temp directory -# this will cache them and speed up future builds -FROM base AS install -RUN mkdir -p /temp/dev -COPY package.json bun.lockb /temp/dev/ -RUN cd /temp/dev && bun install --frozen-lockfile - -# install with --production (exclude devDependencies) -RUN mkdir -p /temp/prod -COPY package.json bun.lockb /temp/prod/ -RUN cd /temp/prod && bun install --frozen-lockfile --production - -# copy node_modules from temp directory -# then copy all (non-ignored) project files into the image -FROM base AS prerelease -COPY --from=install /temp/dev/node_modules node_modules +FROM node:20-alpine AS builder +WORKDIR /app +COPY package*.json . +RUN npm ci --legacy-peer-deps COPY . . +RUN npx prisma generate +RUN npm run build +RUN npm prune --omit=dev --legacy-peer-deps -# [optional] tests & build +FROM node:20-alpine +WORKDIR /app +COPY --from=builder /app/build build/ +COPY --from=builder /app/node_modules node_modules/ +COPY package.json . +EXPOSE 3000 ENV NODE_ENV=production -# RUN bun test -RUN bunx prisma generate -RUN bun run build - -# copy dependencies and source code into final image -FROM base AS release -COPY --from=install /temp/dev/node_modules node_modules -COPY --from=install /temp/prod/node_modules node_modules -COPY --from=prerelease /usr/src/app/node_modules node_modules -COPY --from=prerelease /usr/src/app/build . - -ARG PORT=3000 -ENV PORT=$PORT - -USER bun -EXPOSE $PORT/tcp -ENTRYPOINT [ "bun", "run", "start" ] +CMD [ "node", "build" ] \ No newline at end of file diff --git a/README.md b/README.md index b2981019..d62b7d9a 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ 🤔 Imagine procedurally generated world where you and your viewers can: - 💬 **Use commands** in chat to see actions in real time -- 🗺️ **Travel** with the Machine +- 🗺️ **Travel** with the Wagon - 🦄 **Complete** main and side quests from game characters - 💎 **Gather** a variety of materials - 🏗️ **Construct** buildings @@ -26,7 +26,6 @@ Let's build a similar world together! ⭐️ Become a Stargazer ⭐️ - [Prisma](https://www.prisma.io/): Next-generation Node.js and TypeScript ORM. - [Howler.js](https://howlerjs.com/): Audio library for the modern web. - [Lucide Svelte](https://lucide.dev/guide/packages/lucide-svelte): An open-source icon library. -- [Bun](https://bun.sh/): An all-in-one JavaScript runtime & toolkit designed for speed, complete with a bundler, test runner, and Node.js-compatible package manager. - [TypeScript](https://www.typescriptlang.org/): A strongly typed programming language that builds on JavaScript, giving you better tooling at any scale. - [ESLint](https://eslint.org/): Statically analyzes a code to quickly find problems. @@ -36,10 +35,10 @@ Clone this repo and use standard commands: ```shell git clone https://github.com/hmbanan666/chat-game -bun install -bun run dev +npm install +npm run dev ``` ## 🪀 License -This project is licensed under the MIT License - see the [**MIT License**](https://github.com/hmbanan666/chat-game/blob/main/LICENSE) file for details. \ No newline at end of file +This project is licensed under the MIT License - see the [**MIT License**](https://github.com/hmbanan666/chat-game/blob/main/LICENSE.txt) file for details. diff --git a/bun.lockb b/bun.lockb deleted file mode 100644 index c6cc083c9d0c63fbaba1d42a87bfa119bf234f1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254702 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�Og2joeTx7Vx5oiuy?&Nr6t;2ol@X#!ZRy|(^K}D=o zEUt(cZSYY%v|Zj)-BoJ-!SVUyPn}FHzAvNt2ZWT zIMOXUx|`{cr*cOMO_lL8Ey1ct17TG(Jc}>btEvw^T_t9#JGSgrOJX~SVRXDBnS8Dd znBG{qsff0iR67%Qt{^I{kx}KC%t|7v0uwS?yv_B|%;?lnXN~!?1lVUU?b?226YMf( zn8>APIq{=AyUviz1=tcmu!^pfS0kCre&7 zNHnLnva5?}gDgp93u{-+atalldAl%W&+X7oB`E`E96r{Vy=X)3a91WP-7);rY8&0! zNkgz!M8CzcP-6urRrTH_3;Coee7KpIryiY*hdtoEklPFd%J;NJKzktsR9r`sDUPJz z%y*tlm9fz{twWl{%)@h$M}b~Q7jCgK>uxB3syNU@Rbd2v&7B5LGuG>{iRpIjWe5Ok z;e!4V15i`sV=R!@Akgr&DAl!1kt3XU-Y1m8lPNkS^1h*^8K$rjHxttQ1$Qvy-@2TM z=?jbZUIg6SfMKxO{k+Y=_)pQ&$>Txc7lGKq=&<)+6#{QnG|d6TtG)jOr&|V z11wdbUSb~?p2(-K2T29oWg$gkW+>Ka>A^8}SKPih#5+s4D-LzjitM1yAa(9n;>3hM z>81$WjU_P%lIJV1_&=yei^gw2pcpR~*u9W;iP)^@6$i8z(rU*#RDp8f3t??E#jx%F H(|`XL-!LH$ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..7b065916 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8655 @@ +{ + "name": "chat-game", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chat-game", + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "@paralleldrive/cuid2": "2.2.2", + "@prisma/client": "5.15.1", + "@radix-ui/colors": "3.0.0", + "@twurple/api": "7.1.0", + "@twurple/auth": "7.1.0", + "@twurple/easy-bot": "7.1.0", + "@twurple/pubsub": "7.1.0", + "hono": "4.4.7", + "howler": "2.2.4", + "jsonwebtoken": "9.0.2", + "lucide-svelte": "0.395.0", + "pixi.js": "8.1.8", + "ws": "8.17.1" + }, + "devDependencies": { + "@antfu/eslint-config": "2.21.1", + "@sveltejs/adapter-node": "5.2.0", + "@sveltejs/kit": "2.5.17", + "@sveltejs/vite-plugin-svelte": "3.1.1", + "@types/howler": "2.2.11", + "@types/jsonwebtoken": "9.0.6", + "eslint": "9.5.0", + "eslint-plugin-svelte": "2.40.0", + "madge": "7.0.0", + "prisma": "5.15.1", + "svelte": "5.0.0-next.158", + "svelte-check": "3.8.1", + "typescript": "5.4.5", + "vite": "5.3.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/eslint-config": { + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-2.21.1.tgz", + "integrity": "sha512-CG7U7nihU73zufrxe5Rr4pxsHrW60GXl9yzRpRY+ImGQ2CVhd0eb3fqJYdNwDJBgKgqHGWX4p1ovYvno/jfWHA==", + "dev": true, + "dependencies": { + "@antfu/install-pkg": "^0.3.3", + "@clack/prompts": "^0.7.0", + "@stylistic/eslint-plugin": "^2.1.0", + "@typescript-eslint/eslint-plugin": "^7.13.0", + "@typescript-eslint/parser": "^7.13.0", + "eslint-config-flat-gitignore": "^0.1.5", + "eslint-flat-config-utils": "^0.2.5", + "eslint-merge-processors": "^0.1.0", + "eslint-plugin-antfu": "^2.3.3", + "eslint-plugin-command": "^0.2.3", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-import-x": "^0.5.1", + "eslint-plugin-jsdoc": "^48.2.9", + "eslint-plugin-jsonc": "^2.16.0", + "eslint-plugin-markdown": "^5.0.0", + "eslint-plugin-n": "^17.8.1", + "eslint-plugin-no-only-tests": "^3.1.0", + "eslint-plugin-perfectionist": "^2.10.0", + "eslint-plugin-regexp": "^2.6.0", + "eslint-plugin-toml": "^0.11.0", + "eslint-plugin-unicorn": "^53.0.0", + "eslint-plugin-unused-imports": "^3.2.0", + "eslint-plugin-vitest": "^0.5.4", + "eslint-plugin-vue": "^9.26.0", + "eslint-plugin-yml": "^1.14.0", + "eslint-processor-vue-blocks": "^0.1.2", + "globals": "^15.4.0", + "jsonc-eslint-parser": "^2.4.0", + "local-pkg": "^0.5.0", + "parse-gitignore": "^2.0.0", + "picocolors": "^1.0.1", + "toml-eslint-parser": "^0.9.3", + "vue-eslint-parser": "^9.4.3", + "yaml-eslint-parser": "^1.2.3", + "yargs": "^17.7.2" + }, + "bin": { + "eslint-config": "bin/index.js" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@eslint-react/eslint-plugin": "^1.5.8", + "@prettier/plugin-xml": "^3.4.1", + "@unocss/eslint-plugin": ">=0.50.0", + "astro-eslint-parser": "^1.0.2", + "eslint": ">=8.40.0", + "eslint-plugin-astro": "^1.2.0", + "eslint-plugin-format": ">=0.1.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.4", + "eslint-plugin-solid": "^0.13.2", + "eslint-plugin-svelte": ">=2.35.1", + "prettier-plugin-astro": "^0.13.0", + "prettier-plugin-slidev": "^1.0.5", + "svelte-eslint-parser": "^0.33.1" + }, + "peerDependenciesMeta": { + "@eslint-react/eslint-plugin": { + "optional": true + }, + "@prettier/plugin-xml": { + "optional": true + }, + "@unocss/eslint-plugin": { + "optional": true + }, + "astro-eslint-parser": { + "optional": true + }, + "eslint-plugin-astro": { + "optional": true + }, + "eslint-plugin-format": { + "optional": true + }, + "eslint-plugin-react-hooks": { + "optional": true + }, + "eslint-plugin-react-refresh": { + "optional": true + }, + "eslint-plugin-solid": { + "optional": true + }, + "eslint-plugin-svelte": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-slidev": { + "optional": true + }, + "svelte-eslint-parser": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", + "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/type-utils": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", + "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/parser": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", + "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@antfu/eslint-config/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@antfu/eslint-config/node_modules/eslint-plugin-perfectionist": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-2.11.0.tgz", + "integrity": "sha512-XrtBtiu5rbQv88gl+1e2RQud9te9luYNvKIgM9emttQ2zutHPzY/AQUucwxscDKV4qlTkvLTxjOFvxqeDpPorw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^6.13.0 || ^7.0.0", + "minimatch": "^9.0.3", + "natural-compare-lite": "^1.4.0" + }, + "peerDependencies": { + "astro-eslint-parser": "^1.0.2", + "eslint": ">=8.0.0", + "svelte": ">=3.0.0", + "svelte-eslint-parser": "^0.37.0", + "vue-eslint-parser": ">=9.0.0" + }, + "peerDependenciesMeta": { + "astro-eslint-parser": { + "optional": true + }, + "svelte": { + "optional": true + }, + "svelte-eslint-parser": { + "optional": true + }, + "vue-eslint-parser": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@antfu/eslint-config/node_modules/eslint-plugin-unused-imports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.2.0.tgz", + "integrity": "sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==", + "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "6 - 7", + "eslint": "8" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@antfu/eslint-config/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@antfu/eslint-config/node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@antfu/eslint-config/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@antfu/eslint-config/node_modules/svelte": { + "version": "4.2.18", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.18.tgz", + "integrity": "sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.3.3.tgz", + "integrity": "sha512-nHHsk3NXQ6xkCfiRRC8Nfrg8pU5kkr3P3Y9s9dKqiuRmBD0Yap7fymNDjGFKeWhZQHqqbCS5CfeMy9wtExM24w==", + "dev": true, + "dependencies": { + "@jsdevtools/ez-spawn": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.8.tgz", + "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@clack/core": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.4.tgz", + "integrity": "sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.7.0.tgz", + "integrity": "sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==", + "bundleDependencies": [ + "is-unicode-supported" + ], + "dev": true, + "dependencies": { + "@clack/core": "^0.3.3", + "is-unicode-supported": "*", + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts/node_modules/is-unicode-supported": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@d-fischer/cache-decorators": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@d-fischer/cache-decorators/-/cache-decorators-4.0.1.tgz", + "integrity": "sha512-HNYLBLWs/t28GFZZeqdIBqq8f37mqDIFO6xNPof94VjpKvuP6ROqCZGafx88dk5zZUlBfViV9jD8iNNlXfc4CA==", + "dependencies": { + "@d-fischer/shared-utils": "^3.6.3", + "tslib": "^2.6.2" + } + }, + "node_modules/@d-fischer/connection": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@d-fischer/connection/-/connection-9.0.0.tgz", + "integrity": "sha512-Mljp/EbaE+eYWfsFXUOk+RfpbHgrWGL/60JkAvjYixw6KREfi5r17XdUiXe54ByAQox6jwgdN2vebdmW1BT+nQ==", + "dependencies": { + "@d-fischer/isomorphic-ws": "^7.0.0", + "@d-fischer/logger": "^4.2.1", + "@d-fischer/shared-utils": "^3.5.0", + "@d-fischer/typed-event-emitter": "^3.3.0", + "@types/ws": "^8.5.4", + "tslib": "^2.4.1", + "ws": "^8.11.0" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@d-fischer/cross-fetch": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@d-fischer/cross-fetch/-/cross-fetch-5.0.5.tgz", + "integrity": "sha512-symjDUPInTrkfIsZc2n2mo9hiAJLcTJsZkNICjZajEWnWpJ3s3zn50/FY8xpNUAf5w3eFuQii2wxztTGpvG1Xg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/@d-fischer/deprecate": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@d-fischer/deprecate/-/deprecate-2.0.2.tgz", + "integrity": "sha512-wlw3HwEanJFJKctwLzhfOM6LKwR70FPfGZGoKOhWBKyOPXk+3a9Cc6S9zhm6tka7xKtpmfxVIReGUwPnMbIaZg==" + }, + "node_modules/@d-fischer/detect-node": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@d-fischer/detect-node/-/detect-node-3.0.1.tgz", + "integrity": "sha512-0Rf3XwTzuTh8+oPZW9SfxTIiL+26RRJ0BRPwj5oVjZFyFKmsj9RGfN2zuTRjOuA3FCK/jYm06HOhwNK+8Pfv8w==" + }, + "node_modules/@d-fischer/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@d-fischer/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-7eoxnxcto5eVPW5h1T+ePnVFukmI9f/ZR9nlBLh1t3kyzJDUNor2C+YW9H/Terw3YnbZSDgDYrpCJCHtOtAQHw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@d-fischer/isomorphic-ws": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@d-fischer/isomorphic-ws/-/isomorphic-ws-7.0.2.tgz", + "integrity": "sha512-xK+qIJUF0ne3dsjq5Y3BviQ4M+gx9dzkN+dPP7abBMje4YRfow+X9jBgeEoTe5e+Q6+8hI9R0b37Okkk8Vf0hQ==", + "peerDependencies": { + "ws": "^8.2.0" + } + }, + "node_modules/@d-fischer/logger": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@d-fischer/logger/-/logger-4.2.3.tgz", + "integrity": "sha512-mJUx9OgjrNVLQa4od/+bqnmD164VTCKnK5B4WOW8TX5y/3w2i58p+PMRE45gUuFjk2BVtOZUg55JQM3d619fdw==", + "dependencies": { + "@d-fischer/detect-node": "^3.0.1", + "@d-fischer/shared-utils": "^3.2.0", + "tslib": "^2.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@d-fischer/qs": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@d-fischer/qs/-/qs-7.0.2.tgz", + "integrity": "sha512-yAu3xDooiL+ef84Jo8nLjDjWBRk7RXk163Y6aTvRB7FauYd3spQD/dWvgT7R4CrN54Juhrrc3dMY7mc+jZGurQ==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@d-fischer/rate-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@d-fischer/rate-limiter/-/rate-limiter-1.0.1.tgz", + "integrity": "sha512-Mq+0pAJsx92hP83cjmsrXQZVQJ+/+u1JFT6fjH8pj3yfUrbT3eDBsA+6J63eat+QaC+Mci78HdiBfpsdBkdwog==", + "dependencies": { + "@d-fischer/logger": "^4.2.3", + "@d-fischer/shared-utils": "^3.6.3", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@d-fischer/shared-utils": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@d-fischer/shared-utils/-/shared-utils-3.6.3.tgz", + "integrity": "sha512-Lz+Qk1WJLVoeREOHPZcIDTHOoxecxMSG2sq+x1xWYCH1exqiMKMMx06pXdy15UzHG7ohvQRNXk2oHqZ9EOl9jQ==", + "dependencies": { + "tslib": "^2.4.1" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@d-fischer/typed-event-emitter": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@d-fischer/typed-event-emitter/-/typed-event-emitter-3.3.3.tgz", + "integrity": "sha512-OvSEOa8icfdWDqcRtjSEZtgJTFOFNgTjje7zaL0+nAtu2/kZtRCSK5wUMrI/aXtCH8o0Qz2vA8UqkhWUTARFQQ==", + "dependencies": { + "tslib": "^2.4.0" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@dependents/detective-less": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dependents/detective-less/-/detective-less-4.1.0.tgz", + "integrity": "sha512-KrkT6qO5NxqNfy68sBl6CTSoJ4SNDIS5iQArkibhlbGU4LaDukZ3q2HIkh8aUKDio6o4itU4xDR7t82Y2eP1Bg==", + "dev": true, + "dependencies": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.43.1.tgz", + "integrity": "sha512-I238eDtOolvCuvtxrnqtlBaw0BwdQuYqK7eA6XIonicMdOOOb75mqdIzkGDUbS04+1Di007rgm9snFRNeVrOog==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.56.5", + "@types/estree": "^1.0.5", + "@typescript-eslint/types": "^7.2.0", + "comment-parser": "1.4.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.16.0.tgz", + "integrity": "sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.5.0.tgz", + "integrity": "sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsdevtools/ez-spawn": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz", + "integrity": "sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==", + "dev": true, + "dependencies": { + "call-me-maybe": "^1.0.1", + "cross-spawn": "^7.0.3", + "string-argv": "^0.3.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "node_modules/@pixi/colord": { + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/@pixi/colord/-/colord-2.9.6.tgz", + "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, + "node_modules/@prisma/client": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.15.1.tgz", + "integrity": "sha512-fmZRGmsUJ9+VwC/AvfP/PwdpD0xAEyPvNsD9/B3+GYpETq9VejVRT3PiqNvl76q1uYYzNZeo8u/LmzzTetHSEg==", + "hasInstallScript": true, + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/debug": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.15.1.tgz", + "integrity": "sha512-NQjdEplhXEcPvf84ghxExC+LD+iTimbg3sZvA3BhybVQIocBEBxFf9GTHhmRVPmjrWoBaYJBVgEEBXZT27JTbQ==", + "devOptional": true + }, + "node_modules/@prisma/engines": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.15.1.tgz", + "integrity": "sha512-1iTRxJEFvpBpEWf2bYiMG6LBBQhX7X+GA5piH+tmPWgc/v+/ElxQf2kjQxby8AErmZqtZkdoKJ7FSRjNjBPE9Q==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/debug": "5.15.1", + "@prisma/engines-version": "5.15.1-1.5675a3182f972f1a8f31d16eee6abf4fd54910e3", + "@prisma/fetch-engine": "5.15.1", + "@prisma/get-platform": "5.15.1" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.15.1-1.5675a3182f972f1a8f31d16eee6abf4fd54910e3", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.15.1-1.5675a3182f972f1a8f31d16eee6abf4fd54910e3.tgz", + "integrity": "sha512-7csphKGCG6n/cN1MkT1mJvQ78Ir18IknlYZ8eyEoLKdQBb0HscR/6TyPmzqrMA7Rz01K1KeXqctwAqxtA/lKQg==", + "devOptional": true + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.15.1.tgz", + "integrity": "sha512-mj0wfsJ+mAdDp1ynT2JKxAXa+CoYMT267qF7g2Uv+oaVTI2CMfGWouMARht8T2QLTgl+gpXSFTwIYbcR+oWEtw==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.15.1", + "@prisma/engines-version": "5.15.1-1.5675a3182f972f1a8f31d16eee6abf4fd54910e3", + "@prisma/get-platform": "5.15.1" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.15.1.tgz", + "integrity": "sha512-oFccp7bYys+ZYkmtYzjR+0cRrGKvSuF+h5QhSkyEsYQ9kzJzQRvuWt2SiHRPt8xOQ4MTmujM+bP5uOexnnAHdQ==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.15.1" + } + }, + "node_modules/@radix-ui/colors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/colors/-/colors-3.0.0.tgz", + "integrity": "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==" + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz", + "integrity": "sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^10.4.1", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.2.2.tgz", + "integrity": "sha512-GNRtyhhPsc9I9FNTaU2L0V/4LdSPAciQNEdYo6NBRdAz7sdiaxgEJKLNSXeXSQAuO9JBWWjZBs/57+WvrU0Iug==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "2.2.2", + "@stylistic/eslint-plugin-jsx": "2.2.2", + "@stylistic/eslint-plugin-plus": "2.2.2", + "@stylistic/eslint-plugin-ts": "2.2.2", + "@types/eslint": "^8.56.10" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.2.2.tgz", + "integrity": "sha512-Vj2Q1YHVvJw+ThtOvmk5Yx7wZanVrIBRUTT89horLDb4xdP9GA1um9XOYQC6j67VeUC2gjZQnz5/RVJMzaOhtw==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.56.10", + "acorn": "^8.11.3", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-jsx": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.2.2.tgz", + "integrity": "sha512-xfIMdLivoMV1wV+5Tl0PtkLN/oUwjIt7LuIu48vhrZfJ2jCXwjlTGPGSoM7dnLZYD65XjtrHHIFAvPuvvvjlaw==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "^2.2.2", + "@types/eslint": "^8.56.10", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-plus": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.2.2.tgz", + "integrity": "sha512-oeqPs01yAH4ad4bSchGtx8Jf5XTbxRx++A0joNYiOoq3EBTAUHE/ZB7dVv3BhNuCKiwojOQduLkUCXI5UMHoSw==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.56.10", + "@typescript-eslint/utils": "^7.12.0" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@stylistic/eslint-plugin-plus/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@stylistic/eslint-plugin-plus/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@stylistic/eslint-plugin-plus/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.2.2.tgz", + "integrity": "sha512-n6cYMSWTDDcrQLLxEKIrL/ihQ1lyyq6+gGp0g5VdstBElmImSRsQkCq+g3jRoDJIUo7tGO9lwQtGnuJ7oGB4kg==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "2.2.2", + "@types/eslint": "^8.56.10", + "@typescript-eslint/utils": "^7.12.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@sveltejs/adapter-node": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-5.2.0.tgz", + "integrity": "sha512-HVZoei2078XSyPmvdTHE03VXDUD0ytTvMuMHMQP0j6zX4nPDpCcKrgvU7baEblMeCCMdM/shQvstFxOJPQKlUQ==", + "dev": true, + "dependencies": { + "@rollup/plugin-commonjs": "^26.0.1", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "rollup": "^4.9.5" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.4.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.5.17", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.17.tgz", + "integrity": "sha512-wiADwq7VreR3ctOyxilAZOfPz3Jiy2IIp2C8gfafhTdQaVuGIHllfqQm8dXZKADymKr3uShxzgLZFT+a+CM4kA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0", + "devalue": "^5.0.0", + "esm-env": "^1.0.0", + "import-meta-resolve": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^2.0.4", + "tiny-glob": "^0.2.9" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.1.tgz", + "integrity": "sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "svelte-hmr": "^0.16.0", + "vitefu": "^0.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte/node_modules/svelte-hmr": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", + "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/@twurple/api": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@twurple/api/-/api-7.1.0.tgz", + "integrity": "sha512-cDVVY+vecMFNEOyp7UobQn4ARydIDf04NZy1YCKIKpJHBuOV/pkTjNGluRZ0nR9/t9hBFfOyHAH4JswRZpZbnw==", + "dependencies": { + "@d-fischer/cache-decorators": "^4.0.0", + "@d-fischer/cross-fetch": "^5.0.1", + "@d-fischer/detect-node": "^3.0.1", + "@d-fischer/logger": "^4.2.1", + "@d-fischer/rate-limiter": "^1.0.0", + "@d-fischer/shared-utils": "^3.6.1", + "@d-fischer/typed-event-emitter": "^3.3.1", + "@twurple/api-call": "7.1.0", + "@twurple/common": "7.1.0", + "retry": "^0.13.1", + "tslib": "^2.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "@twurple/auth": "7.1.0" + } + }, + "node_modules/@twurple/api-call": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@twurple/api-call/-/api-call-7.1.0.tgz", + "integrity": "sha512-aiyV492StnILyFzU/Eqgn+BA8fz125sB/0QJVlCJotMolrZxBkA4NsFEGDOcR3rOJLL7zOKPYMhWI8zY0gfzPA==", + "dependencies": { + "@d-fischer/cross-fetch": "^5.0.1", + "@d-fischer/qs": "^7.0.2", + "@d-fischer/shared-utils": "^3.6.1", + "@twurple/common": "7.1.0", + "tslib": "^2.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@twurple/auth": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@twurple/auth/-/auth-7.1.0.tgz", + "integrity": "sha512-OT7XtoXeYA8yLvCKdIZ76x71D/RfxPZQqufpimy5ZSL4+TpxY1CJNFp8YWstC1KEfyGVwyr7ZoV49u95k0JJmw==", + "dependencies": { + "@d-fischer/logger": "^4.2.1", + "@d-fischer/shared-utils": "^3.6.1", + "@d-fischer/typed-event-emitter": "^3.3.1", + "@twurple/api-call": "7.1.0", + "@twurple/common": "7.1.0", + "tslib": "^2.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@twurple/chat": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@twurple/chat/-/chat-7.1.0.tgz", + "integrity": "sha512-AzLtq+xqbyYpqPZau5jvX3Dov+C7MW1YTunYZZ5TqyQlEb/leUD6LdwdhXhsVxQUfpVD1FhU1NSlNd7VEhv0Rg==", + "dependencies": { + "@d-fischer/cache-decorators": "^4.0.0", + "@d-fischer/deprecate": "^2.0.2", + "@d-fischer/logger": "^4.2.1", + "@d-fischer/rate-limiter": "^1.0.0", + "@d-fischer/shared-utils": "^3.6.1", + "@d-fischer/typed-event-emitter": "^3.3.0", + "@twurple/common": "7.1.0", + "ircv3": "^0.33.0", + "tslib": "^2.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "@twurple/auth": "7.1.0" + } + }, + "node_modules/@twurple/common": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@twurple/common/-/common-7.1.0.tgz", + "integrity": "sha512-kz3J9J116+aOdyhCzRQwaxFC5eAewwQ9Iv2UmPHXYqRfbgKay6TsL27vk+Q2HygBCvx/8OWpX3pdSo3V/VPmoA==", + "dependencies": { + "@d-fischer/shared-utils": "^3.6.1", + "klona": "^2.0.4", + "tslib": "^2.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@twurple/easy-bot": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@twurple/easy-bot/-/easy-bot-7.1.0.tgz", + "integrity": "sha512-NBuNIAS3aJYzdDMr48kNbc1RdnmKL/abJf5HJgnlE7PP/ndthQYS3S/RaNkR/DIouvbJAmgSsYRj/7UlyZ3lZQ==", + "dependencies": { + "@d-fischer/logger": "^4.2.1", + "@d-fischer/shared-utils": "^3.6.1", + "@d-fischer/typed-event-emitter": "^3.3.0", + "@twurple/api": "7.1.0", + "@twurple/auth": "7.1.0", + "@twurple/chat": "7.1.0", + "@twurple/common": "7.1.0", + "tslib": "^2.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/@twurple/pubsub": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@twurple/pubsub/-/pubsub-7.1.0.tgz", + "integrity": "sha512-2YMiktQbHPiPqCNzdlQ2OOMLVHNiy5tjRImkVBHNjw0tqCsbrCUhmFwgKjiIiDQUTTzOcNdFhDNhlcgy5Mz65A==", + "dependencies": { + "@d-fischer/connection": "^9.0.0", + "@d-fischer/logger": "^4.2.1", + "@d-fischer/shared-utils": "^3.6.1", + "@d-fischer/typed-event-emitter": "^3.3.0", + "@twurple/common": "7.1.0", + "tslib": "^2.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "@twurple/auth": "7.1.0" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true + }, + "node_modules/@types/css-font-loading-module": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", + "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==" + }, + "node_modules/@types/earcut": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz", + "integrity": "sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==" + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/howler": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/@types/howler/-/howler-2.2.11.tgz", + "integrity": "sha512-7aBoUL6RbSIrqKnpEgfa1wSNUBK06mn08siP2QI0zYk7MXfEJAaORc4tohamQYqCqVESoDyRWSdQn2BOKWj2Qw==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", + "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/node": { + "version": "20.14.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", + "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/pug": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", + "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", + "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", + "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.29.tgz", + "integrity": "sha512-TFKiRkKKsRCKvg/jTSSKK7mYLJEQdUiUfykbG49rubC9SfDyvT2JrzTReopWlz2MxqeLyxh9UZhvxEIBgAhtrg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/shared": "3.4.29", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.29.tgz", + "integrity": "sha512-A6+iZ2fKIEGnfPJejdB7b1FlJzgiD+Y/sxxKwJWg1EbJu6ZPgzaPQQ51ESGNv0CP6jm6Z7/pO6Ia8Ze6IKrX7w==", + "dev": true, + "peer": true, + "dependencies": { + "@vue/compiler-core": "3.4.29", + "@vue/shared": "3.4.29" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.29.tgz", + "integrity": "sha512-zygDcEtn8ZimDlrEQyLUovoWgKQic6aEQqRXce2WXBvSeHbEbcAsXyCk9oG33ZkyWH4sl9D3tkYc1idoOkdqZQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/compiler-core": "3.4.29", + "@vue/compiler-dom": "3.4.29", + "@vue/compiler-ssr": "3.4.29", + "@vue/shared": "3.4.29", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.29.tgz", + "integrity": "sha512-rFbwCmxJ16tDp3N8XCx5xSQzjhidYjXllvEcqX/lopkoznlNPz3jyy0WGJCyhAaVQK677WWFt3YO/WUEkMMUFQ==", + "dev": true, + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.4.29", + "@vue/shared": "3.4.29" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.29", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.29.tgz", + "integrity": "sha512-hQ2gAQcBO/CDpC82DCrinJNgOHI2v+FA7BDW4lMSPeBpQ7sRe2OLHWe5cph1s7D8DUQAwRt18dBDfJJ220APEA==", + "dev": true, + "peer": true + }, + "node_modules/@webgpu/types": { + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.42.tgz", + "integrity": "sha512-uvJtt4OD1Vjdebrrz3kNLgpOicYbikwnM8WPG6YD2lkCOHDtPdEtCINJFIFtbOCtPfA8SreR/vKyUNbAt92IwQ==" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-typescript": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", + "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", + "peerDependencies": { + "acorn": ">=8.9.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/app-module-path": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz", + "integrity": "sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==", + "dev": true + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ast-module-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-5.0.0.tgz", + "integrity": "sha512-JvqziE0Wc0rXQfma0HZC/aY7URXHFuZV84fJRtP8u+lhp0JYCNd5wJzVXP45t0PH0Mej3ynlzvdyITYIu0G4LQ==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/code-red/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dependency-tree": { + "version": "10.0.9", + "resolved": "https://registry.npmjs.org/dependency-tree/-/dependency-tree-10.0.9.tgz", + "integrity": "sha512-dwc59FRIsht+HfnTVM0BCjJaEWxdq2YAvEDy4/Hn6CwS3CBWMtFnL3aZGAkQn3XCYxk/YcTDE4jX2Q7bFTwCjA==", + "dev": true, + "dependencies": { + "commander": "^10.0.1", + "filing-cabinet": "^4.1.6", + "precinct": "^11.0.5", + "typescript": "^5.0.4" + }, + "bin": { + "dependency-tree": "bin/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/dependency-tree/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detective-amd": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-5.0.2.tgz", + "integrity": "sha512-XFd/VEQ76HSpym80zxM68ieB77unNuoMwopU2TFT/ErUk5n4KvUTwW4beafAVUugrjV48l4BmmR0rh2MglBaiA==", + "dev": true, + "dependencies": { + "ast-module-types": "^5.0.0", + "escodegen": "^2.0.0", + "get-amd-module-type": "^5.0.1", + "node-source-walk": "^6.0.1" + }, + "bin": { + "detective-amd": "bin/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/detective-cjs": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/detective-cjs/-/detective-cjs-5.0.1.tgz", + "integrity": "sha512-6nTvAZtpomyz/2pmEmGX1sXNjaqgMplhQkskq2MLrar0ZAIkHMrDhLXkRiK2mvbu9wSWr0V5/IfiTrZqAQMrmQ==", + "dev": true, + "dependencies": { + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/detective-es6": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/detective-es6/-/detective-es6-4.0.1.tgz", + "integrity": "sha512-k3Z5tB4LQ8UVHkuMrFOlvb3GgFWdJ9NqAa2YLUU/jTaWJIm+JJnEh4PsMc+6dfT223Y8ACKOaC0qcj7diIhBKw==", + "dev": true, + "dependencies": { + "node-source-walk": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/detective-postcss": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/detective-postcss/-/detective-postcss-6.1.3.tgz", + "integrity": "sha512-7BRVvE5pPEvk2ukUWNQ+H2XOq43xENWbH0LcdCE14mwgTBEAMoAx+Fc1rdp76SmyZ4Sp48HlV7VedUnP6GA1Tw==", + "dev": true, + "dependencies": { + "is-url": "^1.2.4", + "postcss": "^8.4.23", + "postcss-values-parser": "^6.0.2" + }, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/detective-sass": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-5.0.3.tgz", + "integrity": "sha512-YsYT2WuA8YIafp2RVF5CEfGhhyIVdPzlwQgxSjK+TUm3JoHP+Tcorbk3SfG0cNZ7D7+cYWa0ZBcvOaR0O8+LlA==", + "dev": true, + "dependencies": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/detective-scss": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-4.0.3.tgz", + "integrity": "sha512-VYI6cHcD0fLokwqqPFFtDQhhSnlFWvU614J42eY6G0s8c+MBhi9QAWycLwIOGxlmD8I/XvGSOUV1kIDhJ70ZPg==", + "dev": true, + "dependencies": { + "gonzales-pe": "^4.3.0", + "node-source-walk": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/detective-stylus": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-4.0.0.tgz", + "integrity": "sha512-TfPotjhszKLgFBzBhTOxNHDsutIxx9GTWjrL5Wh7Qx/ydxKhwUrlSFeLIn+ZaHPF+h0siVBkAQSuy6CADyTxgQ==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/detective-typescript": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/detective-typescript/-/detective-typescript-11.2.0.tgz", + "integrity": "sha512-ARFxjzizOhPqs1fYC/2NMC3N4jrQ6HvVflnXBTRqNEqJuXwyKLRr9CrJwkRcV/SnZt1sNXgsF6FPm0x57Tq0rw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "^5.62.0", + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.2", + "typescript": "^5.4.4" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/devalue": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", + "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.806", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.806.tgz", + "integrity": "sha512-nkoEX2QIB8kwCOtvtgwhXWy2IHVcOLQZu9Qo36uaGB835mdX/h8uLRlosL6QIhLVUnAiicXRW00PwaPZC74Nrg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.5.0.tgz", + "integrity": "sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/config-array": "^0.16.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.5.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.1", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.1", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-config-flat-gitignore": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-flat-gitignore/-/eslint-config-flat-gitignore-0.1.5.tgz", + "integrity": "sha512-hEZLwuZjDBGDERA49c2q7vxc8sCGv8EdBp6PQYzGOMcHIgrfG9YOM6s/4jx24zhD+wnK9AI8mgN5RxSss5nClQ==", + "dev": true, + "dependencies": { + "find-up": "^7.0.0", + "parse-gitignore": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/eslint-config-flat-gitignore/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "dev": true, + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-config-flat-gitignore/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-config-flat-gitignore/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-config-flat-gitignore/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-config-flat-gitignore/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/eslint-config-flat-gitignore/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-flat-config-utils": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/eslint-flat-config-utils/-/eslint-flat-config-utils-0.2.5.tgz", + "integrity": "sha512-iO+yLZtC/LKgACerkpvsZ6NoRVB2sxT04mOpnNcEM1aTwKy+6TsT46PUvrML4y2uVBS6I67hRCd2JiKAPaL/Uw==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.56.10", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-merge-processors": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/eslint-merge-processors/-/eslint-merge-processors-0.1.0.tgz", + "integrity": "sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/eslint-plugin-antfu": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-antfu/-/eslint-plugin-antfu-2.3.3.tgz", + "integrity": "sha512-TAgYNuc20QyKw8NXtpzR3LeMTTv1qAJVKkjCVzjRSGiSR1EetEY7LRgQVhcgP/C1FnI87isQERAIkKvkYyLq0Q==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/eslint-plugin-command": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-command/-/eslint-plugin-command-0.2.3.tgz", + "integrity": "sha512-1bBYNfjZg60N2ZpLV5ATYSYyueIJ+zl5yKrTs0UFDdnyu07dNSZ7Xplnc+Wb6SXTdc1sIaoIrnuyhvztcltX6A==", + "dev": true, + "dependencies": { + "@es-joy/jsdoccomment": "^0.43.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/eslint-plugin-es-x": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.7.0.tgz", + "integrity": "sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig==", + "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.5.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-plugin-import-x": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-0.5.1.tgz", + "integrity": "sha512-2JK8bbFOLes+gG6tgdnM8safCxMAj4u2wjX8X1BRFPfnY7Ct2hFYESoIcVwABX/DDcdpQFLGtKmzbNEWJZD9iQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^7.4.0", + "debug": "^4.3.4", + "doctrine": "^3.0.0", + "eslint-import-resolver-node": "^0.3.9", + "get-tsconfig": "^4.7.3", + "is-glob": "^4.0.3", + "minimatch": "^9.0.3", + "semver": "^7.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^8.56.0 || ^9.0.0-0" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-import-x/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "48.2.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.12.tgz", + "integrity": "sha512-sO9sKkJx5ovWoRk9hV0YiNzXQ4Z6j27CqE/po2E3wddZVuy9wvKPSTiIhpxMTrP/qURvKayJIDB2+o9kyCW1Fw==", + "dev": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.43.1", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "semver": "^7.6.2", + "spdx-expression-parse": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-jsonc": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.16.0.tgz", + "integrity": "sha512-Af/ZL5mgfb8FFNleH6KlO4/VdmDuTqmM+SPnWcdoWywTetv7kq+vQe99UyQb9XO3b0OWLVuTH7H0d/PXYCMdSg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "eslint-compat-utils": "^0.5.0", + "espree": "^9.6.1", + "graphemer": "^1.4.0", + "jsonc-eslint-parser": "^2.0.4", + "natural-compare": "^1.4.0", + "synckit": "^0.6.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-jsonc/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-jsonc/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-markdown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-5.0.0.tgz", + "integrity": "sha512-kY2u9yDhzvfZ0kmRTsvgm3mTnvZgTSGIIPeHg3yesSx4R5CTCnITUjCPhzCD1MUhNcqHU5Tr6lzx+02EclVPbw==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, + "node_modules/eslint-plugin-n": { + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.9.0.tgz", + "integrity": "sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "enhanced-resolve": "^5.17.0", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^15.0.0", + "ignore": "^5.2.4", + "minimatch": "^9.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-no-only-tests": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz", + "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==", + "dev": true, + "engines": { + "node": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-regexp": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.6.0.tgz", + "integrity": "sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.9.1", + "comment-parser": "^1.4.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "refa": "^0.12.1", + "regexp-ast-analysis": "^0.7.1", + "scslre": "^0.3.0" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "eslint": ">=8.44.0" + } + }, + "node_modules/eslint-plugin-svelte": { + "version": "2.40.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.40.0.tgz", + "integrity": "sha512-JuOzmfVaMeEkBASL7smHu3tIU4D9rWkHuRNV+zm/5zgAwiZVvxrXM7TcfIOS+U7VXOr4uCZuE+kZTVTzS0IE+Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@jridgewell/sourcemap-codec": "^1.4.15", + "eslint-compat-utils": "^0.5.1", + "esutils": "^2.0.3", + "known-css-properties": "^0.32.0", + "postcss": "^8.4.38", + "postcss-load-config": "^3.1.4", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.1.0", + "semver": "^7.6.2", + "svelte-eslint-parser": "^0.39.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0", + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.155" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-toml": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-toml/-/eslint-plugin-toml-0.11.0.tgz", + "integrity": "sha512-sau+YvPU4fWTjB+qtBt3n8WS87aoDCs+BVbSUAemGaIsRNbvR9uEk+Tt892iLHTGvp/DPWYoCX4/8DoyAbB+sQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "eslint-compat-utils": "^0.5.0", + "lodash": "^4.17.19", + "toml-eslint-parser": "^0.9.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "53.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-53.0.0.tgz", + "integrity": "sha512-kuTcNo9IwwUCfyHGwQFOK/HjJAYzbODHN3wP0PgqbW+jbXqpNWxNVpVhj2tO9SixBwuAdmal8rVcWKBxwFnGuw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "@eslint-community/eslint-utils": "^4.4.0", + "@eslint/eslintrc": "^3.0.2", + "ci-info": "^4.0.0", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.37.0", + "esquery": "^1.5.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.1", + "jsesc": "^3.0.2", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.10.0", + "semver": "^7.6.1", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=18.18" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=8.56.0" + } + }, + "node_modules/eslint-plugin-vitest": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-vitest/-/eslint-plugin-vitest-0.5.4.tgz", + "integrity": "sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^7.7.1" + }, + "engines": { + "node": "^18.0.0 || >= 20.0.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "vitest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vitest/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vitest/node_modules/@typescript-eslint/utils": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/eslint-plugin-vitest/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.13.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-vitest/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-vitest/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-vitest/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.26.0.tgz", + "integrity": "sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-vue/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-yml": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.14.0.tgz", + "integrity": "sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "eslint-compat-utils": "^0.5.0", + "lodash": "^4.17.21", + "natural-compare": "^1.4.0", + "yaml-eslint-parser": "^1.2.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-processor-vue-blocks": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-processor-vue-blocks/-/eslint-processor-vue-blocks-0.1.2.tgz", + "integrity": "sha512-PfpJ4uKHnqeL/fXUnzYkOax3aIenlwewXRX8jFinA1a2yCFnLgMuiH3xvCgvHHUlV2xJWQHbCTdiJWGwb3NqpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/compiler-sfc": "^3.3.0", + "eslint": "^8.50.0 || ^9.0.0" + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", + "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esm-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==" + }, + "node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.2.tgz", + "integrity": "sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/filing-cabinet": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/filing-cabinet/-/filing-cabinet-4.2.0.tgz", + "integrity": "sha512-YZ21ryzRcyqxpyKggdYSoXx//d3sCJzM3lsYoaeg/FyXdADGJrUl+BW1KIglaVLJN5BBcMtWylkygY8zBp2MrQ==", + "dev": true, + "dependencies": { + "app-module-path": "^2.2.0", + "commander": "^10.0.1", + "enhanced-resolve": "^5.14.1", + "is-relative-path": "^1.0.2", + "module-definition": "^5.0.1", + "module-lookup-amd": "^8.0.5", + "resolve": "^1.22.3", + "resolve-dependency-path": "^3.0.2", + "sass-lookup": "^5.0.1", + "stylus-lookup": "^5.0.1", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.0.4" + }, + "bin": { + "filing-cabinet": "bin/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/filing-cabinet/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-amd-module-type": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-5.0.1.tgz", + "integrity": "sha512-jb65zDeHyDjFR1loOVk0HQGM5WNwoGB8aLWy3LKCieMKol0/ProHkhO2X1JxojuN10vbz1qNn09MJ7tNp7qMzw==", + "dev": true, + "dependencies": { + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "node_modules/get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.6.0.tgz", + "integrity": "sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "gonzales": "bin/gonzales.js" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hono": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.4.7.tgz", + "integrity": "sha512-WoQWFQyVFEVRtIzP5sHPv7nvIw+RYL/HRnvnOCDxj6A+BtrwuC9S0vryZbV4IyFcNgOJ87r/phDiC1x2eEo4Gg==", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/howler": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.4.tgz", + "integrity": "sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/ircv3": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/ircv3/-/ircv3-0.33.0.tgz", + "integrity": "sha512-7rK1Aial3LBiFycE8w3MHiBBFb41/2GG2Ll/fR2IJj1vx0pLpn1s+78K+z/I4PZTqCCSp/Sb4QgKMh3NMhx0Kg==", + "dependencies": { + "@d-fischer/connection": "^9.0.0", + "@d-fischer/escape-string-regexp": "^5.0.0", + "@d-fischer/logger": "^4.2.1", + "@d-fischer/shared-utils": "^3.5.0", + "@d-fischer/typed-event-emitter": "^3.3.0", + "klona": "^2.0.5", + "tslib": "^2.4.1" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-relative-path/-/is-relative-path-1.0.2.tgz", + "integrity": "sha512-i1h+y50g+0hRbBD+dbnInl3JlJ702aar58snAeX+MxBAPvzXGej7sYoPMhlnykabt0ZzCJNBEyzMlekuQZN7fA==", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "node_modules/is-url-superb": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz", + "integrity": "sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/ismobilejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", + "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==" + }, + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-eslint-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", + "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsonc-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/jsonc-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/known-css-properties": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.32.0.tgz", + "integrity": "sha512-PXuex21brpp7qENI143ZL5cWQcMR4IZVeeZv9ew6dg+bZX2xRUu/NzGKudZJY5DO4APiMkNPYIF8VGIdY08Tdw==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/lucide-svelte": { + "version": "0.395.0", + "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.395.0.tgz", + "integrity": "sha512-gl4HIIGUyj3seZf/CQ6vG38oMnNmdO1lcBQaMsB5pFpnL1T13qlfqjMjfTCnsKMFjiIFr3LttE/LFVi/GXmV0A==", + "peerDependencies": { + "svelte": "^3 || ^4 || ^5.0.0-next.42" + } + }, + "node_modules/madge": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/madge/-/madge-7.0.0.tgz", + "integrity": "sha512-x9eHkBWoCJ2B8yGesWf8LRucarkbH5P3lazqgvmxe4xn5U2Meyfu906iG9mBB1RnY/f4D+gtELWdiz1k6+jAZA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "commander": "^7.2.0", + "commondir": "^1.0.1", + "debug": "^4.3.4", + "dependency-tree": "^10.0.9", + "ora": "^5.4.1", + "pluralize": "^8.0.0", + "precinct": "^11.0.5", + "pretty-ms": "^7.0.1", + "rc": "^1.2.8", + "stream-to-array": "^2.3.0", + "ts-graphviz": "^1.8.1", + "walkdir": "^0.4.1" + }, + "bin": { + "madge": "bin/cli.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "individual", + "url": "https://www.paypal.me/pahen" + }, + "peerDependencies": { + "typescript": "^3.9.5 || ^4.9.5 || ^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mlly": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" + } + }, + "node_modules/module-definition": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-5.0.1.tgz", + "integrity": "sha512-kvw3B4G19IXk+BOXnYq/D/VeO9qfHaapMeuS7w7sNUqmGaA6hywdFHMi+VWeR9wUScXM7XjoryTffCZ5B0/8IA==", + "dev": true, + "dependencies": { + "ast-module-types": "^5.0.0", + "node-source-walk": "^6.0.1" + }, + "bin": { + "module-definition": "bin/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/module-lookup-amd": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/module-lookup-amd/-/module-lookup-amd-8.0.5.tgz", + "integrity": "sha512-vc3rYLjDo5Frjox8NZpiyLXsNWJ5BWshztc/5KSOMzpg9k5cHH652YsJ7VKKmtM4SvaxuE9RkrYGhiSjH3Ehow==", + "dev": true, + "dependencies": { + "commander": "^10.0.1", + "glob": "^7.2.3", + "requirejs": "^2.3.6", + "requirejs-config-file": "^4.0.0" + }, + "bin": { + "lookup-amd": "bin/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/module-lookup-amd/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/module-lookup-amd/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/node-source-walk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-6.0.2.tgz", + "integrity": "sha512-jn9vOIK/nfqoFCcpK89/VCVaLg1IHE6UVfDOzvqmANaJ/rWCTEdH8RZ1V278nv2jr36BJdyQXIAavBLXpzdlag==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.21.8" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-gitignore": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz", + "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/periscopic/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/periscopic/node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pixi.js": { + "version": "8.1.8", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.1.8.tgz", + "integrity": "sha512-P+RhNNq27Re3dPWJ2YXufAxah9gtr4YrYEmlaJs44EcaoM8HXsTLHC53ptX8+SLcsZcO/mbAEGJX7XZZc5YF4A==", + "dependencies": { + "@pixi/colord": "^2.9.6", + "@types/css-font-loading-module": "^0.0.12", + "@types/earcut": "^2.1.4", + "@webgpu/types": "^0.1.40", + "@xmldom/xmldom": "^0.8.10", + "earcut": "^2.2.4", + "eventemitter3": "^5.0.1", + "ismobilejs": "^1.1.1", + "parse-svg-path": "^0.1.2" + } + }, + "node_modules/pkg-types": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.1.tgz", + "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==", + "dev": true, + "dependencies": { + "confbox": "^0.1.7", + "mlly": "^1.7.0", + "pathe": "^1.1.2" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-values-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz", + "integrity": "sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==", + "dev": true, + "dependencies": { + "color-name": "^1.1.4", + "is-url-superb": "^4.0.0", + "quote-unquote": "^1.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.2.9" + } + }, + "node_modules/precinct": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/precinct/-/precinct-11.0.5.tgz", + "integrity": "sha512-oHSWLC8cL/0znFhvln26D14KfCQFFn4KOLSw6hmLhd+LQ2SKt9Ljm89but76Pc7flM9Ty1TnXyrA2u16MfRV3w==", + "dev": true, + "dependencies": { + "@dependents/detective-less": "^4.1.0", + "commander": "^10.0.1", + "detective-amd": "^5.0.2", + "detective-cjs": "^5.0.1", + "detective-es6": "^4.0.1", + "detective-postcss": "^6.1.3", + "detective-sass": "^5.0.3", + "detective-scss": "^4.0.3", + "detective-stylus": "^4.0.0", + "detective-typescript": "^11.1.0", + "module-definition": "^5.0.1", + "node-source-walk": "^6.0.2" + }, + "bin": { + "precinct": "bin/cli.js" + }, + "engines": { + "node": "^14.14.0 || >=16.0.0" + } + }, + "node_modules/precinct/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "dev": true, + "dependencies": { + "parse-ms": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prisma": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.15.1.tgz", + "integrity": "sha512-pYsUVpTlYvZ6mWvZKDv9rKdUa7tlfSUJY1CVtgb8Had1pHbIm9fr1MBASccr5XnSuCUrjnvKhWNwgSYy6aCajA==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "5.15.1" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quote-unquote": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz", + "integrity": "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==", + "dev": true + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/refa": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.12.1.tgz", + "integrity": "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.8.0" + }, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/regexp-ast-analysis": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.7.1.tgz", + "integrity": "sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.8.0", + "refa": "^0.12.1" + }, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regjsparser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", + "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requirejs": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", + "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", + "dev": true, + "bin": { + "r_js": "bin/r.js", + "r.js": "bin/r.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/requirejs-config-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz", + "integrity": "sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.0", + "stringify-object": "^3.2.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dependency-path": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/resolve-dependency-path/-/resolve-dependency-path-3.0.2.tgz", + "integrity": "sha512-Tz7zfjhLfsvR39ADOSk9us4421J/1ztVBo4rWUkF38hgHK5m0OCZ3NxFVpqHRkjctnwVa15igEUHFJp8MCS7vA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sass-lookup": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/sass-lookup/-/sass-lookup-5.0.1.tgz", + "integrity": "sha512-t0X5PaizPc2H4+rCwszAqHZRtr4bugo4pgiCvrBFvIX0XFxnr29g77LJcpyj9A0DcKf7gXMLcgvRjsonYI6x4g==", + "dev": true, + "dependencies": { + "commander": "^10.0.1" + }, + "bin": { + "sass-lookup": "bin/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/sass-lookup/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/scslre": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.3.0.tgz", + "integrity": "sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.8.0", + "refa": "^0.12.0", + "regexp-ast-analysis": "^0.7.0" + }, + "engines": { + "node": "^14.0.0 || >=16.0.0" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sorcery": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.1.tgz", + "integrity": "sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.14", + "buffer-crc32": "^1.0.0", + "minimist": "^1.2.0", + "sander": "^0.5.0" + }, + "bin": { + "sorcery": "bin/sorcery" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "dev": true + }, + "node_modules/stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", + "dev": true, + "dependencies": { + "any-promise": "^1.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylus-lookup": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-5.0.1.tgz", + "integrity": "sha512-tLtJEd5AGvnVy4f9UHQMw4bkJJtaAcmo54N+ovQBjDY3DuWyK9Eltxzr5+KG0q4ew6v2EHyuWWNnHeiw/Eo7rQ==", + "dev": true, + "dependencies": { + "commander": "^10.0.1" + }, + "bin": { + "stylus-lookup": "bin/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/stylus-lookup/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "5.0.0-next.158", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.0.0-next.158.tgz", + "integrity": "sha512-QRmXxHByWntyWqLtzjNsBbNT89F2yA7aWPp9M9l9a6/PAE3gmQh6+qoVPgrxMR7iiFgpwh5ZU9Bm25j3IhGicQ==", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.5", + "acorn": "^8.11.3", + "acorn-typescript": "^1.4.13", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "esm-env": "^1.0.0", + "esrap": "^1.2.2", + "is-reference": "^3.0.2", + "locate-character": "^3.0.0", + "magic-string": "^0.30.5", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/svelte-check": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.8.1.tgz", + "integrity": "sha512-KlQ0TRVe01mdvh49Ylkr9FQxO/UWbQOtaIrccl3gjgkvby1TxY41VkT7ijCl6i29FjaJPE4m6YGmhdqov0MfkA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^5.1.3", + "typescript": "^5.0.3" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" + } + }, + "node_modules/svelte-eslint-parser": { + "version": "0.39.1", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.39.1.tgz", + "integrity": "sha512-0VR9gq2TOdSrJW94Qf2F3XrzXRQomXQtRZGFS3FEUr3G4J8DcpqXfBF1HJyOa3dACyGsKiBbOPF56pBgYaqXBA==", + "dev": true, + "dependencies": { + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "postcss": "^8.4.38", + "postcss-scss": "^4.0.9" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.115" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/svelte-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/svelte-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/svelte-preprocess": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.4.tgz", + "integrity": "sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.6", + "detect-indent": "^6.1.0", + "magic-string": "^0.30.5", + "sorcery": "^0.11.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0", + "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte/node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/synckit": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.6.2.tgz", + "integrity": "sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==", + "dev": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toml-eslint-parser": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/toml-eslint-parser/-/toml-eslint-parser-0.9.3.tgz", + "integrity": "sha512-moYoCvkNUAPCxSW9jmHmRElhm4tVJpHL8ItC/+uYD0EpPSFXbck7yREz9tNdJVTSpHVod8+HoipcpbQ0oE6gsw==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/toml-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-graphviz": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-1.8.2.tgz", + "integrity": "sha512-5YhbFoHmjxa7pgQLkB07MtGnGJ/yhvjmc9uhsnDBEICME6gkPf83SBwLDQqGDoCa3XzUMWLk1AU2Wn1u1naDtA==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ts-graphviz" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", + "dev": true + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", + "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/walkdir": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz", + "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yaml-eslint-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.3.tgz", + "integrity": "sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.0.0", + "lodash": "^4.17.21", + "yaml": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/yaml-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/yaml-eslint-parser/node_modules/yaml": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==" + } + } +} diff --git a/package.json b/package.json index 0ee883da..d3070a89 100644 --- a/package.json +++ b/package.json @@ -31,33 +31,32 @@ }, "dependencies": { "@paralleldrive/cuid2": "2.2.2", - "@prisma/client": "5.15.0", + "@prisma/client": "5.15.1", "@radix-ui/colors": "3.0.0", "@twurple/api": "7.1.0", "@twurple/auth": "7.1.0", "@twurple/easy-bot": "7.1.0", "@twurple/pubsub": "7.1.0", - "hono": "4.4.6", + "hono": "4.4.7", "howler": "2.2.4", "jsonwebtoken": "9.0.2", "lucide-svelte": "0.395.0", - "pixi.js": "8.1.7" + "pixi.js": "8.1.8", + "ws": "8.17.1" }, "devDependencies": { "@antfu/eslint-config": "2.21.1", - "@sveltejs/kit": "2.5.16", + "@sveltejs/adapter-node": "5.2.0", + "@sveltejs/kit": "2.5.17", "@sveltejs/vite-plugin-svelte": "3.1.1", - "@types/bun": "1.1.4", "@types/howler": "2.2.11", "@types/jsonwebtoken": "9.0.6", "eslint": "9.5.0", "eslint-plugin-svelte": "2.40.0", "madge": "7.0.0", - "prisma": "5.15.0", - "svelte": "4.2.18", - "svelte-adapter-bun": "0.5.2", + "prisma": "5.15.1", + "svelte": "5.0.0-next.158", "svelte-check": "3.8.1", - "svelte-eslint-parser": "0.39.1", "typescript": "5.4.5", "vite": "5.3.1" } diff --git a/src/lib/game/actions/donateWoodToVillageAction.ts b/src/lib/game/actions/donateWoodToVillageAction.ts index 799d3f13..89c3f4e7 100644 --- a/src/lib/game/actions/donateWoodToVillageAction.ts +++ b/src/lib/game/actions/donateWoodToVillageAction.ts @@ -1,4 +1,4 @@ -import { ANSWER } from '$lib/game/services/actionService' +import { ANSWER } from '$lib/game/services/action/answer' import type { Game, GameObjectPlayer } from '$lib/game/types' import type { GameAction } from '$lib/game/actions/interface' diff --git a/src/lib/game/actions/plantTreeAction.ts b/src/lib/game/actions/plantTreeAction.ts index 10271252..2461ed40 100644 --- a/src/lib/game/actions/plantTreeAction.ts +++ b/src/lib/game/actions/plantTreeAction.ts @@ -1,5 +1,5 @@ import { PlantNewTreeScript } from '../scripts/plantNewTreeScript' -import { ANSWER } from '$lib/game/services/actionService' +import { ANSWER } from '$lib/game/services/action/answer' import type { Game, GameObjectPlayer } from '$lib/game/types' import { VillageChunk } from '$lib/game/services/chunk/villageChunk' import type { GameAction } from '$lib/game/actions/interface' diff --git a/src/lib/game/actions/voteAction.ts b/src/lib/game/actions/voteAction.ts index d6df2ab3..5169b0ef 100644 --- a/src/lib/game/actions/voteAction.ts +++ b/src/lib/game/actions/voteAction.ts @@ -1,4 +1,4 @@ -import { ANSWER } from '$lib/game/services/actionService' +import { ANSWER } from '$lib/game/services/action/answer' import type { Poll } from '$lib/game/common/poll' import type { GameObjectPlayer } from '$lib/game/types' import type { GameAction } from '$lib/game/actions/interface' diff --git a/src/lib/game/baseGame.ts b/src/lib/game/baseGame.svelte.ts similarity index 87% rename from src/lib/game/baseGame.ts rename to src/lib/game/baseGame.svelte.ts index e6dae826..126613a3 100644 --- a/src/lib/game/baseGame.ts +++ b/src/lib/game/baseGame.svelte.ts @@ -6,8 +6,7 @@ import type { GameObjectPlayer, GameSceneType, GameStateResponse, - IGameInventoryItem, - IGameObjectRaider, WebSocketMessage, + IGameInventoryItem, IGameObjectRaider, } from '$lib/game/types' import { AudioManager } from '$lib/game/utils/audioManager' import { BackgroundGenerator } from '$lib/game/utils/generators/background' @@ -16,23 +15,28 @@ import { MovingScene } from '$lib/game/scenes/movingScene' import { MoveOffScreenAndSelfDestroyScript, } from '$lib/game/scripts/moveOffScreenAndSelfDestroyScript' -import type { Wagon } from '$lib/game/services/interface' import { getRandomInRange } from '$lib/random' import { MoveToTargetScript } from '$lib/game/scripts/moveToTargetScript' import { ChopTreeScript } from '$lib/game/scripts/chopTreeScript' -import { ActionService } from '$lib/game/services/actionService' +import { ActionService } from '$lib/game/services/action/actionService' import { EventService } from '$lib/game/services/event/eventService' -import { TradeService } from '$lib/game/services/tradeService' -import { WagonService } from '$lib/game/services/wagonService' -import { RouteService } from '$lib/game/services/routeService' +import { TradeService } from '$lib/game/services/trade/tradeService' +import { WagonService } from '$lib/game/services/wagon/wagonService' +import { RouteService } from '$lib/game/services/route/routeService' import { ChunkService } from '$lib/game/services/chunk/chunkService' import { TreeObject } from '$lib/game/objects/treeObject' import { Group } from '$lib/game/common/group' import { PlayerService } from '$lib/game/services/player/playerService' import { Raider } from '$lib/game/objects/units/raider' +import { QuestService } from '$lib/game/services/quest/questService' +import type { Wagon } from '$lib/game/services/wagon/interface' +import { + WebSocketService, +} from '$lib/game/services/socket/webSocketService' export class BaseGame extends Container implements Game { id: string + isPaused = $state(false) children: Game['children'] = [] app: Application audio: Game['audio'] @@ -41,6 +45,7 @@ export class BaseGame extends Container implements Game { tick: Game['tick'] = 0 group: Group + webSocketService: WebSocketService actionService: ActionService eventService: EventService tradeService: TradeService @@ -48,6 +53,7 @@ export class BaseGame extends Container implements Game { routeService: RouteService chunkService: ChunkService playerService: PlayerService + questService: QuestService #cameraX = 0 #cameraY = 0 @@ -63,6 +69,8 @@ export class BaseGame extends Container implements Game { this.bg = new BackgroundGenerator(this.app) this.group = new Group() + this.webSocketService = new WebSocketService(this) + this.actionService = new ActionService(this) this.eventService = new EventService(this) this.tradeService = new TradeService(this) @@ -70,6 +78,7 @@ export class BaseGame extends Container implements Game { this.routeService = new RouteService(this) this.chunkService = new ChunkService(this) this.playerService = new PlayerService(this) + this.questService = new QuestService(this) } async init() { @@ -91,11 +100,13 @@ export class BaseGame extends Container implements Game { this.app.stage.addChild(this) - // WebSocketManager.init(this) - this.initScene('MOVING') this.app.ticker.add(() => { + if (this.isPaused) { + return + } + this.tick = this.app.ticker.FPS this.eventService.update() @@ -104,6 +115,7 @@ export class BaseGame extends Container implements Game { this.routeService.update() this.chunkService.update() this.playerService.update() + this.questService.update() this.#updateObjects() this.#removeDestroyedObjects() @@ -115,6 +127,7 @@ export class BaseGame extends Container implements Game { async play() { this.audio.isEnabled = true + this.isPaused = false // setInterval(() => { // console.log("FPS", this.app.ticker.FPS) @@ -190,39 +203,8 @@ export class BaseGame extends Container implements Game { } } - handleMessage(message: WebSocketMessage) { - if (message.object) { - this.handleMessageObject(message.object) - } - if (message.event) { - this.handleMessageEvent(message.event) - } - } - - handleMessageObject(object: Partial) { - if (!object.id) { - return - } - - this.#findObject(object.id) - } - - handleMessageEvent(event: WebSocketMessage['event']) { - if (event === 'RAID_STARTED') { - this.audio.playSound('MARCHING_WITH_HORNS') - } - if (event === 'GROUP_FORM_STARTED') { - this.audio.playSound('MARCHING_WITH_HORNS') - } - if (event === 'MAIN_QUEST_STARTED') { - this.audio.playSound('MARCHING_WITH_HORNS') - } - if (event === 'SCENE_CHANGED') { - this.#rebuildScene() - } - if (event === 'IDEA_CREATED') { - this.audio.playSound('YEAH') - } + findObject(id: string): GameObject | undefined { + return this.children.find((obj) => obj.id === id) } getState(): GameStateResponse { @@ -238,7 +220,7 @@ export class BaseGame extends Container implements Game { } } - #rebuildScene() { + rebuildScene(): void { this.removeChild(...this.children) } @@ -383,8 +365,4 @@ export class BaseGame extends Container implements Game { this.parent.y = this.#cameraY } } - - #findObject(id: string) { - return this.children.find((obj) => obj.id === id) - } } diff --git a/src/lib/game/common/inventory.ts b/src/lib/game/common/inventory.ts index 02b05ed2..2b8ba94a 100644 --- a/src/lib/game/common/inventory.ts +++ b/src/lib/game/common/inventory.ts @@ -155,7 +155,7 @@ export class Inventory implements IGameInventory { // }) } - checkIfAlreadyHaveItem(type: ItemType) { + checkIfAlreadyHaveItem(type: ItemType): IGameInventoryItem | undefined { return this.items.find((item) => item.type === type) } diff --git a/src/lib/game/components/wagonEngineCloudsContainer.ts b/src/lib/game/components/wagonEngineCloudsContainer.ts index 0ee85fc7..16894caf 100644 --- a/src/lib/game/components/wagonEngineCloudsContainer.ts +++ b/src/lib/game/components/wagonEngineCloudsContainer.ts @@ -1,7 +1,7 @@ import { type Container, Sprite } from 'pixi.js' import { GraphicsContainer } from './graphicsContainer' import { getRandomInRange } from '$lib/random' -import type { Wagon } from '$lib/game/services/interface' +import type { Wagon } from '$lib/game/services/wagon/interface' interface IWagonEngineCloudsContainerOptions { wagon: Wagon diff --git a/src/lib/game/objects/baseWagon.ts b/src/lib/game/objects/baseWagon.ts index f4910dab..365b385e 100644 --- a/src/lib/game/objects/baseWagon.ts +++ b/src/lib/game/objects/baseWagon.ts @@ -1,4 +1,3 @@ -import { createId } from '@paralleldrive/cuid2' import { Sprite } from 'pixi.js' import type { GraphicsContainer } from '../components/graphicsContainer' import { WagonCargoContainer } from '../components/wagonCargoContainer' @@ -8,9 +7,8 @@ import { WagonFuelBoxContainer } from '../components/wagonFuelBoxContainer' import { WagonWheelContainer } from '../components/wagonWheelContainer' import { BaseObject } from './baseObject' import type { Game } from '$lib/game/types' -import { Inventory } from '$lib/game/common/inventory' import { Mechanic } from '$lib/game/objects/units/mechanic' -import type { Wagon } from '$lib/game/services/interface' +import type { Wagon } from '$lib/game/services/wagon/interface' interface IWagonOptions { game: Game @@ -24,7 +22,6 @@ export class BaseWagon extends BaseObject implements Wagon { public cargoType: Wagon['cargoType'] public children: GraphicsContainer[] = [] - public cargo: Inventory | undefined public mechanic!: Mechanic public serverDataArea!: Wagon['visibilityArea'] public collisionArea!: Wagon['visibilityArea'] @@ -58,7 +55,7 @@ export class BaseWagon extends BaseObject implements Wagon { this.fuel -= this.speedPerSecond * 2 } - refuel(woodAmount: number) { + refuel(woodAmount: number): void { if (woodAmount < 0) { return } @@ -66,25 +63,10 @@ export class BaseWagon extends BaseObject implements Wagon { this.fuel += woodAmount * 5 * 40 } - emptyFuel() { + emptyFuel(): void { this.fuel = 0 } - setCargo() { - this.cargo = new Inventory({ - id: createId(), - saveInDb: false, - objectId: this.id, - }) - void this.cargo.addOrCreateItem('WOOD', 100) - this.cargoType = 'CHEST' - } - - emptyCargo() { - this.cargo = undefined - this.cargoType = undefined - } - #updateVisibilityArea() { const offsetX = 2560 / 2 const offsetY = 1440 / 2 @@ -121,7 +103,7 @@ export class BaseWagon extends BaseObject implements Wagon { } } - public checkIfPointInCollisionArea(point: { x: number, y: number }) { + checkIfPointInCollisionArea(point: { x: number, y: number }) { return ( this.collisionArea.startX < point.x && point.x < this.collisionArea.endX diff --git a/src/lib/game/quests/baseQuest.ts b/src/lib/game/quests/baseQuest.ts index 0cd8fbed..95027841 100644 --- a/src/lib/game/quests/baseQuest.ts +++ b/src/lib/game/quests/baseQuest.ts @@ -1,5 +1,5 @@ import { createId } from '@paralleldrive/cuid2' -import type { IGameQuest } from '$lib/game/types' +import type { IGameQuest } from '$lib/game/services/quest/interface' interface IQuestOptions { type: IGameQuest['type'] diff --git a/src/lib/game/quests/noTradingPostQuest.ts b/src/lib/game/quests/noTradingPostQuest.ts index fe867d4c..ebe6242a 100644 --- a/src/lib/game/quests/noTradingPostQuest.ts +++ b/src/lib/game/quests/noTradingPostQuest.ts @@ -1,7 +1,7 @@ import { createId } from '@paralleldrive/cuid2' import type { DonateWoodToVillageAction } from '../actions/donateWoodToVillageAction' import { BaseQuest } from './baseQuest' -import type { IGameQuestTaskFunc } from '$lib/game/types' +import type { IGameQuestTaskFunc } from '$lib/game/services/quest/interface' interface INoTradingPostQuestOptions { creatorId: string diff --git a/src/lib/game/quests/treesAreRunningOutQuest.ts b/src/lib/game/quests/treesAreRunningOutQuest.ts index 0c49ba7d..772f565b 100644 --- a/src/lib/game/quests/treesAreRunningOutQuest.ts +++ b/src/lib/game/quests/treesAreRunningOutQuest.ts @@ -1,7 +1,7 @@ import { createId } from '@paralleldrive/cuid2' import type { PlantTreeAction } from '../actions/plantTreeAction' import { BaseQuest } from './baseQuest' -import type { IGameQuestTaskFunc } from '$lib/game/types' +import type { IGameQuestTaskFunc } from '$lib/game/services/quest/interface' interface ITreesAreRunningOutQuestOptions { creatorId: string diff --git a/src/lib/game/services/actionService.ts b/src/lib/game/services/action/actionService.ts similarity index 91% rename from src/lib/game/services/actionService.ts rename to src/lib/game/services/action/actionService.ts index 373ca6a0..43d2f90b 100644 --- a/src/lib/game/services/actionService.ts +++ b/src/lib/game/services/action/actionService.ts @@ -1,7 +1,7 @@ -import type { Player } from '../objects/units/player' -import { ChopTreeScript } from '../scripts/chopTreeScript' -import { MineStoneScript } from '../scripts/mineStoneScript' -import { PlantNewTreeScript } from '../scripts/plantNewTreeScript' +import type { Player } from '../../objects/units/player' +import { ChopTreeScript } from '../../scripts/chopTreeScript' +import { MineStoneScript } from '../../scripts/mineStoneScript' +import { PlantNewTreeScript } from '../../scripts/plantNewTreeScript' import type { Game, GameObject, @@ -17,12 +17,13 @@ import { GITHUB_REPO_URL, } from '$lib/config' import type { GameAction } from '$lib/game/actions/interface' -import type { GameService } from '$lib/game/services/interface' import { TreeObject } from '$lib/game/objects/treeObject' -import { Route } from '$lib/game/common/route' +import { Route } from '$lib/game/services/route/route' import { StoneObject } from '$lib/game/objects/stoneObject' import { VillageChunk } from '$lib/game/services/chunk/villageChunk' import { Group } from '$lib/game/common/group' +import type { GameActionService } from '$lib/game/services/action/interface' +import { ANSWER } from '$lib/game/services/action/answer' interface ICommandWithAction { id: string @@ -30,66 +31,7 @@ interface ICommandWithAction { command: string } -export const ANSWER = { - OK: { - ok: true, - message: null, - }, - DONATE_WOOD_OK: { - ok: true, - message: 'You gave wood to the village! Your reputation has increased.', - }, - VOTED_OK: { - ok: true, - message: 'You voted!', - }, - ERROR: { - ok: false, - message: null, - }, - BUSY_ERROR: { - ok: false, - message: 'You\'re busy right now', - }, - CANT_DO_THIS_NOW_ERROR: { - ok: false, - message: 'This cannot be done now.', - }, - NO_PLAYER_ERROR: { - ok: false, - message: 'You are not in active game :(', - }, - NO_TARGET_ERROR: { - ok: false, - message: 'No target specified.', - }, - NO_SPACE_AVAILABLE_ERROR: { - ok: false, - message: 'No space available.', - }, - NO_AVAILABLE_TREE_ERROR: { - ok: false, - message: 'No available tree', - }, - WRONG_AMOUNT_ERROR: { - ok: false, - message: 'Incorrect quantity specified.', - }, - ALREADY_VOTED_ERROR: { - ok: false, - message: 'You\'ve already voted.', - }, - NOT_ENOUGH_PARAMS_ERROR: { - ok: false, - message: 'Be more specific.', - }, - NOT_ENOUGH_WOOD_ERROR: { - ok: false, - message: 'You don\'t have enough wood.', - }, -} - -export class ActionService implements GameService { +export class ActionService implements GameActionService { possibleCommands!: ICommandWithAction[] possibleActions!: IGameSceneAction[] activeActions!: IGameSceneAction[] @@ -134,7 +76,7 @@ export class ActionService implements GameService { } public findDynamicActionByCommand(command: string) { - const quest = this.game.eventService.findActionByCommandInQuest(command) + const quest = this.game.questService.findActionByCommand(command) if (quest) { return quest } diff --git a/src/lib/game/services/action/answer.ts b/src/lib/game/services/action/answer.ts new file mode 100644 index 00000000..33f5f70f --- /dev/null +++ b/src/lib/game/services/action/answer.ts @@ -0,0 +1,58 @@ +export const ANSWER = { + OK: { + ok: true, + message: null, + }, + DONATE_WOOD_OK: { + ok: true, + message: 'You gave wood to the village! Your reputation has increased.', + }, + VOTED_OK: { + ok: true, + message: 'You voted!', + }, + ERROR: { + ok: false, + message: null, + }, + BUSY_ERROR: { + ok: false, + message: 'You\'re busy right now', + }, + CANT_DO_THIS_NOW_ERROR: { + ok: false, + message: 'This cannot be done now.', + }, + NO_PLAYER_ERROR: { + ok: false, + message: 'You are not in active game :(', + }, + NO_TARGET_ERROR: { + ok: false, + message: 'No target specified.', + }, + NO_SPACE_AVAILABLE_ERROR: { + ok: false, + message: 'No space available.', + }, + NO_AVAILABLE_TREE_ERROR: { + ok: false, + message: 'No available tree', + }, + WRONG_AMOUNT_ERROR: { + ok: false, + message: 'Incorrect quantity specified.', + }, + ALREADY_VOTED_ERROR: { + ok: false, + message: 'You\'ve already voted.', + }, + NOT_ENOUGH_PARAMS_ERROR: { + ok: false, + message: 'Be more specific.', + }, + NOT_ENOUGH_WOOD_ERROR: { + ok: false, + message: 'You don\'t have enough wood.', + }, +} diff --git a/src/lib/game/services/action/interface.ts b/src/lib/game/services/action/interface.ts new file mode 100644 index 00000000..874778b3 --- /dev/null +++ b/src/lib/game/services/action/interface.ts @@ -0,0 +1,5 @@ +import type { GameService } from '$lib/game/services/interface' + +export interface GameActionService extends GameService { + getAmountFromChatCommand: (text: string) => number | null +} diff --git a/src/lib/game/services/event/event.ts b/src/lib/game/services/event/event.ts index 5ebb731e..9809a187 100644 --- a/src/lib/game/services/event/event.ts +++ b/src/lib/game/services/event/event.ts @@ -1,7 +1,7 @@ import { createId } from '@paralleldrive/cuid2' import { getDatePlusSeconds } from '$lib/date' import type { GameSceneType } from '$lib/game/types' -import type { IGameEvent } from '$lib/game/services/interface' +import type { IGameEvent } from '$lib/game/services/event/interface' interface IEventOptions { title: IGameEvent['title'] @@ -52,7 +52,7 @@ export class Event implements IGameEvent { // sendMessage(type) } - public checkStatus() { + checkStatus(): IGameEvent['status'] { if (this.endsAt.getTime() <= new Date().getTime()) { this.status = 'STOPPED' } diff --git a/src/lib/game/services/event/eventService.ts b/src/lib/game/services/event/eventService.ts index e3ae159e..5fe18d04 100644 --- a/src/lib/game/services/event/eventService.ts +++ b/src/lib/game/services/event/eventService.ts @@ -1,25 +1,26 @@ import { PollService } from './pollService' -import { QuestService } from './questService' import type { Game, - GameSceneType, IGamePoll, IGameQuest, IGameQuestTask, + GameSceneType, } from '$lib/game/types' import { Event } from '$lib/game/services/event/event' import { VillageChunk } from '$lib/game/services/chunk/villageChunk' import type { - GameEventService, IGameEvent, -} from '$lib/game/services/interface' + GameEventService, + IGameEvent, +} from '$lib/game/services/event/interface' +import type { + IGameQuestTask, +} from '$lib/game/services/quest/interface' export class EventService implements GameEventService { - events: Event[] = [] - questService: QuestService + events: IGameEvent[] = [] pollService: PollService game: Game constructor(game: Game) { this.game = game - this.questService = new QuestService(this.game) this.pollService = new PollService(this.game) } @@ -28,16 +29,15 @@ export class EventService implements GameEventService { const status = event.checkStatus() if (status === 'STOPPED') { - this.handleEnding(event) + this.#handleEnding(event) this.destroy(event) } - this.updateSuccessPollsWithQuest(event) - this.updateClosedQuests(event) + this.#updateSuccessPollsWithQuest(event) + this.#updateClosedQuests(event) } this.pollService.update() - this.questService.update() } initEvent({ @@ -74,64 +74,12 @@ export class EventService implements GameEventService { return event } - prepareQuestData(quest: IGameQuest | undefined) { - if (!quest) { - return - } - - const tasks = quest?.tasks.map((t) => { - const action = t.action - ? { - ...t.action, - live: undefined, - scene: undefined, - } - : undefined - return { ...t, action } - }) - - return { - ...quest, - tasks, - } - } - - preparePollData(poll: IGamePoll | undefined) { - if (!poll) { - return - } - - return { - ...poll, - action: { - ...poll.action, - poll: undefined, - live: undefined, - scene: undefined, - }, - scene: undefined, - } - } - - public destroy(event: Event) { + destroy(event: IGameEvent): void { const index = this.events.indexOf(event) this.events.splice(index, 1) } - public findActionByCommandInQuest(command: string) { - for (const event of this.events) { - if (event.quest?.tasks) { - const task = event.quest.tasks.find( - (q) => q.action?.command === command, - ) - if (task?.action) { - return task.action - } - } - } - } - - public findActionByCommandInPoll(command: string) { + findActionByCommandInPoll(command: string) { for (const event of this.events) { if (event.poll?.action && event.poll.action.command === command) { return event.poll?.action @@ -139,7 +87,7 @@ export class EventService implements GameEventService { } } - private handleEnding(event: Event) { + #handleEnding(event: IGameEvent) { if (event.type === 'SCENE_CHANGING_STARTED' && event.scene) { this.game.initScene(event.scene) } @@ -157,7 +105,7 @@ export class EventService implements GameEventService { } } - private destroyAllEventsWithPoll() { + #destroyAllEventsWithPoll() { for (const event of this.events) { if (event.poll) { this.destroy(event) @@ -165,14 +113,14 @@ export class EventService implements GameEventService { } } - private updateSuccessPollsWithQuest(event: Event) { + #updateSuccessPollsWithQuest(event: IGameEvent) { if (event.poll?.status !== 'SUCCESS' || !event.quest) { return } const updateProgress1: IGameQuestTask['updateProgress'] = () => { if ( - !this.game.routeService.route?.flags + !this.game.routeService.route && this.events.find((e) => e.type === 'MAIN_QUEST_STARTED') ) { return { @@ -181,7 +129,7 @@ export class EventService implements GameEventService { } const items - = this.game.wagonService.wagon.cargo?.checkIfAlreadyHaveItem('WOOD') + = this.game.wagonService.cargo?.checkIfAlreadyHaveItem('WOOD') if (!items) { return { status: 'FAILED', @@ -196,7 +144,7 @@ export class EventService implements GameEventService { } const tasks = [ - this.questService.createTask({ + this.game.questService.createTask({ updateProgress: updateProgress1, description: 'Transport cargo safely', progressNow: 100, @@ -217,7 +165,7 @@ export class EventService implements GameEventService { }) // Cargo - this.game.wagonService.wagon.setCargo() + this.game.wagonService.setCargo() if (this.game.chunkService.chunk instanceof VillageChunk) { this.game.routeService.generateAdventure( @@ -228,13 +176,12 @@ export class EventService implements GameEventService { this.game.tradeService.traderIsMovingWithWagon = true - this.destroyAllEventsWithPoll() + this.#destroyAllEventsWithPoll() } - private updateClosedQuests(event: Event) { + #updateClosedQuests(event: IGameEvent) { if (event.status === 'STARTED' && event.quest) { if (event.quest.status === 'FAILED' || event.quest.status === 'SUCCESS') { - // event.status = 'STOPPED' } } diff --git a/src/lib/game/services/event/interface.ts b/src/lib/game/services/event/interface.ts new file mode 100644 index 00000000..b87c4c99 --- /dev/null +++ b/src/lib/game/services/event/interface.ts @@ -0,0 +1,36 @@ +import type { + GameSceneType, + IGamePoll, + ITradeOffer, WebSocketMessage, +} from '$lib/game/types' +import type { GameService } from '$lib/game/services/interface' +import type { IGameQuest } from '$lib/game/services/quest/interface' + +export interface GameEventService extends GameService { + events: IGameEvent[] + destroy: (event: IGameEvent) => void + initEvent: (event: { + title: IGameEvent['title'] + description: IGameEvent['description'] + type: IGameEvent['type'] + secondsToEnd: number + scene?: GameSceneType + poll?: IGameEvent['poll'] + quest?: IGameEvent['quest'] + offers?: IGameEvent['offers'] + }) => IGameEvent +} + +export interface IGameEvent { + id: string + title: string + description: string + type: WebSocketMessage['event'] + status: 'STARTED' | 'STOPPED' + endsAt: Date + poll?: IGamePoll + quest?: IGameQuest + offers?: ITradeOffer[] + scene?: GameSceneType + checkStatus: () => IGameEvent['status'] +} diff --git a/src/lib/game/services/interface.ts b/src/lib/game/services/interface.ts index 6d992e78..9ad57158 100644 --- a/src/lib/game/services/interface.ts +++ b/src/lib/game/services/interface.ts @@ -1,79 +1,8 @@ import type { Game, - GameObject, - GameObjectFlag, - GameSceneType, - IGamePoll, - IGameQuest, - ITradeOffer, - WebSocketMessage, } from '$lib/game/types' -import type { GameChunk } from '$lib/game/services/chunk/interface' export interface GameService { game: Game update: () => void } - -export interface GameWagonService extends GameService { - wagon: Wagon - randomOutFlag: GameObjectFlag - randomNearFlag: GameObjectFlag - initWagon: (point: { x: number, y: number }) => void -} - -export interface Wagon extends GameObject { - fuel: number - visibilityArea: { - startX: number - endX: number - startY: number - endY: number - } - cargoType: 'CHEST' | undefined -} - -export interface GameActionService extends GameService { - getAmountFromChatCommand: (text: string) => number | null -} - -export interface GameRouteService extends GameService { - route: IGameRoute | undefined - nextFlag: GameObjectFlag | undefined - addChunk: (chunk: GameChunk) => void -} - -export interface IGameRoute { - startPoint: { x: number, y: number } - endPoint: { x: number, y: number } - chunks: GameChunk[] - addGlobalFlag: (point: { x: number, y: number }) => void - setEndPoint: (point: { x: number, y: number }) => void - removeFlag: (id: string) => void -} - -export interface GameEventService extends GameService { - events: IGameEvent[] - initEvent: (event: { - title: IGameEvent['title'] - description: IGameEvent['description'] - type: IGameEvent['type'] - secondsToEnd: number - scene?: GameSceneType - poll?: IGameEvent['poll'] - quest?: IGameEvent['quest'] - offers?: IGameEvent['offers'] - }) => IGameEvent -} - -export interface IGameEvent { - id: string - title: string - description: string - type: WebSocketMessage['event'] - status: 'STARTED' | 'STOPPED' - endsAt: Date - poll?: IGamePoll - quest?: IGameQuest - offers?: ITradeOffer[] -} diff --git a/src/lib/game/services/quest/interface.ts b/src/lib/game/services/quest/interface.ts new file mode 100644 index 00000000..bad2294d --- /dev/null +++ b/src/lib/game/services/quest/interface.ts @@ -0,0 +1,37 @@ +import type { GameService } from '$lib/game/services/interface' +import type { GameAction } from '$lib/game/actions/interface' + +export interface GameQuestService extends GameService { + quests: IGameQuest[] + findActionByCommand: (command: string) => GameAction | undefined +} + +export interface IGameQuest { + id: string + type: 'MAIN' | 'SIDE' + title: string + description: string + tasks: IGameQuestTask[] + status: 'INACTIVE' | 'ACTIVE' | 'FAILED' | 'SUCCESS' + creatorId: string + conditions: { + chunks?: number + limitSeconds?: number + reward?: string + } +} + +export interface IGameQuestTask { + id: string + description: string + status: 'INACTIVE' | 'ACTIVE' | 'FAILED' | 'SUCCESS' + progressNow: number | boolean + progressToSuccess: number | boolean + updateProgress: IGameQuestTaskFunc + command?: string + action?: GameAction +} + +export type IGameQuestTaskFunc = ( + progressToSuccess?: IGameQuestTask['progressToSuccess'], +) => Partial diff --git a/src/lib/game/services/event/questService.ts b/src/lib/game/services/quest/questService.ts similarity index 84% rename from src/lib/game/services/event/questService.ts rename to src/lib/game/services/quest/questService.ts index 8284c01c..a6938d0f 100644 --- a/src/lib/game/services/event/questService.ts +++ b/src/lib/game/services/quest/questService.ts @@ -4,12 +4,17 @@ import { PlantTreeAction } from '../../actions/plantTreeAction' import { NoTradingPostQuest } from '../../quests/noTradingPostQuest' import { TreesAreRunningOutQuest } from '../../quests/treesAreRunningOutQuest' import type { - Game, IGameQuest, IGameQuestTask, IGameQuestTaskFunc, + Game, } from '$lib/game/types' import { VillageChunk } from '$lib/game/services/chunk/villageChunk' -import type { GameService } from '$lib/game/services/interface' +import type { + GameQuestService, + IGameQuest, IGameQuestTask, IGameQuestTaskFunc, +} from '$lib/game/services/quest/interface' +import type { GameAction } from '$lib/game/actions/interface' -export class QuestService implements GameService { +export class QuestService implements GameQuestService { + quests: IGameQuest[] = [] game: Game constructor(game: Game) { @@ -17,10 +22,10 @@ export class QuestService implements GameService { } update() { - this.updateAndFinishActiveQuests() + this.#updateAndFinishActiveQuests() if (this.game.chunkService.chunk instanceof VillageChunk) { - this.generateNewSideQuest() + this.#generateNewSideQuest() } for (const event of this.game.eventService.events) { @@ -30,13 +35,13 @@ export class QuestService implements GameService { for (const task of event.quest.tasks) { if (task.status === 'ACTIVE') { - this.updateQuestActiveTask(task) + this.#updateQuestActiveTask(task) } } } } - public create({ + create({ status, type, tasks, @@ -57,7 +62,7 @@ export class QuestService implements GameService { } } - public createTask({ + createTask({ updateProgress, progressToSuccess, progressNow, @@ -76,7 +81,20 @@ export class QuestService implements GameService { } } - private updateQuestActiveTask(task: IGameQuestTask) { + findActionByCommand(command: string): GameAction | undefined { + for (const q of this.quests) { + if (q?.tasks) { + const task = q.tasks.find( + (q) => q.action?.command === command, + ) + if (task?.action) { + return task.action + } + } + } + } + + #updateQuestActiveTask(task: IGameQuestTask) { const progress = task.updateProgress(task.progressToSuccess) if (typeof progress.status !== 'undefined') { @@ -90,7 +108,7 @@ export class QuestService implements GameService { } } - private updateAndFinishActiveQuests() { + #updateAndFinishActiveQuests() { for (const event of this.game.eventService.events) { if (!event.quest || event.quest.status !== 'ACTIVE') { continue @@ -98,8 +116,7 @@ export class QuestService implements GameService { // Tasks done? if (!event.quest.tasks.find((t) => t.status === 'ACTIVE')) { - // - this.game.wagonService.wagon.emptyCargo() + this.game.wagonService.emptyCargo() this.game.tradeService.traderIsMovingWithWagon = false if (!event.quest.tasks.find((t) => t.status === 'FAILED')) { @@ -113,7 +130,7 @@ export class QuestService implements GameService { } } - private generateSecondSideQuest() { + #generateSecondSideQuest() { const sideQuests = this.game.eventService.events.filter( (e) => e.type === 'SIDE_QUEST_STARTED', ) @@ -159,7 +176,7 @@ export class QuestService implements GameService { }) } - private generateNewSideQuest() { + #generateNewSideQuest() { if (!this.game.chunkService.chunk) { return } @@ -169,7 +186,7 @@ export class QuestService implements GameService { if (store) { const notEnough = this.game.chunkService.chunk.checkIfThereAreNotEnoughTrees() if (notEnough) { - return this.generateSecondSideQuest() + return this.#generateSecondSideQuest() } return diff --git a/src/lib/game/services/route/interface.ts b/src/lib/game/services/route/interface.ts new file mode 100644 index 00000000..568c8253 --- /dev/null +++ b/src/lib/game/services/route/interface.ts @@ -0,0 +1,22 @@ +import type { GameObjectFlag } from '$lib/game/types' +import type { + GameChunk, + IGameVillageChunk, +} from '$lib/game/services/chunk/interface' +import type { GameService } from '$lib/game/services/interface' + +export interface GameRouteService extends GameService { + route: IGameRoute | undefined + nextFlag: GameObjectFlag | undefined + addChunk: (chunk: GameChunk) => void + generateAdventure: (village: IGameVillageChunk, chunks: number) => void +} + +export interface IGameRoute { + startPoint: { x: number, y: number } + endPoint: { x: number, y: number } + chunks: GameChunk[] + addGlobalFlag: (point: { x: number, y: number }) => void + setEndPoint: (point: { x: number, y: number }) => void + removeFlag: (id: string) => void +} diff --git a/src/lib/game/common/route.ts b/src/lib/game/services/route/route.ts similarity index 97% rename from src/lib/game/common/route.ts rename to src/lib/game/services/route/route.ts index 518dd801..a47ad9ef 100644 --- a/src/lib/game/common/route.ts +++ b/src/lib/game/services/route/route.ts @@ -1,7 +1,7 @@ import { FlagObject } from '$lib/game/objects/flagObject' import type { GameChunk } from '$lib/game/services/chunk/interface' import type { Game } from '$lib/game/types' -import type { IGameRoute } from '$lib/game/services/interface' +import type { IGameRoute } from '$lib/game/services/route/interface' interface IRoutePoint { x: number diff --git a/src/lib/game/services/routeService.ts b/src/lib/game/services/route/routeService.ts similarity index 89% rename from src/lib/game/services/routeService.ts rename to src/lib/game/services/route/routeService.ts index e7ac5997..bf4b64b7 100644 --- a/src/lib/game/services/routeService.ts +++ b/src/lib/game/services/route/routeService.ts @@ -1,11 +1,11 @@ import type { Game, } from '$lib/game/types' -import { Route } from '$lib/game/common/route' +import { Route } from '$lib/game/services/route/route' import type { GameRouteService, IGameRoute, -} from '$lib/game/services/interface' +} from '$lib/game/services/route/interface' import type { GameChunk, IGameVillageChunk, @@ -29,7 +29,7 @@ export class RouteService implements GameRouteService { (e) => e.type === 'MAIN_QUEST_STARTED', ) ) { - return this.finishAdventure() + return this.#finishAdventure() } } @@ -56,7 +56,7 @@ export class RouteService implements GameRouteService { this.route?.chunks.push(chunk) } - generateAdventure(village: IGameVillageChunk, chunks: number) { + generateAdventure(village: IGameVillageChunk, chunks: number): void { const wagonStartPoint = village.wagonStop const villageOutPoint = village.randomOutPoint if (!wagonStartPoint) { @@ -86,10 +86,10 @@ export class RouteService implements GameRouteService { } } - finishAdventure() { + #finishAdventure() { console.log('Adventure finished!', new Date()) this.route = undefined - this.game.wagonService.wagon.emptyCargo() + this.game.wagonService.emptyCargo() this.game.tradeService.traderIsMovingWithWagon = false this.game.tradeService.handleTradeIsOver() diff --git a/src/lib/game/services/socket/interface.ts b/src/lib/game/services/socket/interface.ts new file mode 100644 index 00000000..06c24ce1 --- /dev/null +++ b/src/lib/game/services/socket/interface.ts @@ -0,0 +1,5 @@ +import type { GameService } from '$lib/game/services/interface' + +export interface GameWebSocketService extends GameService { + +} diff --git a/src/lib/game/services/socket/webSocketService.ts b/src/lib/game/services/socket/webSocketService.ts new file mode 100644 index 00000000..017e8713 --- /dev/null +++ b/src/lib/game/services/socket/webSocketService.ts @@ -0,0 +1,90 @@ +import { MessageController } from '$lib/game/utils/messageController' +import type { Game, GameObject, WebSocketMessage } from '$lib/game/types' +import type { GameWebSocketService } from '$lib/game/services/socket/interface' +import { env } from '$env/dynamic/public' +import { browser } from '$app/environment' + +export class WebSocketService implements GameWebSocketService { + socket!: WebSocket + messagesPerSecond = 0 + kbitPerSecond = 0 + game: Game + + constructor(game: Game) { + this.game = game + + if (browser) { + this.#init() + } + } + + update() {} + + #handleMessage(message: WebSocketMessage): void { + if (message.object) { + this.#handleMessageObject(message.object) + } + if (message.event) { + this.#handleMessageEvent(message.event) + } + } + + #handleMessageObject(object: Partial) { + if (!object.id) { + return + } + + this.game.findObject(object.id) + } + + #handleMessageEvent(event: WebSocketMessage['event']) { + if (event === 'RAID_STARTED') { + this.game.audio.playSound('MARCHING_WITH_HORNS') + } + if (event === 'GROUP_FORM_STARTED') { + this.game.audio.playSound('MARCHING_WITH_HORNS') + } + if (event === 'MAIN_QUEST_STARTED') { + this.game.audio.playSound('MARCHING_WITH_HORNS') + } + if (event === 'SCENE_CHANGED') { + this.game.rebuildScene() + } + if (event === 'IDEA_CREATED') { + this.game.audio.playSound('YEAH') + } + } + + #init() { + if (!env.PUBLIC_WEBSOCKET_URL) { + throw new Error('No PUBLIC_WEBSOCKET_URL in config') + } + + this.socket = new WebSocket(env.PUBLIC_WEBSOCKET_URL) + + this.#setMessagesPerSecondHandler() + + this.socket.addEventListener('message', (event) => { + const message = MessageController.parse(event.data.toString()) + if (!message) { + return + } + + this.messagesPerSecond += 1 + const bytes = JSON.stringify(message).length + this.kbitPerSecond += Math.round((bytes * 8) / 1024) + + this.#handleMessage(message) + }) + } + + #setMessagesPerSecondHandler() { + return setInterval(() => { + // console.log( + // `${WebSocketManager.messagesPerSecond} msg/s, ${WebSocketManager.kbitPerSecond} kbit/s`, + // ) + this.messagesPerSecond = 0 + this.kbitPerSecond = 0 + }, 1000) + } +} diff --git a/src/lib/game/services/trade/interface.ts b/src/lib/game/services/trade/interface.ts new file mode 100644 index 00000000..0d6dc035 --- /dev/null +++ b/src/lib/game/services/trade/interface.ts @@ -0,0 +1,6 @@ +import type { GameService } from '$lib/game/services/interface' + +export interface GameTradeService extends GameService { + traderIsMovingWithWagon: boolean + handleTradeIsOver: () => void +} diff --git a/src/lib/game/services/tradeService.ts b/src/lib/game/services/trade/tradeService.ts similarity index 92% rename from src/lib/game/services/tradeService.ts rename to src/lib/game/services/trade/tradeService.ts index 073362dc..0b2716e3 100644 --- a/src/lib/game/services/tradeService.ts +++ b/src/lib/game/services/trade/tradeService.ts @@ -1,6 +1,6 @@ -import { MoveOffScreenAndSelfDestroyScript } from '../scripts/moveOffScreenAndSelfDestroyScript' -import { MoveToTargetScript } from '../scripts/moveToTargetScript' -import { MoveToTradePostAndTradeScript } from '../scripts/moveToTradePostAndTradeScript' +import { MoveOffScreenAndSelfDestroyScript } from '../../scripts/moveOffScreenAndSelfDestroyScript' +import { MoveToTargetScript } from '../../scripts/moveToTargetScript' +import { MoveToTradePostAndTradeScript } from '../../scripts/moveToTradePostAndTradeScript' import { getRandomInRange } from '$lib/random' import type { Game, @@ -10,12 +10,12 @@ import { VillageChunk } from '$lib/game/services/chunk/villageChunk' import { FlagObject } from '$lib/game/objects/flagObject' import { Trader } from '$lib/game/objects/units/trader' import { Poll } from '$lib/game/common/poll' -import type { GameService } from '$lib/game/services/interface' +import type { GameTradeService } from '$lib/game/services/trade/interface' -export class TradeService implements GameService { - public offers: ITradeOffer[] = [] - public tradeWasSuccessful: boolean - public traderIsMovingWithWagon: boolean +export class TradeService implements GameTradeService { + offers: ITradeOffer[] = [] + tradeWasSuccessful: boolean + traderIsMovingWithWagon: boolean game: Game constructor(game: Game) { @@ -288,7 +288,7 @@ export class TradeService implements GameService { title: 'The merchant offers a quest', description: 'Let\'s make the quest active? Vote in chat.', secondsToEnd: 180, - quest: this.game.eventService.questService.create({ + quest: this.game.questService.create({ status: 'INACTIVE', type: 'MAIN', title: 'Transport cargo to a neighboring village', diff --git a/src/lib/game/services/wagon/interface.ts b/src/lib/game/services/wagon/interface.ts new file mode 100644 index 00000000..2886ca04 --- /dev/null +++ b/src/lib/game/services/wagon/interface.ts @@ -0,0 +1,29 @@ +import type { + GameObject, + GameObjectFlag, + IGameInventory, +} from '$lib/game/types' +import type { GameService } from '$lib/game/services/interface' + +export interface GameWagonService extends GameService { + wagon: Wagon + cargo: IGameInventory | undefined + randomOutFlag: GameObjectFlag + randomNearFlag: GameObjectFlag + initWagon: (point: { x: number, y: number }) => void + setCargo: () => void + emptyCargo: () => void +} + +export interface Wagon extends GameObject { + fuel: number + visibilityArea: { + startX: number + endX: number + startY: number + endY: number + } + cargoType: 'CHEST' | undefined + refuel: (woodAmount: number) => void + emptyFuel: () => void +} diff --git a/src/lib/game/services/wagonService.ts b/src/lib/game/services/wagon/wagonService.ts similarity index 87% rename from src/lib/game/services/wagonService.ts rename to src/lib/game/services/wagon/wagonService.ts index 85631df7..4078a515 100644 --- a/src/lib/game/services/wagonService.ts +++ b/src/lib/game/services/wagon/wagonService.ts @@ -1,13 +1,14 @@ +import { createId } from '@paralleldrive/cuid2' import { getMinusOrPlus, getRandomInRange } from '$lib/random' import type { Game } from '$lib/game/types' import { FlagObject } from '$lib/game/objects/flagObject' import { BaseWagon } from '$lib/game/objects/baseWagon' -import type { - GameWagonService, -} from '$lib/game/services/interface' +import { Inventory } from '$lib/game/common/inventory' +import type { GameWagonService } from '$lib/game/services/wagon/interface' export class WagonService implements GameWagonService { wagon!: BaseWagon + cargo: Inventory | undefined game: Game #outFlags: FlagObject[] = [] @@ -38,6 +39,21 @@ export class WagonService implements GameWagonService { return this.#nearFlags[Math.floor(Math.random() * this.#nearFlags.length)] } + setCargo() { + this.cargo = new Inventory({ + id: createId(), + saveInDb: false, + objectId: this.wagon.id, + }) + void this.cargo.addOrCreateItem('WOOD', 100) + this.wagon.cargoType = 'CHEST' + } + + emptyCargo() { + this.cargo = undefined + this.wagon.cargoType = undefined + } + #updateWagon() { const collisionObjects = this.game.children.filter( diff --git a/src/lib/game/types.ts b/src/lib/game/types.ts index d6e9d7dd..20283d2d 100644 --- a/src/lib/game/types.ts +++ b/src/lib/game/types.ts @@ -1,21 +1,29 @@ import type { Container, TilingSprite } from 'pixi.js' import type { GameAction } from '$lib/game/actions/interface' -import type { - GameActionService, - GameEventService, - GameRouteService, - GameService, - GameWagonService, - IGameEvent, - IGameRoute, Wagon, -} from '$lib/game/services/interface' + import type { GameChunk, GameChunkService, IGameChunkTheme, } from '$lib/game/services/chunk/interface' import type { GamePlayerService } from '$lib/game/services/player/interface' +import type { GameTradeService } from '$lib/game/services/trade/interface' +import type { + GameEventService, + IGameEvent, +} from '$lib/game/services/event/interface' +import type { + GameWagonService, + Wagon, +} from '$lib/game/services/wagon/interface' +import type { + GameRouteService, + IGameRoute, +} from '$lib/game/services/route/interface' +import type { GameActionService } from '$lib/game/services/action/interface' +import type { GameQuestService } from '$lib/game/services/quest/interface' export interface Game extends Container { + isPaused: boolean children: GameObject[] tick: number audio: GameAudio @@ -25,17 +33,20 @@ export interface Game extends Container { activePlayers: GameObjectPlayer[] actionService: GameActionService eventService: GameEventService - tradeService: GameService + tradeService: GameTradeService wagonService: GameWagonService routeService: GameRouteService chunkService: GameChunkService playerService: GamePlayerService + questService: GameQuestService play: () => void checkIfThisFlagIsTarget: (id: string) => boolean initScene: (scene: GameSceneType) => void + findObject: (id: string) => GameObject | undefined removeObject: (obj: GameObject) => void stopRaid: () => void initRaiders: (count: number) => void + rebuildScene: () => void } export interface GameScene { @@ -153,6 +164,7 @@ export interface IGameInventory { items: IGameInventoryItem[] reduceOrDestroyItem: (type: ItemType, amount: number) => Promise addOrCreateItem: (type: ItemType, amount: number) => Promise + checkIfAlreadyHaveItem: (type: ItemType) => IGameInventoryItem | undefined } export interface IGameInventoryItem { @@ -174,36 +186,6 @@ export interface IGameSkill { xpNextLvl: number } -export interface IGameQuest { - id: string - type: 'MAIN' | 'SIDE' - title: string - description: string - tasks: IGameQuestTask[] - status: 'INACTIVE' | 'ACTIVE' | 'FAILED' | 'SUCCESS' - creatorId: string - conditions: { - chunks?: number - limitSeconds?: number - reward?: string - } -} - -export interface IGameQuestTask { - id: string - description: string - status: 'INACTIVE' | 'ACTIVE' | 'FAILED' | 'SUCCESS' - progressNow: number | boolean - progressToSuccess: number | boolean - updateProgress: IGameQuestTaskFunc - command?: string - action?: GameAction -} - -export type IGameQuestTaskFunc = ( - progressToSuccess?: IGameQuestTask['progressToSuccess'], -) => Partial - export type IGameObjectState = | 'MOVING' | 'IDLE' diff --git a/src/lib/game/utils/webSocketManager.ts b/src/lib/game/utils/webSocketManager.ts deleted file mode 100644 index 5ae70db6..00000000 --- a/src/lib/game/utils/webSocketManager.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { MessageController } from '$lib/game/utils/messageController' -import type { Game } from '$lib/game/types' - -export abstract class WebSocketManager { - public static socket: WebSocket - public static messagesPerSecond = 0 - public static kbitPerSecond = 0 - - public static init(game: Game) { - WebSocketManager.socket = new WebSocket('ws://localhost:4002') - - WebSocketManager.setMessagesPerSecondHandler() - - WebSocketManager.socket.addEventListener('message', (event) => { - const message = MessageController.parse(event.data.toString()) - if (!message) { - return - } - - WebSocketManager.messagesPerSecond += 1 - const bytes = JSON.stringify(message).length - WebSocketManager.kbitPerSecond += Math.round((bytes * 8) / 1024) - - game.handleMessage(message) - }) - } - - public static setMessagesPerSecondHandler() { - return setInterval(() => { - // console.log( - // `${WebSocketManager.messagesPerSecond} msg/s, ${WebSocketManager.kbitPerSecond} kbit/s`, - // ) - WebSocketManager.messagesPerSecond = 0 - WebSocketManager.kbitPerSecond = 0 - }, 1000) - } -} diff --git a/src/lib/server/socket/websocket.server.ts b/src/lib/server/socket/websocket.server.ts new file mode 100644 index 00000000..de24699f --- /dev/null +++ b/src/lib/server/socket/websocket.server.ts @@ -0,0 +1,25 @@ +import { WebSocketServer } from 'ws' +import { createId } from '@paralleldrive/cuid2' +import type { WebSocketMessage } from '$lib/game/types' + +export const wss = new WebSocketServer({ port: 4002 }) + +wss.on('connection', (ws) => { + console.log(`WebSocket server: listening on ${ws.url}:${ws.protocol}`) + + ws.on('error', console.error) + + ws.on('message', (data) => { + console.log('received: %s', data) + }) + + ws.send(JSON.stringify({ id: createId(), event: 'RAID_STARTED' })) +}) + +export function sendMessage( + send: WebSocket['send'], + event: WebSocketMessage['event'], + object?: WebSocketMessage['object'], +) { + send(JSON.stringify({ id: createId(), event, object })) +} diff --git a/src/routes/(game)/play/+page.svelte b/src/routes/(game)/play/+page.svelte index fbcc2beb..85f9750a 100644 --- a/src/routes/(game)/play/+page.svelte +++ b/src/routes/(game)/play/+page.svelte @@ -1,20 +1,19 @@ + +

-
- - - +
+ +
+ +
+
@@ -56,4 +59,35 @@ width: 100%; height: 100%; } + + .pause-block { + visibility: hidden; + z-index: 50; + } + + .pause-block[data-active="true"] { + visibility: visible; + display: flex; + align-items: center; + justify-content: center; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.4); + } + + .pause-block button { + background: var(--color-bg-accent-1); + color: var(--color-background); + border: 3px solid var(--color-border); + padding: 1.5em 2.5em; + font-size: 1.2rem; + transition: all 0.2s; + } + + .pause-block button:hover { + transform: scale(1.02); + } diff --git a/src/routes/(game)/play/GameChunkInfo.svelte b/src/routes/(game)/play/GameChunkInfo.svelte index 86362680..12730fcd 100644 --- a/src/routes/(game)/play/GameChunkInfo.svelte +++ b/src/routes/(game)/play/GameChunkInfo.svelte @@ -5,7 +5,7 @@ import type { GameChunk } from '$lib/game/services/chunk/interface' export let type: GameChunk['type'] - export let title + export let title: string
diff --git a/src/routes/(game)/play/GameCommand.svelte b/src/routes/(game)/play/GameCommand.svelte index e8dbe1df..4be66c88 100644 --- a/src/routes/(game)/play/GameCommand.svelte +++ b/src/routes/(game)/play/GameCommand.svelte @@ -1,5 +1,5 @@ -
diff --git a/src/routes/(game)/play/GameEventCard.svelte b/src/routes/(game)/play/GameEventCard.svelte index 3a37555e..e9085265 100644 --- a/src/routes/(game)/play/GameEventCard.svelte +++ b/src/routes/(game)/play/GameEventCard.svelte @@ -4,7 +4,7 @@ import GameQuestConditions from './GameQuestConditions.svelte' import GameQuestTask from './GameQuestTask.svelte' import GameTradeOffer from './GameTradeOffer.svelte' - import type { IGameEvent } from '$lib/game/services/interface' + import type { IGameEvent } from '$lib/game/services/event/interface' export let event: IGameEvent const isActive = event.status === 'STARTED' diff --git a/src/routes/(game)/play/GameEvents.svelte b/src/routes/(game)/play/GameEvents.svelte index aa7d2609..a3c6f470 100644 --- a/src/routes/(game)/play/GameEvents.svelte +++ b/src/routes/(game)/play/GameEvents.svelte @@ -1,6 +1,6 @@ diff --git a/src/routes/(game)/play/GameInterface.svelte b/src/routes/(game)/play/GameInterface.svelte index 9fbf802f..7ec3ef65 100644 --- a/src/routes/(game)/play/GameInterface.svelte +++ b/src/routes/(game)/play/GameInterface.svelte @@ -1,10 +1,10 @@ - diff --git a/src/routes/(game)/play/GamePollProgress.svelte b/src/routes/(game)/play/GamePollProgress.svelte index 856d3b37..b3d69785 100644 --- a/src/routes/(game)/play/GamePollProgress.svelte +++ b/src/routes/(game)/play/GamePollProgress.svelte @@ -17,7 +17,7 @@
Votes: {poll.votes.length} of {poll.votesToSuccess}
-
+
diff --git a/src/routes/(game)/play/GameQuestTask.svelte b/src/routes/(game)/play/GameQuestTask.svelte index 7d372d03..6b3d30c5 100644 --- a/src/routes/(game)/play/GameQuestTask.svelte +++ b/src/routes/(game)/play/GameQuestTask.svelte @@ -3,7 +3,7 @@ import CircleDashed from 'lucide-svelte/icons/circle-dashed' import GameCommand from './GameCommand.svelte' import GameQuestTaskProgress from './GameQuestTaskProgress.svelte' - import type { IGameQuestTask } from '$lib/game/types' + import type { IGameQuestTask } from '$lib/game/services/quest/interface' export let task: IGameQuestTask diff --git a/src/routes/(game)/play/GameQuestTaskProgress.svelte b/src/routes/(game)/play/GameQuestTaskProgress.svelte index 0c38063d..f6b75394 100644 --- a/src/routes/(game)/play/GameQuestTaskProgress.svelte +++ b/src/routes/(game)/play/GameQuestTaskProgress.svelte @@ -1,7 +1,7 @@