diff --git a/.dockerignore b/.dockerignore
index 615017f..4abae2b 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,9 +1,3 @@
-Dockerfile
-.github
-.vscode
-*.md
-
-#### gitignore below
# Nuxt dev/build outputs
.output
.data
@@ -14,7 +8,6 @@ dist
# Node dependencies
node_modules
-.yarn
# Logs
logs
@@ -31,13 +24,3 @@ logs
!.env.example
.data
-
-
-# deploy template
-deploy-template/*
-
-!deploy-template/compose.yml
-
-# generated prisma client
-/prisma/client
-/prisma/validate
diff --git a/.env.example b/.env.example
index 7d708ff..bae34f6 100644
--- a/.env.example
+++ b/.env.example
@@ -1,5 +1,8 @@
DATABASE_URL="postgres://drop:drop@127.0.0.1:5432/drop"
+CLIENT_CERTIFICATES="./.data/ca"
+
+FS_BACKEND_PATH="./.data/objects"
+
GIANT_BOMB_API_KEY=""
-EXTERNAL_URL="http://localhost:3000"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f04182e..1ae20e5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,15 +1,6 @@
name: CI
-on:
- push:
- branches:
- - develop
- pull_request:
- branches:
- - develop
-
-permissions:
- contents: read
+on: [pull_request, push]
jobs:
typecheck:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8045e05..2422087 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -20,29 +20,8 @@ jobs:
uses: actions/checkout@v4
with:
submodules: true
- fetch-depth: 3 # fix for when this gets triggered by tag
- fetch-tags: true
- ref: ${{ github.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
- - name: Determine final version
- id: get_final_ver
- run: |
- BASE_VER=v$(jq -r '.version' package.json)
- TODAY=$(date +'%Y.%m.%d')
-
- echo "Today will be: $TODAY"
- echo "today=$TODAY" >> $GITHUB_OUTPUT
-
- if [[ "${{ github.event_name }}" == "release" ]]; then
- FINAL_VER="$BASE_VER"
- else
- FINAL_VER="${BASE_VER}-nightly.$TODAY"
- fi
-
- echo "Drop's release tag will be: $FINAL_VER"
- echo "final_ver=$FINAL_VER" >> $GITHUB_OUTPUT
-
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
@@ -67,7 +46,6 @@ jobs:
ghcr.io/drop-OSS/drop
tags: |
type=schedule,pattern=nightly
- type=schedule,pattern=nightly.${{ steps.get_final_ver.outputs.today }}
type=semver,pattern=v{{version}}
type=semver,pattern=v{{major}}.{{minor}}
type=semver,pattern=v{{major}}
@@ -77,33 +55,14 @@ jobs:
# set latest tag for stable releases
type=raw,value=latest,enable=${{ github.event_name == 'release' && github.event.release.prerelease == false }}
- - name: Cache
- uses: actions/cache@v4
- id: cache
- with:
- path: cache-mount
- key: cache-mount-${{ hashFiles('Dockerfile') }}
-
- - name: Restore Docker cache mounts
- uses: reproducible-containers/buildkit-cache-dance@v3
- with:
- builder: ${{ steps.setup-buildx.outputs.name }}
- cache-dir: cache-mount
- dockerfile: Dockerfile
- skip-extraction: ${{ steps.cache.outputs.cache-hit }}
-
- name: Build and push image
id: build-and-push
uses: docker/build-push-action@v6
with:
context: .
push: true
- provenance: mode=max
- sbom: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
- build-args: |
- BUILD_DROP_VERSION=${{ steps.get_final_ver.outputs.final_ver }}
diff --git a/.gitignore b/.gitignore
index 7188be1..705c5c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,5 +33,4 @@ deploy-template/*
!deploy-template/compose.yml
# generated prisma client
-/prisma/client
-/prisma/validate
\ No newline at end of file
+/prisma/client
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index e24bb0c..222a086 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
[submodule "drop-base"]
path = drop-base
- url = https://github.com/Drop-OSS/drop-base.git
+ url = https://github.com/Drop-OSS/drop-base.git
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
index 3c9727c..1e7121f 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1 +1 @@
-drop-base/
\ No newline at end of file
+drop-base/
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
deleted file mode 100644
index 2fc7cb9..0000000
--- a/.vscode/extensions.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "recommendations": [
- "lokalise.i18n-ally",
- "esbenp.prettier-vscode",
- "Prisma.prisma",
- "bradlc.vscode-tailwindcss",
- "Vue.volar",
- "arktypeio.arkdark",
- "EditorConfig.EditorConfig",
- "dbaeumer.vscode-eslint"
- ]
-}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 76d084c..e426a5e 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -17,21 +17,5 @@
"strings": "on"
},
// prioritize ArkType's "type" for autoimports
- "typescript.preferences.autoImportSpecifierExcludeRegexes": ["^(node:)?os$"],
- // i18n Ally settings
- "i18n-ally.sortKeys": true,
- "i18n-ally.keepFulfilled": true,
- "i18n-ally.extract.autoDetect": true,
- "i18n-ally.localesPaths": ["i18n", "i18n/locales"],
- "i18n-ally.keystyle": "nested",
- "i18n-ally.extract.ignored": [
- "string >= 14",
- "string.alphanumeric >= 5",
- "/api/v1/admin/import/version/preload?id=${encodeURIComponent(\n gameId,\n )}&version=${encodeURIComponent(version)}"
- ],
- "i18n-ally.extract.ignoredByFiles": {
- "pages/admin/library/sources/index.vue": ["Filesystem"],
- "components/NewsArticleCreateButton.vue": ["[", "`", "Enter"],
- "server/api/v1/auth/signin/simple.post.ts": ["boolean | undefined"]
- }
+ "typescript.preferences.autoImportSpecifierExcludeRegexes": ["^(node:)?os$"]
}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9055675..3d883ae 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -16,15 +16,11 @@ you would make is not already covered.
- [Reporting Issues](#reporting-issues)
- [You have a problem](#you-have-a-problem)
- [You have a suggestion](#you-have-a-suggestion)
-- [Development](#development)
- - [Note: `--optional` flag is **REQUIRED**](#note-optional-flag-is-required)
- - [Tech Stack](#tech-stack)
- [Submitting Pull Requests](#submitting-pull-requests)
- [Getting started](#getting-started)
- [You have a solution](#you-have-a-solution)
- [You have an addition](#you-have-an-addition)
- [Use the Search, Luke](#use-the-search-luke)
-- [Translation](#translation)
- [Commit Guidelines](#commit-guidelines)
- [Format](#format)
- [Style](#style)
@@ -69,31 +65,6 @@ If you find one, comment on it, so we know more people are supporting it.
If not, you can go ahead and create an issue. Please copy to anyone relevant (e.g. plugin
maintainers) by mentioning their GitHub handle (starting with `@`) in your message.
-## Development
-
-To get started with development, you need `yarn` and `docker compose` installed (or know how to set up a PostgreSQL database).
-
-Steps:
-
-1. Run `git submodule update --init --recursive` to setup submodules
-1. Copy the `.env.example` to `.env` and add any api keys you need to use (e.g. for the Giant Bomb API)
- - You can find other configuration options in the [documentation](https://docs.droposs.org/)
-1. Create the `.data` directory with `mkdir .data`
-1. Ensure that your user owns the `.data` directory with `sudo chown -R $(id -u $(whoami))`
-1. Open up a terminal and navigate to `dev-tools`, and run `docker compose up`
-1. Open up another terminal in the root directory of the project and run `yarn` and then `yarn prisma migrate dev` to setup the database
-1. Run `yarn dev` to start the development server
-
-As part of the first-time bootstrap, Drop creates an invitation with the fixed id of 'admin'. So, to create an admin account, go to:
-
-http://localhost:3000/auth/register?id=admin
-
-### Tech Stack
-
-This repo uses the Nuxt 3 + TailwindCSS stack, with the `yarn` package manager.
-
-For the database, Drop uses Prisma connected to PostgreSQL.
-
## Submitting Pull Requests
### Getting started
@@ -159,10 +130,6 @@ and [create an issue](#reporting-issues) or [submit a PR](#submitting-pull-reque
---
-## Translation
-
-If you want to help translate Drop, we would love to have your help! You can do so on our [weblate instance](https://translate.droposs.org/engage/drop/). Please make sure to **read** the [message format syntax](https://vue-i18n.intlify.dev/guide/essentials/syntax.html) page before starting. We use this special syntax to enable high quality translations, and failure to do so may result in your translations **causing errors** in Drop.
-
## Commit Guidelines
Drop uses the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
@@ -177,6 +144,7 @@ type(scope)!: subject
```
- `type`: the type of the commit is one of the following:
+
- `feat`: new features.
- `fix`: bug fixes.
- `docs`: documentation changes.
@@ -193,6 +161,7 @@ type(scope)!: subject
- `scope`: section of the codebase that the commit makes changes to. If it makes changes to
many sections, or if no section in particular is modified, leave blank without the parentheses.
Examples:
+
- Commit that changes the `git` plugin:
```
@@ -206,6 +175,7 @@ type(scope)!: subject
```
For changes to plugins or themes, the scope should be the plugin or theme name:
+
- ✅ `fix(agnoster): commit subject`
- ❌ `fix(theme/agnoster): commit subject`
@@ -235,6 +205,7 @@ type(scope)!: subject
to specify other details, you can use the commit body, but it won't be visible.
Formatting tricks: the commit subject may contain:
+
- Links to related issues or PRs by writing `#issue`. This will be highlighted by the changelog tool:
```
diff --git a/Dockerfile b/Dockerfile
index d562926..128e0d0 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,56 +1,30 @@
-# syntax=docker/dockerfile:1
+# pull pre-configured and updated build environment
+FROM debian:testing-20250317-slim AS build-system
-### Unified deps builder
-# FROM node:lts-alpine AS deps
-# WORKDIR /app
-# COPY package.json yarn.lock ./
-# RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn install --network-timeout 1000000 --ignore-scripts
-
-### Build for app
-FROM node:lts-alpine AS build-system
# setup workdir - has to be the same filepath as app because fuckin' Prisma
WORKDIR /app
-ENV NODE_ENV=production
-ENV NUXT_TELEMETRY_DISABLED=1
-# ENV YARN_CACHE_FOLDER=/root/.yarn
-
-# add git so drop can determine its git ref at build
-# pnpm for build
-RUN apk add --no-cache git pnpm
-
-# copy deps and rest of project files
-# COPY --from=deps /app/node_modules ./node_modules
+# install dependencies and build
+RUN apt-get update -y
+RUN apt-get install node-corepack -y
+RUN corepack enable
COPY . .
+RUN NUXT_TELEMETRY_DISABLED=1 yarn install --network-timeout 1000000
+RUN NUXT_TELEMETRY_DISABLED=1 yarn prisma generate
+RUN NUXT_TELEMETRY_DISABLED=1 yarn build
-ARG BUILD_DROP_VERSION
-ARG BUILD_GIT_REF
+# create run environment for Drop
+FROM node:lts-slim AS run-system
-# build
-RUN pnpm import
-RUN pnpm install --shamefully-hoist
-RUN pnpm run build
-# RUN --mount=type=cache,target=/root/.yarn yarn postinstall && yarn build
-
-### create run environment for Drop
-FROM node:lts-alpine AS run-system
WORKDIR /app
-ENV NODE_ENV=production
-ENV NUXT_TELEMETRY_DISABLED=1
-
-# RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn yarn add --network-timeout 1000000 --no-lockfile --ignore-scripts prisma@6.11.1
-RUN apk add --no-cache pnpm
-RUN pnpm install prisma@6.11.1
-# init prisma to download all required files
-RUN pnpm prisma init
-
-COPY --from=build-system /app/package.json ./
COPY --from=build-system /app/.output ./app
COPY --from=build-system /app/prisma ./prisma
+COPY --from=build-system /app/package.json ./
COPY --from=build-system /app/build ./startup
-ENV LIBRARY="/library"
-ENV DATA="/data"
+# OpenSSL as a dependency for Drop (TODO: seperate build environment)
+RUN apt-get update -y && apt-get install -y openssl
+RUN yarn global add prisma@6.7.0
-CMD ["sh", "/app/startup/launch.sh"]
+CMD ["/app/startup/launch.sh"]
\ No newline at end of file
diff --git a/README.md b/README.md
index 33cc5d0..ca881d9 100644
--- a/README.md
+++ b/README.md
@@ -6,32 +6,72 @@
# Drop
[](https://droposs.org)
-[](https://docs.droposs.org/)
-[](https://forum.droposs.org)
[](LICENSE)
[](https://discord.gg/ACq4qZp4a9)
[](https://opencollective.com/drop-oss)
-[
-](https://translate.droposs.org/engage/drop/)
-Drop is an open-source game distribution platform, similar to GameVault or Steam. It's designed to distribute and share DRM-free games quickly, all while being incredibly flexible, beautiful, and fast.
-
-
-
-
+Drop is an open-source game distribution platform, like GameVault or Steam. It's designed to distribute and shared DRM-free game quickly, all while being incredibly flexible, beautiful and fast.
## Philosophy
-1. Drop is flexible. While abstractions and interfaces can complicate the codebase, the flexibility is worth it.
-2. Drop is secure. The nature of Drop means an instance can never be accessible without authentication. In line with #1, Drop also supports a huge variety of authentication mechanisms, from username/password to SSO.
-3. Drop is user-friendly. The interface is designed to be clean and simple to use, with advanced features available to users who want them.
+1. Drop is flexible. While abstractions and interfaces can make the codebase more complicated, the flexibility is worth it.
+2. Drop is secure. The nature of Drop means an instance can never be accessible without authentication. In line with #1, Drop also supports a huge variety of authentication mechanisms, from a username/password to SSO.
+3. Drop is user-friendly. The interface is designed to be clean and simple to use, with complexity available to the users who want it.
## Deployment
-See our documentation on how to [deploy Drop](https://docs.droposs.org/docs/guides/quickstart) for more information.
+To just deploy Drop, we've set up a simple docker compose file in deploy-template.
+
+1. Generate a [GiantBomb API Key](https://www.giantbomb.com/api/)
+2. Navigate to the deploy-template directory in your terminal (`cd deploy-template`)
+3. Edit the compose.yml file (`nano compose.yml`) and copy your GiamtBomb API Key into the GIANT_BOMB_API_KEY environment variable
+4. Run `docker compose up -d`
+
+Your drop server should now be running. To register the admin user, navigate to http://your.drop.server.ip:3000/register?id=admin
+and fill in the required forms
+
+### Adding a game
+
+To add a game to the drop library, do as follows:
+
+1. Ensure that the current user owns the library folder with `sudo chown -R $(id -u $(whoami)) library`
+2. `cd library`
+3. `mkdir ` with the name of the game which you would like to register
+4. `cd `
+5. `mkdir ` Upload files for the specific game version to this folder
+6. Navigate to http://your.drop.server.ip:3000/
+7. Import game metadata (uses GiantBomb API Key) by selecting the game and specifying which entry to import
+8. Navigate to http://your.drop.server.ip:3000/admin/library
+9. You should see the game which you have just imported listed in this menu. There should be a notification that "Drop has detected you have new verions of this game to import". Select import here.
+10. Select the game version to import and thus fill in fields as required.
+
+## Tech Stack
+
+This repo uses the Nuxt 3 + TailwindCSS stack, with the `yarn` package manager.
+
+For the database, Drop uses Prisma connected to PostgreSQL.
+
+## Development
+
+To get started with development, you need `yarn --optional` and `docker compose` installed (or know how to set up a PostgreSQL database).
+
+### Note: `--optional` flag is **REQUIRED**
+
+Drop uses a utility package called droplet that's written in Rust. It has builts for Linux (GNU) and Windows, and they are set up as optional packages. `npm` installs these by default, but `yarn` needs the `--optional` flag.
+
+Steps:
+
+1. Run `git submodule update --init --recursive` to setup submodules
+1. Copy the `.env.example` to `.env` and add your GiantBomb metadata key (more metadata providers coming)
+1. Create the `.data` directory with `mkdir .data`
+1. Ensure that your user owns the `.data` directory with `sudo chown -R $(id -u $(whoami))`
+1. Open up a terminal and navigate to `dev-tools`, and run `docker compose up`
+1. Open up another terminal in the root directory of the project and run `yarn` and then `yarn dev` to start the dev server
+
+As part of the first-time bootstrap, Drop creates an invitation with the fixed id of 'admin'. So, to create an admin account, go to:
+
+http://localhost:3000/auth/register?id=admin
## Contributing
-Please see the [in-depth contributing guide](CONTRIBUTING.md). The guide includes information on how to set up the project, how to contribute code, how to report issues, and even how to effectively translate Drop.
-
-[](https://translate.droposs.org/engage/drop/)
+Please see the [in-depth contributing guide](CONTRIBUTING.md)
diff --git a/app.vue b/app.vue
index 26c93ff..c70e804 100644
--- a/app.vue
+++ b/app.vue
@@ -4,52 +4,10 @@
-
-
- {{
- $t("errors.externalUrl.title")
- }}
- {{
- $t("errors.externalUrl.subtitle")
- }}
-
-
hideExternalURL()">
-
-
-
diff --git a/pages/store/[id]/index.vue b/pages/store/[id]/index.vue
index 4bcd942..cc6943f 100644
--- a/pages/store/[id]/index.vue
+++ b/pages/store/[id]/index.vue
@@ -44,7 +44,7 @@
type="button"
class="inline-flex items-center gap-x-2 rounded-md bg-zinc-800 px-3 py-1 text-sm font-semibold font-display text-white shadow-sm hover:bg-zinc-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600 duration-200 hover:scale-105 active:scale-95"
>
- {{ $t("store.openAdminDashboard") }}
+ Open in Admin Dashboard
- {{ $t("store.released") }}
+ Released
-
- {{ $d(new Date(game.mReleased), "short") }}
-
+ {{
+ DateTime.fromISO(game.mReleased).toFormat("d MMMM, yyyy")
+ }}
- {{ $t("store.platform", platforms.length) }}
+ Platform(s)
{{ $t("store.commingSoon") }}coming soon
@@ -90,7 +90,7 @@
- {{ $t("store.rating") }}
+ Rating
- {{
- $t("store.reviews", [rating._sum.mReviewCount ?? 0])
- }}
-
-
-
-
- {{ $t("store.tags") }}
-
-
-
- {{ tag.name }}
-
- {{ $t("store.noTags") }}
-
-
-
-
- {{ $t("store.developers", game.developers.length) }}
-
-
-
- {{ developer.mName }}
-
- {{ $t("store.noDevelopers") }}
-
-
-
-
- {{ $t("store.publishers", game.publishers.length) }}
-
-
-
- {{ publisher.mName }}
-
- {{ $t("store.noPublishers") }} ({{ game.mReviewCount }} reviews)
@@ -197,7 +131,7 @@
- {{ $t("store.noImages") }}
+ No images
@@ -228,9 +162,7 @@
{{
- showPreview ? $t("store.readMore") : $t("store.readLess")
- }} Click to read {{ showPreview ? "more" : "less" }}
@@ -244,7 +176,10 @@
diff --git a/pages/store/c/[id]/index.vue b/pages/store/c/[id]/index.vue
deleted file mode 100644
index b5dfd54..0000000
--- a/pages/store/c/[id]/index.vue
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ company.mName }}
-
-
- {{ company.mShortDescription }}
-
-
-
-
-
-
-
-
-
diff --git a/pages/store/index.vue b/pages/store/index.vue
index 656e4ed..7cd01f9 100644
--- a/pages/store/index.vue
+++ b/pages/store/index.vue
@@ -24,16 +24,14 @@
>
- {{ $t("store.featured") }}
+ Recently added
{{ game.mName }}
-
+
{{ game.mShortDescription }}
@@ -43,7 +41,7 @@
{{ $t("store.lookAt") }} Check it out
@@ -59,46 +57,52 @@
- {{ $t("store.noFeatured") }}
+ no game
-
-
-
-
-
-
-
-
+
+
+
+ Recently released
+
+
Explore more →
+
+
+
+
+
+
+
+
+ Recently updated
+
+
Explore more →
+
+
+
+
diff --git a/pages/store/t/[id]/index.vue b/pages/store/t/[id]/index.vue
deleted file mode 100644
index d692004..0000000
--- a/pages/store/t/[id]/index.vue
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ tag.name }}
-
-
-
-
-
-
-
-
-
diff --git a/plugins/error-handler.ts b/plugins/error-handler.ts
deleted file mode 100644
index 62bab5e..0000000
--- a/plugins/error-handler.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export default defineNuxtPlugin((nuxtApp) => {
- nuxtApp.hook("vue:error", (error, instance, info) => {
- console.error(info, error, instance);
- });
-});
diff --git a/prisma/migrations/20250511154134_add_tags_to_games/migration.sql b/prisma/migrations/20250511154134_add_tags_to_games/migration.sql
deleted file mode 100644
index fb10131..0000000
--- a/prisma/migrations/20250511154134_add_tags_to_games/migration.sql
+++ /dev/null
@@ -1,16 +0,0 @@
--- CreateTable
-CREATE TABLE "_GameToTag" (
- "A" TEXT NOT NULL,
- "B" TEXT NOT NULL,
-
- CONSTRAINT "_GameToTag_AB_pkey" PRIMARY KEY ("A","B")
-);
-
--- CreateIndex
-CREATE INDEX "_GameToTag_B_index" ON "_GameToTag"("B");
-
--- AddForeignKey
-ALTER TABLE "_GameToTag" ADD CONSTRAINT "_GameToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "_GameToTag" ADD CONSTRAINT "_GameToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/prisma/migrations/20250514193830_allow_notification_nonce_reuse_per_user/migration.sql b/prisma/migrations/20250514193830_allow_notification_nonce_reuse_per_user/migration.sql
deleted file mode 100644
index 035b237..0000000
--- a/prisma/migrations/20250514193830_allow_notification_nonce_reuse_per_user/migration.sql
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- Warnings:
-
- - A unique constraint covering the columns `[userId,nonce]` on the table `Notification` will be added. If there are existing duplicate values, this will fail.
-
-*/
--- DropIndex
-DROP INDEX "Notification_nonce_key";
-
--- CreateIndex
-CREATE UNIQUE INDEX "Notification_userId_nonce_key" ON "Notification"("userId", "nonce");
diff --git a/prisma/migrations/20250515021331_add_game_ratings/migration.sql b/prisma/migrations/20250515021331_add_game_ratings/migration.sql
deleted file mode 100644
index 52a2f5f..0000000
--- a/prisma/migrations/20250515021331_add_game_ratings/migration.sql
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- Warnings:
-
- - You are about to drop the column `mReviewCount` on the `Game` table. All the data in the column will be lost.
- - You are about to drop the column `mReviewRating` on the `Game` table. All the data in the column will be lost.
-
-*/
--- AlterEnum
--- This migration adds more than one value to an enum.
--- With PostgreSQL versions 11 and earlier, this is not possible
--- in a single migration. This can be worked around by creating
--- multiple migrations, each migration adding only one value to
--- the enum.
-
-
-ALTER TYPE "MetadataSource" ADD VALUE 'Metacritic';
-ALTER TYPE "MetadataSource" ADD VALUE 'OpenCritic';
-
--- AlterTable
-ALTER TABLE "Game" DROP COLUMN "mReviewCount",
-DROP COLUMN "mReviewRating";
-
--- CreateTable
-CREATE TABLE "GameRating" (
- "id" TEXT NOT NULL,
- "metadataSource" "MetadataSource" NOT NULL,
- "metadataId" TEXT NOT NULL,
- "created" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
- "mReviewCount" INTEGER NOT NULL,
- "mReviewRating" DOUBLE PRECISION NOT NULL,
- "mReviewHref" TEXT,
- "gameId" TEXT NOT NULL,
-
- CONSTRAINT "GameRating_pkey" PRIMARY KEY ("id")
-);
-
--- CreateIndex
-CREATE UNIQUE INDEX "GameRating_metadataSource_metadataId_key" ON "GameRating"("metadataSource", "metadataId");
-
--- AddForeignKey
-ALTER TABLE "GameRating" ADD CONSTRAINT "GameRating_gameId_fkey" FOREIGN KEY ("gameId") REFERENCES "Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/prisma/migrations/20250515043254_add_acls_to_notifications/migration.sql b/prisma/migrations/20250515043254_add_acls_to_notifications/migration.sql
deleted file mode 100644
index 2f6fdd8..0000000
--- a/prisma/migrations/20250515043254_add_acls_to_notifications/migration.sql
+++ /dev/null
@@ -1,2 +0,0 @@
--- AlterTable
-ALTER TABLE "Notification" ADD COLUMN "acls" TEXT[];
diff --git a/prisma/migrations/20250601022736_add_database_library/migration.sql b/prisma/migrations/20250601022736_add_database_library/migration.sql
deleted file mode 100644
index e51f2fa..0000000
--- a/prisma/migrations/20250601022736_add_database_library/migration.sql
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- Warnings:
-
- - You are about to drop the `ClientPeerAPIConfiguration` table. If the table is not empty, all the data it contains will be lost.
-
-*/
--- CreateEnum
-CREATE TYPE "LibraryBackend" AS ENUM ('Filesystem');
-
--- AlterEnum
-ALTER TYPE "ClientCapabilities" ADD VALUE 'trackPlaytime';
-
--- DropForeignKey
-ALTER TABLE "ClientPeerAPIConfiguration" DROP CONSTRAINT "ClientPeerAPIConfiguration_clientId_fkey";
-
--- AlterTable
-ALTER TABLE "Screenshot" ALTER COLUMN "private" DROP DEFAULT;
-
--- DropTable
-DROP TABLE "ClientPeerAPIConfiguration";
-
--- CreateTable
-CREATE TABLE "Library" (
- "id" TEXT NOT NULL,
- "name" TEXT NOT NULL,
- "backend" "LibraryBackend" NOT NULL,
- "options" JSONB NOT NULL,
-
- CONSTRAINT "Library_pkey" PRIMARY KEY ("id")
-);
-
--- CreateTable
-CREATE TABLE "Playtime" (
- "gameId" TEXT NOT NULL,
- "userId" TEXT NOT NULL,
- "seconds" INTEGER NOT NULL,
- "updatedAt" TIMESTAMPTZ(6) NOT NULL,
- "createdAt" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
-
- CONSTRAINT "Playtime_pkey" PRIMARY KEY ("gameId","userId")
-);
-
--- CreateIndex
-CREATE INDEX "Playtime_userId_idx" ON "Playtime"("userId");
-
--- CreateIndex
-CREATE INDEX "Screenshot_userId_idx" ON "Screenshot"("userId");
-
--- AddForeignKey
-ALTER TABLE "Playtime" ADD CONSTRAINT "Playtime_gameId_fkey" FOREIGN KEY ("gameId") REFERENCES "Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "Playtime" ADD CONSTRAINT "Playtime_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/prisma/migrations/20250601032211_add_library_relation_to_game/migration.sql b/prisma/migrations/20250601032211_add_library_relation_to_game/migration.sql
deleted file mode 100644
index e50aac1..0000000
--- a/prisma/migrations/20250601032211_add_library_relation_to_game/migration.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-Warnings:
-
-- You are about to drop the column `libraryBasePath` on the `Game` table. All the data in the column will be lost.
-
-*/
--- DropIndex
-DROP INDEX "Game_libraryBasePath_key";
-
--- AlterTable
-ALTER TABLE "Game" RENAME COLUMN "libraryBasePath" TO "libraryPath";
-
-ALTER TABLE "Game" ADD COLUMN "libraryId" TEXT;
-
--- AddForeignKey
-ALTER TABLE "Game"
-ADD CONSTRAINT "Game_libraryId_fkey" FOREIGN KEY ("libraryId") REFERENCES "Library" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
\ No newline at end of file
diff --git a/prisma/migrations/20250601032938_add_unique_constraint/migration.sql b/prisma/migrations/20250601032938_add_unique_constraint/migration.sql
deleted file mode 100644
index f460020..0000000
--- a/prisma/migrations/20250601032938_add_unique_constraint/migration.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Warnings:
-
- - A unique constraint covering the columns `[libraryId,libraryPath]` on the table `Game` will be added. If there are existing duplicate values, this will fail.
-
-*/
--- CreateIndex
-CREATE UNIQUE INDEX "Game_libraryId_libraryPath_key" ON "Game"("libraryId", "libraryPath");
diff --git a/prisma/migrations/20250606013242_add_tasks_to_database/migration.sql b/prisma/migrations/20250606013242_add_tasks_to_database/migration.sql
deleted file mode 100644
index e3aa449..0000000
--- a/prisma/migrations/20250606013242_add_tasks_to_database/migration.sql
+++ /dev/null
@@ -1,14 +0,0 @@
--- CreateTable
-CREATE TABLE "Task" (
- "id" TEXT NOT NULL,
- "taskGroup" TEXT NOT NULL,
- "started" TIMESTAMP(3) NOT NULL,
- "ended" TIMESTAMP(3) NOT NULL,
- "success" BOOLEAN NOT NULL,
- "error" JSONB,
- "progress" DOUBLE PRECISION NOT NULL,
- "log" TEXT[],
- "acls" TEXT[],
-
- CONSTRAINT "Task_pkey" PRIMARY KEY ("id")
-);
diff --git a/prisma/migrations/20250606023802_add_name_to_task/migration.sql b/prisma/migrations/20250606023802_add_name_to_task/migration.sql
deleted file mode 100644
index db4f781..0000000
--- a/prisma/migrations/20250606023802_add_name_to_task/migration.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Warnings:
-
- - Added the required column `name` to the `Task` table without a default value. This is not possible if the table is not empty.
-
-*/
--- AlterTable
-ALTER TABLE "Task" ADD COLUMN "name" TEXT NOT NULL;
diff --git a/prisma/migrations/20250608010030_delete_user_cascade/migration.sql b/prisma/migrations/20250608010030_delete_user_cascade/migration.sql
deleted file mode 100644
index d9e569a..0000000
--- a/prisma/migrations/20250608010030_delete_user_cascade/migration.sql
+++ /dev/null
@@ -1,41 +0,0 @@
--- DropForeignKey
-ALTER TABLE "APIToken" DROP CONSTRAINT "APIToken_userId_fkey";
-
--- DropForeignKey
-ALTER TABLE "Article" DROP CONSTRAINT "Article_authorId_fkey";
-
--- DropForeignKey
-ALTER TABLE "Client" DROP CONSTRAINT "Client_userId_fkey";
-
--- DropForeignKey
-ALTER TABLE "Collection" DROP CONSTRAINT "Collection_userId_fkey";
-
--- DropForeignKey
-ALTER TABLE "LinkedAuthMec" DROP CONSTRAINT "LinkedAuthMec_userId_fkey";
-
--- DropForeignKey
-ALTER TABLE "Notification" DROP CONSTRAINT "Notification_userId_fkey";
-
--- DropForeignKey
-ALTER TABLE "Session" DROP CONSTRAINT "Session_userId_fkey";
-
--- AddForeignKey
-ALTER TABLE "LinkedAuthMec" ADD CONSTRAINT "LinkedAuthMec_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "APIToken" ADD CONSTRAINT "APIToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "Client" ADD CONSTRAINT "Client_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "Collection" ADD CONSTRAINT "Collection_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "Article" ADD CONSTRAINT "Article_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "Notification" ADD CONSTRAINT "Notification_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/prisma/migrations/20250621205541_add_show_title_description_on_game_panel/migration.sql b/prisma/migrations/20250621205541_add_show_title_description_on_game_panel/migration.sql
deleted file mode 100644
index c0cd66d..0000000
--- a/prisma/migrations/20250621205541_add_show_title_description_on_game_panel/migration.sql
+++ /dev/null
@@ -1,2 +0,0 @@
--- AlterTable
-ALTER TABLE "ApplicationSettings" ADD COLUMN "showGamePanelTextDecoration" BOOLEAN NOT NULL DEFAULT true;
diff --git a/prisma/migrations/20250702102624_add_flat_fs_provider/migration.sql b/prisma/migrations/20250702102624_add_flat_fs_provider/migration.sql
deleted file mode 100644
index 355bd24..0000000
--- a/prisma/migrations/20250702102624_add_flat_fs_provider/migration.sql
+++ /dev/null
@@ -1,2 +0,0 @@
--- AlterEnum
-ALTER TYPE "LibraryBackend" ADD VALUE 'FlatFilesystem';
diff --git a/prisma/migrations/20250720070939_static_genres/migration.sql b/prisma/migrations/20250720070939_static_genres/migration.sql
deleted file mode 100644
index df31459..0000000
--- a/prisma/migrations/20250720070939_static_genres/migration.sql
+++ /dev/null
@@ -1,5 +0,0 @@
--- CreateEnum
-CREATE TYPE "Genre" AS ENUM ('Action', 'Strategy', 'Sports', 'Adventure', 'Roleplay', 'Racing', 'Simulation', 'Educational', 'Fighting', 'Shooter', 'RealTimeStrategy', 'CardGame', 'BoardGame', 'Compilation', 'MMORPG', 'MinigameCollection', 'Puzzle', 'MusicRhythm');
-
--- AlterTable
-ALTER TABLE "Game" ADD COLUMN "genres" "Genre"[];
diff --git a/prisma/migrations/20250721053244_update_genre_names/migration.sql b/prisma/migrations/20250721053244_update_genre_names/migration.sql
deleted file mode 100644
index 63accfe..0000000
--- a/prisma/migrations/20250721053244_update_genre_names/migration.sql
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- Warnings:
-
- - The values [RealTimeStrategy,CardGame,BoardGame,MinigameCollection,MusicRhythm] on the enum `Genre` will be removed. If these variants are still used in the database, this will fail.
-
-*/
--- AlterEnum
-BEGIN;
-CREATE TYPE "Genre_new" AS ENUM ('Action', 'Strategy', 'Sports', 'Adventure', 'Roleplay', 'Racing', 'Simulation', 'Educational', 'Fighting', 'Shooter', 'RTS', 'Card', 'Board', 'Compilation', 'MMORPG', 'Minigames', 'Puzzle', 'Rhythm');
-ALTER TABLE "Game" ALTER COLUMN "genres" TYPE "Genre_new"[] USING ("genres"::text::"Genre_new"[]);
-ALTER TYPE "Genre" RENAME TO "Genre_old";
-ALTER TYPE "Genre_new" RENAME TO "Genre";
-DROP TYPE "Genre_old";
-COMMIT;
diff --git a/prisma/migrations/20250721053514_add_featured/migration.sql b/prisma/migrations/20250721053514_add_featured/migration.sql
deleted file mode 100644
index 89aeeb4..0000000
--- a/prisma/migrations/20250721053514_add_featured/migration.sql
+++ /dev/null
@@ -1,2 +0,0 @@
--- AlterTable
-ALTER TABLE "Game" ADD COLUMN "featured" BOOLEAN NOT NULL DEFAULT false;
diff --git a/prisma/migrations/20250721061200_remove_genres/migration.sql b/prisma/migrations/20250721061200_remove_genres/migration.sql
deleted file mode 100644
index 4f4f1df..0000000
--- a/prisma/migrations/20250721061200_remove_genres/migration.sql
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- Warnings:
-
- - You are about to drop the column `genres` on the `Game` table. All the data in the column will be lost.
-
-*/
--- AlterTable
-ALTER TABLE "Game" DROP COLUMN "genres";
-
--- DropEnum
-DROP TYPE "Genre";
diff --git a/prisma/migrations/20250721062509_add_pg_trgm/migration.sql b/prisma/migrations/20250721062509_add_pg_trgm/migration.sql
deleted file mode 100644
index 567fbd0..0000000
--- a/prisma/migrations/20250721062509_add_pg_trgm/migration.sql
+++ /dev/null
@@ -1,5 +0,0 @@
--- Add pg_trgm
-CREATE EXTENSION pg_trgm;
-
--- Create index for tag names
--- CREATE INDEX trgm_tag_name ON "Tag" USING GIST (name gist_trgm_ops(siglen=32));
\ No newline at end of file
diff --git a/prisma/migrations/20250721063518_add_index_for_tag_name/migration.sql b/prisma/migrations/20250721063518_add_index_for_tag_name/migration.sql
deleted file mode 100644
index 02b93b5..0000000
--- a/prisma/migrations/20250721063518_add_index_for_tag_name/migration.sql
+++ /dev/null
@@ -1,2 +0,0 @@
--- CreateIndex
-CREATE INDEX "Tag_name_idx" ON "Tag" USING GIST ("name" gist_trgm_ops(siglen=32));
diff --git a/prisma/migrations/20250721070713_split_game_and_news_tags/migration.sql b/prisma/migrations/20250721070713_split_game_and_news_tags/migration.sql
deleted file mode 100644
index cbd80c5..0000000
--- a/prisma/migrations/20250721070713_split_game_and_news_tags/migration.sql
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- Warnings:
-
- - You are about to drop the `Tag` table. If the table is not empty, all the data it contains will be lost.
- - You are about to drop the `_ArticleToTag` table. If the table is not empty, all the data it contains will be lost.
- - You are about to drop the `_GameToTag` table. If the table is not empty, all the data it contains will be lost.
-
-*/
--- DropForeignKey
-ALTER TABLE "_ArticleToTag" DROP CONSTRAINT "_ArticleToTag_A_fkey";
-
--- DropForeignKey
-ALTER TABLE "_ArticleToTag" DROP CONSTRAINT "_ArticleToTag_B_fkey";
-
--- DropForeignKey
-ALTER TABLE "_GameToTag" DROP CONSTRAINT "_GameToTag_A_fkey";
-
--- DropForeignKey
-ALTER TABLE "_GameToTag" DROP CONSTRAINT "_GameToTag_B_fkey";
-
--- DropTable
-DROP TABLE "Tag";
-
--- DropTable
-DROP TABLE "_ArticleToTag";
-
--- DropTable
-DROP TABLE "_GameToTag";
-
--- CreateTable
-CREATE TABLE "GameTag" (
- "id" TEXT NOT NULL,
- "name" TEXT NOT NULL,
-
- CONSTRAINT "GameTag_pkey" PRIMARY KEY ("id")
-);
-
--- CreateTable
-CREATE TABLE "NewsTag" (
- "id" TEXT NOT NULL,
- "name" TEXT NOT NULL,
-
- CONSTRAINT "NewsTag_pkey" PRIMARY KEY ("id")
-);
-
--- CreateTable
-CREATE TABLE "_GameToGameTag" (
- "A" TEXT NOT NULL,
- "B" TEXT NOT NULL,
-
- CONSTRAINT "_GameToGameTag_AB_pkey" PRIMARY KEY ("A","B")
-);
-
--- CreateTable
-CREATE TABLE "_ArticleToNewsTag" (
- "A" TEXT NOT NULL,
- "B" TEXT NOT NULL,
-
- CONSTRAINT "_ArticleToNewsTag_AB_pkey" PRIMARY KEY ("A","B")
-);
-
--- CreateIndex
-CREATE UNIQUE INDEX "GameTag_name_key" ON "GameTag"("name");
-
--- CreateIndex
-CREATE INDEX "GameTag_name_idx" ON "GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
-
--- CreateIndex
-CREATE UNIQUE INDEX "NewsTag_name_key" ON "NewsTag"("name");
-
--- CreateIndex
-CREATE INDEX "_GameToGameTag_B_index" ON "_GameToGameTag"("B");
-
--- CreateIndex
-CREATE INDEX "_ArticleToNewsTag_B_index" ON "_ArticleToNewsTag"("B");
-
--- AddForeignKey
-ALTER TABLE "_GameToGameTag" ADD CONSTRAINT "_GameToGameTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "_GameToGameTag" ADD CONSTRAINT "_GameToGameTag_B_fkey" FOREIGN KEY ("B") REFERENCES "GameTag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "_ArticleToNewsTag" ADD CONSTRAINT "_ArticleToNewsTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Article"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-
--- AddForeignKey
-ALTER TABLE "_ArticleToNewsTag" ADD CONSTRAINT "_ArticleToNewsTag_B_fkey" FOREIGN KEY ("B") REFERENCES "NewsTag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/prisma/migrations/20250801035031_add_delete_casacde/migration.sql b/prisma/migrations/20250801035031_add_delete_casacde/migration.sql
deleted file mode 100644
index 645377a..0000000
--- a/prisma/migrations/20250801035031_add_delete_casacde/migration.sql
+++ /dev/null
@@ -1,11 +0,0 @@
--- DropForeignKey
-ALTER TABLE "Game" DROP CONSTRAINT "Game_libraryId_fkey";
-
--- DropIndex
-DROP INDEX "GameTag_name_idx";
-
--- CreateIndex
-CREATE INDEX "GameTag_name_idx" ON "GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
-
--- AddForeignKey
-ALTER TABLE "Game" ADD CONSTRAINT "Game_libraryId_fkey" FOREIGN KEY ("libraryId") REFERENCES "Library"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/prisma/migrations/20250815014713_use_task_id_started_composite_id/migration.sql b/prisma/migrations/20250815014713_use_task_id_started_composite_id/migration.sql
deleted file mode 100644
index 7f096a1..0000000
--- a/prisma/migrations/20250815014713_use_task_id_started_composite_id/migration.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- Warnings:
-
- - The primary key for the `Task` table will be changed. If it partially fails, the table could be left without primary key constraint.
-
-*/
--- DropIndex
-DROP INDEX "GameTag_name_idx";
-
--- AlterTable
-ALTER TABLE "Task" DROP CONSTRAINT "Task_pkey",
-ADD CONSTRAINT "Task_pkey" PRIMARY KEY ("id", "started");
-
--- CreateIndex
-CREATE INDEX "GameTag_name_idx" ON "GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
diff --git a/prisma/migrations/20250823005001_add_api_token_expiry/migration.sql b/prisma/migrations/20250823005001_add_api_token_expiry/migration.sql
deleted file mode 100644
index c028e99..0000000
--- a/prisma/migrations/20250823005001_add_api_token_expiry/migration.sql
+++ /dev/null
@@ -1,8 +0,0 @@
--- DropIndex
-DROP INDEX "GameTag_name_idx";
-
--- AlterTable
-ALTER TABLE "APIToken" ADD COLUMN "expiresAt" TIMESTAMP(3);
-
--- CreateIndex
-CREATE INDEX "GameTag_name_idx" ON "GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
diff --git a/prisma/models/app.prisma b/prisma/models/app.prisma
index 338af50..492c265 100644
--- a/prisma/models/app.prisma
+++ b/prisma/models/app.prisma
@@ -1,13 +1,11 @@
model ApplicationSettings {
timestamp DateTime @id @default(now())
- metadataProviders String[]
+ metadataProviders String[]
saveSlotCountLimit Int @default(5)
saveSlotSizeLimit Float @default(10) // MB
saveSlotHistoryLimit Int @default(3)
-
- showGamePanelTextDecoration Boolean @default(true)
}
enum Platform {
@@ -15,18 +13,3 @@ enum Platform {
Linux @map("linux")
macOS @map("macos")
}
-
-enum LibraryBackend {
- Filesystem
- FlatFilesystem
-}
-
-model Library {
- id String @id @default(uuid())
- name String
-
- backend LibraryBackend
- options Json
-
- games Game[]
-}
diff --git a/prisma/models/auth.prisma b/prisma/models/auth.prisma
index 8749cf6..2ff00de 100644
--- a/prisma/models/auth.prisma
+++ b/prisma/models/auth.prisma
@@ -11,7 +11,7 @@ model LinkedAuthMec {
version Int @default(1)
credentials Json
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User @relation(fields: [userId], references: [id])
@@id([userId, mec])
}
@@ -38,15 +38,13 @@ model APIToken {
name String
userId String?
- user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User? @relation(fields: [userId], references: [id])
clientId String?
client Client? @relation(fields: [clientId], references: [id], onDelete: Cascade)
acls String[]
- expiresAt DateTime?
-
@@index([token])
}
@@ -64,7 +62,7 @@ model Session {
expiresAt DateTime
userId String
- user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User? @relation(fields: [userId], references: [id])
data Json // misc extra data
}
diff --git a/prisma/models/client.prisma b/prisma/models/client.prisma
index 6dd7208..acff358 100644
--- a/prisma/models/client.prisma
+++ b/prisma/models/client.prisma
@@ -1,22 +1,32 @@
enum ClientCapabilities {
- PeerAPI @map("peerAPI") // other clients can use the HTTP API to P2P with this client
- UserStatus @map("userStatus") // this client can report this user's status (playing, online, etc etc)
- CloudSaves @map("cloudSaves") // ability to save to save slots
- TrackPlaytime @map("trackPlaytime") // ability to track user playtime
+ PeerAPI @map("peerAPI") // other clients can use the HTTP API to P2P with this client
+ UserStatus @map("userStatus") // this client can report this user's status (playing, online, etc etc)
+ CloudSaves @map("cloudSaves") // ability to save to save slots
}
// References a device
model Client {
- id String @id @default(uuid())
- userId String
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ id String @id @default(uuid())
+ userId String
+ user User @relation(fields: [userId], references: [id])
- capabilities ClientCapabilities[]
+ capabilities ClientCapabilities[]
- name String
- platform Platform
- lastConnected DateTime
+ name String
+ platform Platform
+ lastConnected DateTime
- lastAccessedSaves SaveSlot[]
- tokens APIToken[]
+ peerAPI ClientPeerAPIConfiguration?
+
+ lastAccessedSaves SaveSlot[]
+ tokens APIToken[]
+}
+
+model ClientPeerAPIConfiguration {
+ id String @id @default(uuid())
+
+ clientId String @unique
+ client Client @relation(fields: [clientId], references: [id])
+
+ endpoints String[]
}
diff --git a/prisma/models/collection.prisma b/prisma/models/collection.prisma
index 5c8411c..179ada5 100644
--- a/prisma/models/collection.prisma
+++ b/prisma/models/collection.prisma
@@ -4,7 +4,7 @@ model Collection {
isDefault Boolean @default(false)
userId String
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ user User @relation(fields: [userId], references: [id])
entries CollectionEntry[]
}
diff --git a/prisma/models/content.prisma b/prisma/models/content.prisma
index 3ab28be..daaada3 100644
--- a/prisma/models/content.prisma
+++ b/prisma/models/content.prisma
@@ -1,184 +1,129 @@
enum MetadataSource {
- Manual
- GiantBomb
- PCGamingWiki
- IGDB
- Metacritic
- OpenCritic
+ Manual
+ GiantBomb
+ PCGamingWiki
+ IGDB
}
model Game {
- id String @id @default(uuid())
+ id String @id @default(uuid())
- metadataSource MetadataSource
- metadataId String
- created DateTime @default(now())
+ metadataSource MetadataSource
+ metadataId String
+ created DateTime @default(now())
- // Any field prefixed with m is filled in from metadata
- // Acts as a cache so we can search and filter it
- mName String // Name of game
- mShortDescription String // Short description
- mDescription String // Supports markdown
- mReleased DateTime // When the game was released
+ // Any field prefixed with m is filled in from metadata
+ // Acts as a cache so we can search and filter it
+ mName String // Name of game
+ mShortDescription String // Short description
+ mDescription String // Supports markdown
+ mReleased DateTime // When the game was released
- ratings GameRating[]
+ mReviewCount Int
+ mReviewRating Float // 0 to 1
- featured Boolean @default(false)
+ mIconObjectId String // linked to objects in s3
+ mBannerObjectId String // linked to objects in s3
+ mCoverObjectId String
+ mImageCarouselObjectIds String[] // linked to below array
+ mImageLibraryObjectIds String[] // linked to objects in s3
- mIconObjectId String // linked to objects in s3
- mBannerObjectId String // linked to objects in s3
- mCoverObjectId String
- mImageCarouselObjectIds String[] // linked to below array
- mImageLibraryObjectIds String[] // linked to objects in s3
+ versions GameVersion[]
+ libraryBasePath String @unique // Base dir for all the game versions
- versions GameVersion[]
+ collections CollectionEntry[]
+ saves SaveSlot[]
+ screenshots Screenshot[]
- // These fields will not be optional in the next version
- // Any game without a library ID will be assigned one at startup, based on the defaults
- libraryId String?
- library Library? @relation(fields: [libraryId], references: [id], onDelete: Cascade, onUpdate: Cascade)
- libraryPath String
+ developers Company[] @relation(name: "developers")
+ publishers Company[] @relation(name: "publishers")
- collections CollectionEntry[]
- saves SaveSlot[]
- screenshots Screenshot[]
- tags GameTag[]
- playtime Playtime[]
-
- developers Company[] @relation(name: "developers")
- publishers Company[] @relation(name: "publishers")
-
- @@unique([metadataSource, metadataId], name: "metadataKey")
- @@unique([libraryId, libraryPath], name: "libraryKey")
-}
-
-model GameTag {
- id String @id @default(uuid())
- name String @unique
-
- games Game[]
-
- @@index([name(ops: raw("gist_trgm_ops(siglen=32)"))], type: Gist)
-}
-
-
-model GameRating {
- id String @id @default(uuid())
-
- metadataSource MetadataSource
- metadataId String
- created DateTime @default(now())
-
- mReviewCount Int
- mReviewRating Float // 0 to 1
-
- mReviewHref String?
-
- game Game @relation(fields: [gameId], references: [id], onDelete: Cascade)
- gameId String
-
- @@unique([metadataSource, metadataId], name: "metadataKey")
+ @@unique([metadataSource, metadataId], name: "metadataKey")
}
// A particular set of files that relate to the version
model GameVersion {
- gameId String
- game Game @relation(fields: [gameId], references: [id], onDelete: Cascade)
- versionName String // Sub directory for the game files
+ gameId String
+ game Game @relation(fields: [gameId], references: [id], onDelete: Cascade)
+ versionName String // Sub directory for the game files
- created DateTime @default(now())
+ created DateTime @default(now())
- platform Platform
+ platform Platform
- launchCommand String @default("") // Command to run to start. Platform-specific. Windows games on Linux will wrap this command in Proton/Wine
- launchArgs String[]
- setupCommand String @default("") // Command to setup game (dependencies and such)
- setupArgs String[]
- onlySetup Boolean @default(false)
+ launchCommand String @default("") // Command to run to start. Platform-specific. Windows games on Linux will wrap this command in Proton/Wine
+ launchArgs String[]
+ setupCommand String @default("") // Command to setup game (dependencies and such)
+ setupArgs String[]
+ onlySetup Boolean @default(false)
- umuIdOverride String?
+ umuIdOverride String?
- dropletManifest Json // Results from droplet
+ dropletManifest Json // Results from droplet
- versionIndex Int
- delta Boolean @default(false)
+ versionIndex Int
+ delta Boolean @default(false)
- @@id([gameId, versionName])
+ @@id([gameId, versionName])
}
// A save slot for a game
model SaveSlot {
- gameId String
- game Game @relation(fields: [gameId], references: [id], onDelete: Cascade)
- userId String
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
- index Int
+ gameId String
+ game Game @relation(fields: [gameId], references: [id], onDelete: Cascade)
+ userId String
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ index Int
- createdAt DateTime @default(now())
- playtime Float @default(0) // hours
+ createdAt DateTime @default(now())
+ playtime Float @default(0) // hours
- lastUsedClientId String?
- lastUsedClient Client? @relation(fields: [lastUsedClientId], references: [id])
+ lastUsedClientId String?
+ lastUsedClient Client? @relation(fields: [lastUsedClientId], references: [id])
- historyObjectIds String[] // list of objects
- historyChecksums String[] // list of hashes
+ historyObjectIds String[] // list of objects
+ historyChecksums String[] // list of hashes
- @@id([gameId, userId, index], name: "id")
+ @@id([gameId, userId, index], name: "id")
}
model Screenshot {
- id String @id @default(uuid())
+ id String @id @default(uuid())
- gameId String
- game Game @relation(fields: [gameId], references: [id], onDelete: Cascade)
- userId String
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
+ gameId String
+ game Game @relation(fields: [gameId], references: [id], onDelete: Cascade)
+ userId String
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
- objectId String
- private Boolean // if other users can see
+ objectId String
+ private Boolean @default(true)
- createdAt DateTime @default(now()) @db.Timestamptz(0)
+ createdAt DateTime @default(now()) @db.Timestamptz(0)
- @@index([gameId, userId])
- @@index([userId])
-}
-
-model Playtime {
- gameId String
- game Game @relation(fields: [gameId], references: [id], onDelete: Cascade)
- userId String
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
-
- seconds Int // seconds user has spent playing the game
-
- updatedAt DateTime @updatedAt @db.Timestamptz(6)
- createdAt DateTime @default(now()) @db.Timestamptz(6)
-
- @@id([gameId, userId])
- @@index([userId])
+ @@index([gameId, userId])
}
model Company {
- id String @id @default(uuid())
+ id String @id @default(uuid())
- metadataSource MetadataSource
- metadataId String
- metadataOriginalQuery String
+ metadataSource MetadataSource
+ metadataId String
+ metadataOriginalQuery String
- mName String
- mShortDescription String
- mDescription String
- mLogoObjectId String
- mBannerObjectId String
- mWebsite String
+ mName String
+ mShortDescription String
+ mDescription String
+ mLogoObjectId String
+ mBannerObjectId String
+ mWebsite String
- developed Game[] @relation(name: "developers")
- published Game[] @relation(name: "publishers")
+ developed Game[] @relation(name: "developers")
+ published Game[] @relation(name: "publishers")
- @@unique([metadataSource, metadataId], name: "metadataKey")
+ @@unique([metadataSource, metadataId], name: "metadataKey")
}
model ObjectHash {
- id String @id
- hash String
+ id String @id
+ hash String
}
diff --git a/prisma/models/news.prisma b/prisma/models/news.prisma
index 496994f..dcc25ec 100644
--- a/prisma/models/news.prisma
+++ b/prisma/models/news.prisma
@@ -1,4 +1,4 @@
-model NewsTag {
+model Tag {
id String @id @default(uuid())
name String @unique
@@ -11,11 +11,11 @@ model Article {
description String
content String @db.Text
- tags NewsTag[]
+ tags Tag[]
imageObjectId String? // Object ID
publishedAt DateTime @default(now())
- author User? @relation(fields: [authorId], references: [id], onDelete: Cascade) // Optional, if no user, it's a system post
+ author User? @relation(fields: [authorId], references: [id]) // Optional, if no user, it's a system post
authorId String?
}
diff --git a/prisma/models/task.prisma b/prisma/models/task.prisma
deleted file mode 100644
index 9edac6f..0000000
--- a/prisma/models/task.prisma
+++ /dev/null
@@ -1,17 +0,0 @@
-model Task {
- id String
- taskGroup String
- name String
-
- started DateTime
- ended DateTime
-
- success Boolean
- error Json?
- progress Float
- log String[]
-
- acls String[]
-
- @@id([id, started])
-}
diff --git a/prisma/models/user.prisma b/prisma/models/user.prisma
index e3a1938..20f1c60 100644
--- a/prisma/models/user.prisma
+++ b/prisma/models/user.prisma
@@ -19,17 +19,15 @@ model User {
saves SaveSlot[]
screenshots Screenshot[]
- playtime Playtime[]
}
model Notification {
id String @id @default(uuid())
- nonce String?
+ nonce String? @unique
userId String
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
- acls String[]
+ user User @relation(fields: [userId], references: [id])
created DateTime @default(now())
title String
@@ -37,6 +35,4 @@ model Notification {
actions String[]
read Boolean @default(false)
-
- @@unique([userId, nonce])
}
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 8fc2d88..7765176 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -1,24 +1,14 @@
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
-// see https://github.com/prisma/prisma/issues/27486 why driverAdapters can't be used
-// TLDR: vite removes it during bundling it or something like that
generator client {
provider = "prisma-client"
output = "client"
- previewFeatures = ["fullTextSearchPostgres", "relationJoins"]
+ moduleFormat = "esm"
+ previewFeatures = ["fullTextSearchPostgres"]
binaryTargets = ["native", "debian-openssl-3.0.x"]
}
-/**
- * generator arktype {
- * provider = "yarn prismark"
- * output = "./validate"
- * fileName = "schema.ts"
- * nullish = true
- * }
- */
-
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
diff --git a/public/game-panel-placeholder.png b/public/game-panel-placeholder.png
deleted file mode 100644
index 4a7989b..0000000
Binary files a/public/game-panel-placeholder.png and /dev/null differ
diff --git a/public/robots.txt b/public/robots.txt
index 1f53798..8b13789 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -1,2 +1 @@
-User-agent: *
-Disallow: /
+
diff --git a/public/wallpapers/news-placeholder.jpg b/public/wallpapers/news-placeholder.jpg
deleted file mode 100644
index 4cb9046..0000000
Binary files a/public/wallpapers/news-placeholder.jpg and /dev/null differ
diff --git a/server/api/v1/admin/auth/index.get.ts b/server/api/v1/admin/auth/index.get.ts
index 4ea1523..75ffc2c 100644
--- a/server/api/v1/admin/auth/index.get.ts
+++ b/server/api/v1/admin/auth/index.get.ts
@@ -1,13 +1,11 @@
-import { AuthMec } from "~/prisma/client/enums";
+import { AuthMec } from "~/prisma/client";
import aclManager from "~/server/internal/acls";
-import authManager from "~/server/internal/auth";
+import { enabledAuthManagers } from "~/server/plugins/04.auth-init";
export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["auth:read", "setup"]);
+ const allowed = await aclManager.allowSystemACL(h3, ["auth:read"]);
if (!allowed) throw createError({ statusCode: 403 });
- const enabledAuthManagers = authManager.getAuthProviders();
-
const authData = {
[AuthMec.Simple]: enabledAuthManagers.Simple,
[AuthMec.OpenID]:
diff --git a/server/api/v1/admin/auth/invitation/index.delete.ts b/server/api/v1/admin/auth/invitation/index.delete.ts
index 195aae5..381dea3 100644
--- a/server/api/v1/admin/auth/invitation/index.delete.ts
+++ b/server/api/v1/admin/auth/invitation/index.delete.ts
@@ -1,22 +1,20 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
-const DeleteInvite = type({
- id: "string",
-}).configure(throwingArktype);
-
-export default defineEventHandler<{
- body: typeof DeleteInvite.infer;
-}>(async (h3) => {
+export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, [
"auth:simple:invitation:delete",
]);
if (!allowed) throw createError({ statusCode: 403 });
- const body = await readDropValidatedBody(h3, DeleteInvite);
+ const body = await readBody(h3);
+ const id = body.id;
+ if (!id)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "id required for deletion",
+ });
- await prisma.invitation.delete({ where: { id: body.id } });
+ await prisma.invitation.delete({ where: { id: id } });
return {};
});
diff --git a/server/api/v1/admin/auth/invitation/index.get.ts b/server/api/v1/admin/auth/invitation/index.get.ts
index 0724e49..e0b6881 100644
--- a/server/api/v1/admin/auth/invitation/index.get.ts
+++ b/server/api/v1/admin/auth/invitation/index.get.ts
@@ -1,7 +1,5 @@
import aclManager from "~/server/internal/acls";
-import { systemConfig } from "~/server/internal/config/sys-conf";
import prisma from "~/server/internal/db/database";
-import taskHandler from "~/server/internal/tasks";
export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, [
@@ -9,15 +7,8 @@ export default defineEventHandler(async (h3) => {
]);
if (!allowed) throw createError({ statusCode: 403 });
- await taskHandler.runTaskGroupByName("cleanup:invitations");
+ await runTask("cleanup:invitations");
- const externalUrl = systemConfig.getExternalUrl();
const invitations = await prisma.invitation.findMany({});
-
- return invitations.map((invitation) => {
- return {
- ...invitation,
- inviteUrl: `${externalUrl}/auth/register?id=${invitation.id}`,
- };
- });
+ return invitations;
});
diff --git a/server/api/v1/admin/auth/invitation/index.post.ts b/server/api/v1/admin/auth/invitation/index.post.ts
index 69d3649..015557e 100644
--- a/server/api/v1/admin/auth/invitation/index.post.ts
+++ b/server/api/v1/admin/auth/invitation/index.post.ts
@@ -1,31 +1,41 @@
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
-import { SharedRegisterValidator } from "../../../auth/signup/simple.post";
-import { systemConfig } from "~/server/internal/config/sys-conf";
-
-const CreateInvite = SharedRegisterValidator.partial()
- .and({
- expires: "string",
- isAdmin: "boolean = false",
- })
- .configure(throwingArktype);
export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, [
"auth:simple:invitation:new",
- "setup",
]);
if (!allowed) throw createError({ statusCode: 403 });
- const body = await readDropValidatedBody(h3, CreateInvite);
+ const body = await readBody(h3);
+ const isAdmin = body.isAdmin;
+ const username = body.username;
+ const email = body.email;
+ const expires = body.expires;
+
+ if (!expires)
+ throw createError({ statusCode: 400, statusMessage: "No expires field." });
+ if (isAdmin !== undefined && typeof isAdmin !== "boolean")
+ throw createError({
+ statusCode: 400,
+ statusMessage: "isAdmin must be a boolean",
+ });
+
+ const expiresDate = new Date(expires);
+ if (!(expiresDate instanceof Date && !isNaN(expiresDate.getTime())))
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Invalid expires date",
+ });
const invitation = await prisma.invitation.create({
- data: body,
+ data: {
+ isAdmin: isAdmin,
+ username: username,
+ email: email,
+ expires: expiresDate,
+ },
});
- return {
- ...invitation,
- inviteUrl: `${systemConfig.getExternalUrl()}/auth/register?id=${invitation.id}`,
- };
+ return invitation;
});
diff --git a/server/api/v1/admin/company/[id]/banner.post.ts b/server/api/v1/admin/company/[id]/banner.post.ts
deleted file mode 100644
index 0c8744a..0000000
--- a/server/api/v1/admin/company/[id]/banner.post.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-import objectHandler from "~/server/internal/objects";
-import { handleFileUpload } from "~/server/internal/utils/handlefileupload";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:update"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const companyId = getRouterParam(h3, "id")!;
- const company = await prisma.company.findUnique({
- where: {
- id: companyId,
- },
- });
-
- if (!company)
- throw createError({ statusCode: 400, statusMessage: "Invalid company id" });
-
- const result = await handleFileUpload(h3, {}, ["internal:read"], 1);
- if (!result)
- throw createError({
- statusCode: 400,
- statusMessage: "File upload required (multipart form)",
- });
-
- const [ids, , pull, dump] = result;
- const id = ids.at(0);
- if (!id)
- throw createError({
- statusCode: 400,
- statusMessage: "Upload at least one file.",
- });
-
- try {
- await objectHandler.deleteAsSystem(company.mBannerObjectId);
- await prisma.company.update({
- where: {
- id: companyId,
- },
- data: {
- mBannerObjectId: id,
- },
- });
- await pull();
- } catch {
- await dump();
- }
-
- return { id: id };
-});
diff --git a/server/api/v1/admin/company/[id]/game.delete.ts b/server/api/v1/admin/company/[id]/game.delete.ts
deleted file mode 100644
index 0a9fe21..0000000
--- a/server/api/v1/admin/company/[id]/game.delete.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-const GameDelete = type({
- id: "string",
-}).configure(throwingArktype);
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:update"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const companyId = getRouterParam(h3, "id")!;
-
- const body = await readDropValidatedBody(h3, GameDelete);
-
- await prisma.game.update({
- where: {
- id: body.id,
- },
- data: {
- publishers: {
- disconnect: {
- id: companyId,
- },
- },
- developers: {
- disconnect: {
- id: companyId,
- },
- },
- },
- });
-
- return;
-});
diff --git a/server/api/v1/admin/company/[id]/game.patch.ts b/server/api/v1/admin/company/[id]/game.patch.ts
deleted file mode 100644
index 9e0260f..0000000
--- a/server/api/v1/admin/company/[id]/game.patch.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-const GamePatch = type({
- action: "'developed' | 'published'",
- enabled: "boolean",
- id: "string",
-}).configure(throwingArktype);
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:update"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const companyId = getRouterParam(h3, "id")!;
-
- const body = await readDropValidatedBody(h3, GamePatch);
-
- const action = body.action === "developed" ? "developers" : "publishers";
- const actionType = body.enabled ? "connect" : "disconnect";
-
- await prisma.game.update({
- where: {
- id: body.id,
- },
- data: {
- [action]: {
- [actionType]: {
- id: companyId,
- },
- },
- },
- });
-
- return;
-});
diff --git a/server/api/v1/admin/company/[id]/game.post.ts b/server/api/v1/admin/company/[id]/game.post.ts
deleted file mode 100644
index f873118..0000000
--- a/server/api/v1/admin/company/[id]/game.post.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-const GamePost = type({
- published: "boolean",
- developed: "boolean",
- id: "string",
-}).configure(throwingArktype);
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:update"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const companyId = getRouterParam(h3, "id")!;
-
- const body = await readDropValidatedBody(h3, GamePost);
-
- if (!body.published && !body.developed)
- throw createError({
- statusCode: 400,
- statusMessage: "Must be related (either developed or published).",
- });
-
- const publisherConnect = body.published
- ? {
- publishers: {
- connect: {
- id: companyId,
- },
- },
- }
- : undefined;
-
- const developerConnect = body.developed
- ? {
- developers: {
- connect: {
- id: companyId,
- },
- },
- }
- : undefined;
-
- const game = await prisma.game.update({
- where: {
- id: body.id,
- },
- data: {
- ...publisherConnect,
- ...developerConnect,
- },
- include: {
- publishers: {
- select: {
- id: true,
- },
- },
- developers: {
- select: {
- id: true,
- },
- },
- },
- });
-
- return game;
-});
diff --git a/server/api/v1/admin/company/[id]/icon.post.ts b/server/api/v1/admin/company/[id]/icon.post.ts
deleted file mode 100644
index 0a4cefd..0000000
--- a/server/api/v1/admin/company/[id]/icon.post.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-import objectHandler from "~/server/internal/objects";
-import { handleFileUpload } from "~/server/internal/utils/handlefileupload";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:update"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const companyId = getRouterParam(h3, "id")!;
- const company = await prisma.company.findUnique({
- where: {
- id: companyId,
- },
- });
-
- if (!company)
- throw createError({ statusCode: 400, statusMessage: "Invalid company id" });
-
- const result = await handleFileUpload(h3, {}, ["internal:read"], 1);
- if (!result)
- throw createError({
- statusCode: 400,
- statusMessage: "File upload required (multipart form)",
- });
-
- const [ids, , pull, dump] = result;
- const id = ids.at(0);
- if (!id)
- throw createError({
- statusCode: 400,
- statusMessage: "Upload at least one file.",
- });
-
- try {
- await objectHandler.deleteAsSystem(company.mLogoObjectId);
- await prisma.company.update({
- where: {
- id: companyId,
- },
- data: {
- mLogoObjectId: id,
- },
- });
- await pull();
- } catch {
- await dump();
- }
-
- return { id: id };
-});
diff --git a/server/api/v1/admin/company/[id]/index.delete.ts b/server/api/v1/admin/company/[id]/index.delete.ts
deleted file mode 100644
index b27d393..0000000
--- a/server/api/v1/admin/company/[id]/index.delete.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:delete"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const id = getRouterParam(h3, "id")!;
-
- const company = await prisma.company.deleteMany({ where: { id } });
- if (company.count == 0)
- throw createError({ statusCode: 404, statusMessage: "Company not found" });
- return;
-});
diff --git a/server/api/v1/admin/company/[id]/index.get.ts b/server/api/v1/admin/company/[id]/index.get.ts
deleted file mode 100644
index 50c4115..0000000
--- a/server/api/v1/admin/company/[id]/index.get.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:read"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const id = getRouterParam(h3, "id")!;
-
- const company = await prisma.company.findUnique({
- where: { id },
- include: {
- published: {
- select: {
- id: true,
- },
- },
- developed: {
- select: {
- id: true,
- },
- },
- },
- });
- if (!company)
- throw createError({ statusCode: 404, statusMessage: "Company not found" });
- const games = await prisma.game.findMany({
- where: {
- OR: [
- {
- developers: {
- some: {
- id: company.id,
- },
- },
- },
- {
- publishers: {
- some: {
- id: company.id,
- },
- },
- },
- ],
- },
- distinct: ["id"],
- });
- const companyFlatten = {
- ...company,
- developed: company.developed.map((e) => e.id),
- published: company.published.map((e) => e.id),
- };
- return { company: companyFlatten, games };
-});
diff --git a/server/api/v1/admin/company/[id]/index.patch.ts b/server/api/v1/admin/company/[id]/index.patch.ts
deleted file mode 100644
index 74511e2..0000000
--- a/server/api/v1/admin/company/[id]/index.patch.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:update"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readBody(h3);
- const id = getRouterParam(h3, "id")!;
-
- const restOfTheBody = { ...body };
- delete restOfTheBody["id"];
-
- const newObj = await prisma.company.update({
- where: {
- id: id,
- },
- data: restOfTheBody,
- // I would put a select here, but it would be based on the body, and muck up the types
- });
-
- return newObj;
-});
diff --git a/server/api/v1/admin/company/index.get.ts b/server/api/v1/admin/company/index.get.ts
deleted file mode 100644
index dac5ae2..0000000
--- a/server/api/v1/admin/company/index.get.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:read"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const companies = await prisma.company.findMany({});
- return companies;
-});
diff --git a/server/api/v1/admin/company/index.post.ts b/server/api/v1/admin/company/index.post.ts
deleted file mode 100644
index cbea4a1..0000000
--- a/server/api/v1/admin/company/index.post.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import * as jdenticon from "jdenticon";
-import { ObjectTransactionalHandler } from "~/server/internal/objects/transactional";
-import prisma from "~/server/internal/db/database";
-import { MetadataSource } from "~/prisma/client/enums";
-
-const CompanyCreate = type({
- name: "string",
- description: "string",
- website: "string",
-}).configure(throwingArktype);
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["company:create"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, CompanyCreate);
- const obj = new ObjectTransactionalHandler();
- const [register, pull, _] = obj.new({}, ["internal:read"]);
-
- const icon = jdenticon.toPng(body.name, 512);
- const logoId = register(icon);
-
- const banner = jdenticon.toPng(body.description, 1024);
- const bannerId = register(banner);
-
- const company = await prisma.company.create({
- data: {
- metadataSource: MetadataSource.Manual,
- metadataId: crypto.randomUUID(),
- metadataOriginalQuery: "",
-
- mName: body.name,
- mShortDescription: body.description,
- mDescription: "",
- mLogoObjectId: logoId,
- mBannerObjectId: bannerId,
- mWebsite: body.website,
- },
- });
-
- await pull();
-
- return company;
-});
diff --git a/server/api/v1/admin/game/[id]/index.get.ts b/server/api/v1/admin/game/[id]/index.get.ts
deleted file mode 100644
index faf0f1c..0000000
--- a/server/api/v1/admin/game/[id]/index.get.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-import libraryManager from "~/server/internal/library";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["game:read"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const gameId = getRouterParam(h3, "id")!;
-
- const game = await prisma.game.findUnique({
- where: {
- id: gameId,
- },
- include: {
- versions: {
- orderBy: {
- versionIndex: "asc",
- },
- omit: {
- dropletManifest: true,
- },
- },
- tags: true,
- },
- });
-
- if (!game || !game.libraryId)
- throw createError({ statusCode: 404, statusMessage: "Game ID not found" });
-
- const unimportedVersions = await libraryManager.fetchUnimportedGameVersions(
- game.libraryId,
- game.libraryPath,
- );
-
- return { game, unimportedVersions };
-});
diff --git a/server/api/v1/admin/game/[id]/tags.patch.ts b/server/api/v1/admin/game/[id]/tags.patch.ts
deleted file mode 100644
index d7192ad..0000000
--- a/server/api/v1/admin/game/[id]/tags.patch.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-const PatchTags = type({
- tags: "string[]",
-}).configure(throwingArktype);
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["game:update"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, PatchTags);
- const id = getRouterParam(h3, "id")!;
-
- await prisma.game.update({
- where: {
- id,
- },
- data: {
- tags: {
- connect: body.tags.map((e) => ({ id: e })),
- },
- },
- });
-
- return;
-});
diff --git a/server/api/v1/admin/game/image/index.delete.ts b/server/api/v1/admin/game/image/index.delete.ts
index d89ae76..3558584 100644
--- a/server/api/v1/admin/game/image/index.delete.ts
+++ b/server/api/v1/admin/game/image/index.delete.ts
@@ -1,25 +1,21 @@
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
import objectHandler from "~/server/internal/objects";
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-const DeleteGameImage = type({
- gameId: "string",
- imageId: "string",
-}).configure(throwingArktype);
-
-export default defineEventHandler<{
- body: typeof DeleteGameImage.infer;
-}>(async (h3) => {
+export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, ["game:image:delete"]);
if (!allowed) throw createError({ statusCode: 403 });
- const body = await readDropValidatedBody(h3, DeleteGameImage);
-
+ const body = await readBody(h3);
const gameId = body.gameId;
const imageId = body.imageId;
+ if (!gameId || !imageId)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Missing gameId or imageId in body",
+ });
+
const game = await prisma.game.findUnique({
where: {
id: gameId,
diff --git a/server/api/v1/admin/game/image/index.post.ts b/server/api/v1/admin/game/image/index.post.ts
index e230e9f..7ff453d 100644
--- a/server/api/v1/admin/game/image/index.post.ts
+++ b/server/api/v1/admin/game/image/index.post.ts
@@ -20,8 +20,8 @@ export default defineEventHandler(async (h3) => {
statusMessage: "Failed to upload file",
});
- const [ids, options, pull, dump] = uploadResult;
- if (ids.length == 0) {
+ const [id, options, pull, dump] = uploadResult;
+ if (!id) {
dump();
throw createError({
statusCode: 400,
@@ -48,7 +48,7 @@ export default defineEventHandler(async (h3) => {
},
data: {
mImageLibraryObjectIds: {
- push: ids,
+ push: id,
},
},
});
diff --git a/server/api/v1/admin/game/[id]/index.delete.ts b/server/api/v1/admin/game/index.delete.ts
similarity index 67%
rename from server/api/v1/admin/game/[id]/index.delete.ts
rename to server/api/v1/admin/game/index.delete.ts
index 2a0645d..6775177 100644
--- a/server/api/v1/admin/game/[id]/index.delete.ts
+++ b/server/api/v1/admin/game/index.delete.ts
@@ -5,7 +5,13 @@ export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, ["game:delete"]);
if (!allowed) throw createError({ statusCode: 403 });
- const gameId = getRouterParam(h3, "id")!;
+ const query = getQuery(h3);
+ const gameId = query.id?.toString();
+ if (!gameId)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Missing id in query",
+ });
await prisma.game.delete({
where: {
diff --git a/server/api/v1/admin/game/index.get.ts b/server/api/v1/admin/game/index.get.ts
index c7ca363..5e3979d 100644
--- a/server/api/v1/admin/game/index.get.ts
+++ b/server/api/v1/admin/game/index.get.ts
@@ -1,16 +1,44 @@
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
+import libraryManager from "~/server/internal/library";
export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, ["game:read"]);
if (!allowed) throw createError({ statusCode: 403 });
- return await prisma.game.findMany({
- select: {
- id: true,
- mName: true,
- mShortDescription: true,
- mIconObjectId: true,
+ const query = getQuery(h3);
+ const gameId = query.id?.toString();
+ if (!gameId)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Missing id in query",
+ });
+
+ const game = await prisma.game.findUnique({
+ where: {
+ id: gameId,
+ },
+ include: {
+ versions: {
+ orderBy: {
+ versionIndex: "asc",
+ },
+ select: {
+ versionIndex: true,
+ versionName: true,
+ platform: true,
+ delta: true,
+ },
+ },
},
});
+
+ if (!game)
+ throw createError({ statusCode: 404, statusMessage: "Game ID not found" });
+
+ const unimportedVersions = await libraryManager.fetchUnimportedVersions(
+ game.id,
+ );
+
+ return { game, unimportedVersions };
});
diff --git a/server/api/v1/admin/game/[id]/index.patch.ts b/server/api/v1/admin/game/index.patch.ts
similarity index 84%
rename from server/api/v1/admin/game/[id]/index.patch.ts
rename to server/api/v1/admin/game/index.patch.ts
index 410adee..238dc8e 100644
--- a/server/api/v1/admin/game/[id]/index.patch.ts
+++ b/server/api/v1/admin/game/index.patch.ts
@@ -6,7 +6,9 @@ export default defineEventHandler(async (h3) => {
if (!allowed) throw createError({ statusCode: 403 });
const body = await readBody(h3);
- const id = getRouterParam(h3, "id")!;
+ const id = body.id;
+ if (!id)
+ throw createError({ statusCode: 400, statusMessage: "Missing id in body" });
const restOfTheBody = { ...body };
delete restOfTheBody["id"];
diff --git a/server/api/v1/admin/game/[id]/metadata.post.ts b/server/api/v1/admin/game/metadata.post.ts
similarity index 57%
rename from server/api/v1/admin/game/[id]/metadata.post.ts
rename to server/api/v1/admin/game/metadata.post.ts
index cd1dcbc..59b7dd2 100644
--- a/server/api/v1/admin/game/[id]/metadata.post.ts
+++ b/server/api/v1/admin/game/metadata.post.ts
@@ -1,4 +1,3 @@
-import type { Prisma } from "~/prisma/client/client";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
import { handleFileUpload } from "~/server/internal/utils/handlefileupload";
@@ -14,49 +13,39 @@ export default defineEventHandler(async (h3) => {
statusMessage: "This endpoint requires multipart form data.",
});
- const gameId = getRouterParam(h3, "id")!;
-
- const uploadResult = await handleFileUpload(h3, {}, ["internal:read"], 1);
+ const uploadResult = await handleFileUpload(h3, {}, ["internal:read"]);
if (!uploadResult)
throw createError({
statusCode: 400,
statusMessage: "Failed to upload file",
});
- const [ids, options, pull, dump] = uploadResult;
-
- const id = ids.at(0);
+ const [id, options, pull, dump] = uploadResult;
// handleFileUpload reads the rest of the options for us.
const name = options.name;
const description = options.description;
+ const gameId = options.id;
- const updateModel: Prisma.GameUpdateInput = {
- mName: name,
- mShortDescription: description,
- };
-
- // handle if user uploaded new icon
- if (id) {
- updateModel.mIconObjectId = id;
- await pull();
- } else {
+ if (!id || !name || !description) {
dump();
+
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Nothing has changed",
+ });
}
- // If the API call doesn't provide values, don't set them
- for (const [key, value] of Object.entries(updateModel)) {
- if (value === undefined) {
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
- delete updateModel[key as keyof typeof updateModel];
- }
- }
-
+ await pull();
const newObject = await prisma.game.update({
where: {
id: gameId,
},
- data: updateModel,
+ data: {
+ mIconObjectId: id,
+ mName: name,
+ mShortDescription: description,
+ },
});
return newObject;
diff --git a/server/api/v1/admin/game/version/index.delete.ts b/server/api/v1/admin/game/version/index.delete.ts
index caf4242..79aa04d 100644
--- a/server/api/v1/admin/game/version/index.delete.ts
+++ b/server/api/v1/admin/game/version/index.delete.ts
@@ -1,34 +1,27 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
-const DeleteVersion = type({
- id: "string",
- versionName: "string",
-}).configure(throwingArktype);
+export default defineEventHandler(async (h3) => {
+ const allowed = await aclManager.allowSystemACL(h3, ["game:version:delete"]);
+ if (!allowed) throw createError({ statusCode: 403 });
-export default defineEventHandler<{ body: typeof DeleteVersion }>(
- async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, [
- "game:version:delete",
- ]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, DeleteVersion);
-
- const gameId = body.id.toString();
- const version = body.versionName.toString();
-
- await prisma.gameVersion.delete({
- where: {
- gameId_versionName: {
- gameId: gameId,
- versionName: version,
- },
- },
+ const body = await readBody(h3);
+ const gameId = body.id.toString();
+ const version = body.versionName.toString();
+ if (!gameId || !version)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Missing ID or versionName in body",
});
- return {};
- },
-);
+ await prisma.gameVersion.delete({
+ where: {
+ gameId_versionName: {
+ gameId: gameId,
+ versionName: version,
+ },
+ },
+ });
+
+ return {};
+});
diff --git a/server/api/v1/admin/game/version/index.patch.ts b/server/api/v1/admin/game/version/index.patch.ts
index 54e0547..7509cd5 100644
--- a/server/api/v1/admin/game/version/index.patch.ts
+++ b/server/api/v1/admin/game/version/index.patch.ts
@@ -1,72 +1,41 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
-const UpdateVersionOrder = type({
- id: "string",
- versions: "string[]",
-}).configure(throwingArktype);
+export default defineEventHandler(async (h3) => {
+ const allowed = await aclManager.allowSystemACL(h3, ["game:version:update"]);
+ if (!allowed) throw createError({ statusCode: 403 });
-export default defineEventHandler<{ body: typeof UpdateVersionOrder }>(
- async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, [
- "game:version:update",
- ]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, UpdateVersionOrder);
- const gameId = body.id;
- // We expect an array of the version names for this game
- const unsortedVersions = await prisma.gameVersion.findMany({
- where: {
- versionName: { in: body.versions },
- },
- select: {
- versionName: true,
- versionIndex: true,
- delta: true,
- platform: true,
- },
+ const body = await readBody(h3);
+ const gameId = body.id?.toString();
+ // We expect an array of the version names for this game
+ const versions: string[] | undefined = body.versions;
+ if (!gameId || !versions || !Array.isArray(versions))
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Missing id, versions or versions is not an array",
});
- const versions = body.versions
- .map((e) => unsortedVersions.find((v) => v.versionName === e))
- .filter((e) => e !== undefined);
-
- if (versions.length !== unsortedVersions.length)
- throw createError({
- statusCode: 500,
- statusMessage: "Sorting versions yielded less results, somehow.",
- });
-
- // Validate the new order
- const has: { [key: string]: boolean } = {};
- for (const version of versions) {
- if (version.delta && !has[version.platform])
- throw createError({
- statusCode: 400,
- statusMessage: `"${version.versionName}" requires a base version to apply the delta to.`,
- });
- has[version.platform] = true;
- }
-
- await prisma.$transaction(
- versions.map((version, versionIndex) =>
- prisma.gameVersion.update({
- where: {
- gameId_versionName: {
- gameId: gameId,
- versionName: version.versionName,
- },
+ const newVersions = await prisma.$transaction(
+ versions.map((versionName, versionIndex) =>
+ prisma.gameVersion.update({
+ where: {
+ gameId_versionName: {
+ gameId: gameId,
+ versionName: versionName,
},
- data: {
- versionIndex: versionIndex,
- },
- }),
- ),
- );
+ },
+ data: {
+ versionIndex: versionIndex,
+ },
+ select: {
+ versionIndex: true,
+ versionName: true,
+ platform: true,
+ delta: true,
+ },
+ }),
+ ),
+ );
- return versions;
- },
-);
+ return newVersions;
+});
diff --git a/server/api/v1/admin/import/game/index.get.ts b/server/api/v1/admin/import/game/index.get.ts
index 8ef65fb..c913bdc 100644
--- a/server/api/v1/admin/import/game/index.get.ts
+++ b/server/api/v1/admin/import/game/index.get.ts
@@ -5,14 +5,6 @@ export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, ["import:game:read"]);
if (!allowed) throw createError({ statusCode: 403 });
- const unimportedGames = await libraryManager.fetchUnimportedGames();
- const libraries = Object.fromEntries(
- (await libraryManager.fetchLibraries()).map((e) => [e.id, e]),
- );
- const iterableUnimportedGames = Object.entries(unimportedGames)
- .map(([libraryId, gameArray]) =>
- gameArray.map((e) => ({ game: e, library: libraries[libraryId] })),
- )
- .flat();
- return { unimportedGames: iterableUnimportedGames };
+ const unimportedGames = await libraryManager.fetchAllUnimportedGames();
+ return { unimportedGames };
});
diff --git a/server/api/v1/admin/import/game/index.post.ts b/server/api/v1/admin/import/game/index.post.ts
index e3e3247..7f39f52 100644
--- a/server/api/v1/admin/import/game/index.post.ts
+++ b/server/api/v1/admin/import/game/index.post.ts
@@ -1,53 +1,37 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
import aclManager from "~/server/internal/acls";
import libraryManager from "~/server/internal/library";
import metadataHandler from "~/server/internal/metadata";
+import type {
+ GameMetadataSearchResult,
+ GameMetadataSource,
+} from "~/server/internal/metadata/types";
-const ImportGameBody = type({
- library: "string",
- path: "string",
- ["metadata?"]: {
- id: "string",
- sourceId: "string",
- name: "string",
- },
-}).configure(throwingArktype);
+export default defineEventHandler(async (h3) => {
+ const allowed = await aclManager.allowSystemACL(h3, ["import:game:new"]);
+ if (!allowed) throw createError({ statusCode: 403 });
-export default defineEventHandler<{ body: typeof ImportGameBody.infer }>(
- async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["import:game:new"]);
- if (!allowed) throw createError({ statusCode: 403 });
+ const body = await readBody(h3);
- const { library, path, metadata } = await readDropValidatedBody(
- h3,
- ImportGameBody,
- );
+ const path = body.path;
+ const metadata = body.metadata as GameMetadataSearchResult &
+ GameMetadataSource;
+ if (!path)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Path missing from body",
+ });
- if (!path)
- throw createError({
- statusCode: 400,
- statusMessage: "Path missing from body",
- });
+ const validPath = await libraryManager.checkUnimportedGamePath(path);
+ if (!validPath)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Invalid unimported game path",
+ });
- const valid = await libraryManager.checkUnimportedGamePath(library, path);
- if (!valid)
- throw createError({
- statusCode: 400,
- statusMessage: "Invalid library or game.",
- });
-
- const taskId = metadata
- ? await metadataHandler.createGame(metadata, library, path)
- : await metadataHandler.createGameWithoutMetadata(library, path);
-
- if (!taskId)
- throw createError({
- statusCode: 400,
- statusMessage:
- "Duplicate metadata import. Please chose a different game or metadata provider.",
- });
-
- return { taskId };
- },
-);
+ if (!metadata || !metadata.id || !metadata.sourceId) {
+ console.log(metadata);
+ return await metadataHandler.createGameWithoutMetadata(path);
+ } else {
+ return await metadataHandler.createGame(metadata, path);
+ }
+});
diff --git a/server/api/v1/admin/import/version/index.get.ts b/server/api/v1/admin/import/version/index.get.ts
index 893d295..8687b94 100644
--- a/server/api/v1/admin/import/version/index.get.ts
+++ b/server/api/v1/admin/import/version/index.get.ts
@@ -1,5 +1,4 @@
import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
import libraryManager from "~/server/internal/library";
export default defineEventHandler(async (h3) => {
@@ -14,17 +13,8 @@ export default defineEventHandler(async (h3) => {
statusMessage: "Missing id in request params",
});
- const game = await prisma.game.findUnique({
- where: { id: gameId },
- select: { libraryId: true, libraryPath: true },
- });
- if (!game || !game.libraryId)
- throw createError({ statusCode: 404, statusMessage: "Game not found" });
-
- const unimportedVersions = await libraryManager.fetchUnimportedGameVersions(
- game.libraryId,
- game.libraryPath,
- );
+ const unimportedVersions =
+ await libraryManager.fetchUnimportedVersions(gameId);
if (!unimportedVersions)
throw createError({ statusCode: 400, statusMessage: "Invalid game ID" });
diff --git a/server/api/v1/admin/import/version/index.post.ts b/server/api/v1/admin/import/version/index.post.ts
index ab9ad1c..6ec7b3e 100644
--- a/server/api/v1/admin/import/version/index.post.ts
+++ b/server/api/v1/admin/import/version/index.post.ts
@@ -1,40 +1,33 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
import libraryManager from "~/server/internal/library";
import { parsePlatform } from "~/server/internal/utils/parseplatform";
-const ImportVersion = type({
- id: "string",
- version: "string",
-
- platform: "string",
- launch: "string = ''",
- launchArgs: "string = ''",
- setup: "string = ''",
- setupArgs: "string = ''",
- onlySetup: "boolean = false",
- delta: "boolean = false",
- umuId: "string = ''",
-}).configure(throwingArktype);
-
export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, ["import:version:new"]);
if (!allowed) throw createError({ statusCode: 403 });
- const {
- id,
- version,
- platform,
- launch,
- launchArgs,
- setup,
- setupArgs,
- onlySetup,
- delta,
- umuId,
- } = await readDropValidatedBody(h3, ImportVersion);
+ const body = await readBody(h3);
+ const gameId = body.id;
+ const versionName = body.version;
+
+ const platform = body.platform as string | undefined;
+ const launch = (body.launch ?? "") as string;
+ const launchArgs = (body.launchArgs ?? "") as string;
+ const setup = (body.setup ?? "") as string;
+ const setupArgs = (body.setupArgs ?? "") as string;
+ const onlySetup = body.onlySetup ?? (false as boolean);
+ const delta = (body.delta ?? false) as boolean;
+ const umuId = (body.umuId ?? "") as string;
+
+ if (!gameId || !versionName)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Game ID and version are required.",
+ });
+
+ if (!platform)
+ throw createError({ statusCode: 400, statusMessage: "Missing platform." });
const platformParsed = parsePlatform(platform);
if (!platformParsed)
@@ -42,7 +35,7 @@ export default defineEventHandler(async (h3) => {
if (delta) {
const validOverlayVersions = await prisma.gameVersion.count({
- where: { gameId: id, platform: platformParsed, delta: false },
+ where: { gameId: gameId, platform: platformParsed, delta: false },
});
if (validOverlayVersions == 0)
throw createError({
@@ -52,6 +45,12 @@ export default defineEventHandler(async (h3) => {
});
}
+ if (umuId && typeof umuId !== "string")
+ throw createError({
+ statusCode: 400,
+ statusMessage: "If specified, UMU ID must be a string.",
+ });
+
if (onlySetup) {
if (!setup)
throw createError({
@@ -62,12 +61,12 @@ export default defineEventHandler(async (h3) => {
if (!delta && !launch)
throw createError({
statusCode: 400,
- statusMessage: "Launch executable is required for non-update versions",
+ statusMessage: "Startup executable is required for non-update versions",
});
}
// startup & delta require more complex checking logic
- const taskId = await libraryManager.importVersion(id, version, {
+ const taskId = await libraryManager.importVersion(gameId, versionName, {
platform,
onlySetup,
diff --git a/server/api/v1/admin/index.get.ts b/server/api/v1/admin/index.get.ts
deleted file mode 100644
index 9d52d0f..0000000
--- a/server/api/v1/admin/index.get.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import aclManager from "~/server/internal/acls";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, []);
- if (!allowed) return false;
- return true;
-});
diff --git a/server/api/v1/admin/library/index.get.ts b/server/api/v1/admin/library/index.get.ts
index 5df358b..192a7c2 100644
--- a/server/api/v1/admin/library/index.get.ts
+++ b/server/api/v1/admin/library/index.get.ts
@@ -5,11 +5,10 @@ export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, ["library:read"]);
if (!allowed) throw createError({ statusCode: 403 });
- const unimportedGames = await libraryManager.fetchUnimportedGames();
+ const unimportedGames = await libraryManager.fetchAllUnimportedGames();
const games = await libraryManager.fetchGamesWithStatus();
- const libraries = await libraryManager.fetchLibraries();
// Fetch other library data here
- return { unimportedGames, games, hasLibraries: libraries.length > 0 };
+ return { unimportedGames, games };
});
diff --git a/server/api/v1/admin/library/sources/index.delete.ts b/server/api/v1/admin/library/sources/index.delete.ts
deleted file mode 100644
index 165a9b2..0000000
--- a/server/api/v1/admin/library/sources/index.delete.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-import libraryManager from "~/server/internal/library";
-
-const DeleteLibrarySource = type({
- id: "string",
-}).configure(throwingArktype);
-
-export default defineEventHandler<{ body: typeof DeleteLibrarySource.infer }>(
- async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, [
- "library:sources:delete",
- "setup",
- ]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, DeleteLibrarySource);
-
- await prisma.library.delete({
- where: {
- id: body.id,
- },
- });
-
- libraryManager.removeLibrary(body.id);
- },
-);
diff --git a/server/api/v1/admin/library/sources/index.get.ts b/server/api/v1/admin/library/sources/index.get.ts
deleted file mode 100644
index bf56134..0000000
--- a/server/api/v1/admin/library/sources/index.get.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import type { LibraryModel } from "~/prisma/client/models";
-import aclManager from "~/server/internal/acls";
-import libraryManager from "~/server/internal/library";
-
-export type WorkingLibrarySource = LibraryModel & { working: boolean };
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, [
- "library:sources:read",
- "setup",
- ]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const sources = await libraryManager.fetchLibraries();
-
- // Fetch other library data here
-
- return sources;
-});
diff --git a/server/api/v1/admin/library/sources/index.patch.ts b/server/api/v1/admin/library/sources/index.patch.ts
deleted file mode 100644
index f098b7a..0000000
--- a/server/api/v1/admin/library/sources/index.patch.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-import libraryManager from "~/server/internal/library";
-import { libraryConstructors } from "~/server/plugins/05.library-init";
-import type { WorkingLibrarySource } from "./index.get";
-
-const UpdateLibrarySource = type({
- id: "string",
- name: "string",
- options: "object",
-}).configure(throwingArktype);
-
-export default defineEventHandler<{ body: typeof UpdateLibrarySource.infer }>(
- async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, [
- "library:sources:update",
- "setup",
- ]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, UpdateLibrarySource);
-
- const source = await prisma.library.findUnique({ where: { id: body.id } });
- if (!source)
- throw createError({
- statusCode: 400,
- statusMessage: "Library source not found",
- });
-
- const constructor = libraryConstructors[source.backend];
-
- try {
- const newLibrary = constructor(body.options, source.id);
-
- // Test we can actually use it
- if ((await newLibrary.listGames()) === undefined) {
- throw "Library failed to fetch games.";
- }
-
- const updatedSource = await prisma.library.update({
- where: {
- id: source.id,
- },
- data: {
- name: body.name,
- options: body.options,
- },
- });
-
- await libraryManager.removeLibrary(source.id);
- await libraryManager.addLibrary(newLibrary);
-
- const workingSource: WorkingLibrarySource = {
- ...updatedSource,
- working: true,
- };
-
- return workingSource;
- } catch (e) {
- throw createError({
- statusCode: 400,
- statusMessage: `Failed to create source: ${e}`,
- });
- }
- },
-);
diff --git a/server/api/v1/admin/library/sources/index.post.ts b/server/api/v1/admin/library/sources/index.post.ts
deleted file mode 100644
index ae32b75..0000000
--- a/server/api/v1/admin/library/sources/index.post.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-import { type } from "arktype";
-import { randomUUID } from "crypto";
-import { LibraryBackend } from "~/prisma/client/enums";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-import libraryManager from "~/server/internal/library";
-import { libraryConstructors } from "~/server/plugins/05.library-init";
-import type { WorkingLibrarySource } from "./index.get";
-
-const CreateLibrarySource = type({
- name: "string",
- backend: "string",
- options: "object",
-}).configure(throwingArktype);
-
-export default defineEventHandler<{ body: typeof CreateLibrarySource.infer }>(
- async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, [
- "library:sources:new",
- "setup",
- ]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, CreateLibrarySource);
- const backend = Object.values(LibraryBackend).find(
- (e) => e == body.backend,
- );
- if (!backend)
- throw createError({
- statusCode: 400,
- statusMessage: "Invalid source backend.",
- });
-
- const constructor = libraryConstructors[backend];
-
- try {
- const id = randomUUID();
- const library = constructor(body.options, id);
-
- // Test we can actually use it
- if ((await library.listGames()) === undefined) {
- throw "Library failed to fetch games.";
- }
-
- const source = await prisma.library.create({
- data: {
- id,
- name: body.name,
- backend,
- options: body.options,
- },
- });
-
- await libraryManager.addLibrary(library);
-
- const workingSource: WorkingLibrarySource = {
- ...source,
- working: true,
- };
-
- return workingSource;
- } catch (e) {
- throw createError({
- statusCode: 400,
- statusMessage: `Failed to create source: ${e}`,
- });
- }
- },
-);
diff --git a/server/api/v1/admin/news/index.post.ts b/server/api/v1/admin/news/index.post.ts
index fb09c2e..5e3286e 100644
--- a/server/api/v1/admin/news/index.post.ts
+++ b/server/api/v1/admin/news/index.post.ts
@@ -1,16 +1,8 @@
-import { ArkErrors, type } from "arktype";
import { defineEventHandler, createError } from "h3";
import aclManager from "~/server/internal/acls";
import newsManager from "~/server/internal/news";
import { handleFileUpload } from "~/server/internal/utils/handlefileupload";
-const CreateNews = type({
- title: "string",
- description: "string",
- content: "string",
- tags: "string = '[]'",
-});
-
export default defineEventHandler(async (h3) => {
const allowed = await aclManager.allowSystemACL(h3, ["news:create"]);
if (!allowed) throw createError({ statusCode: 403 });
@@ -22,36 +14,34 @@ export default defineEventHandler(async (h3) => {
statusMessage: "This endpoint requires multipart form data.",
});
- const uploadResult = await handleFileUpload(h3, {}, ["internal:read"], 1);
+ const uploadResult = await handleFileUpload(h3, {}, ["internal:read"]);
if (!uploadResult)
throw createError({
statusCode: 400,
statusMessage: "Failed to upload file",
});
- const [imageIds, options, pull, _dump] = uploadResult;
+ const [imageId, options, pull, _dump] = uploadResult;
- const body = await CreateNews(options);
- if (body instanceof ArkErrors)
- throw createError({ statusCode: 400, statusMessage: body.summary });
+ const title = options.title;
+ const description = options.description;
+ const content = options.content;
+ const tags = options.tags ? (JSON.parse(options.tags) as string[]) : [];
- const parsedTags = JSON.parse(body.tags);
- if (typeof parsedTags !== "object" || !Array.isArray(parsedTags))
+ if (!title || !description || !content)
throw createError({
statusCode: 400,
- statusMessage: "Tags must be an array",
+ statusMessage: "Missing or invalid title, description or content.",
});
- const imageId = imageIds.at(0);
-
const article = await newsManager.create({
- title: body.title,
- description: body.description,
- content: body.content,
+ title: title,
+ description: description,
+ content: content,
- tags: parsedTags,
+ tags: tags,
- ...(imageId && { imageObjectId: imageId }),
+ ...(imageId && { image: imageId }),
authorId: "system",
});
diff --git a/server/api/v1/admin/settings/dummy-data.get.ts b/server/api/v1/admin/settings/dummy-data.get.ts
deleted file mode 100644
index 6f62372..0000000
--- a/server/api/v1/admin/settings/dummy-data.get.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.getUserACL(h3, ["settings:read"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const game = await prisma.game.findFirst();
-
- return { game };
-});
diff --git a/server/api/v1/admin/settings/index.patch.ts b/server/api/v1/admin/settings/index.patch.ts
deleted file mode 100644
index ef99441..0000000
--- a/server/api/v1/admin/settings/index.patch.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { type } from "arktype";
-import { applicationSettings } from "~/server/internal/config/application-configuration";
-import { readDropValidatedBody } from "~/server/arktype";
-import { defineEventHandler, createError } from "h3";
-import aclManager from "~/server/internal/acls";
-
-const UpdateSettings = type({
- showGamePanelTextDecoration: "boolean",
-});
-
-export default defineEventHandler<{ body: typeof UpdateSettings.infer }>(
- async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["settings:update"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, UpdateSettings);
-
- await applicationSettings.set(
- "showGamePanelTextDecoration",
- body.showGamePanelTextDecoration,
- );
- },
-);
diff --git a/server/api/v1/admin/tags/[id]/index.delete.ts b/server/api/v1/admin/tags/[id]/index.delete.ts
deleted file mode 100644
index 4279257..0000000
--- a/server/api/v1/admin/tags/[id]/index.delete.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["tags:delete"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const id = getRouterParam(h3, "id")!;
-
- const tag = await prisma.gameTag.deleteMany({ where: { id } });
- if (tag.count == 0)
- throw createError({ statusCode: 404, statusMessage: "Tag not found" });
- return;
-});
diff --git a/server/api/v1/admin/tags/index.get.ts b/server/api/v1/admin/tags/index.get.ts
deleted file mode 100644
index d8f1c1e..0000000
--- a/server/api/v1/admin/tags/index.get.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["tags:read"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const tags = await prisma.gameTag.findMany({ orderBy: { name: "asc" } });
- return tags;
-});
diff --git a/server/api/v1/admin/tags/index.post.ts b/server/api/v1/admin/tags/index.post.ts
deleted file mode 100644
index 15698e7..0000000
--- a/server/api/v1/admin/tags/index.post.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-const CreateTag = type({
- name: "string",
-}).configure(throwingArktype);
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["tags:read"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, CreateTag);
-
- const tag = await prisma.gameTag.create({
- data: {
- ...body,
- },
- });
- return tag;
-});
diff --git a/server/api/v1/admin/task/index.get.ts b/server/api/v1/admin/task/index.get.ts
deleted file mode 100644
index 690dce8..0000000
--- a/server/api/v1/admin/task/index.get.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-import type { TaskMessage } from "~/server/internal/tasks";
-import taskHandler from "~/server/internal/tasks";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["task:read"]);
- if (!allowed) throw createError({ statusCode: 403 });
- const allAcls = await aclManager.fetchAllACLs(h3);
- if (!allAcls)
- throw createError({
- statusCode: 403,
- statusMessage: "Somehow no ACLs on authenticated request.",
- });
-
- const runningTasks = (await taskHandler.runningTasks()).map((e) => e.id);
- const historicalTasks = (await prisma.task.findMany({
- where: {
- OR: [
- {
- acls: { hasSome: allAcls },
- },
- {
- acls: { isEmpty: true },
- },
- ],
- },
- orderBy: {
- ended: "desc",
- },
- take: 10,
- })) as Array;
- const dailyTasks = await taskHandler.dailyTasks();
- const weeklyTasks = await taskHandler.weeklyTasks();
-
- return { runningTasks, historicalTasks, dailyTasks, weeklyTasks };
-});
diff --git a/server/api/v1/admin/task/index.post.ts b/server/api/v1/admin/task/index.post.ts
deleted file mode 100644
index dc28190..0000000
--- a/server/api/v1/admin/task/index.post.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager from "~/server/internal/acls";
-import taskHandler from "~/server/internal/tasks";
-import type { TaskGroup } from "~/server/internal/tasks/group";
-import { taskGroups } from "~/server/internal/tasks/group";
-
-const StartTask = type({
- taskGroup: type("string"),
-}).configure(throwingArktype);
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["task:start"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, StartTask);
- const taskGroup = body.taskGroup as TaskGroup;
- if (!taskGroups[taskGroup])
- throw createError({
- statusCode: 400,
- statusMessage: "Invalid task group.",
- });
-
- const task = await taskHandler.runTaskGroupByName(taskGroup);
- if (!task)
- throw createError({
- statusCode: 500,
- statusMessage: "Could not start task.",
- });
- return { id: task };
-});
diff --git a/server/api/v1/admin/token/[id]/index.delete.ts b/server/api/v1/admin/token/[id]/index.delete.ts
deleted file mode 100644
index 1e33730..0000000
--- a/server/api/v1/admin/token/[id]/index.delete.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { APITokenMode } from "~/prisma/client/enums";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, []); // No ACLs only allows session authentication
- if (!allowed) throw createError({ statusCode: 403 });
-
- const id = h3.context.params?.id;
- if (!id)
- throw createError({
- statusCode: 400,
- statusMessage: "No id in router params",
- });
-
- const deleted = await prisma.aPIToken.delete({
- where: { id: id, mode: APITokenMode.System },
- })!;
- if (!deleted)
- throw createError({ statusCode: 404, statusMessage: "Token not found" });
-
- return;
-});
diff --git a/server/api/v1/admin/token/acls.get.ts b/server/api/v1/admin/token/acls.get.ts
deleted file mode 100644
index 09b4e0f..0000000
--- a/server/api/v1/admin/token/acls.get.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import { systemACLDescriptions } from "~/server/internal/acls/descriptions";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, []); // No ACLs only allows session authentication
- if (!allowed) throw createError({ statusCode: 403 });
-
- return systemACLDescriptions;
-});
diff --git a/server/api/v1/admin/token/index.get.ts b/server/api/v1/admin/token/index.get.ts
deleted file mode 100644
index 2438a4b..0000000
--- a/server/api/v1/admin/token/index.get.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { APITokenMode } from "~/prisma/client/enums";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, []); // No ACLs only allows session authentication
- if (!allowed) throw createError({ statusCode: 403 });
-
- const tokens = await prisma.aPIToken.findMany({
- where: { mode: APITokenMode.System },
- omit: { token: true },
- });
-
- return tokens;
-});
diff --git a/server/api/v1/admin/token/index.post.ts b/server/api/v1/admin/token/index.post.ts
deleted file mode 100644
index 421fe8d..0000000
--- a/server/api/v1/admin/token/index.post.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { type } from "arktype";
-import { APITokenMode } from "~/prisma/client/enums";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import aclManager, { systemACLs } from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-const CreateToken = type({
- name: "string",
- acls: "string[] > 0",
- expiry: "string.date.iso.parse?",
-}).configure(throwingArktype);
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, []); // No ACLs only allows session authentication
- if (!allowed) throw createError({ statusCode: 403 });
-
- const body = await readDropValidatedBody(h3, CreateToken);
-
- const invalidACLs = body.acls.filter(
- (e) => systemACLs.findIndex((v) => e == v) == -1,
- );
- if (invalidACLs.length > 0)
- throw createError({
- statusCode: 400,
- statusMessage: `Invalid ACLs: ${invalidACLs.join(", ")}`,
- });
-
- const token = await prisma.aPIToken.create({
- data: {
- mode: APITokenMode.System,
- name: body.name,
- acls: body.acls,
- expiresAt: body.expiry ?? null,
- },
- });
-
- return token;
-});
diff --git a/server/api/v1/admin/users/[id]/index.delete.ts b/server/api/v1/admin/users/[id]/index.delete.ts
deleted file mode 100644
index c514817..0000000
--- a/server/api/v1/admin/users/[id]/index.delete.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { defineEventHandler, createError } from "h3";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["user:delete"]);
- if (!allowed)
- throw createError({
- statusCode: 403,
- });
-
- const userId = h3.context.params?.id;
- if (!userId) {
- throw createError({
- statusCode: 400,
- message: "No userId in route.",
- });
- }
- if (userId === "system")
- throw createError({
- statusCode: 400,
- statusMessage: "Cannot interact with system user.",
- });
-
- const user = await prisma.user.findUnique({ where: { id: userId } });
- if (!user)
- throw createError({ statusCode: 404, statusMessage: "User not found." });
-
- await prisma.user.delete({ where: { id: userId } });
- return { success: true };
-});
diff --git a/server/api/v1/auth/index.get.ts b/server/api/v1/auth/index.get.ts
index 1582f1b..1bf368d 100644
--- a/server/api/v1/auth/index.get.ts
+++ b/server/api/v1/auth/index.get.ts
@@ -1,5 +1,9 @@
-import authManager from "~/server/internal/auth";
+import { enabledAuthManagers } from "~/server/plugins/04.auth-init";
export default defineEventHandler(() => {
- return authManager.getEnabledAuthProviders();
+ const authManagers = Object.entries(enabledAuthManagers)
+ .filter((e) => !!e[1])
+ .map((e) => e[0]);
+
+ return authManagers;
});
diff --git a/server/api/v1/auth/signin/simple.post.ts b/server/api/v1/auth/signin/simple.post.ts
index 3e4ca03..42eacdf 100644
--- a/server/api/v1/auth/signin/simple.post.ts
+++ b/server/api/v1/auth/signin/simple.post.ts
@@ -1,13 +1,13 @@
-import { AuthMec } from "~/prisma/client/enums";
+import { AuthMec } from "~/prisma/client";
import type { JsonArray } from "@prisma/client/runtime/library";
import { type } from "arktype";
import prisma from "~/server/internal/db/database";
-import sessionHandler from "~/server/internal/session";
-import authManager, {
+import {
checkHashArgon2,
checkHashBcrypt,
-} from "~/server/internal/auth";
-import { logger } from "~/server/internal/logging";
+} from "~/server/internal/security/simple";
+import sessionHandler from "~/server/internal/session";
+import { enabledAuthManagers } from "~/server/plugins/04.auth-init";
const signinValidator = type({
username: "string",
@@ -15,21 +15,17 @@ const signinValidator = type({
"rememberMe?": "boolean | undefined",
});
-export default defineEventHandler<{
- body: typeof signinValidator.infer;
-}>(async (h3) => {
- const t = await useTranslation(h3);
-
- if (!authManager.getAuthProviders().Simple)
+export default defineEventHandler(async (h3) => {
+ if (!enabledAuthManagers.Simple)
throw createError({
statusCode: 403,
- statusMessage: t("errors.auth.method.signinDisabled"),
+ statusMessage: "Sign in method not enabled",
});
const body = signinValidator(await readBody(h3));
if (body instanceof type.errors) {
// hover out.summary to see validation errors
- logger.error(body.summary);
+ console.error(body.summary);
throw createError({
statusCode: 400,
@@ -57,13 +53,14 @@ export default defineEventHandler<{
if (!authMek)
throw createError({
statusCode: 401,
- statusMessage: t("errors.auth.invalidUserOrPass"),
+ statusMessage: "Invalid username or password.",
});
if (!authMek.user.enabled)
throw createError({
statusCode: 403,
- statusMessage: t("errors.auth.disabled"),
+ statusMessage:
+ "Invalid or disabled account. Please contact the server administrator.",
});
// LEGACY bcrypt
@@ -73,14 +70,15 @@ export default defineEventHandler<{
if (!hash)
throw createError({
- statusCode: 500,
- statusMessage: t("errors.auth.invalidPassState"),
+ statusCode: 403,
+ statusMessage:
+ "Invalid password state. Please contact the server administrator.",
});
if (!(await checkHashBcrypt(body.password, hash)))
throw createError({
statusCode: 401,
- statusMessage: t("errors.auth.invalidUserOrPass"),
+ statusMessage: "Invalid username or password.",
});
// TODO: send user to forgot password screen or something to force them to change their password to new system
@@ -93,13 +91,14 @@ export default defineEventHandler<{
if (!hash || typeof hash !== "string")
throw createError({
statusCode: 500,
- statusMessage: t("errors.auth.invalidPassState"),
+ statusMessage:
+ "Invalid password state. Please contact the server administrator.",
});
if (!(await checkHashArgon2(body.password, hash)))
throw createError({
statusCode: 401,
- statusMessage: t("errors.auth.invalidUserOrPass"),
+ statusMessage: "Invalid username or password.",
});
await sessionHandler.signin(h3, authMek.userId, body.rememberMe);
diff --git a/server/api/v1/auth/signup/simple.get.ts b/server/api/v1/auth/signup/simple.get.ts
index ad6c496..82bff3a 100644
--- a/server/api/v1/auth/signup/simple.get.ts
+++ b/server/api/v1/auth/signup/simple.get.ts
@@ -1,30 +1,21 @@
import prisma from "~/server/internal/db/database";
-import taskHandler from "~/server/internal/tasks";
-import authManager from "~/server/internal/auth";
export default defineEventHandler(async (h3) => {
- const t = await useTranslation(h3);
-
- if (!authManager.getAuthProviders().Simple)
- throw createError({
- statusCode: 403,
- statusMessage: t("errors.auth.method.signinDisabled"),
- });
-
const query = getQuery(h3);
const id = query.id?.toString();
if (!id)
throw createError({
statusCode: 400,
- statusMessage: t("errors.auth.inviteIdRequired"),
+ statusMessage: "id required in fetching invitation",
});
- taskHandler.runTaskGroupByName("cleanup:invitations");
+
+ await runTask("cleanup:invitations");
const invitation = await prisma.invitation.findUnique({ where: { id: id } });
if (!invitation)
throw createError({
statusCode: 404,
- statusMessage: t("errors.auth.invalidInvite"),
+ statusMessage: "Invalid or expired invitation",
});
return invitation;
diff --git a/server/api/v1/auth/signup/simple.post.ts b/server/api/v1/auth/signup/simple.post.ts
index 8434f65..ade27c1 100644
--- a/server/api/v1/auth/signup/simple.post.ts
+++ b/server/api/v1/auth/signup/simple.post.ts
@@ -1,45 +1,48 @@
-import { AuthMec } from "~/prisma/client/enums";
+import { AuthMec } from "~/prisma/client";
import prisma from "~/server/internal/db/database";
-import authManager, { createHashArgon2 } from "~/server/internal/auth";
+import { createHashArgon2 } from "~/server/internal/security/simple";
import * as jdenticon from "jdenticon";
import objectHandler from "~/server/internal/objects";
import { type } from "arktype";
import { randomUUID } from "node:crypto";
-import { throwingArktype } from "~/server/arktype";
-export const SharedRegisterValidator = type({
+const userValidator = type({
username: "string >= 5",
email: "string.email",
-});
-
-const CreateUserValidator = SharedRegisterValidator.and({
- invitation: "string",
password: "string >= 14",
"displayName?": "string | undefined",
-}).configure(throwingArktype);
+});
-export default defineEventHandler<{
- body: typeof CreateUserValidator.infer;
-}>(async (h3) => {
- const t = await useTranslation(h3);
+export default defineEventHandler(async (h3) => {
+ const body = await readBody(h3);
- if (!authManager.getAuthProviders().Simple)
+ const invitationId = body.invitation;
+ if (!invitationId)
throw createError({
- statusCode: 403,
- statusMessage: t("errors.auth.method.signinDisabled"),
+ statusCode: 401,
+ statusMessage: "Invalid or expired invitation.",
});
- const user = await readValidatedBody(h3, CreateUserValidator);
-
const invitation = await prisma.invitation.findUnique({
- where: { id: user.invitation },
+ where: { id: invitationId },
});
if (!invitation)
throw createError({
statusCode: 401,
- statusMessage: t("errors.auth.invalidInvite"),
+ statusMessage: "Invalid or expired invitation.",
});
+ const user = userValidator(body);
+ if (user instanceof type.errors) {
+ // hover out.summary to see validation errors
+ console.error(user.summary);
+
+ throw createError({
+ statusCode: 400,
+ statusMessage: user.summary,
+ });
+ }
+
// reuse items from invite
if (invitation.username !== null) user.username = invitation.username;
if (invitation.email !== null) user.email = invitation.email;
@@ -50,7 +53,7 @@ export default defineEventHandler<{
if (existing > 0)
throw createError({
statusCode: 400,
- statusMessage: t("errors.auth.usernameTaken"),
+ statusMessage: "Username already taken.",
});
const userId = randomUUID();
@@ -83,7 +86,7 @@ export default defineEventHandler<{
user: true,
},
}),
- prisma.invitation.delete({ where: { id: user.invitation } }),
+ prisma.invitation.delete({ where: { id: invitationId } }),
]);
return linkMec.user;
diff --git a/server/api/v1/client/auth/index.get.ts b/server/api/v1/client/auth/callback/index.get.ts
similarity index 71%
rename from server/api/v1/client/auth/index.get.ts
rename to server/api/v1/client/auth/callback/index.get.ts
index 92cf16c..d954534 100644
--- a/server/api/v1/client/auth/index.get.ts
+++ b/server/api/v1/client/auth/callback/index.get.ts
@@ -13,20 +13,14 @@ export default defineEventHandler(async (h3) => {
statusMessage: "Provide client ID in request params as 'id'",
});
- const client = await clientHandler.fetchClient(providedClientId);
- if (!client)
+ const data = await clientHandler.fetchClientMetadata(providedClientId);
+ if (!data)
throw createError({
statusCode: 404,
statusMessage: "Request not found.",
});
- if (client.userId && user.userId !== client.userId)
- throw createError({
- statusCode: 400,
- statusMessage: "Client already claimed.",
- });
-
await clientHandler.attachUserId(providedClientId, user.userId);
- return client.data;
+ return data;
});
diff --git a/server/api/v1/client/auth/callback/index.post.ts b/server/api/v1/client/auth/callback/index.post.ts
index bc63be7..b08a57b 100644
--- a/server/api/v1/client/auth/callback/index.post.ts
+++ b/server/api/v1/client/auth/callback/index.post.ts
@@ -8,19 +8,13 @@ export default defineEventHandler(async (h3) => {
const body = await readBody(h3);
const clientId = await body.id;
- const client = await clientHandler.fetchClient(clientId);
- if (!client)
+ const data = await clientHandler.fetchClientMetadata(clientId);
+ if (!data)
throw createError({
statusCode: 400,
statusMessage: "Invalid or expired client ID.",
});
- if (client.userId != user.userId)
- throw createError({
- statusCode: 403,
- statusMessage: "Not allowed to authorize this client.",
- });
-
const token = await clientHandler.generateAuthToken(clientId);
return {
diff --git a/server/api/v1/client/auth/code/index.get.ts b/server/api/v1/client/auth/code/index.get.ts
deleted file mode 100644
index 74bc6e8..0000000
--- a/server/api/v1/client/auth/code/index.get.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import clientHandler from "~/server/internal/clients/handler";
-import sessionHandler from "~/server/internal/session";
-
-export default defineEventHandler(async (h3) => {
- const user = await sessionHandler.getSession(h3);
- if (!user) throw createError({ statusCode: 403 });
-
- const query = getQuery(h3);
- const code = query.code?.toString()?.toUpperCase();
- if (!code)
- throw createError({
- statusCode: 400,
- statusMessage: "Code required in query params.",
- });
-
- const clientId = await clientHandler.fetchClientIdByCode(code);
- if (!clientId)
- throw createError({ statusCode: 400, statusMessage: "Invalid code." });
-
- return clientId;
-});
diff --git a/server/api/v1/client/auth/code/index.post.ts b/server/api/v1/client/auth/code/index.post.ts
deleted file mode 100644
index 593b773..0000000
--- a/server/api/v1/client/auth/code/index.post.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import clientHandler from "~/server/internal/clients/handler";
-import sessionHandler from "~/server/internal/session";
-
-export default defineEventHandler(async (h3) => {
- const user = await sessionHandler.getSession(h3);
- if (!user) throw createError({ statusCode: 403 });
-
- const body = await readBody(h3);
- const clientId = await body.id;
-
- const client = await clientHandler.fetchClient(clientId);
- if (!client)
- throw createError({
- statusCode: 400,
- statusMessage: "Invalid or expired client ID.",
- });
-
- if (client.userId != user.userId)
- throw createError({
- statusCode: 403,
- statusMessage: "Not allowed to authorize this client.",
- });
-
- if (!client.peer)
- throw createError({
- statusCode: 500,
- statusMessage: "No client listening for authorization.",
- });
-
- const token = await clientHandler.generateAuthToken(clientId);
-
- await clientHandler.sendAuthToken(clientId, token);
-
- return;
-});
diff --git a/server/api/v1/client/auth/code/ws.get.ts b/server/api/v1/client/auth/code/ws.get.ts
deleted file mode 100644
index 637d8df..0000000
--- a/server/api/v1/client/auth/code/ws.get.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import type { FetchError } from "ofetch";
-import clientHandler from "~/server/internal/clients/handler";
-
-export default defineWebSocketHandler({
- async open(peer) {
- try {
- const h3 = { headers: peer.request?.headers ?? new Headers() };
- const code = h3.headers.get("Authorization");
- if (!code)
- throw createError({
- statusCode: 400,
- statusMessage: "Code required in Authorization header.",
- });
- await clientHandler.connectCodeListener(code, peer);
- } catch (e) {
- peer.send(
- JSON.stringify({
- type: "error",
- value: (e as FetchError)?.statusMessage,
- }),
- );
- peer.close();
- }
- },
-});
diff --git a/server/api/v1/client/auth/initiate.post.ts b/server/api/v1/client/auth/initiate.post.ts
index 64186b5..39de29b 100644
--- a/server/api/v1/client/auth/initiate.post.ts
+++ b/server/api/v1/client/auth/initiate.post.ts
@@ -1,28 +1,17 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import type {
- CapabilityConfiguration,
- InternalClientCapability,
-} from "~/server/internal/clients/capabilities";
-import capabilityManager, {
- validCapabilities,
-} from "~/server/internal/clients/capabilities";
-import clientHandler, { AuthMode } from "~/server/internal/clients/handler";
+import clientHandler from "~/server/internal/clients/handler";
import { parsePlatform } from "~/server/internal/utils/parseplatform";
-const ClientAuthInitiate = type({
- name: "string",
- platform: "string",
- capabilities: "object",
- mode: type.valueOf(AuthMode).default(AuthMode.Callback),
-}).configure(throwingArktype);
-
export default defineEventHandler(async (h3) => {
- const body = await readDropValidatedBody(h3, ClientAuthInitiate);
+ const body = await readBody(h3);
+ const name = body.name;
const platformRaw = body.platform;
- const capabilities: Partial =
- body.capabilities ?? {};
+
+ if (!name || !platformRaw)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Missing name or platform in body",
+ });
const platform = parsePlatform(platformRaw);
if (!platform)
@@ -31,41 +20,7 @@ export default defineEventHandler(async (h3) => {
statusMessage: "Invalid or unsupported platform",
});
- const capabilityIterable = Object.entries(capabilities) as Array<
- [InternalClientCapability, object]
- >;
- if (
- capabilityIterable.length > 0 &&
- capabilityIterable
- .map(([capability]) => validCapabilities.find((v) => capability == v))
- .filter((e) => e).length == 0
- )
- throw createError({
- statusCode: 400,
- statusMessage: "Invalid capabilities.",
- });
+ const clientId = await clientHandler.initiate({ name, platform });
- if (
- capabilityIterable.length > 0 &&
- capabilityIterable.filter(
- ([capability, configuration]) =>
- !capabilityManager.validateCapabilityConfiguration(
- capability,
- configuration,
- ),
- ).length > 0
- )
- throw createError({
- statusCode: 400,
- statusMessage: "Invalid capability configuration.",
- });
-
- const result = await clientHandler.initiate({
- name: body.name,
- platform,
- capabilities,
- mode: body.mode,
- });
-
- return result;
+ return `/client/${clientId}/callback`;
});
diff --git a/server/api/v1/client/capability/index.post.ts b/server/api/v1/client/capability/index.post.ts
index a33f690..0123860 100644
--- a/server/api/v1/client/capability/index.post.ts
+++ b/server/api/v1/client/capability/index.post.ts
@@ -55,7 +55,6 @@ export default defineClientEventHandler(
title: `"${client.name}" can now access ${capability}`,
description: `A device called "${client.name}" now has access to your ${capability}.`,
actions: ["Review|/account/devices"],
- acls: ["user:clients:read"],
});
return {};
diff --git a/server/api/v1/client/chunk.get.ts b/server/api/v1/client/chunk.get.ts
index 030b796..bc78468 100644
--- a/server/api/v1/client/chunk.get.ts
+++ b/server/api/v1/client/chunk.get.ts
@@ -1,16 +1,11 @@
-import cacheHandler from "~/server/internal/cache";
-import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import prisma from "~/server/internal/db/database";
+import fs from "fs";
+import path from "path";
import libraryManager from "~/server/internal/library";
const chunkSize = 1024 * 1024 * 64;
-const gameLookupCache = cacheHandler.createCache<{
- libraryId: string | null;
- libraryPath: string;
-}>("downloadGameLookupCache");
-
-export default defineClientEventHandler(async (h3) => {
+export default defineEventHandler(async (h3) => {
const query = getQuery(h3);
const gameId = query.id?.toString();
const versionName = query.version?.toString();
@@ -23,40 +18,36 @@ export default defineClientEventHandler(async (h3) => {
statusMessage: "Invalid chunk arguments",
});
- let game = await gameLookupCache.getItem(gameId);
- if (!game) {
- game = await prisma.game.findUnique({
- where: {
- id: gameId,
- },
- select: {
- libraryId: true,
- libraryPath: true,
- },
- });
- if (!game || !game.libraryId)
- throw createError({ statusCode: 400, statusMessage: "Invalid game ID" });
+ const game = await prisma.game.findUnique({
+ where: {
+ id: gameId,
+ },
+ select: {
+ libraryBasePath: true,
+ },
+ });
+ if (!game)
+ throw createError({ statusCode: 400, statusMessage: "Invalid game ID" });
- await gameLookupCache.setItem(gameId, game);
- }
-
- if (!game.libraryId)
- throw createError({
- statusCode: 500,
- statusMessage: "Somehow, we got here.",
- });
-
- const peek = await libraryManager.peekFile(
- game.libraryId,
- game.libraryPath,
+ const versionDir = path.join(
+ libraryManager.fetchLibraryPath(),
+ game.libraryBasePath,
versionName,
- filename,
);
- if (!peek)
- throw createError({ status: 400, statusMessage: "Failed to peek file" });
+ if (!fs.existsSync(versionDir))
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Invalid version name",
+ });
+
+ const gameFile = path.join(versionDir, filename);
+ if (!fs.existsSync(gameFile))
+ throw createError({ statusCode: 400, statusMessage: "Invalid game file" });
+
+ const gameFileStats = fs.statSync(gameFile);
const start = chunkIndex * chunkSize;
- const end = Math.min((chunkIndex + 1) * chunkSize, peek.size);
+ const end = Math.min((chunkIndex + 1) * chunkSize, gameFileStats.size);
const currentChunkSize = end - start;
setHeader(h3, "Content-Length", currentChunkSize);
@@ -66,18 +57,7 @@ export default defineClientEventHandler(async (h3) => {
statusMessage: "Invalid chunk index",
});
- const gameReadStream = await libraryManager.readFile(
- game.libraryId,
- game.libraryPath,
- versionName,
- filename,
- { start, end },
- );
- if (!gameReadStream)
- throw createError({
- statusCode: 400,
- statusMessage: "Failed to create stream",
- });
+ const gameReadStream = fs.createReadStream(gameFile, { start, end: end - 1 }); // end needs to be offset by 1
- return sendStream(h3, gameReadStream);
+ return gameReadStream;
});
diff --git a/server/api/v1/client/peer/index.get.ts b/server/api/v1/client/peer/index.get.ts
new file mode 100644
index 0000000..c37d8cd
--- /dev/null
+++ b/server/api/v1/client/peer/index.get.ts
@@ -0,0 +1,20 @@
+import { ClientCapabilities } from "~/prisma/client";
+import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
+import headscaleManager from "~/server/internal/p2p/headscale";
+
+export default defineClientEventHandler(async (h3, { fetchClient }) => {
+ const client = await fetchClient();
+ if (!client.capabilities.includes(ClientCapabilities.PeerAPI))
+ throw createError({
+ statusCode: 403,
+ statusMessage: "Capability not allowed.",
+ });
+
+ if (!headscaleManager.enabled())
+ throw createError({
+ statusCode: 500,
+ statusMessage: "Peer network not available.",
+ });
+
+ return headscaleManager.configuration();
+});
diff --git a/server/api/v1/client/peer/index.post.ts b/server/api/v1/client/peer/index.post.ts
new file mode 100644
index 0000000..775a7f4
--- /dev/null
+++ b/server/api/v1/client/peer/index.post.ts
@@ -0,0 +1,26 @@
+import { ClientCapabilities } from "~/prisma/client";
+import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
+import headscaleManager from "~/server/internal/p2p/headscale";
+
+export default defineClientEventHandler(
+ async (h3, { fetchClient, fetchUser }) => {
+ const client = await fetchClient();
+ if (!client.capabilities.includes(ClientCapabilities.PeerAPI))
+ throw createError({
+ statusCode: 403,
+ statusMessage: "Capability not allowed.",
+ });
+
+ if (!headscaleManager.enabled())
+ throw createError({
+ statusCode: 500,
+ statusMessage: "Peer network not available.",
+ });
+
+ const user = await fetchUser();
+
+ const key = await headscaleManager.createPreauthKey(user, client);
+
+ return key;
+ },
+);
diff --git a/server/api/v1/client/saves/[gameid]/[slotindex]/index.delete.ts b/server/api/v1/client/saves/[gameid]/[slotindex]/index.delete.ts
index 0f36008..103dbd7 100644
--- a/server/api/v1/client/saves/[gameid]/[slotindex]/index.delete.ts
+++ b/server/api/v1/client/saves/[gameid]/[slotindex]/index.delete.ts
@@ -1,4 +1,4 @@
-import { ClientCapabilities } from "~/prisma/client/enums";
+import { ClientCapabilities } from "~/prisma/client";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import prisma from "~/server/internal/db/database";
diff --git a/server/api/v1/client/saves/[gameid]/[slotindex]/index.get.ts b/server/api/v1/client/saves/[gameid]/[slotindex]/index.get.ts
index 1ea38ae..d4633a7 100644
--- a/server/api/v1/client/saves/[gameid]/[slotindex]/index.get.ts
+++ b/server/api/v1/client/saves/[gameid]/[slotindex]/index.get.ts
@@ -1,4 +1,4 @@
-import { ClientCapabilities } from "~/prisma/client/enums";
+import { ClientCapabilities } from "~/prisma/client";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import prisma from "~/server/internal/db/database";
diff --git a/server/api/v1/client/saves/[gameid]/[slotindex]/push.post.ts b/server/api/v1/client/saves/[gameid]/[slotindex]/push.post.ts
index 8034b81..0572e7a 100644
--- a/server/api/v1/client/saves/[gameid]/[slotindex]/push.post.ts
+++ b/server/api/v1/client/saves/[gameid]/[slotindex]/push.post.ts
@@ -1,4 +1,4 @@
-import { ClientCapabilities } from "~/prisma/client/enums";
+import { ClientCapabilities } from "~/prisma/client";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import prisma from "~/server/internal/db/database";
import saveManager from "~/server/internal/saves";
diff --git a/server/api/v1/client/saves/[gameid]/index.get.ts b/server/api/v1/client/saves/[gameid]/index.get.ts
index 53ce8a5..bf2a864 100644
--- a/server/api/v1/client/saves/[gameid]/index.get.ts
+++ b/server/api/v1/client/saves/[gameid]/index.get.ts
@@ -1,4 +1,4 @@
-import { ClientCapabilities } from "~/prisma/client/enums";
+import { ClientCapabilities } from "~/prisma/client";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import prisma from "~/server/internal/db/database";
diff --git a/server/api/v1/client/saves/[gameid]/index.post.ts b/server/api/v1/client/saves/[gameid]/index.post.ts
index 91193ce..a605170 100644
--- a/server/api/v1/client/saves/[gameid]/index.post.ts
+++ b/server/api/v1/client/saves/[gameid]/index.post.ts
@@ -1,4 +1,4 @@
-import { ClientCapabilities } from "~/prisma/client/enums";
+import { ClientCapabilities } from "~/prisma/client";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import { applicationSettings } from "~/server/internal/config/application-configuration";
import prisma from "~/server/internal/db/database";
diff --git a/server/api/v1/client/saves/index.get.ts b/server/api/v1/client/saves/index.get.ts
index 506151e..6241bae 100644
--- a/server/api/v1/client/saves/index.get.ts
+++ b/server/api/v1/client/saves/index.get.ts
@@ -1,4 +1,4 @@
-import { ClientCapabilities } from "~/prisma/client/enums";
+import { ClientCapabilities } from "~/prisma/client";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import prisma from "~/server/internal/db/database";
diff --git a/server/api/v1/client/saves/settings.get.ts b/server/api/v1/client/saves/settings.get.ts
index 05c3026..296bfa4 100644
--- a/server/api/v1/client/saves/settings.get.ts
+++ b/server/api/v1/client/saves/settings.get.ts
@@ -1,4 +1,4 @@
-import { ClientCapabilities } from "~/prisma/client/enums";
+import { ClientCapabilities } from "~/prisma/client";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
import { applicationSettings } from "~/server/internal/config/application-configuration";
diff --git a/server/api/v1/client/user/webtoken.post.ts b/server/api/v1/client/user/webtoken.post.ts
index eda744f..dbc5bbb 100644
--- a/server/api/v1/client/user/webtoken.post.ts
+++ b/server/api/v1/client/user/webtoken.post.ts
@@ -1,4 +1,4 @@
-import { APITokenMode } from "~/prisma/client/enums";
+import { APITokenMode } from "~/prisma/client";
import { DateTime } from "luxon";
import type { UserACL } from "~/server/internal/acls";
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
diff --git a/server/api/v1/companies/[id]/index.get.ts b/server/api/v1/companies/[id]/index.get.ts
deleted file mode 100644
index a326371..0000000
--- a/server/api/v1/companies/[id]/index.get.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const userId = await aclManager.getUserIdACL(h3, ["store:read"]);
- if (!userId) throw createError({ statusCode: 403 });
-
- const companyId = getRouterParam(h3, "id");
- if (!companyId)
- throw createError({
- statusCode: 400,
- statusMessage: "Missing gameId in route params (somehow...?)",
- });
-
- const company = await prisma.company.findUnique({
- where: { id: companyId },
- });
-
- if (!company)
- throw createError({ statusCode: 404, statusMessage: "Company not found" });
-
- return { company };
-});
diff --git a/server/api/v1/games/[id]/index.get.ts b/server/api/v1/games/[id]/index.get.ts
index 029b9b2..d7c1ed8 100644
--- a/server/api/v1/games/[id]/index.get.ts
+++ b/server/api/v1/games/[id]/index.get.ts
@@ -16,40 +16,11 @@ export default defineEventHandler(async (h3) => {
where: { id: gameId },
include: {
versions: true,
- publishers: {
- select: {
- id: true,
- mName: true,
- mShortDescription: true,
- mLogoObjectId: true,
- },
- },
- developers: {
- select: {
- id: true,
- mName: true,
- mShortDescription: true,
- mLogoObjectId: true,
- },
- },
- tags: true,
},
});
if (!game)
throw createError({ statusCode: 404, statusMessage: "Game not found" });
- const rating = await prisma.gameRating.aggregate({
- where: {
- gameId: game.id,
- },
- _avg: {
- mReviewRating: true,
- },
- _sum: {
- mReviewCount: true,
- },
- });
-
- return { game, rating };
+ return game;
});
diff --git a/server/api/v1/index.get.ts b/server/api/v1/index.get.ts
index 4d25388..37b2372 100644
--- a/server/api/v1/index.get.ts
+++ b/server/api/v1/index.get.ts
@@ -1,10 +1,5 @@
-import { systemConfig } from "~/server/internal/config/sys-conf";
-
export default defineEventHandler((_h3) => {
return {
appName: "Drop",
- version: systemConfig.getDropVersion(),
- gitRef: `#${systemConfig.getGitRef()}`,
- external: systemConfig.getExternalUrl(),
};
});
diff --git a/server/api/v1/notifications/index.get.ts b/server/api/v1/notifications/index.get.ts
index 982d520..8797aa8 100644
--- a/server/api/v1/notifications/index.get.ts
+++ b/server/api/v1/notifications/index.get.ts
@@ -5,19 +5,17 @@ export default defineEventHandler(async (h3) => {
const userId = await aclManager.getUserIdACL(h3, ["notifications:read"]);
if (!userId) throw createError({ statusCode: 403 });
- const acls = await aclManager.fetchAllACLs(h3);
- if (!acls)
- throw createError({
- statusCode: 500,
- statusMessage: "Got userId but no ACLs - what?",
- });
+ const userIds = [userId];
+ const hasSystemPerms = await aclManager.allowSystemACL(h3, [
+ "notifications:mark",
+ ]);
+ if (hasSystemPerms) {
+ userIds.push("system");
+ }
const notifications = await prisma.notification.findMany({
where: {
- userId,
- acls: {
- hasSome: acls,
- },
+ userId: { in: userIds },
},
orderBy: {
created: "desc", // Newest first
diff --git a/server/api/v1/notifications/readall.post.ts b/server/api/v1/notifications/readall.post.ts
index 0e4c8c7..2ee4773 100644
--- a/server/api/v1/notifications/readall.post.ts
+++ b/server/api/v1/notifications/readall.post.ts
@@ -5,19 +5,17 @@ export default defineEventHandler(async (h3) => {
const userId = await aclManager.getUserIdACL(h3, ["notifications:mark"]);
if (!userId) throw createError({ statusCode: 403 });
- const acls = await aclManager.fetchAllACLs(h3);
- if (!acls)
- throw createError({
- statusCode: 500,
- statusMessage: "Got userId but no ACLs - what?",
- });
+ const userIds = [userId];
+ const hasSystemPerms = await aclManager.allowSystemACL(h3, [
+ "notifications:mark",
+ ]);
+ if (hasSystemPerms) {
+ userIds.push("system");
+ }
await prisma.notification.updateMany({
where: {
- userId,
- acls: {
- hasSome: acls,
- },
+ userId: { in: userIds },
},
data: {
read: true,
diff --git a/server/api/v1/notifications/ws.get.ts b/server/api/v1/notifications/ws.get.ts
index 2f86d7c..58db068 100644
--- a/server/api/v1/notifications/ws.get.ts
+++ b/server/api/v1/notifications/ws.get.ts
@@ -1,6 +1,5 @@
import notificationSystem from "~/server/internal/notifications";
import aclManager from "~/server/internal/acls";
-import { logger } from "~/server/internal/logging";
// TODO add web socket sessions for horizontal scaling
// Peer ID to user ID
@@ -15,22 +14,27 @@ export default defineWebSocketHandler({
return;
}
- const acls = await aclManager.fetchAllACLs(h3);
- if (!acls) {
- peer.send("unauthenticated");
- return;
+ const userIds = [userId];
+
+ const hasSystemPerms = await aclManager.allowSystemACL(h3, [
+ "notifications:listen",
+ ]);
+ if (hasSystemPerms) {
+ userIds.push("system");
}
socketSessions.set(peer.id, userId);
- notificationSystem.listen(userId, acls, peer.id, (notification) => {
- peer.send(JSON.stringify(notification));
- });
+ for (const listenUserId of userIds) {
+ notificationSystem.listen(listenUserId, peer.id, (notification) => {
+ peer.send(JSON.stringify(notification));
+ });
+ }
},
async close(peer, _details) {
const userId = socketSessions.get(peer.id);
if (!userId) {
- logger.info(`skipping websocket close for ${peer.id}`);
+ console.log(`skipping websocket close for ${peer.id}`);
return;
}
diff --git a/server/api/v1/object/[id]/index.delete.ts b/server/api/v1/object/[id]/index.delete.ts
index fbdd5ee..ba8f568 100644
--- a/server/api/v1/object/[id]/index.delete.ts
+++ b/server/api/v1/object/[id]/index.delete.ts
@@ -1,15 +1,12 @@
import aclManager from "~/server/internal/acls";
import objectHandler from "~/server/internal/objects";
-import sanitize from "sanitize-filename";
export default defineEventHandler(async (h3) => {
- const unsafeId = getRouterParam(h3, "id");
- if (!unsafeId)
- throw createError({ statusCode: 400, statusMessage: "Invalid ID" });
+ const id = getRouterParam(h3, "id");
+ if (!id) throw createError({ statusCode: 400, statusMessage: "Invalid ID" });
const userId = await aclManager.getUserIdACL(h3, ["object:delete"]);
- const id = sanitize(unsafeId);
const result = await objectHandler.deleteWithPermission(id, userId);
return { success: result };
});
diff --git a/server/api/v1/object/[id]/index.get.ts b/server/api/v1/object/[id]/index.get.ts
index 649bfcd..6a7ec84 100644
--- a/server/api/v1/object/[id]/index.get.ts
+++ b/server/api/v1/object/[id]/index.get.ts
@@ -1,15 +1,12 @@
import aclManager from "~/server/internal/acls";
import objectHandler from "~/server/internal/objects";
-import sanitize from "sanitize-filename";
export default defineEventHandler(async (h3) => {
- const unsafeId = getRouterParam(h3, "id");
- if (!unsafeId)
- throw createError({ statusCode: 400, statusMessage: "Invalid ID" });
+ const id = getRouterParam(h3, "id");
+ if (!id) throw createError({ statusCode: 400, statusMessage: "Invalid ID" });
const userId = await aclManager.getUserIdACL(h3, ["object:read"]);
- const id = sanitize(unsafeId);
const object = await objectHandler.fetchWithPermissions(id, userId);
if (!object)
throw createError({ statusCode: 404, statusMessage: "Object not found" });
diff --git a/server/api/v1/object/[id]/index.head.ts b/server/api/v1/object/[id]/index.head.ts
index e762de5..b3f836e 100644
--- a/server/api/v1/object/[id]/index.head.ts
+++ b/server/api/v1/object/[id]/index.head.ts
@@ -1,16 +1,13 @@
import aclManager from "~/server/internal/acls";
import objectHandler from "~/server/internal/objects";
-import sanitize from "sanitize-filename";
// this request method is purely used by the browser to check if etag values are still valid
export default defineEventHandler(async (h3) => {
- const unsafeId = getRouterParam(h3, "id");
- if (!unsafeId)
- throw createError({ statusCode: 400, statusMessage: "Invalid ID" });
+ const id = getRouterParam(h3, "id");
+ if (!id) throw createError({ statusCode: 400, statusMessage: "Invalid ID" });
const userId = await aclManager.getUserIdACL(h3, ["object:read"]);
- const id = sanitize(unsafeId);
const object = await objectHandler.fetchWithPermissions(id, userId);
if (!object)
throw createError({ statusCode: 404, statusMessage: "Object not found" });
diff --git a/server/api/v1/object/[id]/index.post.ts b/server/api/v1/object/[id]/index.post.ts
index e6779ff..ef58453 100644
--- a/server/api/v1/object/[id]/index.post.ts
+++ b/server/api/v1/object/[id]/index.post.ts
@@ -1,11 +1,9 @@
import aclManager from "~/server/internal/acls";
import objectHandler from "~/server/internal/objects";
-import sanitize from "sanitize-filename";
export default defineEventHandler(async (h3) => {
- const unsafeId = getRouterParam(h3, "id");
- if (!unsafeId)
- throw createError({ statusCode: 400, statusMessage: "Invalid ID" });
+ const id = getRouterParam(h3, "id");
+ if (!id) throw createError({ statusCode: 400, statusMessage: "Invalid ID" });
const body = await readRawBody(h3, "binary");
if (!body)
@@ -17,7 +15,6 @@ export default defineEventHandler(async (h3) => {
const userId = await aclManager.getUserIdACL(h3, ["object:update"]);
const buffer = Buffer.from(body);
- const id = sanitize(unsafeId);
const result = await objectHandler.writeWithPermissions(
id,
async () => buffer,
diff --git a/server/api/v1/screenshots/[id]/index.delete.ts b/server/api/v1/screenshots/[id]/index.delete.ts
deleted file mode 100644
index 41e2bf5..0000000
--- a/server/api/v1/screenshots/[id]/index.delete.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-// get a specific screenshot
-import aclManager from "~/server/internal/acls";
-import screenshotManager from "~/server/internal/screenshots";
-import sanitize from "sanitize-filename";
-
-export default defineEventHandler(async (h3) => {
- const userId = await aclManager.getUserIdACL(h3, ["screenshots:delete"]);
- if (!userId) throw createError({ statusCode: 403 });
-
- const unsafeId = getRouterParam(h3, "id");
- if (!unsafeId)
- throw createError({
- statusCode: 400,
- statusMessage: "Missing screenshot ID",
- });
-
- const screenshotId = sanitize(unsafeId);
- const result = await screenshotManager.get(screenshotId);
- if (!result)
- throw createError({
- statusCode: 404,
- });
- if (result.userId !== userId)
- throw createError({
- statusCode: 404,
- });
-
- await screenshotManager.delete(screenshotId);
-});
diff --git a/server/api/v1/screenshots/[id]/index.get.ts b/server/api/v1/screenshots/[id]/index.get.ts
deleted file mode 100644
index 79d569a..0000000
--- a/server/api/v1/screenshots/[id]/index.get.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-// get a specific screenshot
-import aclManager from "~/server/internal/acls";
-import screenshotManager from "~/server/internal/screenshots";
-import sanitize from "sanitize-filename";
-
-export default defineEventHandler(async (h3) => {
- const userId = await aclManager.getUserIdACL(h3, ["screenshots:read"]);
- if (!userId) throw createError({ statusCode: 403 });
-
- const unsafeId = getRouterParam(h3, "id");
- if (!unsafeId)
- throw createError({
- statusCode: 400,
- statusMessage: "Missing screenshot ID",
- });
-
- const result = await screenshotManager.get(sanitize(unsafeId));
- if (!result)
- throw createError({
- statusCode: 404,
- });
- if (result.userId !== userId)
- throw createError({
- statusCode: 404,
- });
- return result;
-});
diff --git a/server/api/v1/screenshots/game/[id]/index.get.ts b/server/api/v1/screenshots/game/[id]/index.get.ts
deleted file mode 100644
index 71addae..0000000
--- a/server/api/v1/screenshots/game/[id]/index.get.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-// get all user screenshots by game
-import aclManager from "~/server/internal/acls";
-import screenshotManager from "~/server/internal/screenshots";
-
-export default defineEventHandler(async (h3) => {
- const userId = await aclManager.getUserIdACL(h3, ["screenshots:read"]);
- if (!userId) throw createError({ statusCode: 403 });
-
- const gameId = getRouterParam(h3, "id");
- if (!gameId)
- throw createError({
- statusCode: 400,
- statusMessage: "Missing game ID",
- });
-
- const results = await screenshotManager.getUserAllByGame(userId, gameId);
- return results;
-});
diff --git a/server/api/v1/screenshots/game/[id]/index.post.ts b/server/api/v1/screenshots/game/[id]/index.post.ts
deleted file mode 100644
index c06b815..0000000
--- a/server/api/v1/screenshots/game/[id]/index.post.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-// create new screenshot
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-import screenshotManager from "~/server/internal/screenshots";
-
-// TODO: make defineClientEventHandler instead?
-// only clients will be upload screenshots yea??
-export default defineEventHandler(async (h3) => {
- const userId = await aclManager.getUserIdACL(h3, ["screenshots:new"]);
- if (!userId) throw createError({ statusCode: 403 });
-
- const gameId = getRouterParam(h3, "id");
- if (!gameId)
- throw createError({
- statusCode: 400,
- statusMessage: "Missing game ID",
- });
-
- const game = await prisma.game.findUnique({
- where: { id: gameId },
- select: { id: true },
- });
- if (!game)
- throw createError({ statusCode: 400, statusMessage: "Invalid game ID" });
-
- await screenshotManager.upload(userId, gameId, h3.node.req);
-});
diff --git a/server/api/v1/screenshots/index.get.ts b/server/api/v1/screenshots/index.get.ts
deleted file mode 100644
index 97b9f93..0000000
--- a/server/api/v1/screenshots/index.get.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-// get all user screenshots
-import aclManager from "~/server/internal/acls";
-import screenshotManager from "~/server/internal/screenshots";
-
-export default defineEventHandler(async (h3) => {
- const userId = await aclManager.getUserIdACL(h3, ["screenshots:read"]);
- if (!userId) throw createError({ statusCode: 403 });
-
- const results = await screenshotManager.getUserAll(userId);
- return results;
-});
diff --git a/server/api/v1/settings/index.get.ts b/server/api/v1/settings/index.get.ts
deleted file mode 100644
index dea2604..0000000
--- a/server/api/v1/settings/index.get.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import { applicationSettings } from "~/server/internal/config/application-configuration";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.getUserACL(h3, ["settings:read"]);
- if (!allowed) throw createError({ statusCode: 403 });
-
- const showGamePanelTextDecoration = await applicationSettings.get(
- "showGamePanelTextDecoration",
- );
-
- return { showGamePanelTextDecoration };
-});
diff --git a/server/api/v1/setup.post.ts b/server/api/v1/setup.post.ts
deleted file mode 100644
index acd83f6..0000000
--- a/server/api/v1/setup.post.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { APITokenMode } from "~/prisma/client/enums";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const allowed = await aclManager.allowSystemACL(h3, ["setup"]);
- if (!allowed)
- throw createError({
- statusCode: 403,
- statusMessage: "Must use a setup token.",
- });
- await prisma.aPIToken.deleteMany({
- where: {
- mode: APITokenMode.System,
- acls: {
- hasSome: ["setup"],
- },
- },
- });
-});
diff --git a/server/api/v1/store/index.get.ts b/server/api/v1/store/index.get.ts
deleted file mode 100644
index 9a61e67..0000000
--- a/server/api/v1/store/index.get.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-import { ArkErrors, type } from "arktype";
-import type { Prisma } from "~/prisma/client/client";
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-import { parsePlatform } from "~/server/internal/utils/parseplatform";
-
-const StoreRead = type({
- skip: type("string")
- .pipe((s) => Number.parseInt(s))
- .default("0"),
- take: type("string")
- .pipe((s) => Number.parseInt(s))
- .default("10"),
-
- tags: "string?",
- platform: "string?",
-
- company: "string?",
- companyActions: "string = 'published,developed'",
-
- sort: "'default' | 'newest' | 'recent' = 'default'",
-});
-
-export default defineEventHandler(async (h3) => {
- const userId = await aclManager.getUserIdACL(h3, ["store:read"]);
- if (!userId) throw createError({ statusCode: 403 });
-
- const query = getQuery(h3);
- const options = StoreRead(query);
- if (options instanceof ArkErrors)
- throw createError({ statusCode: 400, statusMessage: options.summary });
-
- /**
- * Generic filters
- */
- const tagFilter = options.tags
- ? {
- tags: {
- some: {
- id: {
- in: options.tags.split(","),
- },
- },
- },
- }
- : undefined;
- const platformFilter = options.platform
- ? {
- versions: {
- some: {
- platform: {
- in: options.platform
- .split(",")
- .map(parsePlatform)
- .filter((e) => e !== undefined),
- },
- },
- },
- }
- : undefined;
-
- /**
- * Company filtering
- */
- const companyActions = options.companyActions.split(",");
- const developedFilter = companyActions.includes("developed")
- ? {
- developers: {
- some: {
- id: options.company!,
- },
- },
- }
- : undefined;
- const publishedFilter = companyActions.includes("published")
- ? {
- publishers: {
- some: {
- id: options.company!,
- },
- },
- }
- : undefined;
- const companyFilter = options.company
- ? ({
- OR: [developedFilter, publishedFilter].filter((e) => e !== undefined),
- } satisfies Prisma.GameWhereInput)
- : undefined;
-
- /**
- * Query
- */
-
- const finalFilter: Prisma.GameWhereInput = {
- ...tagFilter,
- ...platformFilter,
- ...companyFilter,
- };
-
- const sort: Prisma.GameOrderByWithRelationInput = {};
- switch (options.sort) {
- case "default":
- case "newest":
- sort.mReleased = "desc";
- break;
- case "recent":
- sort.created = "desc";
- break;
- }
-
- const [results, count] = await prisma.$transaction([
- prisma.game.findMany({
- skip: options.skip,
- take: Math.min(options.take, 50),
- where: finalFilter,
- orderBy: sort,
- }),
- prisma.game.count({ where: finalFilter }),
- ]);
-
- return { results, count };
-});
diff --git a/server/api/v1/store/featured.get.ts b/server/api/v1/store/recent.get.ts
similarity index 94%
rename from server/api/v1/store/featured.get.ts
rename to server/api/v1/store/recent.get.ts
index fb353e4..f4bb39a 100644
--- a/server/api/v1/store/featured.get.ts
+++ b/server/api/v1/store/recent.get.ts
@@ -6,9 +6,6 @@ export default defineEventHandler(async (h3) => {
if (!userId) throw createError({ statusCode: 403 });
const games = await prisma.game.findMany({
- where: {
- featured: true,
- },
select: {
id: true,
mName: true,
@@ -31,6 +28,7 @@ export default defineEventHandler(async (h3) => {
orderBy: {
created: "desc",
},
+ take: 8,
});
return games;
diff --git a/server/api/v1/store/tags.get.ts b/server/api/v1/store/released.get.ts
similarity index 52%
rename from server/api/v1/store/tags.get.ts
rename to server/api/v1/store/released.get.ts
index 07f4030..37c729c 100644
--- a/server/api/v1/store/tags.get.ts
+++ b/server/api/v1/store/released.get.ts
@@ -2,9 +2,15 @@ import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
export default defineEventHandler(async (h3) => {
- const userId = await aclManager.getUserIdACL(h3, ["store:read"]);
+ const userId = await aclManager.getUserACL(h3, ["store:read"]);
if (!userId) throw createError({ statusCode: 403 });
- const tags = await prisma.gameTag.findMany({ orderBy: { name: "asc" } });
- return tags;
+ const games = await prisma.game.findMany({
+ orderBy: {
+ mReleased: "desc",
+ },
+ take: 12,
+ });
+
+ return games;
});
diff --git a/server/api/v1/store/updated.get.ts b/server/api/v1/store/updated.get.ts
new file mode 100644
index 0000000..520033e
--- /dev/null
+++ b/server/api/v1/store/updated.get.ts
@@ -0,0 +1,28 @@
+import aclManager from "~/server/internal/acls";
+import prisma from "~/server/internal/db/database";
+
+export default defineEventHandler(async (h3) => {
+ const userId = await aclManager.getUserACL(h3, ["store:read"]);
+ if (!userId) throw createError({ statusCode: 403 });
+
+ const versions = await prisma.gameVersion.findMany({
+ where: {
+ versionIndex: {
+ gte: 1,
+ },
+ },
+ select: {
+ game: true,
+ },
+ orderBy: {
+ created: "desc",
+ },
+ take: 12,
+ });
+
+ const games = versions
+ .map((e) => e.game)
+ .filter((v, i, a) => a.findIndex((e) => e.id === v.id) === i);
+
+ return games;
+});
diff --git a/server/api/v1/tags/[id]/index.get.ts b/server/api/v1/tags/[id]/index.get.ts
deleted file mode 100644
index 5d5d686..0000000
--- a/server/api/v1/tags/[id]/index.get.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import aclManager from "~/server/internal/acls";
-import prisma from "~/server/internal/db/database";
-
-export default defineEventHandler(async (h3) => {
- const userId = await aclManager.getUserIdACL(h3, ["store:read"]);
- if (!userId) throw createError({ statusCode: 403 });
-
- const tagId = getRouterParam(h3, "id");
- if (!tagId)
- throw createError({
- statusCode: 400,
- statusMessage: "Missing gameId in route params (somehow...?)",
- });
-
- const tag = await prisma.gameTag.findUnique({
- where: { id: tagId },
- });
-
- if (!tag)
- throw createError({ statusCode: 404, statusMessage: "Tag not found" });
-
- return { tag };
-});
diff --git a/server/api/v1/token.get.ts b/server/api/v1/token.get.ts
deleted file mode 100644
index 1ce5320..0000000
--- a/server/api/v1/token.get.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import aclManager from "~/server/internal/acls";
-
-export default defineEventHandler(async (h3) => {
- const acls = await aclManager.fetchAllACLs(h3);
- return acls;
-});
diff --git a/server/api/v1/user/token/[id]/index.delete.ts b/server/api/v1/user/token/[id]/index.delete.ts
index 54d1be1..b98ae98 100644
--- a/server/api/v1/user/token/[id]/index.delete.ts
+++ b/server/api/v1/user/token/[id]/index.delete.ts
@@ -1,4 +1,4 @@
-import { APITokenMode } from "~/prisma/client/enums";
+import { APITokenMode } from "~/prisma/client";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
diff --git a/server/api/v1/user/token/index.get.ts b/server/api/v1/user/token/index.get.ts
index cff1b85..349ac76 100644
--- a/server/api/v1/user/token/index.get.ts
+++ b/server/api/v1/user/token/index.get.ts
@@ -1,4 +1,4 @@
-import { APITokenMode } from "~/prisma/client/enums";
+import { APITokenMode } from "~/prisma/client";
import aclManager from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
diff --git a/server/api/v1/user/token/index.post.ts b/server/api/v1/user/token/index.post.ts
index aafacf3..54376d3 100644
--- a/server/api/v1/user/token/index.post.ts
+++ b/server/api/v1/user/token/index.post.ts
@@ -1,22 +1,30 @@
-import { type } from "arktype";
-import { APITokenMode } from "~/prisma/client/enums";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
+import { APITokenMode } from "~/prisma/client";
import aclManager, { userACLs } from "~/server/internal/acls";
import prisma from "~/server/internal/db/database";
-const CreateToken = type({
- name: "string",
- acls: "string[] > 0",
- expiry: "string.date.iso.parse?",
-}).configure(throwingArktype);
-
export default defineEventHandler(async (h3) => {
const userId = await aclManager.getUserIdACL(h3, []); // No ACLs only allows session authentication
if (!userId) throw createError({ statusCode: 403 });
- const body = await readDropValidatedBody(h3, CreateToken);
+ const body = await readBody(h3);
+ const name: string = body.name;
+ const acls: string[] = body.acls;
- const invalidACLs = body.acls.filter(
+ if (!name || typeof name !== "string")
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Token name required",
+ });
+ if (!acls || !Array.isArray(acls))
+ throw createError({ statusCode: 400, statusMessage: "ACLs required" });
+
+ if (acls.length == 0)
+ throw createError({
+ statusCode: 400,
+ statusMessage: "Token requires more than zero ACLs",
+ });
+
+ const invalidACLs = acls.filter(
(e) => userACLs.findIndex((v) => e == v) == -1,
);
if (invalidACLs.length > 0)
@@ -28,10 +36,9 @@ export default defineEventHandler(async (h3) => {
const token = await prisma.aPIToken.create({
data: {
mode: APITokenMode.User,
- name: body.name,
+ name: name,
userId: userId,
- acls: body.acls,
- expiresAt: body.expiry ?? null,
+ acls: acls,
},
});
diff --git a/server/api/v2/client/chunk.post.ts b/server/api/v2/client/chunk.post.ts
deleted file mode 100644
index 8402203..0000000
--- a/server/api/v2/client/chunk.post.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import contextManager from "~/server/internal/downloads/coordinator";
-import libraryManager from "~/server/internal/library";
-import { logger } from "~/server/internal/logging";
-
-const GetChunk = type({
- context: "string",
- files: type({
- filename: "string",
- chunkIndex: "number",
- }).array(),
-}).configure(throwingArktype);
-
-export default defineEventHandler(async (h3) => {
- const body = await readDropValidatedBody(h3, GetChunk);
-
- const context = await contextManager.fetchContext(body.context);
- if (!context)
- throw createError({
- statusCode: 400,
- statusMessage: "Invalid download context.",
- });
-
- const streamFiles = [];
-
- for (const file of body.files) {
- const manifestFile = context.manifest[file.filename];
- if (!manifestFile)
- throw createError({
- statusCode: 400,
- statusMessage: `Unknown file: ${file.filename}`,
- });
-
- const start = manifestFile.lengths
- .slice(0, file.chunkIndex)
- .reduce((a, b) => a + b, 0);
- const end = start + manifestFile.lengths[file.chunkIndex];
-
- streamFiles.push({ filename: file.filename, start, end });
- }
-
- setHeader(
- h3,
- "Content-Lengths",
- streamFiles.map((e) => e.end - e.start).join(","),
- ); // Non-standard header, but we're cool like that 😎
-
- for (const file of streamFiles) {
- const gameReadStream = await libraryManager.readFile(
- context.libraryId,
- context.libraryPath,
- context.versionName,
- file.filename,
- { start: file.start, end: file.end },
- );
- if (!gameReadStream)
- throw createError({
- statusCode: 500,
- statusMessage: "Failed to create read stream",
- });
- let length = 0;
- await gameReadStream.pipeTo(
- new WritableStream({
- write(chunk) {
- h3.node.res.write(chunk);
- length += chunk.length;
- },
- }),
- );
-
- if (length != file.end - file.start) {
- logger.warn(
- `failed to read enough from ${file.filename}. read ${length}, required: ${file.end - file.start}`,
- );
- throw createError({
- statusCode: 500,
- statusMessage: "Failed to read enough from stream.",
- });
- }
- }
-
- await h3.node.res.end();
-
- return;
-});
diff --git a/server/api/v2/client/context.post.ts b/server/api/v2/client/context.post.ts
deleted file mode 100644
index e54356a..0000000
--- a/server/api/v2/client/context.post.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { type } from "arktype";
-import { readDropValidatedBody, throwingArktype } from "~/server/arktype";
-import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
-import contextManager from "~/server/internal/downloads/coordinator";
-
-const CreateContext = type({
- game: "string",
- version: "string",
-}).configure(throwingArktype);
-
-export default defineClientEventHandler(async (h3) => {
- const body = await readDropValidatedBody(h3, CreateContext);
-
- const context = await contextManager.createContext(body.game, body.version);
- if (!context)
- throw createError({
- statusCode: 400,
- statusMessage: "Invalid game or version",
- });
-
- return { context };
-});
diff --git a/server/arktype.ts b/server/arktype.ts
deleted file mode 100644
index 466851e..0000000
--- a/server/arktype.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { ArkErrors } from "arktype";
-import { configure } from "arktype/config";
-import type { H3Event } from "h3";
-
-export const throwingArktype = configure({
- onFail: (errors) => errors.throw(),
- actual: () => "",
-});
-
-// be sure to specify both the runtime and static configs
-
-declare global {
- interface ArkEnv {
- onFail: typeof throwingArktype.onFail;
- }
-}
-
-export async function readDropValidatedBody(
- event: H3Event,
- validate: (data: object) => T,
-): Promise {
- const body = await readBody(event);
- try {
- // Delete all values that are 'null'
- if (typeof body === "object" && !Array.isArray(body) && body !== null) {
- for (const [key, value] of Object.entries(body) as Array<
- [string, unknown]
- >) {
- if (value === null) {
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
- delete body[key];
- }
- }
- }
- return validate(body);
- } catch (e) {
- const t = await useTranslation(event);
-
- if (e instanceof ArkErrors) {
- throw createError({
- statusCode: 400,
- statusMessage: t("errors.invalidBody", [e.summary]),
- });
- }
- throw createError({
- statusCode: 400,
- statusMessage: t("errors.invalidBody", [
- e instanceof Error ? e.message : `${e}`,
- ]),
- });
- }
-}
diff --git a/server/internal/acls/descriptions.ts b/server/internal/acls/descriptions.ts
index af1a007..d5ac10a 100644
--- a/server/internal/acls/descriptions.ts
+++ b/server/internal/acls/descriptions.ts
@@ -19,13 +19,9 @@ export const userACLDescriptions: ObjectFromList = {
"notifications:read": "Fetch this account's notifications.",
"notifications:mark": "Mark notifications as read for this account.",
- "notifications:listen": "Connect to a websocket to receive notifications.",
+ "notifications:listen": "Connect to a websocket to recieve notifications.",
"notifications:delete": "Delete this account's notifications.",
- "screenshots:new": "Create screenshots for this account",
- "screenshots:read": "Read all screenshots for this account",
- "screenshots:delete": "Delete a screenshot for this account",
-
"collections:new": "Create collections for this account.",
"collections:read": "Fetch all collections (including library).",
"collections:delete": "Delete a collection for this account.",
@@ -36,17 +32,12 @@ export const userACLDescriptions: ObjectFromList = {
"library:remove": "Remove a game from your library.",
"clients:read": "Read the clients connected to this account",
- "clients:revoke": "Remove clients connected to this account",
+ "clients:revoke": "",
"news:read": "Read the server's news articles.",
-
- "settings:read": "Read system settings.",
};
export const systemACLDescriptions: ObjectFromList = {
- setup:
- "All permissions required to setup a new Drop instance (setup wizard).",
-
"auth:read":
"Fetch the list of enabled authentication mechanisms configured.",
"auth:simple:invitation:read": "Fetch simple auth invitations.",
@@ -54,11 +45,6 @@ export const systemACLDescriptions: ObjectFromList = {
"auth:simple:invitation:delete": "Delete a simple auth invitation.",
"library:read": "Fetch a list of all games on this instance.",
- "library:sources:read":
- "Fetch a list of all library sources on this instance",
- "library:sources:new": "Create a new library source.",
- "library:sources:update": "Update existing library sources.",
- "library:sources:delete": "Delete library sources.",
"notifications:read": "Read system notifications.",
"notifications:mark": "Mark system notifications as read.",
@@ -73,11 +59,6 @@ export const systemACLDescriptions: ObjectFromList = {
"game:image:new": "Upload an image for a game.",
"game:image:delete": "Delete an image for a game.",
- "company:read": "Fetch companies.",
- "company:create": "Create a new company.",
- "company:update": "Update existing companies.",
- "company:delete": "Delete companies.",
-
"import:version:read":
"Fetch versions to be imported, and information about versions to be imported.",
"import:version:new": "Import a game version.",
@@ -85,22 +66,9 @@ export const systemACLDescriptions: ObjectFromList = {
"Fetch games to be imported, and search the metadata for games.",
"import:game:new": "Import a game.",
- "tags:read": "Fetch all tags",
- "tags:create": "Create a tag",
- "tags:delete": "Delete a tag",
-
"user:read": "Fetch any user's information.",
- "user:delete": "Delete a user.",
"news:read": "Read news articles.",
"news:create": "Create a new news article.",
"news:delete": "Delete a news article.",
-
- "task:read": "Read all tasks currently running on server.",
- "task:start": "Manually execute scheduled tasks.",
-
- "maintenance:read":
- "Read tasks and maintenance information, like updates available and cleanup.",
-
- "settings:update": "Update system settings.",
};
diff --git a/server/internal/acls/index.ts b/server/internal/acls/index.ts
index d6997c5..6f42ddc 100644
--- a/server/internal/acls/index.ts
+++ b/server/internal/acls/index.ts
@@ -1,4 +1,4 @@
-import { APITokenMode } from "~/prisma/client/enums";
+import { APITokenMode } from "~/prisma/client";
import prisma from "../db/database";
import sessionHandler from "../session";
import type { MinimumRequestObject } from "~/server/h3";
@@ -17,10 +17,6 @@ export const userACLs = [
"notifications:listen",
"notifications:delete",
- "screenshots:new",
- "screenshots:read",
- "screenshots:delete",
-
"collections:new",
"collections:read",
"collections:delete",
@@ -33,16 +29,12 @@ export const userACLs = [
"clients:revoke",
"news:read",
-
- "settings:read",
] as const;
const userACLPrefix = "user:";
export type UserACL = Array<(typeof userACLs)[number]>;
export const systemACLs = [
- "setup",
-
"auth:read",
"auth:simple:invitation:read",
"auth:simple:invitation:new",
@@ -54,11 +46,6 @@ export const systemACLs = [
"notifications:delete",
"library:read",
- "library:sources:read",
- "library:sources:new",
- "library:sources:update",
- "library:sources:delete",
-
"game:read",
"game:update",
"game:delete",
@@ -67,11 +54,6 @@ export const systemACLs = [
"game:image:new",
"game:image:delete",
- "company:read",
- "company:update",
- "company:create",
- "company:delete",
-
"import:version:read",
"import:version:new",
@@ -79,31 +61,15 @@ export const systemACLs = [
"import:game:new",
"user:read",
- "user:delete",
"news:read",
"news:create",
"news:delete",
-
- "tags:read",
- "tags:create",
- "tags:delete",
-
- "task:read",
- "task:start",
-
- "maintenance:read",
-
- "settings:update",
] as const;
const systemACLPrefix = "system:";
export type SystemACL = Array<(typeof systemACLs)[number]>;
-export type GlobalACL =
- | `${typeof systemACLPrefix}${(typeof systemACLs)[number]}`
- | `${typeof userACLPrefix}${(typeof userACLs)[number]}`;
-
class ACLManager {
private getAuthorizationToken(request: MinimumRequestObject) {
const [type, token] =
@@ -113,12 +79,6 @@ class ACLManager {
return token;
}
- /**
- * Get userId and require one of the specified acls
- * @param request
- * @param acls
- * @returns
- */
async getUserIdACL(request: MinimumRequestObject | undefined, acls: UserACL) {
if (!request)
throw new Error("Native web requests not available - weird deployment?");
@@ -145,6 +105,9 @@ class ACLManager {
if (tokenACLIndex != -1) return token.userId;
}
+ console.log(token);
+ console.log(acls);
+
return undefined;
}
@@ -169,11 +132,9 @@ class ACLManager {
const user = await prisma.user.findUnique({
where: { id: userSession.userId },
});
- if (user) {
- if (!user) return false;
- if (user.admin) return true;
- return false;
- }
+ if (!user) return false;
+ if (user.admin) return true;
+ return false;
}
const authorizationToken = this.getAuthorizationToken(request);
@@ -183,10 +144,6 @@ class ACLManager {
});
if (!token) return false;
if (token.mode != APITokenMode.System) return false;
-
- // If empty, we just want to check we are an admin *at all*, not specific ACLs
- if (acls.length == 0) return true;
-
for (const acl of acls) {
const tokenACLIndex = token.acls.findIndex((e) => e == acl);
if (tokenACLIndex != -1) return true;
@@ -216,38 +173,6 @@ class ACLManager {
return true;
}
-
- async fetchAllACLs(
- request: MinimumRequestObject,
- ): Promise {
- const userSession = await sessionHandler.getSession(request);
- if (!userSession) {
- const authorizationToken = this.getAuthorizationToken(request);
- if (!authorizationToken) return undefined;
- const token = await prisma.aPIToken.findUnique({
- where: { token: authorizationToken },
- });
- if (!token) return undefined;
- return token.acls as GlobalACL[];
- }
-
- const user = await prisma.user.findUnique({
- where: { id: userSession.userId },
- select: {
- admin: true,
- },
- });
- if (!user)
- throw new Error("User session without user - did something break?");
-
- const acls = userACLs.map((e) => `${userACLPrefix}${e}`);
-
- if (user.admin) {
- acls.push(...systemACLs.map((e) => `${systemACLPrefix}${e}`));
- }
-
- return acls as GlobalACL[];
- }
}
export const aclManager = new ACLManager();
diff --git a/server/internal/auth/index.ts b/server/internal/auth/index.ts
deleted file mode 100644
index ee9cadc..0000000
--- a/server/internal/auth/index.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import { AuthMec } from "~/prisma/client/enums";
-import { OIDCManager } from "./oidc";
-import { logger } from "~/server/internal/logging";
-
-class AuthManager {
- private authProviders: {
- [AuthMec.Simple]: boolean;
- [AuthMec.OpenID]: OIDCManager | undefined;
- } = {
- [AuthMec.Simple]: false,
- [AuthMec.OpenID]: undefined,
- };
-
- private initFuncs: {
- [K in keyof typeof this.authProviders]: () => Promise;
- } = {
- [AuthMec.OpenID]: OIDCManager.prototype.create,
- [AuthMec.Simple]: async () => {
- const disabled = process.env.DISABLE_SIMPLE_AUTH as string | undefined;
- return !disabled;
- },
- };
-
- constructor() {
- logger.info("AuthManager initialized");
- }
-
- async init() {
- for (const [key, init] of Object.entries(this.initFuncs)) {
- try {
- const object = await init();
- if (!object) break;
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- (this.authProviders as any)[key] = object;
- logger.info(`enabled auth: ${key}`);
- } catch (e) {
- logger.warn(e);
- }
- }
-
- // Add every other auth mechanism here, and fall back to simple if none of them are enabled
- if (!this.authProviders[AuthMec.OpenID]) {
- this.authProviders[AuthMec.Simple] = true;
- }
- }
-
- getAuthProviders() {
- return this.authProviders;
- }
-
- getEnabledAuthProviders() {
- const authManagers = Object.entries(this.authProviders)
- .filter((e) => !!e[1])
- .map((e) => e[0]);
-
- return authManagers;
- }
-}
-
-const authManager = new AuthManager();
-export default authManager;
-
-export * from "./passwordHash";
diff --git a/server/internal/clients/README.md b/server/internal/clients/README.md
index 3007720..0d15850 100644
--- a/server/internal/clients/README.md
+++ b/server/internal/clients/README.md
@@ -16,7 +16,7 @@ Server sends redirect to `drop://handshake/[id]/[token]`, where the token is an
## 3. Client requests certificates
-Client makes request: `POST /api/v1/client/auth/handshake` with the token received in the previous step.
+Client makes request: `POST /api/v1/client/auth/handshake` with the token recieved in the previous step.
The server uses it's CA to generate a public-private key pair, the CN of the client ID. It then sends that pair, plus the CA's public key, to the client, which stores it all.
diff --git a/server/internal/clients/capabilities.ts b/server/internal/clients/capabilities.ts
index 868a9f6..9837fd6 100644
--- a/server/internal/clients/capabilities.ts
+++ b/server/internal/clients/capabilities.ts
@@ -1,6 +1,8 @@
import type { EnumDictionary } from "../utils/types";
+import https from "https";
+import { useCertificateAuthority } from "~/server/plugins/ca";
import prisma from "../db/database";
-import { ClientCapabilities } from "~/prisma/client/enums";
+import { ClientCapabilities } from "~/prisma/client";
// These values are technically mapped to the database,
// but Typescript/Prisma doesn't let me link them
@@ -10,13 +12,12 @@ export enum InternalClientCapability {
PeerAPI = "peerAPI",
UserStatus = "userStatus",
CloudSaves = "cloudSaves",
- TrackPlaytime = "trackPlaytime",
}
export const validCapabilities = Object.values(InternalClientCapability);
export type CapabilityConfiguration = {
- [InternalClientCapability.PeerAPI]: object;
+ [InternalClientCapability.PeerAPI]: { endpoints: string[] };
[InternalClientCapability.UserStatus]: object;
[InternalClientCapability.CloudSaves]: object;
};
@@ -26,7 +27,6 @@ class CapabilityManager {
InternalClientCapability,
(configuration: object) => Promise
> = {
- /*
[InternalClientCapability.PeerAPI]: async (rawConfiguration) => {
const configuration =
rawConfiguration as CapabilityConfiguration[InternalClientCapability.PeerAPI];
@@ -71,16 +71,14 @@ class CapabilityManager {
valid = true;
break;
} catch {
+ /* empty */
}
}
return valid;
},
- */
- [InternalClientCapability.PeerAPI]: async () => true,
[InternalClientCapability.UserStatus]: async () => true, // No requirements for user status
[InternalClientCapability.CloudSaves]: async () => true, // No requirements for cloud saves
- [InternalClientCapability.TrackPlaytime]: async () => true,
};
async validateCapabilityConfiguration(
@@ -94,7 +92,7 @@ class CapabilityManager {
async upsertClientCapability(
capability: InternalClientCapability,
- rawCapabilityConfiguration: object,
+ rawCapability: object,
clientId: string,
) {
const upsertFunctions: EnumDictionary<
@@ -102,7 +100,8 @@ class CapabilityManager {
() => Promise | void
> = {
[InternalClientCapability.PeerAPI]: async function () {
- // const configuration =rawCapability as CapabilityConfiguration[InternalClientCapability.PeerAPI];
+ const configuration =
+ rawCapability as CapabilityConfiguration[InternalClientCapability.PeerAPI];
const currentClient = await prisma.client.findUnique({
where: { id: clientId },
@@ -111,7 +110,6 @@ class CapabilityManager {
},
});
if (!currentClient) throw new Error("Invalid client ID");
- /*
if (currentClient.capabilities.includes(ClientCapabilities.PeerAPI)) {
await prisma.clientPeerAPIConfiguration.update({
where: { clientId },
@@ -128,7 +126,6 @@ class CapabilityManager {
endpoints: configuration.endpoints,
},
});
- */
await prisma.client.update({
where: { id: clientId },
@@ -162,28 +159,6 @@ class CapabilityManager {
},
});
},
- [InternalClientCapability.TrackPlaytime]: async function () {
- const currentClient = await prisma.client.findUnique({
- where: { id: clientId },
- select: {
- capabilities: true,
- },
- });
- if (!currentClient) throw new Error("Invalid client ID");
- if (
- currentClient.capabilities.includes(ClientCapabilities.TrackPlaytime)
- )
- return;
-
- await prisma.client.update({
- where: { id: clientId },
- data: {
- capabilities: {
- push: ClientCapabilities.TrackPlaytime,
- },
- },
- });
- },
};
await upsertFunctions[capability]();
}
diff --git a/server/internal/clients/event-handler.ts b/server/internal/clients/event-handler.ts
index dfbdf0d..6fdab1c 100644
--- a/server/internal/clients/event-handler.ts
+++ b/server/internal/clients/event-handler.ts
@@ -1,4 +1,4 @@
-import type { ClientModel, UserModel } from "~/prisma/client/models";
+import type { Client, User } from "~/prisma/client";
import type { EventHandlerRequest, H3Event } from "h3";
import droplet from "@drop-oss/droplet";
import prisma from "../db/database";
@@ -11,8 +11,8 @@ export type EventHandlerFunction = (
type ClientUtils = {
clientId: string;
- fetchClient: () => Promise;
- fetchUser: () => Promise;
+ fetchClient: () => Promise;
+ fetchUser: () => Promise;
};
const NONCE_LENIENCE = 30_000;
diff --git a/server/internal/clients/handler.ts b/server/internal/clients/handler.ts
index eaae288..ecc1e45 100644
--- a/server/internal/clients/handler.ts
+++ b/server/internal/clients/handler.ts
@@ -1,24 +1,11 @@
import { randomUUID } from "node:crypto";
import prisma from "../db/database";
-import type { Platform } from "~/prisma/client/enums";
+import type { Platform } from "~/prisma/client";
import { useCertificateAuthority } from "~/server/plugins/ca";
-import type {
- CapabilityConfiguration,
- InternalClientCapability,
-} from "./capabilities";
-import capabilityManager from "./capabilities";
-import type { PeerImpl } from "../tasks";
-
-export enum AuthMode {
- Callback = "callback",
- Code = "code",
-}
export interface ClientMetadata {
name: string;
platform: Platform;
- capabilities: Partial;
- mode: AuthMode;
}
export class ClientHandler {
@@ -29,10 +16,8 @@ export class ClientHandler {
data: ClientMetadata;
userId?: string;
authToken?: string;
- peer?: PeerImpl;
}
>();
- private codeClientMap = new Map();
async initiate(metadata: ClientMetadata) {
const clientId = randomUUID();
@@ -41,61 +26,14 @@ export class ClientHandler {
data: metadata,
timeout: setTimeout(
() => {
- const client = this.temporaryClientTable.get(clientId);
- if (client) {
- if (client.peer) {
- client.peer.send(
- JSON.stringify({ type: "error", value: "Request timed out." }),
- );
- client.peer.close();
- }
+ if (this.temporaryClientTable.has(clientId))
this.temporaryClientTable.delete(clientId);
- }
-
- const code = this.codeClientMap
- .entries()
- .find(([_, v]) => v === clientId);
- if (code) this.codeClientMap.delete(code[0]);
},
1000 * 60 * 10,
), // 10 minutes
});
- switch (metadata.mode) {
- case AuthMode.Callback:
- return `/client/authorize/${clientId}`;
- case AuthMode.Code: {
- const code = randomUUID()
- .replaceAll(/-/g, "")
- .slice(0, 7)
- .toUpperCase();
- this.codeClientMap.set(code, clientId);
- return code;
- }
- }
- }
-
- async connectCodeListener(code: string, peer: PeerImpl) {
- const clientId = this.codeClientMap.get(code);
- if (!clientId)
- throw createError({
- statusCode: 403,
- statusMessage: "Invalid or unknown code.",
- });
- const metadata = this.temporaryClientTable.get(clientId);
- if (!metadata)
- throw createError({ statusCode: 500, statusMessage: "Broken code." });
- if (metadata.peer)
- throw createError({
- statusCode: 400,
- statusMessage: "Pre-existing listener for this code.",
- });
- metadata.peer = peer;
- this.temporaryClientTable.set(clientId, metadata);
- }
-
- async fetchClientIdByCode(code: string) {
- return this.codeClientMap.get(code);
+ return clientId;
}
async fetchClientMetadata(clientId: string) {
@@ -124,23 +62,6 @@ export class ClientHandler {
return token;
}
- async sendAuthToken(clientId: string, token: string) {
- const client = this.temporaryClientTable.get(clientId);
- if (!client)
- throw createError({
- statusCode: 500,
- statusMessage: "Corrupted code, please restart the process.",
- });
- if (!client.peer)
- throw createError({
- statusCode: 400,
- statusMessage: "Client has not connected yet. Please try again later.",
- });
- await client.peer.send(
- JSON.stringify({ type: "token", value: `${clientId}/${token}` }),
- );
- }
-
async fetchClientMetadataByToken(token: string) {
return this.temporaryClientTable
.entries()
@@ -154,7 +75,7 @@ export class ClientHandler {
if (!metadata) throw new Error("Invalid client ID");
if (!metadata.userId) throw new Error("Un-authorized client ID");
- const client = await prisma.client.create({
+ return await prisma.client.create({
data: {
id: id,
userId: metadata.userId,
@@ -166,20 +87,6 @@ export class ClientHandler {
lastConnected: new Date(),
},
});
-
- for (const [capability, configuration] of Object.entries(
- metadata.data.capabilities,
- )) {
- await capabilityManager.upsertClientCapability(
- capability as InternalClientCapability,
- configuration,
- client.id,
- );
- }
-
- this.temporaryClientTable.delete(id);
-
- return client;
}
async removeClient(id: string) {
diff --git a/server/internal/config/application-configuration.ts b/server/internal/config/application-configuration.ts
index 697702e..1d16f56 100644
--- a/server/internal/config/application-configuration.ts
+++ b/server/internal/config/application-configuration.ts
@@ -1,15 +1,15 @@
-import type { ApplicationSettingsModel } from "~/prisma/client/models";
+import type { ApplicationSettings } from "~/prisma/client";
import prisma from "../db/database";
class ApplicationConfiguration {
// Reference to the currently selected application configuration
- private currentApplicationSettings: ApplicationSettingsModel | undefined =
+ private currentApplicationSettings: ApplicationSettings | undefined =
undefined;
private async save() {
await this.init();
- const deepAppConfigCopy: Omit & {
+ const deepAppConfigCopy: Omit & {
timestamp?: Date;
} = JSON.parse(JSON.stringify(this.currentApplicationSettings));
@@ -56,9 +56,9 @@ class ApplicationConfiguration {
this.currentApplicationSettings = latestState;
}
- async set(
+ async set(
key: T,
- value: ApplicationSettingsModel[T],
+ value: ApplicationSettings[T],
) {
await this.init();
if (!this.currentApplicationSettings)
@@ -71,9 +71,9 @@ class ApplicationConfiguration {
}
}
- async get(
+ async get(
key: T,
- ): Promise {
+ ): Promise {
await this.init();
if (!this.currentApplicationSettings)
throw new Error("Somehow, failed to initialise application settings");
diff --git a/server/internal/config/sys-conf.ts b/server/internal/config/sys-conf.ts
index 70e0904..0d0b5e2 100644
--- a/server/internal/config/sys-conf.ts
+++ b/server/internal/config/sys-conf.ts
@@ -1,24 +1,9 @@
-import normalizeUrl from "normalize-url";
+import path from "path";
class SystemConfig {
private libraryFolder = process.env.LIBRARY ?? "./.data/library";
private dataFolder = process.env.DATA ?? "./.data/data";
-
- private externalUrl = normalizeUrl(
- process.env.EXTERNAL_URL ?? "http://localhost:3000",
- { stripWWW: false },
- );
- private dropVersion;
- private gitRef;
-
- private checkForUpdates = getUpdateCheckConfig();
-
- constructor() {
- // get drop version and git ref from nuxt config
- const config = useRuntimeConfig();
- this.dropVersion = config.dropVersion;
- this.gitRef = config.gitRef;
- }
+ private headscaleFolder = path.join(this.dataFolder, "headscale");
getLibraryFolder() {
return this.libraryFolder;
@@ -28,44 +13,9 @@ class SystemConfig {
return this.dataFolder;
}
- getDropVersion() {
- return this.dropVersion;
- }
-
- getGitRef() {
- return this.gitRef;
- }
-
- shouldCheckForUpdates() {
- return this.checkForUpdates;
- }
-
- getExternalUrl() {
- return this.externalUrl;
+ getHeadscaleFolder() {
+ return this.headscaleFolder;
}
}
export const systemConfig = new SystemConfig();
-
-/**
- * Gets the configuration for checking updates based on various conditions
- * @returns true if updates should be checked, false otherwise.
- */
-function getUpdateCheckConfig(): boolean {
- const envCheckUpdates = process.env.CHECK_FOR_UPDATES;
-
- // Check environment variable
- if (envCheckUpdates !== undefined) {
- // if explicitly set to true or false, return that value
- if (envCheckUpdates.toLocaleLowerCase() === "true") {
- return true;
- } else if (envCheckUpdates.toLocaleLowerCase() === "false") {
- return false;
- }
- } else if (process.env.NODE_ENV === "production") {
- // default to true in production
- return true;
- }
-
- return false;
-}
diff --git a/server/internal/consts.ts b/server/internal/consts.ts
deleted file mode 100644
index e7ab1cb..0000000
--- a/server/internal/consts.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const DROP_VERSION = "0.3.1";
diff --git a/server/internal/db/database.ts b/server/internal/db/database.ts
index fe12a0c..2c847c7 100644
--- a/server/internal/db/database.ts
+++ b/server/internal/db/database.ts
@@ -1,11 +1,7 @@
-import { PrismaClient } from "~/prisma/client/client";
-// import { PrismaPg } from "@prisma/adapter-pg";
+import { PrismaClient } from "~/prisma/client";
const prismaClientSingleton = () => {
- // const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL });
- // const prisma = new PrismaClient({ adapter });
- const prisma = new PrismaClient();
- return prisma;
+ return new PrismaClient({});
};
declare const globalThis: {
diff --git a/server/internal/downloads/coordinator.ts b/server/internal/downloads/coordinator.ts
index bc2dfe5..6a247b1 100644
--- a/server/internal/downloads/coordinator.ts
+++ b/server/internal/downloads/coordinator.ts
@@ -1,68 +1,9 @@
-import prisma from "../db/database";
-import type { DropManifest } from "./manifest";
+/*
+The download co-ordinator's job is to keep track of all the currently online clients.
-const TIMEOUT = 1000 * 60 * 60 * 1; // 1 hour
+When a client signs on and registers itself as a peer
-class DownloadContextManager {
- private contexts: Map<
- string,
- {
- timeout: Date;
- manifest: DropManifest;
- versionName: string;
- libraryId: string;
- libraryPath: string;
- }
- > = new Map();
+*/
- async createContext(game: string, versionName: string) {
- const version = await prisma.gameVersion.findUnique({
- where: {
- gameId_versionName: {
- gameId: game,
- versionName,
- },
- },
- include: {
- game: {
- select: {
- libraryId: true,
- libraryPath: true,
- },
- },
- },
- });
- if (!version) return undefined;
-
- const contextId = crypto.randomUUID();
- this.contexts.set(contextId, {
- timeout: new Date(),
- manifest: JSON.parse(version.dropletManifest as string) as DropManifest,
- versionName,
- libraryId: version.game.libraryId!,
- libraryPath: version.game.libraryPath,
- });
-
- return contextId;
- }
-
- async fetchContext(contextId: string) {
- const context = this.contexts.get(contextId);
- if (!context) return undefined;
- context.timeout = new Date();
- this.contexts.set(contextId, context);
- return context;
- }
-
- async cleanup() {
- for (const key of this.contexts.keys()) {
- const context = this.contexts.get(key)!;
- if (context.timeout.getTime() < Date.now() - TIMEOUT) {
- this.contexts.delete(key);
- }
- }
- }
-}
-
-export const contextManager = new DownloadContextManager();
-export default contextManager;
+// eslint-disable-next-line @typescript-eslint/no-extraneous-class, @typescript-eslint/no-unused-vars
+class DownloadCoordinator {}
diff --git a/server/internal/downloads/manifest.ts b/server/internal/downloads/manifest.ts
index 2fc25ae..af7599c 100644
--- a/server/internal/downloads/manifest.ts
+++ b/server/internal/downloads/manifest.ts
@@ -1,11 +1,11 @@
-import type { GameVersionModel } from "~/prisma/client/models";
+import type { GameVersion } from "~/prisma/client";
import prisma from "../db/database";
export type DropChunk = {
permissions: number;
ids: string[];
checksums: string[];
- lengths: number[];
+ lengths: string[];
};
export type DropManifest = {
@@ -54,7 +54,7 @@ class ManifestGenerator {
// Local function because eventual caching
async generateManifest(gameId: string, versionName: string) {
- const versions: GameVersionModel[] = [];
+ const versions: GameVersion[] = [];
const baseVersion = await prisma.gameVersion.findUnique({
where: {
diff --git a/server/internal/library/index.ts b/server/internal/library/index.ts
index c6807c5..6556702 100644
--- a/server/internal/library/index.ts
+++ b/server/internal/library/index.ts
@@ -5,123 +5,75 @@
* It also provides the endpoints with information about unmatched games
*/
+import fs from "fs";
import path from "path";
import prisma from "../db/database";
+import type { GameVersion } from "~/prisma/client";
import { fuzzy } from "fast-fuzzy";
+import { recursivelyReaddir } from "../utils/recursivedirs";
import taskHandler from "../tasks";
import { parsePlatform } from "../utils/parseplatform";
+import droplet from "@drop-oss/droplet";
import notificationSystem from "../notifications";
-import { GameNotFoundError, type LibraryProvider } from "./provider";
-import { logger } from "../logging";
-import type { GameModel } from "~/prisma/client/models";
-import { createHash } from "node:crypto";
-
-export function createGameImportTaskId(libraryId: string, libraryPath: string) {
- return createHash("md5")
- .update(`import:${libraryId}:${libraryPath}`)
- .digest("hex");
-}
-
-export function createVersionImportTaskId(gameId: string, versionName: string) {
- return createHash("md5")
- .update(`import:${gameId}:${versionName}`)
- .digest("hex");
-}
+import { systemConfig } from "../config/sys-conf";
class LibraryManager {
- private libraries: Map> = new Map();
+ private basePath: string;
- addLibrary(library: LibraryProvider) {
- this.libraries.set(library.id(), library);
+ constructor() {
+ this.basePath = systemConfig.getLibraryFolder();
+ fs.mkdirSync(this.basePath, { recursive: true });
}
- removeLibrary(id: string) {
- this.libraries.delete(id);
+ fetchLibraryPath() {
+ return this.basePath;
}
- async fetchLibraries() {
- const libraries = await prisma.library.findMany({});
- const libraryWithMetadata = libraries.map((e) => ({
- ...e,
- working: this.libraries.has(e.id),
- }));
- return libraryWithMetadata;
- }
+ async fetchAllUnimportedGames() {
+ const dirs = fs.readdirSync(this.basePath).filter((e) => {
+ const fullDir = path.join(this.basePath, e);
+ return fs.lstatSync(fullDir).isDirectory();
+ });
- async fetchGamesByLibrary() {
- const results: { [key: string]: { [key: string]: GameModel } } = {};
- const games = await prisma.game.findMany({});
- for (const game of games) {
- const libraryId = game.libraryId!;
- const libraryPath = game.libraryPath!;
-
- results[libraryId] ??= {};
- results[libraryId][libraryPath] = game;
- }
-
- return results;
- }
-
- async fetchUnimportedGames() {
- const unimportedGames: { [key: string]: string[] } = {};
- const instanceGames = await this.fetchGamesByLibrary();
-
- for (const [id, library] of this.libraries.entries()) {
- const providerGames = await library.listGames();
- const providerUnimportedGames = providerGames.filter(
- (libraryPath) =>
- !instanceGames[id]?.[libraryPath] &&
- !taskHandler.hasTask(createGameImportTaskId(id, libraryPath)),
- );
- unimportedGames[id] = providerUnimportedGames;
- }
-
- return unimportedGames;
- }
-
- async fetchUnimportedGameVersions(libraryId: string, libraryPath: string) {
- const provider = this.libraries.get(libraryId);
- if (!provider) return undefined;
- const game = await prisma.game.findUnique({
+ const validGames = await prisma.game.findMany({
where: {
- libraryKey: {
- libraryId,
- libraryPath,
- },
+ libraryBasePath: { in: dirs },
},
select: {
- id: true,
- versions: true,
+ libraryBasePath: true,
},
});
- if (!game) return undefined;
+ const validGameDirs = validGames.map((e) => e.libraryBasePath);
- try {
- const versions = await provider.listVersions(libraryPath);
- const unimportedVersions = versions.filter(
- (e) =>
- game.versions.findIndex((v) => v.versionName == e) == -1 &&
- !taskHandler.hasTask(createVersionImportTaskId(game.id, e)),
- );
- return unimportedVersions;
- } catch (e) {
- if (e instanceof GameNotFoundError) {
- logger.warn(e);
- return undefined;
- }
- throw e;
- }
+ const unregisteredGames = dirs.filter((e) => !validGameDirs.includes(e));
+
+ return unregisteredGames;
+ }
+
+ async fetchUnimportedGameVersions(
+ libraryBasePath: string,
+ versions: Array,
+ ) {
+ const gameDir = path.join(this.basePath, libraryBasePath);
+ const versionsDirs = fs.readdirSync(gameDir);
+ const importedVersionDirs = versions.map((e) => e.versionName);
+ const unimportedVersions = versionsDirs.filter(
+ (e) => !importedVersionDirs.includes(e),
+ );
+
+ return unimportedVersions;
}
async fetchGamesWithStatus() {
const games = await prisma.game.findMany({
- include: {
- versions: {
- select: {
- versionName: true,
- },
- },
- library: true,
+ select: {
+ id: true,
+ versions: true,
+ mName: true,
+ mShortDescription: true,
+ metadataSource: true,
+ mIconObjectId: true,
+ libraryBasePath: true,
},
orderBy: {
mName: "asc",
@@ -129,39 +81,64 @@ class LibraryManager {
});
return await Promise.all(
- games.map(async (e) => {
- const versions = await this.fetchUnimportedGameVersions(
- e.libraryId ?? "",
- e.libraryPath,
- );
- return {
- game: e,
- status: versions
- ? {
- noVersions: e.versions.length == 0,
- unimportedVersions: versions,
- }
- : ("offline" as const),
- };
- }),
+ games.map(async (e) => ({
+ game: e,
+ status: {
+ noVersions: e.versions.length == 0,
+ unimportedVersions: await this.fetchUnimportedGameVersions(
+ e.libraryBasePath,
+ e.versions,
+ ),
+ },
+ })),
);
}
- /**
- * Fetches recommendations and extra data about the version. Doesn't actually check if it's been imported.
- * @param gameId
- * @param versionName
- * @returns
- */
+ async fetchUnimportedVersions(gameId: string) {
+ const game = await prisma.game.findUnique({
+ where: { id: gameId },
+ select: {
+ versions: {
+ select: {
+ versionName: true,
+ },
+ },
+ libraryBasePath: true,
+ },
+ });
+
+ if (!game) return undefined;
+ const targetDir = path.join(this.basePath, game.libraryBasePath);
+ if (!fs.existsSync(targetDir))
+ throw new Error(
+ "Game in database, but no physical directory? Something is very very wrong...",
+ );
+ const versions = fs.readdirSync(targetDir);
+ const validVersions = versions.filter((versionDir) => {
+ const versionPath = path.join(targetDir, versionDir);
+ const stat = fs.statSync(versionPath);
+ return stat.isDirectory();
+ });
+ const currentVersions = game.versions.map((e) => e.versionName);
+
+ const unimportedVersions = validVersions.filter(
+ (e) => !currentVersions.includes(e),
+ );
+ return unimportedVersions;
+ }
+
async fetchUnimportedVersionInformation(gameId: string, versionName: string) {
const game = await prisma.game.findUnique({
where: { id: gameId },
- select: { libraryPath: true, libraryId: true, mName: true },
+ select: { libraryBasePath: true, mName: true },
});
- if (!game || !game.libraryId) return undefined;
-
- const library = this.libraries.get(game.libraryId);
- if (!library) return undefined;
+ if (!game) return undefined;
+ const targetDir = path.join(
+ this.basePath,
+ game.libraryBasePath,
+ versionName,
+ );
+ if (!fs.existsSync(targetDir)) return undefined;
const fileExts: { [key: string]: string[] } = {
Linux: [
@@ -171,10 +148,11 @@ class LibraryManager {
".sh",
// No extension is common for Linux binaries
"",
- // AppImages
- ".appimage",
],
- Windows: [".exe", ".bat"],
+ Windows: [
+ // Pretty much the only one
+ ".exe",
+ ],
macOS: [
// App files
".app",
@@ -187,19 +165,19 @@ class LibraryManager {
match: number;
}> = [];
- const files = await library.versionReaddir(game.libraryPath, versionName);
- for (const filename of files) {
- const basename = path.basename(filename);
- const dotLocation = filename.lastIndexOf(".");
- const ext =
- dotLocation == -1 ? "" : filename.slice(dotLocation).toLowerCase();
+ const files = recursivelyReaddir(targetDir, 2);
+ for (const file of files) {
+ const filename = path.basename(file);
+ const dotLocation = file.lastIndexOf(".");
+ const ext = dotLocation == -1 ? "" : file.slice(dotLocation);
for (const [platform, checkExts] of Object.entries(fileExts)) {
for (const checkExt of checkExts) {
if (checkExt != ext) continue;
- const fuzzyValue = fuzzy(basename, game.mName);
+ const fuzzyValue = fuzzy(filename, game.mName);
+ const relative = path.relative(targetDir, file);
options.push({
- filename,
- platform,
+ filename: relative,
+ platform: platform,
match: fuzzyValue,
});
}
@@ -212,24 +190,17 @@ class LibraryManager {
}
// Checks are done in least to most expensive order
- async checkUnimportedGamePath(libraryId: string, libraryPath: string) {
+ async checkUnimportedGamePath(targetPath: string) {
+ const targetDir = path.join(this.basePath, targetPath);
+ if (!fs.existsSync(targetDir)) return false;
+
const hasGame =
- (await prisma.game.count({
- where: { libraryId, libraryPath },
- })) > 0;
+ (await prisma.game.count({ where: { libraryBasePath: targetPath } })) > 0;
if (hasGame) return false;
return true;
}
- /*
- Game creation happens in metadata, because it's primarily a metadata object
-
- async createGame(libraryId: string, libraryPath: string, game: Omit) {
-
- }
- */
-
async importVersion(
gameId: string,
versionName: string,
@@ -246,42 +217,46 @@ class LibraryManager {
umuId: string;
},
) {
- const taskId = createVersionImportTaskId(gameId, versionName);
+ const taskId = `import:${gameId}:${versionName}`;
const platform = parsePlatform(metadata.platform);
if (!platform) return undefined;
const game = await prisma.game.findUnique({
where: { id: gameId },
- select: { mName: true, libraryId: true, libraryPath: true },
+ select: { mName: true, libraryBasePath: true },
});
- if (!game || !game.libraryId) return undefined;
+ if (!game) return undefined;
- const library = this.libraries.get(game.libraryId);
- if (!library) return undefined;
+ const baseDir = path.join(this.basePath, game.libraryBasePath, versionName);
+ if (!fs.existsSync(baseDir)) return undefined;
taskHandler.create({
id: taskId,
- taskGroup: "import:game",
name: `Importing version ${versionName} for ${game.mName}`,
acls: ["system:import:version:read"],
- async run({ progress, logger }) {
+ async run({ progress, log }) {
// First, create the manifest via droplet.
// This takes up 90% of our progress, so we wrap it in a *0.9
- const manifest = await library.generateDropletManifest(
- game.libraryPath,
- versionName,
- (err, value) => {
- if (err) throw err;
- progress(value * 0.9);
- },
- (err, value) => {
- if (err) throw err;
- logger.info(value);
- },
- );
+ const manifest = await new Promise((resolve, reject) => {
+ droplet.generateManifest(
+ baseDir,
+ (err, value) => {
+ if (err) return reject(err);
+ progress(value * 0.9);
+ },
+ (err, line) => {
+ if (err) return reject(err);
+ log(line);
+ },
+ (err, manifest) => {
+ if (err) return reject(err);
+ resolve(manifest);
+ },
+ );
+ });
- logger.info("Created manifest successfully!");
+ log("Created manifest successfully!");
const currentIndex = await prisma.gameVersion.count({
where: { gameId: gameId },
@@ -324,14 +299,13 @@ class LibraryManager {
});
}
- logger.info("Successfully created version!");
+ log("Successfully created version!");
notificationSystem.systemPush({
nonce: `version-create-${gameId}-${versionName}`,
title: `'${game.mName}' ('${versionName}') finished importing.`,
description: `Drop finished importing version ${versionName} for ${game.mName}.`,
actions: [`View|/admin/library/${gameId}`],
- acls: ["system:import:version:read"],
});
progress(100);
@@ -340,29 +314,6 @@ class LibraryManager {
return taskId;
}
-
- async peekFile(
- libraryId: string,
- game: string,
- version: string,
- filename: string,
- ) {
- const library = this.libraries.get(libraryId);
- if (!library) return undefined;
- return await library.peekFile(game, version, filename);
- }
-
- async readFile(
- libraryId: string,
- game: string,
- version: string,
- filename: string,
- options?: { start?: number; end?: number },
- ) {
- const library = this.libraries.get(libraryId);
- if (!library) return undefined;
- return await library.readFile(game, version, filename, options);
- }
}
export const libraryManager = new LibraryManager();
diff --git a/server/internal/library/provider.ts b/server/internal/library/provider.ts
deleted file mode 100644
index b5cb64b..0000000
--- a/server/internal/library/provider.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import type { LibraryBackend } from "~/prisma/client/enums";
-
-export abstract class LibraryProvider {
- constructor(_config: CFG, _id: string) {
- throw new Error("Library doesn't have a proper constructor");
- }
-
- /**
- * @returns ID of the current library provider (fs, smb, s3, etc)
- */
- abstract type(): LibraryBackend;
-
- /**
- * @returns the specific ID of this current provider
- */
- abstract id(): string;
-
- /**
- * @returns list of (usually) top-level game folder names
- */
- abstract listGames(): Promise;
-
- /**
- * @param game folder name of the game to list versions for
- * @returns list of version folder names
- */
- abstract listVersions(game: string): Promise;
-
- /**
- * @param game folder name of the game
- * @param version folder name of the version
- * @returns recursive list of all files in version, relative to the version folder (e.g. ./setup.exe)
- */
- abstract versionReaddir(game: string, version: string): Promise;
-
- /**
- * @param game folder name of the game
- * @param version folder name of the version
- * @returns string of JSON of the droplet manifest
- */
- abstract generateDropletManifest(
- game: string,
- version: string,
- progress: (err: Error | null, v: number) => void,
- log: (err: Error | null, v: string) => void,
- ): Promise;
-
- abstract peekFile(
- game: string,
- version: string,
- filename: string,
- ): Promise<{ size: number } | undefined>;
-
- abstract readFile(
- game: string,
- version: string,
- filename: string,
- options?: { start?: number; end?: number },
- ): Promise;
-}
-
-export class GameNotFoundError extends Error {}
-export class VersionNotFoundError extends Error {}
diff --git a/server/internal/library/providers/filesystem.ts b/server/internal/library/providers/filesystem.ts
deleted file mode 100644
index de59b46..0000000
--- a/server/internal/library/providers/filesystem.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-import { ArkErrors, type } from "arktype";
-import {
- GameNotFoundError,
- VersionNotFoundError,
- type LibraryProvider,
-} from "../provider";
-import { LibraryBackend } from "~/prisma/client/enums";
-import fs from "fs";
-import path from "path";
-import droplet, { DropletHandler } from "@drop-oss/droplet";
-
-export const FilesystemProviderConfig = type({
- baseDir: "string",
-});
-
-export const DROPLET_HANDLER = new DropletHandler();
-
-export class FilesystemProvider
- implements LibraryProvider
-{
- private config: typeof FilesystemProviderConfig.infer;
- private myId: string;
-
- constructor(rawConfig: unknown, id: string) {
- const config = FilesystemProviderConfig(rawConfig);
- if (config instanceof ArkErrors) {
- throw new Error(
- `Failed to create filesystem provider: ${config.summary}`,
- );
- }
-
- this.myId = id;
- this.config = config;
-
- if (!fs.existsSync(this.config.baseDir))
- throw "Base directory does not exist.";
- }
-
- id(): string {
- return this.myId;
- }
-
- type(): LibraryBackend {
- return LibraryBackend.Filesystem;
- }
-
- async listGames(): Promise {
- const dirs = fs.readdirSync(this.config.baseDir);
- const folderDirs = dirs.filter((e) => {
- const fullDir = path.join(this.config.baseDir, e);
- return fs.lstatSync(fullDir).isDirectory();
- });
- return folderDirs;
- }
-
- async listVersions(game: string): Promise {
- const gameDir = path.join(this.config.baseDir, game);
- if (!fs.existsSync(gameDir)) throw new GameNotFoundError();
- const versionDirs = fs.readdirSync(gameDir);
- const validVersionDirs = versionDirs.filter((e) => {
- const fullDir = path.join(this.config.baseDir, game, e);
- return DROPLET_HANDLER.hasBackendForPath(fullDir);
- });
- return validVersionDirs;
- }
-
- async versionReaddir(game: string, version: string): Promise {
- const versionDir = path.join(this.config.baseDir, game, version);
- if (!fs.existsSync(versionDir)) throw new VersionNotFoundError();
- return DROPLET_HANDLER.listFiles(versionDir);
- }
-
- async generateDropletManifest(
- game: string,
- version: string,
- progress: (err: Error | null, v: number) => void,
- log: (err: Error | null, v: string) => void,
- ): Promise {
- const versionDir = path.join(this.config.baseDir, game, version);
- if (!fs.existsSync(versionDir)) throw new VersionNotFoundError();
- const manifest = await new Promise((r, j) =>
- droplet.generateManifest(
- DROPLET_HANDLER,
- versionDir,
- progress,
- log,
- (err, result) => {
- if (err) return j(err);
- r(result);
- },
- ),
- );
- return manifest;
- }
-
- async peekFile(game: string, version: string, filename: string) {
- const filepath = path.join(this.config.baseDir, game, version);
- if (!fs.existsSync(filepath)) return undefined;
- const stat = DROPLET_HANDLER.peekFile(filepath, filename);
- return { size: Number(stat) };
- }
-
- async readFile(
- game: string,
- version: string,
- filename: string,
- options?: { start?: number; end?: number },
- ) {
- const filepath = path.join(this.config.baseDir, game, version);
- if (!fs.existsSync(filepath)) return undefined;
- let stream;
- while (!(stream instanceof ReadableStream)) {
- const v = DROPLET_HANDLER.readFile(
- filepath,
- filename,
- options?.start ? BigInt(options.start) : undefined,
- options?.end ? BigInt(options.end) : undefined,
- );
- if (!v) return undefined;
- stream = v.getStream() as ReadableStream;
- }
-
- return stream;
- }
-}
diff --git a/server/internal/library/providers/flat.ts b/server/internal/library/providers/flat.ts
deleted file mode 100644
index 9ebb5ef..0000000
--- a/server/internal/library/providers/flat.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import { ArkErrors, type } from "arktype";
-import type { LibraryProvider } from "../provider";
-import { VersionNotFoundError } from "../provider";
-import { LibraryBackend } from "~/prisma/client/enums";
-import fs from "fs";
-import path from "path";
-import droplet from "@drop-oss/droplet";
-import { DROPLET_HANDLER } from "./filesystem";
-
-export const FlatFilesystemProviderConfig = type({
- baseDir: "string",
-});
-
-export class FlatFilesystemProvider
- implements LibraryProvider
-{
- private config: typeof FlatFilesystemProviderConfig.infer;
- private myId: string;
-
- constructor(rawConfig: unknown, id: string) {
- const config = FlatFilesystemProviderConfig(rawConfig);
- if (config instanceof ArkErrors) {
- throw new Error(
- `Failed to create filesystem provider: ${config.summary}`,
- );
- }
-
- this.myId = id;
- this.config = config;
-
- if (!fs.existsSync(this.config.baseDir))
- throw "Base directory does not exist.";
- }
-
- type() {
- return LibraryBackend.FlatFilesystem;
- }
- id() {
- return this.myId;
- }
-
- /**
- * These are basically our versions, but also our games.
- * @returns list of valid games
- */
- async listGames() {
- const versionDirs = fs.readdirSync(this.config.baseDir);
- const validVersionDirs = versionDirs.filter((e) => {
- const fullDir = path.join(this.config.baseDir, e);
- return DROPLET_HANDLER.hasBackendForPath(fullDir);
- });
- return validVersionDirs;
- }
-
- /**
- * Doesn't do anything, just returns "default"
- * @param _game Ignored
- * @returns
- */
- async listVersions(_game: string) {
- return ["default"];
- }
-
- async versionReaddir(game: string, _version: string) {
- const versionDir = path.join(this.config.baseDir, game);
- if (!fs.existsSync(versionDir)) throw new VersionNotFoundError();
- return DROPLET_HANDLER.listFiles(versionDir);
- }
-
- async generateDropletManifest(
- game: string,
- _version: string,
- progress: (err: Error | null, v: number) => void,
- log: (err: Error | null, v: string) => void,
- ) {
- const versionDir = path.join(this.config.baseDir, game);
- if (!fs.existsSync(versionDir)) throw new VersionNotFoundError();
- const manifest = await new Promise((r, j) =>
- droplet.generateManifest(
- DROPLET_HANDLER,
- versionDir,
- progress,
- log,
- (err, result) => {
- if (err) return j(err);
- r(result);
- },
- ),
- );
- return manifest;
- }
- async peekFile(game: string, _version: string, filename: string) {
- const filepath = path.join(this.config.baseDir, game);
- if (!fs.existsSync(filepath)) return undefined;
- const stat = DROPLET_HANDLER.peekFile(filepath, filename);
- return { size: Number(stat) };
- }
- async readFile(
- game: string,
- _version: string,
- filename: string,
- options?: { start?: number; end?: number },
- ) {
- const filepath = path.join(this.config.baseDir, game);
- if (!fs.existsSync(filepath)) return undefined;
- const stream = DROPLET_HANDLER.readFile(
- filepath,
- filename,
- options?.start ? BigInt(options.start) : undefined,
- options?.end ? BigInt(options.end) : undefined,
- );
- if (!stream) return undefined;
-
- return stream.getStream();
- }
-}
diff --git a/server/internal/logging/index.ts b/server/internal/logging/index.ts
deleted file mode 100644
index 1c81d89..0000000
--- a/server/internal/logging/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import pino from "pino";
-import pinoPretty from "pino-pretty";
-
-// call pino pretty so that it isn't excluded from the build
-pinoPretty();
-
-export const logger = pino({
- transport: {
- target: "pino-pretty",
- options: {
- colorize: true,
- },
- },
-});
diff --git a/server/internal/metadata/giantbomb.ts b/server/internal/metadata/giantbomb.ts
index aa7e6d6..d617f0c 100644
--- a/server/internal/metadata/giantbomb.ts
+++ b/server/internal/metadata/giantbomb.ts
@@ -1,5 +1,5 @@
-import type { CompanyModel } from "~/prisma/client/models";
-import { MetadataSource } from "~/prisma/client/enums";
+import type { Company } from "~/prisma/client";
+import { MetadataSource } from "~/prisma/client";
import type { MetadataProvider } from ".";
import { MissingMetadataProviderConfig } from ".";
import type {
@@ -8,12 +8,11 @@ import type {
GameMetadata,
_FetchCompanyMetadataParams,
CompanyMetadata,
- GameMetadataRating,
} from "./types";
-import axios, { type AxiosRequestConfig } from "axios";
+import type { AxiosRequestConfig } from "axios";
+import axios from "axios";
import TurndownService from "turndown";
import { DateTime } from "luxon";
-import type { TaskRunContext } from "../tasks";
interface GiantBombResponseType {
error: "OK" | string;
@@ -61,22 +60,6 @@ interface GameResult {
tags: string; // If it's "All Images", art, otherwise screenshot
original: string;
}>;
-
- reviews?: Array<{
- api_detail_url: string;
- }>;
-
- genres?: Array<{
- name: string;
- id: number;
- }>;
-}
-
-interface ReviewResult {
- deck: string;
- score: number; // Out of 5
- reviewer: string;
- site_detail_url: string;
}
interface CompanySearchResult {
@@ -171,12 +154,12 @@ export class GiantBombProvider implements MetadataProvider {
return mapped;
}
- async fetchGame(
- { id, publisher, developer, createObject }: _FetchGameMetadataParams,
- context?: TaskRunContext,
- ): Promise {
- context?.logger.info("Using GiantBomb provider");
-
+ async fetchGame({
+ id,
+ publisher,
+ developer,
+ createObject,
+ }: _FetchGameMetadataParams): Promise {
const result = await this.request("game", id, {});
const gameData = result.data.results;
@@ -184,40 +167,24 @@ export class GiantBombProvider implements MetadataProvider {
? this.turndown.turndown(gameData.description)
: gameData.deck;
- const publishers: CompanyModel[] = [];
+ const publishers: Company[] = [];
if (gameData.publishers) {
for (const pub of gameData.publishers) {
- context?.logger.info(`Importing publisher "${pub.name}"`);
-
const res = await publisher(pub.name);
- if (res === undefined) {
- context?.logger.warn(`Failed to import publisher "${pub}"`);
- continue;
- }
- context?.logger.info(`Imported publisher "${pub.name}"`);
+ if (res === undefined) continue;
publishers.push(res);
}
}
- context?.progress(35);
-
- const developers: CompanyModel[] = [];
+ const developers: Company[] = [];
if (gameData.developers) {
for (const dev of gameData.developers) {
- context?.logger.info(`Importing developer "${dev.name}"`);
-
const res = await developer(dev.name);
- if (res === undefined) {
- context?.logger.warn(`Failed to import developer "${dev}"`);
- continue;
- }
- context?.logger.info(`Imported developer "${dev}"`);
+ if (res === undefined) continue;
developers.push(res);
}
}
- context?.progress(70);
-
const icon = createObject(gameData.image.icon_url);
const banner = createObject(gameData.image.screen_large_url);
@@ -225,32 +192,13 @@ export class GiantBombProvider implements MetadataProvider {
const images = [banner, ...imageURLs.map(createObject)];
- context?.logger.info(`Found all images. Total of ${images.length + 1}.`);
-
const releaseDate = gameData.original_release_date
? DateTime.fromISO(gameData.original_release_date).toJSDate()
- : new Date();
-
- context?.progress(85);
-
- const reviews: GameMetadataRating[] = [];
- if (gameData.reviews) {
- context?.logger.info("Found reviews, importing...");
- for (const { api_detail_url } of gameData.reviews) {
- const reviewId = api_detail_url.split("/").at(-2);
- if (!reviewId) continue;
- const review = await this.request("review", reviewId, {});
- reviews.push({
- metadataSource: MetadataSource.GiantBomb,
- metadataId: reviewId,
- mReviewCount: 1,
- mReviewRating: review.data.results.score / 5,
- mReviewHref: review.data.results.site_detail_url,
- });
- }
- }
-
- const tags = (gameData.genres ?? []).map((e) => e.name);
+ : DateTime.fromISO(
+ `${gameData.expected_release_year ?? new Date().getFullYear()}-${
+ gameData.expected_release_month ?? 1
+ }-${gameData.expected_release_day ?? 1}`,
+ ).toJSDate();
const metadata: GameMetadata = {
id: gameData.guid,
@@ -259,9 +207,8 @@ export class GiantBombProvider implements MetadataProvider {
description: longDescription,
released: releaseDate,
- tags,
-
- reviews,
+ reviewCount: 0,
+ reviewRating: 0,
publishers,
developers,
@@ -272,15 +219,12 @@ export class GiantBombProvider implements MetadataProvider {
images,
};
- context?.logger.info("GiantBomb provider finished.");
- context?.progress(100);
-
return metadata;
}
async fetchCompany({
query,
createObject,
- }: _FetchCompanyMetadataParams): Promise {
+ }: _FetchCompanyMetadataParams): Promise {
const results = await this.request>(
"search",
"",
@@ -291,7 +235,7 @@ export class GiantBombProvider implements MetadataProvider {
const company =
results.data.results.find((e) => e.name == query) ??
results.data.results.at(0);
- if (!company) return undefined;
+ if (!company) throw new Error(`No results for "${query}"`);
const longDescription = company.description
? this.turndown.turndown(company.description)
diff --git a/server/internal/metadata/igdb.ts b/server/internal/metadata/igdb.ts
index 52e47b2..1970d89 100644
--- a/server/internal/metadata/igdb.ts
+++ b/server/internal/metadata/igdb.ts
@@ -1,5 +1,5 @@
-import type { CompanyModel } from "~/prisma/client/models";
-import { MetadataSource } from "~/prisma/client/enums";
+import type { Company } from "~/prisma/client";
+import { MetadataSource } from "~/prisma/client";
import type { MetadataProvider } from ".";
import { MissingMetadataProviderConfig } from ".";
import type {
@@ -12,9 +12,6 @@ import type {
import type { AxiosRequestConfig } from "axios";
import axios from "axios";
import { DateTime } from "luxon";
-import * as jdenticon from "jdenticon";
-import type { TaskRunContext } from "../tasks";
-import { logger } from "~/server/internal/logging";
type IGDBID = number;
@@ -34,12 +31,6 @@ interface IGDBItem {
id: IGDBID;
}
-interface IGDBGenre extends IGDBItem {
- name: string;
- slug: string;
- url: string;
-}
-
// denotes role a company had in a game
interface IGDBInvolvedCompany extends IGDBItem {
company: IGDBID;
@@ -77,8 +68,8 @@ interface IGDBCover extends IGDBItem {
interface IGDBSearchStub extends IGDBItem {
name: string;
- cover?: IGDBID;
- first_release_date?: number; // unix timestamp
+ cover: IGDBID;
+ first_release_date: number; // unix timestamp
summary: string;
}
@@ -164,7 +155,7 @@ export class IGDBProvider implements MetadataProvider {
}
private async authWithTwitch() {
- logger.info("IGDB authorizing with twitch");
+ console.log("authorizing with twitch");
const params = new URLSearchParams({
client_id: this.clientId,
client_secret: this.clientSecret,
@@ -177,17 +168,10 @@ export class IGDBProvider implements MetadataProvider {
method: "POST",
});
- if (response.status !== 200)
- throw new Error(
- `Error in IDGB \nStatus Code: ${response.status}\n${response.data}`,
- );
-
this.accessToken = response.data.access_token;
this.accessTokenExpiry = DateTime.now().plus({
seconds: response.data.expires_in,
});
-
- logger.info("IDGB done authorizing with twitch");
}
private async refreshCredentials() {
@@ -247,11 +231,6 @@ export class IGDBProvider implements MetadataProvider {
}
private async _getMediaInternal(mediaID: IGDBID, type: string) {
- if (mediaID === undefined)
- throw new Error(
- `IGDB mediaID when getting item of type ${type} was undefined`,
- );
-
const body = `where id = ${mediaID}; fields url;`;
const response = await this.request(type, body);
@@ -265,7 +244,6 @@ export class IGDBProvider implements MetadataProvider {
result = `https:${cover.url}`;
}
});
-
return result;
}
@@ -285,32 +263,6 @@ export class IGDBProvider implements MetadataProvider {
return msg.length > len ? msg.substring(0, 280) + "..." : msg;
}
- private async _getGenreInternal(genreID: IGDBID) {
- if (genreID === undefined) throw new Error(`IGDB genreID was undefined`);
-
- const body = `where id = ${genreID}; fields slug,name,url;`;
- const response = await this.request("genres", body);
-
- let result = "";
-
- response.forEach((genre) => {
- result = genre.name;
- });
-
- return result;
- }
-
- private async getGenres(genres: IGDBID[] | undefined): Promise {
- if (genres === undefined) return [];
-
- const results: string[] = [];
- for (const genre of genres) {
- results.push(await this._getGenreInternal(genre));
- }
-
- return results;
- }
-
name() {
return "IGDB";
}
@@ -324,166 +276,101 @@ export class IGDBProvider implements MetadataProvider {
const results: GameMetadataSearchResult[] = [];
for (let i = 0; i < response.length; i++) {
- let icon = "";
- const cover = response[i].cover;
- if (cover !== undefined) {
- icon = await this.getCoverURL(cover);
- } else {
- icon = "";
- }
-
- const firstReleaseDate = response[i].first_release_date;
results.push({
id: "" + response[i].id,
name: response[i].name,
- icon,
+ icon: await this.getCoverURL(response[i].cover),
description: response[i].summary,
- year:
- firstReleaseDate === undefined
- ? 0
- : DateTime.fromSeconds(firstReleaseDate).year,
+ year: DateTime.fromSeconds(response[i].first_release_date).year,
});
}
return results;
}
- async fetchGame(
- { id, publisher, developer, createObject }: _FetchGameMetadataParams,
- context?: TaskRunContext,
- ): Promise {
+ async fetchGame({
+ id,
+ publisher,
+ developer,
+ createObject,
+ }: _FetchGameMetadataParams): Promise {
const body = `where id = ${id}; fields *;`;
- const currentGame = (await this.request("games", body)).at(0);
- if (!currentGame) throw new Error("No game found on IGDB with that id");
+ const response = await this.request("games", body);
- context?.logger.info("Using IDGB provider.");
+ for (let i = 0; i < response.length; i++) {
+ const icon = createObject(await this.getCoverURL(response[i].cover));
+ let banner = "";
- let iconRaw;
- const cover = currentGame.cover;
-
- if (cover !== undefined) {
- context?.logger.info("Found cover URL, using...");
- iconRaw = await this.getCoverURL(cover);
- } else {
- context?.logger.info("Missing cover URL, using fallback...");
- iconRaw = jdenticon.toPng(id, 512);
- }
-
- const icon = createObject(iconRaw);
- let banner;
-
- const images = [icon];
- for (const art of currentGame.artworks ?? []) {
- const objectId = createObject(await this.getArtworkURL(art));
- if (!banner) {
- banner = objectId;
+ const images = [icon];
+ for (const art of response[i]?.artworks ?? []) {
+ // if banner not set
+ if (banner.length <= 0) {
+ banner = createObject(await this.getArtworkURL(art));
+ images.push(banner);
+ } else {
+ images.push(createObject(await this.getArtworkURL(art)));
+ }
}
- images.push(objectId);
- }
- if (!banner) {
- banner = createObject(jdenticon.toPng(id, 512));
- }
-
- context?.progress(20);
-
- const publishers: CompanyModel[] = [];
- const developers: CompanyModel[] = [];
- for (const involvedCompany of currentGame.involved_companies ?? []) {
- // get details about the involved company
- const involved_company_response = await this.request(
- "involved_companies",
- `where id = ${involvedCompany}; fields *;`,
- );
- for (const foundInvolved of involved_company_response) {
- // now we need to get the actual company so we can get the name
- const findCompanyResponse = await this.request<
- { name: string } & IGDBItem
- >("companies", `where id = ${foundInvolved.company}; fields name;`);
-
- for (const company of findCompanyResponse) {
- context?.logger.info(
- `Found involved company "${company.name}" as: ${foundInvolved.developer ? "developer, " : ""}${foundInvolved.publisher ? "publisher" : ""}`,
+ const publishers: Company[] = [];
+ const developers: Company[] = [];
+ for (const involvedCompany of response[i]?.involved_companies ?? []) {
+ // get details about the involved company
+ const involved_company_response =
+ await this.request(
+ "involved_companies",
+ `where id = ${involvedCompany}; fields *;`,
);
+ for (const foundInvolved of involved_company_response) {
+ // now we need to get the actual company so we can get the name
+ const findCompanyResponse = await this.request<
+ { name: string } & IGDBItem
+ >("companies", `where id = ${foundInvolved.company}; fields name;`);
- // if company was a dev or publisher
- // CANNOT use else since a company can be both
- if (foundInvolved.developer) {
- const res = await developer(company.name);
- if (res === undefined) {
- context?.logger.warn(
- `Failed to import developer "${company.name}"`,
- );
- continue;
+ for (const company of findCompanyResponse) {
+ // if company was a dev or publisher
+ // CANNOT use else since a company can be both
+ if (foundInvolved.developer) {
+ const res = await developer(company.name);
+ if (res === undefined) continue;
+ developers.push(res);
}
- context?.logger.info(`Imported developer "${company.name}"`);
- developers.push(res);
- }
-
- if (foundInvolved.publisher) {
- const res = await publisher(company.name);
- if (res === undefined) {
- context?.logger.warn(
- `Failed to import publisher "${company.name}"`,
- );
- continue;
+ if (foundInvolved.publisher) {
+ const res = await publisher(company.name);
+ if (res === undefined) continue;
+ publishers.push(res);
}
- context?.logger.info(`Imported publisher "${company.name}"`);
- publishers.push(res);
}
}
}
+
+ return {
+ id: "" + response[i].id,
+ name: response[i].name,
+ shortDescription: this.trimMessage(response[i].summary, 280),
+ description: response[i].summary,
+ released: DateTime.fromSeconds(
+ response[i].first_release_date,
+ ).toJSDate(),
+
+ reviewCount: response[i]?.total_rating_count ?? 0,
+ reviewRating: (response[i]?.total_rating ?? 0) / 100,
+
+ publishers: [],
+ developers: [],
+
+ icon,
+ bannerId: banner,
+ coverId: icon,
+ images,
+ };
}
- context?.progress(80);
-
- const firstReleaseDate = currentGame.first_release_date;
- const released =
- firstReleaseDate === undefined
- ? new Date()
- : DateTime.fromSeconds(firstReleaseDate).toJSDate();
-
- const review = {
- metadataId: currentGame.id.toString(),
- metadataSource: MetadataSource.IGDB,
- mReviewCount: currentGame.total_rating_count ?? 0,
- mReviewRating: (currentGame.total_rating ?? 0) / 100,
- mReviewHref: currentGame.url,
- };
-
- const genres = await this.getGenres(currentGame.genres);
-
- const deck = this.trimMessage(currentGame.summary, 280);
-
- const metadata = {
- id: currentGame.id.toString(),
- name: currentGame.name,
- shortDescription: deck,
- description: currentGame.summary,
- released,
-
- genres,
- reviews: [review],
-
- publishers,
- developers,
-
- tags: [],
-
- icon,
- bannerId: banner,
- coverId: icon,
- images,
- };
-
- context?.logger.info("IGDB provider finished.");
- context?.progress(100);
-
- return metadata;
+ throw new Error("No game found on igdb with that id");
}
async fetchCompany({
query,
createObject,
- }: _FetchCompanyMetadataParams): Promise {
+ }: _FetchCompanyMetadataParams): Promise {
const response = await this.request(
"companies",
`where name = "${query}"; fields *; limit 1;`,
@@ -517,6 +404,6 @@ export class IGDBProvider implements MetadataProvider {
return metadata;
}
- return undefined;
+ throw new Error(`igdb failed to find publisher/developer ${query}`);
}
}
diff --git a/server/internal/metadata/index.ts b/server/internal/metadata/index.ts
index 88025e8..9c1f03f 100644
--- a/server/internal/metadata/index.ts
+++ b/server/internal/metadata/index.ts
@@ -1,5 +1,4 @@
-import type { Prisma } from "~/prisma/client/client";
-import { MetadataSource } from "~/prisma/client/enums";
+import { MetadataSource } from "~/prisma/client";
import prisma from "../db/database";
import type {
_FetchGameMetadataParams,
@@ -8,18 +7,9 @@ import type {
GameMetadataSearchResult,
InternalGameMetadataResult,
CompanyMetadata,
- GameMetadataRating,
} from "./types";
import { ObjectTransactionalHandler } from "../objects/transactional";
import { PriorityListIndexed } from "../utils/prioritylist";
-import { systemConfig } from "../config/sys-conf";
-import type { TaskRunContext } from "../tasks";
-import taskHandler, { wrapTaskContext } from "../tasks";
-import { randomUUID } from "crypto";
-import { fuzzy } from "fast-fuzzy";
-import { logger } from "~/server/internal/logging";
-import { createGameImportTaskId } from "../library";
-import type { GameTagModel } from "~/prisma/client/models";
export class MissingMetadataProviderConfig extends Error {
private providerName: string;
@@ -35,20 +25,16 @@ export class MissingMetadataProviderConfig extends Error {
}
// TODO: add useragent to all outbound api calls (best practice)
-export const DropUserAgent = `Drop/${systemConfig.getDropVersion()}`;
+export const DropUserAgent = "Drop/0.2";
export abstract class MetadataProvider {
abstract name(): string;
abstract source(): MetadataSource;
abstract search(query: string): Promise;
- abstract fetchGame(
- params: _FetchGameMetadataParams,
- taskRunContext?: TaskRunContext,
- ): Promise;
+ abstract fetchGame(params: _FetchGameMetadataParams): Promise;
abstract fetchCompany(
params: _FetchCompanyMetadataParams,
- taskRunContext?: TaskRunContext,
): Promise;
}
@@ -93,7 +79,7 @@ export class MetadataHandler {
);
resolve(mappedResults);
} catch (e) {
- logger.warn(e);
+ console.warn(e);
reject(e);
}
});
@@ -104,72 +90,29 @@ export class MetadataHandler {
const successfulResults = results
.filter((result) => result.status === "fulfilled")
.map((result) => result.value)
- .flat()
- .map((result) => {
- const match = fuzzy(query, result.name);
- return { ...result, fuzzy: match };
- })
- .sort((a, b) => b.fuzzy - a.fuzzy);
+ .flat();
return successfulResults;
}
- async createGameWithoutMetadata(libraryId: string, libraryPath: string) {
+ async createGameWithoutMetadata(libraryBasePath: string) {
return await this.createGame(
{
id: "",
- name: libraryPath,
- sourceId: MetadataSource.Manual,
+ name: libraryBasePath,
+ icon: "",
+ description: "",
+ year: 0,
+ sourceId: "manual",
+ sourceName: "Manual",
},
- libraryId,
- libraryPath,
+ libraryBasePath,
);
}
- private async parseTags(tags: string[]) {
- const results: Array = [];
-
- for (const tag of tags) {
- const rawResults: GameTagModel[] =
- await prisma.$queryRaw`SELECT * FROM "GameTag" WHERE SIMILARITY(name, ${tag}) > 0.45;`;
- let resultTag = rawResults.at(0);
- if (!resultTag) {
- resultTag = await prisma.gameTag.create({
- data: {
- name: tag,
- },
- });
- }
- results.push(resultTag);
- }
-
- return results;
- }
-
- private parseRatings(ratings: GameMetadataRating[]) {
- const results: Array = [];
-
- ratings.forEach((r) => {
- results.push({
- where: {
- metadataKey: {
- metadataId: r.metadataId,
- metadataSource: r.metadataSource,
- },
- },
- create: {
- ...r,
- },
- });
- });
-
- return results;
- }
-
async createGame(
- result: { sourceId: string; id: string; name: string },
- libraryId: string,
- libraryPath: string,
+ result: InternalGameMetadataResult,
+ libraryBasePath: string,
) {
const provider = this.providers.get(result.sourceId);
if (!provider)
@@ -183,104 +126,61 @@ export class MetadataHandler {
},
},
});
- if (existing) return undefined;
+ if (existing) return existing;
- const gameId = randomUUID();
+ const [createObject, pullObjects, dumpObjects] = this.objectHandler.new(
+ {},
+ ["internal:read"],
+ );
- const taskId = createGameImportTaskId(libraryId, libraryPath);
- await taskHandler.create({
- name: `Import game "${result.name}" (${libraryPath})`,
- id: taskId,
- taskGroup: "import:game",
- acls: ["system:import:game:read"],
- async run(context) {
- const { progress, logger } = context;
+ let metadata: GameMetadata | undefined = undefined;
+ try {
+ metadata = await provider.fetchGame({
+ id: result.id,
+ name: result.name,
+ // wrap in anonymous functions to keep references to this
+ publisher: (name: string) => this.fetchCompany(name),
+ developer: (name: string) => this.fetchCompany(name),
+ createObject,
+ });
+ } catch (e) {
+ dumpObjects();
+ throw e;
+ }
- progress(0);
+ const game = await prisma.game.create({
+ data: {
+ metadataSource: provider.source(),
+ metadataId: metadata.id,
- const [createObject, pullObjects, dumpObjects] =
- metadataHandler.objectHandler.new(
- {},
- ["internal:read"],
- wrapTaskContext(context, {
- min: 60,
- max: 95,
- prefix: "[object import] ",
- }),
- );
+ mName: metadata.name,
+ mShortDescription: metadata.shortDescription,
+ mDescription: metadata.description,
- let metadata: GameMetadata | undefined = undefined;
- try {
- metadata = await provider.fetchGame(
- {
- id: result.id,
- name: result.name,
- // wrap in anonymous functions to keep references to this
- publisher: (name: string) => metadataHandler.fetchCompany(name),
- developer: (name: string) => metadataHandler.fetchCompany(name),
- createObject,
- },
- wrapTaskContext(context, {
- min: 0,
- max: 60,
- prefix: "[metadata import] ",
- }),
- );
- } catch (e) {
- dumpObjects();
- throw e;
- }
+ mReviewCount: metadata.reviewCount,
+ mReviewRating: metadata.reviewRating,
+ mReleased: metadata.released,
- context?.progress(60);
+ mIconObjectId: metadata.icon,
+ mBannerObjectId: metadata.bannerId,
+ mCoverObjectId: metadata.coverId,
+ mImageLibraryObjectIds: metadata.images,
- logger.info(`Successfully fetched all metadata.`);
- logger.info(`Importing objects...`);
+ publishers: {
+ connect: metadata.publishers,
+ },
+ developers: {
+ connect: metadata.developers,
+ },
- await pullObjects();
-
- progress(95);
-
- await prisma.game.create({
- data: {
- id: gameId,
- metadataSource: provider.source(),
- metadataId: metadata.id,
-
- mName: metadata.name,
- mShortDescription: metadata.shortDescription,
- mDescription: metadata.description,
- mReleased: metadata.released,
-
- mIconObjectId: metadata.icon,
- mBannerObjectId: metadata.bannerId,
- mCoverObjectId: metadata.coverId,
- mImageLibraryObjectIds: metadata.images,
-
- publishers: {
- connect: metadata.publishers,
- },
- developers: {
- connect: metadata.developers,
- },
-
- ratings: {
- connectOrCreate: metadataHandler.parseRatings(metadata.reviews),
- },
- tags: {
- connect: await metadataHandler.parseTags(metadata.tags),
- },
-
- libraryId,
- libraryPath,
- },
- });
-
- logger.info(`Finished game import.`);
- progress(100);
+ libraryBasePath,
},
});
+ // relate companies to game
- return taskId;
+ await pullObjects();
+
+ return game;
}
// Careful with this function, it has no typechecking
@@ -310,19 +210,16 @@ export class MetadataHandler {
);
}
} catch (e) {
- logger.warn(e);
+ console.warn(e);
dumpObjects();
continue;
}
- const object = await prisma.company.upsert({
- where: {
- metadataKey: {
- metadataSource: provider.source(),
- metadataId: result.id,
- },
- },
- create: {
+ // If we're successful
+ await pullObjects();
+
+ const object = await prisma.company.create({
+ data: {
metadataSource: provider.source(),
metadataId: result.id,
metadataOriginalQuery: query,
@@ -334,18 +231,14 @@ export class MetadataHandler {
mBannerObjectId: result.banner,
mWebsite: result.website,
},
- update: {},
});
- if (object.mLogoObjectId == result.logo) {
- // We created, and didn't update
- // So pull objects
- await pullObjects();
- }
-
return object;
}
+ // throw new Error(
+ // `No metadata provider found a ${databaseName} for "${query}"`,
+ // );
return undefined;
}
}
diff --git a/server/internal/metadata/manual.ts b/server/internal/metadata/manual.ts
index 4dde413..fb3786c 100644
--- a/server/internal/metadata/manual.ts
+++ b/server/internal/metadata/manual.ts
@@ -1,4 +1,4 @@
-import { MetadataSource } from "~/prisma/client/enums";
+import { MetadataSource } from "~/prisma/client";
import type { MetadataProvider } from ".";
import type {
_FetchGameMetadataParams,
@@ -26,15 +26,15 @@ export class ManualMetadataProvider implements MetadataProvider {
const iconId = createObject(icon);
return {
- id: crypto.randomUUID(),
+ id: "manual",
name,
shortDescription: "Default description.",
description: "# Default description.",
released: new Date(),
publishers: [],
developers: [],
- tags: [],
- reviews: [],
+ reviewCount: 0,
+ reviewRating: 0,
icon: iconId,
coverId: iconId,
@@ -44,7 +44,7 @@ export class ManualMetadataProvider implements MetadataProvider {
}
async fetchCompany(
_params: _FetchCompanyMetadataParams,
- ): Promise {
- return undefined;
+ ): Promise {
+ throw new Error("Method not implemented.");
}
}
diff --git a/server/internal/metadata/pcgamingwiki.ts b/server/internal/metadata/pcgamingwiki.ts
index ab965bc..5ebce0c 100644
--- a/server/internal/metadata/pcgamingwiki.ts
+++ b/server/internal/metadata/pcgamingwiki.ts
@@ -1,5 +1,5 @@
-import type { CompanyModel } from "~/prisma/client/models";
-import { MetadataSource } from "~/prisma/client/enums";
+import type { Company } from "~/prisma/client";
+import { MetadataSource } from "~/prisma/client";
import type { MetadataProvider } from ".";
import type {
GameMetadataSearchResult,
@@ -7,33 +7,11 @@ import type {
GameMetadata,
_FetchCompanyMetadataParams,
CompanyMetadata,
- GameMetadataRating,
} from "./types";
import type { AxiosRequestConfig } from "axios";
import axios from "axios";
import * as jdenticon from "jdenticon";
import { DateTime } from "luxon";
-import * as cheerio from "cheerio";
-import { type } from "arktype";
-import type { TaskRunContext } from "../tasks";
-import { logger } from "~/server/internal/logging";
-
-interface PCGamingWikiParseRawPage {
- parse: {
- title: string;
- pageid: number;
- revid: number;
- displaytitle: string;
- // array of links
- externallinks: string[];
- // array of wiki file names
- images: string[];
- text: {
- // rendered page contents
- "*": string;
- };
- };
-}
interface PCGamingWikiPage {
PageID: string;
@@ -47,19 +25,12 @@ interface PCGamingWikiSearchStub extends PCGamingWikiPage {
}
interface PCGamingWikiGame extends PCGamingWikiSearchStub {
- Developers: string | string[] | null;
- Publishers: string | string[] | null;
-
- // TODO: save this somewhere, maybe a tag?
+ Developers: string | null;
+ Genres: string | null;
+ Publishers: string | null;
+ Themes: string | null;
Series: string | null;
-
- // tags
- Perspectives: string | string[] | null; // ie: First-person
- Genres: string | string[] | null; // ie: Action, FPS
- "Art styles": string | string[] | null; // ie: Stylized
- Themes: string | string[] | null; // ie: Post-apocalyptic, Sci-fi, Space
- Modes: string | string[] | null; // ie: Singleplayer, Multiplayer
- Pacing: string | string[] | null; // ie: Real-time
+ Modes: string | null;
}
interface PCGamingWikiCompany extends PCGamingWikiPage {
@@ -84,14 +55,6 @@ interface PCGamingWikiCargoResult {
};
}
-type StringArrayKeys = {
- [K in keyof T]: T[K] extends string | string[] | null ? K : never;
-}[keyof T];
-
-const ratingProviderReview = type({
- rating: "string.integer.parse",
-});
-
// Api Docs: https://www.pcgamingwiki.com/wiki/PCGamingWiki:API
// Good tool for helping build cargo queries: https://www.pcgamingwiki.com/wiki/Special:CargoQuery
export class PCGamingWikiProvider implements MetadataProvider {
@@ -112,161 +75,20 @@ export class PCGamingWikiProvider implements MetadataProvider {
url: finalURL,
baseURL: "",
};
- const response = await axios.request(
+ const response = await axios.request>(
Object.assign({}, options, overlay),
);
if (response.status !== 200)
throw new Error(
- `Error in pcgamingwiki \nStatus Code: ${response.status}\n${response.data}`,
+ `Error in pcgamingwiki \nStatus Code: ${response.status}`,
);
+ else if (response.data.error !== undefined)
+ throw new Error(`Error in pcgamingwiki, malformed query`);
return response;
}
- private async cargoQuery(
- query: URLSearchParams,
- options?: AxiosRequestConfig,
- ) {
- const response = await this.request>(
- query,
- options,
- );
- if (response.data.error !== undefined)
- throw new Error(`Error in pcgamingwiki cargo query`);
- return response;
- }
-
- /**
- * Gets the raw wiki page for parsing,
- * requested values are to be considered unstable as compared to cargo queries
- * @param pageID
- * @returns
- */
- private async getPageContent(pageID: string) {
- const searchParams = new URLSearchParams({
- action: "parse",
- format: "json",
- pageid: pageID,
- });
- const res = await this.request(searchParams);
- const $ = cheerio.load(res.data.parse.text["*"]);
- // get intro based on 'introduction' class
- const introductionEle = $(".introduction").first();
- // remove citations from intro
- introductionEle.find("sup").remove();
-
- const infoBoxEle = $(".template-infobox").first();
- const receptionEle = infoBoxEle
- .find(".template-infobox-header")
- .filter((_, el) => $(el).text().trim() === "Reception");
-
- const receptionResults: (GameMetadataRating | undefined)[] = [];
- if (receptionEle.length > 0) {
- // we have a match!
-
- const ratingElements = infoBoxEle.find(".template-infobox-type");
-
- // TODO: cleanup this ratnest
- const parseIdFromHref = (href: string): string | undefined => {
- const url = new URL(href);
- const opencriticRegex = /^\/game\/(\d+)\/.+$/;
- switch (url.hostname.toLocaleLowerCase()) {
- case "www.metacritic.com": {
- // https://www.metacritic.com/game/elden-ring/critic-reviews/?platform=pc
- return url.pathname
- .replace("/game/", "")
- .replace("/critic-reviews", "")
- .replace(/\/$/, "");
- }
- case "opencritic.com": {
- // https://opencritic.com/game/12090/elden-ring
- let id = "unknown";
- let matches;
- if ((matches = opencriticRegex.exec(url.pathname)) !== null) {
- matches.forEach((match, _groupIndex) => {
- // logger.log(`Found match, group ${_groupIndex}: ${match}`);
- id = match;
- });
- }
-
- if (id === "unknown") {
- return undefined;
- }
- return id;
- }
- case "www.igdb.com": {
- // https://www.igdb.com/games/elden-ring
- return url.pathname.replace("/games/", "").replace(/\/$/, "");
- }
- default: {
- logger.warn("Pcgamingwiki, unknown host", url.hostname);
- return undefined;
- }
- }
- };
- const getRating = (
- source: MetadataSource,
- ): GameMetadataRating | undefined => {
- const providerEle = ratingElements.filter(
- (_, el) =>
- $(el).text().trim().toLocaleLowerCase() ===
- source.toLocaleLowerCase(),
- );
- if (providerEle.length > 0) {
- // get info associated with provider
- const reviewEle = providerEle
- .first()
- .parent()
- .find(".template-infobox-info")
- .find("a")
- .first();
-
- const href = reviewEle.attr("href");
- if (!href) {
- logger.info(
- `pcgamingwiki: failed to properly get review href for ${source}`,
- );
- return undefined;
- }
- const ratingObj = ratingProviderReview({
- rating: reviewEle.text().trim(),
- });
- if (ratingObj instanceof type.errors) {
- logger.info(
- "pcgamingwiki: failed to properly get review rating",
- ratingObj.summary,
- );
- return undefined;
- }
-
- const id = parseIdFromHref(href);
- if (!id) return undefined;
-
- return {
- mReviewHref: href,
- metadataId: id,
- metadataSource: source,
- mReviewCount: 0,
- // make float within 0 to 1
- mReviewRating: ratingObj.rating / 100,
- };
- }
-
- return undefined;
- };
- receptionResults.push(getRating(MetadataSource.Metacritic));
- receptionResults.push(getRating(MetadataSource.IGDB));
- receptionResults.push(getRating(MetadataSource.OpenCritic));
- }
-
- return {
- shortIntro: introductionEle.find("p").first().text().trim(),
- introduction: introductionEle.text().trim(),
- reception: receptionResults,
- };
- }
-
async search(query: string) {
const searchParams = new URLSearchParams({
action: "cargoquery",
@@ -277,58 +99,43 @@ export class PCGamingWikiProvider implements MetadataProvider {
format: "json",
});
- const response =
- await this.cargoQuery(searchParams);
+ const res = await this.request(searchParams);
- const results: GameMetadataSearchResult[] = [];
- for (const result of response.data.cargoquery) {
+ const mapped = res.data.cargoquery.map((result) => {
const game = result.title;
- const pageContent = await this.getPageContent(game.PageID);
- results.push({
+ const metadata: GameMetadataSearchResult = {
id: game.PageID,
name: game.PageName,
icon: game["Cover URL"] ?? "",
- description: pageContent.shortIntro,
+ description: "", // TODO: need to render the `Introduction` template somehow (or we could just hardcode it)
year:
game.Released !== null && game.Released.length > 0
? // sometimes will provide multiple dates
this.parseTS(game.Released).year
: 0,
- });
- }
+ };
+ return metadata;
+ });
- return results;
+ return mapped;
}
/**
- * Parses the specific format that the wiki returns when specifying an array
- * @param input string or array
+ * Parses the specific format that the wiki returns when specifying a company
+ * @param companyStr
* @returns
*/
- private parseWikiStringArray(input: string | string[]): string[] {
- const cleanStr = (str: string): string => {
- // remove any dumb prefixes we don't care about
- return str.replace("Company:", "").trim();
- };
-
- // input can provides the string as a list
- // ie: "Company:Digerati Distribution,Company:Greylock Studio"
- // or as an array, sometimes the array has empty values
-
+ private parseCompanyStr(companyStr: string): string[] {
const results: string[] = [];
- if (Array.isArray(input)) {
- input.forEach((c) => {
- const clean = cleanStr(c);
- if (clean !== "") results.push(clean);
- });
- } else {
- const items = input.split(",");
- items.forEach((item) => {
- const clean = cleanStr(item);
- if (clean !== "") results.push(clean);
- });
- }
+ // provides the string as a list of companies
+ // ie: "Company:Digerati Distribution,Company:Greylock Studio"
+ const items = companyStr.split(",");
+
+ items.forEach((item) => {
+ // remove the `Company:` and trim and whitespace
+ results.push(item.replace("Company:", "").trim());
+ });
return results;
}
@@ -349,111 +156,65 @@ export class PCGamingWikiProvider implements MetadataProvider {
return websiteStr.replaceAll(/\[|]/g, "").split(" ")[0] ?? "";
}
- private compileTags(game: PCGamingWikiGame): string[] {
- const results: string[] = [];
-
- const properties: StringArrayKeys[] = [
- "Art styles",
- "Genres",
- "Modes",
- "Pacing",
- "Perspectives",
- "Themes",
- ];
-
- // loop through all above keys, get the tags they contain
- properties.forEach((p) => {
- if (game[p] === null) return;
-
- results.push(...this.parseWikiStringArray(game[p]));
- });
-
- return results;
- }
-
- async fetchGame(
- { id, name, publisher, developer, createObject }: _FetchGameMetadataParams,
- context?: TaskRunContext,
- ): Promise {
- context?.logger.info("Using PCGamingWiki provider");
- context?.progress(0);
-
+ async fetchGame({
+ id,
+ name,
+ publisher,
+ developer,
+ createObject,
+ }: _FetchGameMetadataParams): Promise {
const searchParams = new URLSearchParams({
action: "cargoquery",
tables: "Infobox_game",
fields:
- "Infobox_game._pageID=PageID,Infobox_game._pageName=PageName,Infobox_game.Cover_URL,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Genres,Infobox_game.Publishers,Infobox_game.Themes,Infobox_game.Series,Infobox_game.Modes,Infobox_game.Perspectives,Infobox_game.Art_styles,Infobox_game.Pacing",
+ "Infobox_game._pageID=PageID,Infobox_game._pageName=PageName,Infobox_game.Cover_URL,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Genres,Infobox_game.Publishers,Infobox_game.Themes,Infobox_game.Series,Infobox_game.Modes",
where: `Infobox_game._pageID="${id}"`,
format: "json",
});
- const [res, pageContent] = await Promise.all([
- this.cargoQuery(searchParams),
- this.getPageContent(id),
- ]);
+ const res = await this.request(searchParams);
if (res.data.cargoquery.length < 1)
throw new Error("Error in pcgamingwiki, no game");
const game = res.data.cargoquery[0].title;
- const publishers: CompanyModel[] = [];
+ const publishers: Company[] = [];
if (game.Publishers !== null) {
- context?.logger.info("Found publishers, importing...");
- const pubListClean = this.parseWikiStringArray(game.Publishers);
+ const pubListClean = this.parseCompanyStr(game.Publishers);
for (const pub of pubListClean) {
- context?.logger.info(`Importing publisher "${pub}"...`);
-
const res = await publisher(pub);
- if (res === undefined) {
- context?.logger.warn(`Failed to import publisher "${pub}"`);
- continue;
- }
- context?.logger.info(`Imported publisher "${pub}"`);
- // add to publishers
+ if (res === undefined) continue;
publishers.push(res);
}
}
- context?.progress(40);
-
- const developers: CompanyModel[] = [];
+ const developers: Company[] = [];
if (game.Developers !== null) {
- context?.logger.info("Found developers, importing...");
- const devListClean = this.parseWikiStringArray(game.Developers);
+ const devListClean = this.parseCompanyStr(game.Developers);
for (const dev of devListClean) {
- context?.logger.info(`Importing developer "${dev}"...`);
const res = await developer(dev);
- if (res === undefined) {
- context?.logger.warn(`Failed to import developer "${dev}"`);
- continue;
- }
- context?.logger.info(`Imported developer "${dev}"`);
+ if (res === undefined) continue;
developers.push(res);
}
}
- context?.progress(80);
-
- const icon = createObject(
+ const icon =
game["Cover URL"] !== null
- ? game["Cover URL"]
- : jdenticon.toPng(name, 512),
- );
-
- const released = game.Released
- ? DateTime.fromISO(game.Released.split(";")[0]).toJSDate()
- : new Date();
+ ? createObject(game["Cover URL"])
+ : createObject(jdenticon.toPng(name, 512));
const metadata: GameMetadata = {
id: game.PageID,
name: game.PageName,
- shortDescription: pageContent.shortIntro,
- description: pageContent.introduction,
- released,
+ shortDescription: "", // TODO: (again) need to render the `Introduction` template somehow (or we could just hardcode it)
+ description: "",
+ released: game.Released
+ ? DateTime.fromISO(game.Released.split(";")[0]).toJSDate()
+ : new Date(),
- tags: this.compileTags(game),
+ reviewCount: 0,
+ reviewRating: 0,
- reviews: pageContent.reception.filter((v) => typeof v !== "undefined"),
publishers,
developers,
@@ -463,16 +224,13 @@ export class PCGamingWikiProvider implements MetadataProvider {
images: [icon],
};
- context?.logger.info("PCGamingWiki provider finished.");
- context?.progress(100);
-
return metadata;
}
async fetchCompany({
query,
createObject,
- }: _FetchCompanyMetadataParams): Promise {
+ }: _FetchCompanyMetadataParams): Promise {
const searchParams = new URLSearchParams({
action: "cargoquery",
tables: "Company",
@@ -482,16 +240,16 @@ export class PCGamingWikiProvider implements MetadataProvider {
format: "json",
});
- const res = await this.cargoQuery(searchParams);
+ const res = await this.request(searchParams);
- // TODO: replace with company logo
+ // TODO: replace
const icon = createObject(jdenticon.toPng(query, 512));
for (let i = 0; i < res.data.cargoquery.length; i++) {
const company = res.data.cargoquery[i].title;
const fixedCompanyName =
- this.parseWikiStringArray(company.PageName)[0] ?? company.PageName;
+ this.parseCompanyStr(company.PageName)[0] ?? company.PageName;
const metadata: CompanyMetadata = {
id: company.PageID,
@@ -506,6 +264,6 @@ export class PCGamingWikiProvider implements MetadataProvider {
return metadata;
}
- return undefined;
+ throw new Error(`pcgamingwiki failed to find publisher/developer ${query}`);
}
}
diff --git a/server/internal/metadata/types.d.ts b/server/internal/metadata/types.d.ts
index b5286a7..22f30f8 100644
--- a/server/internal/metadata/types.d.ts
+++ b/server/internal/metadata/types.d.ts
@@ -1,4 +1,4 @@
-import type { Company, GameRating } from "~/prisma/client";
+import type { Company } from "~/prisma/client";
import type { TransactionDataType } from "../objects/transactional";
import type { ObjectReference } from "../objects/objectHandler";
@@ -18,15 +18,6 @@ export interface GameMetadataSource {
export type InternalGameMetadataResult = GameMetadataSearchResult &
GameMetadataSource;
-export type GameMetadataRating = Pick<
- GameRating,
- | "metadataSource"
- | "metadataId"
- | "mReviewCount"
- | "mReviewHref"
- | "mReviewRating"
->;
-
export interface GameMetadata {
id: string;
name: string;
@@ -39,9 +30,8 @@ export interface GameMetadata {
publishers: Company[];
developers: Company[];
- tags: string[];
-
- reviews: GameMetadataRating[];
+ reviewCount: number;
+ reviewRating: number;
// Created with another utility function
icon: ObjectReference;
diff --git a/server/internal/news/index.ts b/server/internal/news/index.ts
index 00725eb..a0ea696 100644
--- a/server/internal/news/index.ts
+++ b/server/internal/news/index.ts
@@ -8,7 +8,7 @@ class NewsManager {
description: string;
tags: string[];
authorId: string;
- imageObjectId?: string;
+ image?: string;
}) {
return await prisma.article.create({
data: {
@@ -23,7 +23,7 @@ class NewsManager {
})),
},
- ...(data.imageObjectId && { imageObjectId: data.imageObjectId }),
+ ...(data.image && { image: data.image }),
author: {
connect: {
id: data.authorId,
diff --git a/server/internal/notifications/index.ts b/server/internal/notifications/index.ts
index 5585087..930f317 100644
--- a/server/internal/notifications/index.ts
+++ b/server/internal/notifications/index.ts
@@ -1,42 +1,32 @@
/*
-The notification system handles the receiving, creation and sending of notifications in Drop
+The notification system handles the recieving, creation and sending of notifications in Drop
Design goals:
1. Nonce-based notifications; notifications should only be created once
2. Real-time; use websocket listeners to keep clients up-to-date
*/
-import type { NotificationModel } from "~/prisma/client/models";
+import type { Notification } from "~/prisma/client";
import prisma from "../db/database";
-import type { GlobalACL } from "../acls";
-// type Optional = Pick, K> & Omit;
-
-// TODO: document notification action format
export type NotificationCreateArgs = Pick<
- NotificationModel,
+ Notification,
"title" | "description" | "actions" | "nonce"
-> & { acls: Array };
+>;
class NotificationSystem {
- // userId to acl to listenerId
private listeners = new Map<
string,
- Map<
- string,
- { callback: (notification: NotificationModel) => void; acls: GlobalACL[] }
- >
+ Map void>
>();
listen(
userId: string,
- acls: Array,
id: string,
- callback: (notification: NotificationModel) => void,
+ callback: (notification: Notification) => void,
) {
- if (!this.listeners.has(userId)) this.listeners.set(userId, new Map());
- // eslint-disable-next-line @typescript-eslint/no-extra-non-null-assertion
- this.listeners.get(userId)!!.set(id, { callback, acls });
+ this.listeners.set(userId, new Map());
+ this.listeners.get(userId)?.set(id, callback);
this.catchupListener(userId, id);
}
@@ -46,30 +36,23 @@ class NotificationSystem {
}
private async catchupListener(userId: string, id: string) {
- const listener = this.listeners.get(userId)?.get(id);
- if (!listener)
+ const callback = this.listeners.get(userId)?.get(id);
+ if (!callback)
throw new Error("Failed to catch-up listener: callback does not exist");
const notifications = await prisma.notification.findMany({
- where: { userId: userId, acls: { hasSome: listener.acls } },
+ where: { userId: userId },
orderBy: {
created: "asc", // Oldest first, because they arrive in reverse order
},
});
for (const notification of notifications) {
- await listener.callback(notification);
+ await callback(notification);
}
}
- private async pushNotification(
- userId: string,
- notification: NotificationModel,
- ) {
- for (const [_, listener] of this.listeners.get(userId) ?? []) {
- const hasSome =
- notification.acls.findIndex(
- (e) => listener.acls.findIndex((v) => v === e) != -1,
- ) != -1;
- if (hasSome) await listener.callback(notification);
+ private async pushNotification(userId: string, notification: Notification) {
+ for (const listener of this.listeners.get(userId) ?? []) {
+ await listener[1](notification);
}
}
@@ -78,18 +61,14 @@ class NotificationSystem {
throw new Error("No nonce in notificationCreateArgs");
const notification = await prisma.notification.upsert({
where: {
- userId_nonce: {
- nonce: notificationCreateArgs.nonce,
- userId,
- },
+ nonce: notificationCreateArgs.nonce,
},
update: {
- // we don't need to update the userid right?
- // userId: userId,
+ userId: userId,
...notificationCreateArgs,
},
create: {
- userId,
+ userId: userId,
...notificationCreateArgs,
},
});
@@ -97,27 +76,6 @@ class NotificationSystem {
await this.pushNotification(userId, notification);
}
- /**
- * Internal call to batch push notifications to many users
- * @param notificationCreateArgs
- * @param users
- */
- private async _pushMany(
- notificationCreateArgs: NotificationCreateArgs,
- users: { id: string }[],
- ) {
- const res: Promise[] = [];
- for (const user of users) {
- res.push(this.push(user.id, notificationCreateArgs));
- }
- // wait for all notifications to pass
- await Promise.all(res);
- }
-
- /**
- * Send a notification to all users
- * @param notificationCreateArgs
- */
async pushAll(notificationCreateArgs: NotificationCreateArgs) {
const users = await prisma.user.findMany({
where: { id: { not: "system" } },
@@ -126,27 +84,13 @@ class NotificationSystem {
},
});
- await this._pushMany(notificationCreateArgs, users);
+ for (const user of users) {
+ await this.push(user.id, notificationCreateArgs);
+ }
}
- /**
- * Send a notification to all system level users
- * @param notificationCreateArgs
- * @returns
- */
async systemPush(notificationCreateArgs: NotificationCreateArgs) {
- const users = await prisma.user.findMany({
- where: {
- id: { not: "system" },
- // no reason to send to any users other then admins rn
- admin: true,
- },
- select: {
- id: true,
- },
- });
-
- await this._pushMany(notificationCreateArgs, users);
+ return await this.push("system", notificationCreateArgs);
}
}
diff --git a/server/internal/objects/fsBackend.ts b/server/internal/objects/fsBackend.ts
index aedab6a..34e0800 100644
--- a/server/internal/objects/fsBackend.ts
+++ b/server/internal/objects/fsBackend.ts
@@ -1,5 +1,5 @@
import type { ObjectMetadata, ObjectReference, Source } from "./objectHandler";
-import { ObjectBackend, objectMetadata } from "./objectHandler";
+import { ObjectBackend } from "./objectHandler";
import fs from "fs";
import path from "path";
@@ -8,17 +8,12 @@ import { createHash } from "crypto";
import prisma from "../db/database";
import cacheHandler from "../cache";
import { systemConfig } from "../config/sys-conf";
-import { type } from "arktype";
-import { logger } from "~/server/internal/logging";
-import type pino from "pino";
export class FsObjectBackend extends ObjectBackend {
private baseObjectPath: string;
private baseMetadataPath: string;
private hashStore = new FsHashStore();
- private metadataCache =
- cacheHandler.createCache("ObjectMetadata");
constructor() {
super();
@@ -104,30 +99,17 @@ export class FsObjectBackend extends ObjectBackend {
const objectPath = path.join(this.baseObjectPath, id);
if (!fs.existsSync(objectPath)) return true;
fs.rmSync(objectPath);
- const metadataPath = path.join(this.baseMetadataPath, `${id}.json`);
- if (!fs.existsSync(metadataPath)) return true;
- fs.rmSync(metadataPath);
- // remove item from caches
- await this.metadataCache.remove(id);
+ // remove item from cache
await this.hashStore.delete(id);
return true;
}
async fetchMetadata(
id: ObjectReference,
): Promise {
- const cacheResult = await this.metadataCache.get(id);
- if (cacheResult !== null) return cacheResult;
-
const metadataPath = path.join(this.baseMetadataPath, `${id}.json`);
if (!fs.existsSync(metadataPath)) return undefined;
- const metadataRaw = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
- const metadata = objectMetadata(metadataRaw);
- if (metadata instanceof type.errors) {
- logger.error("FsObjectBackend#fetchMetadata", metadata.summary);
- return undefined;
- }
- await this.metadataCache.set(id, metadata);
- return metadata;
+ const metadata = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
+ return metadata as ObjectMetadata;
}
async writeMetadata(
id: ObjectReference,
@@ -136,7 +118,6 @@ export class FsObjectBackend extends ObjectBackend {
const metadataPath = path.join(this.baseMetadataPath, `${id}.json`);
if (!fs.existsSync(metadataPath)) return false;
fs.writeFileSync(metadataPath, JSON.stringify(metadata));
- await this.metadataCache.set(id, metadata);
return true;
}
async fetchHash(id: ObjectReference): Promise {
@@ -172,38 +153,9 @@ export class FsObjectBackend extends ObjectBackend {
await store.save(id, hashResult);
return typeof hashResult;
}
-
async listAll(): Promise {
return fs.readdirSync(this.baseObjectPath);
}
-
- async cleanupMetadata(taskLogger: pino.Logger) {
- const cleanupLogger = taskLogger ?? logger;
-
- const metadataFiles = fs.readdirSync(this.baseMetadataPath);
- const objects = await this.listAll();
-
- const extraFiles = metadataFiles.filter(
- (file) => !objects.includes(file.replace(/\.json$/, "")),
- );
- cleanupLogger.info(
- `[FsObjectBackend#cleanupMetadata]: Found ${extraFiles.length} metadata files without corresponding objects.`,
- );
- for (const file of extraFiles) {
- const filePath = path.join(this.baseMetadataPath, file);
- try {
- fs.rmSync(filePath);
- cleanupLogger.info(
- `[FsObjectBackend#cleanupMetadata]: Removed ${file}`,
- );
- } catch (error) {
- cleanupLogger.error(
- `[FsObjectBackend#cleanupMetadata]: Failed to remove ${file}`,
- error,
- );
- }
- }
- }
}
class FsHashStore {
diff --git a/server/internal/objects/objectHandler.ts b/server/internal/objects/objectHandler.ts
index 21ec619..edbf8ad 100644
--- a/server/internal/objects/objectHandler.ts
+++ b/server/internal/objects/objectHandler.ts
@@ -14,23 +14,17 @@
* anotherUserId:write
*/
-import { type } from "arktype";
import { parse as getMimeTypeBuffer } from "file-type-mime";
-import type pino from "pino";
import type { Writable } from "stream";
import { Readable } from "stream";
import { getMimeType as getMimeTypeStream } from "stream-mime-type";
export type ObjectReference = string;
-
-export const objectMetadata = type({
- mime: "string",
- permissions: "string[]",
- userMetadata: {
- "[string]": "string",
- },
-});
-export type ObjectMetadata = typeof objectMetadata.infer;
+export type ObjectMetadata = {
+ mime: string;
+ permissions: string[];
+ userMetadata: { [key: string]: string };
+};
export enum ObjectPermission {
Read = "read",
@@ -72,7 +66,6 @@ export abstract class ObjectBackend {
): Promise;
abstract fetchHash(id: ObjectReference): Promise;
abstract listAll(): Promise;
- abstract cleanupMetadata(taskLogger: pino.Logger): Promise;
}
export class ObjectHandler {
@@ -195,7 +188,7 @@ export class ObjectHandler {
* @returns
* @description If we need to fetch a remote resource, it doesn't make sense
* to immediately fetch the object, *then* check permissions.
- * Instead the caller can pass a simple anonymous function, like
+ * Instead the caller can pass a simple anonymous funciton, like
* () => $dropFetch('/my-image');
* And if we actually have permission to write, it fetches it then.
*/
@@ -259,13 +252,4 @@ export class ObjectHandler {
async listAll() {
return await this.backend.listAll();
}
-
- /**
- * Purges metadata for objects that no longer exist
- * This is useful for cleaning up metadata files that are left behinds
- * @returns
- */
- async cleanupMetadata(taskLogger: pino.Logger) {
- return await this.backend.cleanupMetadata(taskLogger);
- }
}
diff --git a/server/internal/objects/transactional.ts b/server/internal/objects/transactional.ts
index bac9475..3155aba 100644
--- a/server/internal/objects/transactional.ts
+++ b/server/internal/objects/transactional.ts
@@ -5,7 +5,6 @@ This is used as a utility in metadata handling, so we only fetch the objects if
import type { Readable } from "stream";
import { randomUUID } from "node:crypto";
import objectHandler from ".";
-import type { TaskRunContext } from "../tasks";
export type TransactionDataType = string | Readable | Buffer;
type TransactionTable = Map; // ID to data
@@ -21,7 +20,6 @@ export class ObjectTransactionalHandler {
new(
metadata: { [key: string]: string },
permissions: Array,
- context?: TaskRunContext,
): [Register, Pull, Dump] {
const transactionId = randomUUID();
@@ -37,16 +35,7 @@ export class ObjectTransactionalHandler {
const pull = async () => {
const transaction = this.record.get(transactionId);
if (!transaction) return;
-
- let progress = 0;
- const increment = 100 / transaction.size;
-
for (const [id, data] of transaction) {
- if (typeof data === "string") {
- context?.logger.info(`Importing object from "${data}"`);
- } else {
- context?.logger.info(`Importing raw object...`);
- }
await objectHandler.createFromSource(
id,
() => {
@@ -58,8 +47,6 @@ export class ObjectTransactionalHandler {
metadata,
permissions,
);
- progress += increment;
- context?.progress(progress);
}
};
diff --git a/server/internal/auth/oidc/index.ts b/server/internal/oidc/index.ts
similarity index 90%
rename from server/internal/auth/oidc/index.ts
rename to server/internal/oidc/index.ts
index 4508d48..24c4e33 100644
--- a/server/internal/auth/oidc/index.ts
+++ b/server/internal/oidc/index.ts
@@ -1,12 +1,9 @@
import { randomUUID } from "crypto";
-import prisma from "../../db/database";
-import type { UserModel } from "~/prisma/client/models";
-import { AuthMec } from "~/prisma/client/enums";
-import objectHandler from "../../objects";
+import prisma from "../db/database";
+import { AuthMec } from "~/prisma/client";
+import objectHandler from "../objects";
import type { Readable } from "stream";
import * as jdenticon from "jdenticon";
-import { systemConfig } from "../../config/sys-conf";
-import { logger } from "~/server/internal/logging";
interface OIDCWellKnown {
authorization_endpoint: string;
@@ -15,15 +12,10 @@ interface OIDCWellKnown {
scopes_supported: string[];
}
-interface OIDCAuthSessionOptions {
- redirect: string | undefined;
-}
-
interface OIDCAuthSession {
redirectUrl: string;
callbackUrl: string;
state: string;
- options: OIDCAuthSessionOptions;
}
interface OIDCUserInfo {
@@ -120,7 +112,7 @@ export class OIDCManager {
const clientId = process.env.OIDC_CLIENT_ID as string | undefined;
const clientSecret = process.env.OIDC_CLIENT_SECRET as string | undefined;
- const externalUrl = systemConfig.getExternalUrl();
+ const externalUrl = process.env.EXTERNAL_URL as string | undefined;
if (!clientId || !clientSecret)
throw new Error("Missing client ID or secret for OIDC");
@@ -140,7 +132,7 @@ export class OIDCManager {
};
}
- generateAuthSession(options?: OIDCAuthSessionOptions): OIDCAuthSession {
+ generateAuthSession(): OIDCAuthSession {
const stateKey = randomUUID();
const normalisedUrl = new URL(
@@ -156,16 +148,12 @@ export class OIDCManager {
redirectUrl: finalUrl,
callbackUrl: redirectUrl,
state: stateKey,
- options: options ?? { redirect: undefined },
};
this.signinStateTable[stateKey] = session;
return session;
}
- async authorize(
- code: string,
- state: string,
- ): Promise<{ user: UserModel; options: OIDCAuthSessionOptions } | string> {
+ async authorize(code: string, state: string) {
const session = this.signinStateTable[state];
if (!session) return "Invalid state parameter";
@@ -203,11 +191,9 @@ export class OIDCManager {
const user = await this.fetchOrCreateUser(userinfo);
- if (typeof user === "string") return user;
-
- return { user, options: session.options };
+ return user;
} catch (e) {
- logger.error(e);
+ console.error(e);
return `Request to identity provider failed: ${e}`;
}
}
diff --git a/server/internal/p2p/headscale.ts b/server/internal/p2p/headscale.ts
new file mode 100644
index 0000000..2472334
--- /dev/null
+++ b/server/internal/p2p/headscale.ts
@@ -0,0 +1,82 @@
+import type { HeadscaleService } from "@drop-oss/headscalez";
+import { HeadscaleControlService, startHeadscale } from "@drop-oss/headscalez";
+import { systemConfig } from "../config/sys-conf";
+import type { Client, User } from "~/prisma/client";
+
+export class HeadscaleManager {
+ private controlURL?: string;
+ private headscaleService?: HeadscaleService;
+ private headscaleClient?: HeadscaleControlService;
+
+ constructor() {
+ this.setup();
+ }
+
+ async setup() {
+ const externalUrl = process.env.CONTROL_URL;
+ if (externalUrl) {
+ this.controlURL = externalUrl;
+ const headscale = await startHeadscale({
+ externalUrl,
+ dir: systemConfig.getHeadscaleFolder(),
+ });
+ this.headscaleService = headscale;
+ this.headscaleClient = new HeadscaleControlService(headscale);
+ }
+ }
+
+ enabled() {
+ return !!this.headscaleService;
+ }
+
+ configuration() {
+ if (!this.controlURL) throw new Error("Headscale not available");
+ return {
+ controlURL: this.controlURL,
+ };
+ }
+
+ private async fetchUser(user: User) {
+ if (!this.headscaleClient)
+ throw new Error("Headscale client not available");
+ const { response } = await this.headscaleClient.client.listUsers({
+ id: 0n,
+ name: user.id,
+ email: "",
+ });
+
+ if (response.users.length == 0) {
+ const { response } = await this.headscaleClient.client.createUser({
+ name: user.id,
+ displayName: user.displayName,
+ email: user.email,
+ pictureUrl: user.profilePictureObjectId,
+ });
+
+ if (!response.user) throw new Error("Could not create user");
+
+ return response.user;
+ }
+
+ return response.users[0];
+ }
+
+ async createPreauthKey(user: User, client: Client) {
+ if (!this.headscaleClient)
+ throw new Error("Headscale client not available");
+
+ const headscaleUser = await this.fetchUser(user);
+ const { response } = await this.headscaleClient.client.createPreAuthKey({
+ user: headscaleUser.name,
+ reusable: false,
+ ephemeral: false,
+ aclTags: ["client", `user:${user.id}`, `client:${client.id}`],
+ });
+
+ if (!response.preAuthKey) throw new Error("Could not create pre-auth key");
+ return response.preAuthKey;
+ }
+}
+
+export const headscaleManager = new HeadscaleManager();
+export default headscaleManager;
diff --git a/server/internal/screenshots/index.ts b/server/internal/screenshots/index.ts
index b41ac03..e8b4911 100644
--- a/server/internal/screenshots/index.ts
+++ b/server/internal/screenshots/index.ts
@@ -5,11 +5,6 @@ import stream from "node:stream/promises";
import prisma from "../db/database";
class ScreenshotManager {
- /**
- * Gets a specific screenshot
- * @param id
- * @returns
- */
async get(id: string) {
return await prisma.screenshot.findUnique({
where: {
@@ -18,27 +13,7 @@ class ScreenshotManager {
});
}
- /**
- * Get all user screenshots
- * @param userId
- * @returns
- */
- async getUserAll(userId: string) {
- const results = await prisma.screenshot.findMany({
- where: {
- userId,
- },
- });
- return results;
- }
-
- /**
- * Get all user screenshots in a specific game
- * @param userId
- * @param gameId
- * @returns
- */
- async getUserAllByGame(userId: string, gameId: string) {
+ async getAllByGame(gameId: string, userId: string) {
const results = await prisma.screenshot.findMany({
where: {
gameId,
@@ -48,35 +23,17 @@ class ScreenshotManager {
return results;
}
- /**
- * Delete a specific screenshot
- * @param id
- */
async delete(id: string) {
- const deletedScreenshot = await prisma.screenshot.delete({
+ await prisma.screenshot.delete({
where: {
id,
},
});
- await objectHandler.deleteAsSystem(deletedScreenshot.objectId);
}
- /**
- * Allows a user to upload a screenshot
- * @param userId
- * @param gameId
- * @param inputStream
- */
- async upload(userId: string, gameId: string, inputStream: IncomingMessage) {
+ async upload(gameId: string, userId: string, inputStream: IncomingMessage) {
const objectId = randomUUID();
- const saveStream = await objectHandler.createWithStream(
- objectId,
- {
- // TODO: set createAt to the time screenshot was taken
- createdAt: new Date().toISOString(),
- },
- [`${userId}:read`], // This is a system tracked object, so we don't want users to have direct write access to it
- );
+ const saveStream = await objectHandler.createWithStream(objectId, {}, []);
if (!saveStream)
throw createError({
statusCode: 500,
@@ -86,12 +43,12 @@ class ScreenshotManager {
// pipe into object store
await stream.pipeline(inputStream, saveStream);
+ // TODO: set createAt to the time screenshot was taken
await prisma.screenshot.create({
data: {
gameId,
userId,
objectId,
- private: true,
},
});
}
diff --git a/server/internal/auth/passwordHash.ts b/server/internal/security/simple.ts
similarity index 100%
rename from server/internal/auth/passwordHash.ts
rename to server/internal/security/simple.ts
diff --git a/server/internal/tasks/group.ts b/server/internal/tasks/group.ts
deleted file mode 100644
index f914272..0000000
--- a/server/internal/tasks/group.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-export const taskGroups = {
- "cleanup:invitations": {
- concurrency: false,
- },
- "cleanup:objects": {
- concurrency: false,
- },
- "cleanup:sessions": {
- concurrency: false,
- },
- "check:update": {
- concurrency: false,
- },
- "import:game": {
- concurrency: true,
- },
- debug: {
- concurrency: true,
- },
-} as const;
-
-export type TaskGroup = keyof typeof taskGroups;
diff --git a/server/internal/tasks/index.ts b/server/internal/tasks/index.ts
index 54433a9..7bba7d0 100644
--- a/server/internal/tasks/index.ts
+++ b/server/internal/tasks/index.ts
@@ -1,102 +1,35 @@
import droplet from "@drop-oss/droplet";
import type { MinimumRequestObject } from "~/server/h3";
-import type { GlobalACL } from "../acls";
import aclManager from "../acls";
-import cleanupInvites from "./registry/invitations";
-import cleanupSessions from "./registry/sessions";
-import checkUpdate from "./registry/update";
-import cleanupObjects from "./registry/objects";
-import { taskGroups, type TaskGroup } from "./group";
-import prisma from "../db/database";
-import { type } from "arktype";
-import pino from "pino";
-import { logger } from "~/server/internal/logging";
-import { Writable } from "node:stream";
-
-// a task that has been run
-type FinishedTask = {
- success: boolean;
- progress: number;
- log: string[];
- error: { title: string; description: string } | undefined;
- name: string;
- taskGroup: TaskGroup;
- acls: string[];
-
- // ISO timestamp of when the task started
- startTime: string;
- // ISO timestamp of when the task ended
- endTime: string | undefined;
-};
-
-// a currently running task in the pool
-type TaskPoolEntry = FinishedTask & {
- clients: Map;
-};
-
/**
* The TaskHandler setups up two-way connections to web clients and manages the state for them
* This allows long-running tasks (like game imports and such) to report progress, success and error states
* easily without re-inventing the wheel every time.
*/
+
+type TaskRegistryEntry = {
+ success: boolean;
+ progress: number;
+ log: string[];
+ error: { title: string; description: string } | undefined;
+ clients: Map;
+ name: string;
+ acls: string[];
+};
+
class TaskHandler {
- // registry of scheduled tasks to be created
- private taskCreators: Map Task> = new Map();
-
- // list of all currently running tasks
- private taskPool = new Map();
- // list of all clients currently connected to tasks
+ // TODO: make these maps, using objects like this has performance impacts
+ // https://typescript-eslint.io/rules/no-dynamic-delete/
+ private taskRegistry = new Map();
private clientRegistry = new Map();
+ startTasks: (() => void)[] = [];
- private dailyScheduledTasks: TaskGroup[] = [
- "cleanup:invitations",
- "cleanup:sessions",
- "check:update",
- "debug",
- ];
- private weeklyScheduledTasks: TaskGroup[] = ["cleanup:objects"];
-
- constructor() {
- // register the cleanup invitations task
- this.saveScheduledTask(cleanupInvites);
- this.saveScheduledTask(cleanupSessions);
- this.saveScheduledTask(checkUpdate);
- this.saveScheduledTask(cleanupObjects);
- //this.saveScheduledTask(debug);
- }
-
- /**
- * Saves scheduled task to the registry
- * @param createTask
- */
- private saveScheduledTask(task: DropTask) {
- this.taskCreators.set(task.taskGroup, task.build);
- }
-
- async create(task: Task) {
- if (this.hasTask(task.id)) throw new Error("Task with ID already exists.");
-
+ create(task: Task) {
let updateCollectTimeout: NodeJS.Timeout | undefined;
let updateCollectResolves: Array<(value: unknown) => void> = [];
let logOffset: number = 0;
- // if taskgroup disallows concurrency
- if (!taskGroups[task.taskGroup].concurrency) {
- for (const existingTask of this.taskPool.values()) {
- // if a task is already running, we don't want to start another
- if (existingTask.taskGroup === task.taskGroup) {
- // TODO: handle this more gracefully, maybe with a queue? should be configurable
- logger.warn(
- `Task group ${task.taskGroup} does not allow concurrent tasks. Task ${task.id} will not be started.`,
- );
- throw new Error(
- `Task group ${task.taskGroup} does not allow concurrent tasks.`,
- );
- }
- }
- }
-
const updateAllClients = (reset = false) =>
new Promise((r) => {
if (updateCollectTimeout) {
@@ -104,7 +37,7 @@ class TaskHandler {
return;
}
updateCollectTimeout = setTimeout(() => {
- const taskEntry = this.taskPool.get(task.id);
+ const taskEntry = this.taskRegistry.get(task.id);
if (!taskEntry) return;
const taskMessage: TaskMessage = {
@@ -133,81 +66,38 @@ class TaskHandler {
}, 100);
});
- const taskPool = this.taskPool;
-
- // Custom writable stream to capture logs
- const logStream = new Writable({
- objectMode: true,
- write(chunk, encoding, callback) {
- try {
- // chunk is a stringified JSON log line
- const logObj = JSON.parse(chunk.toString());
- const taskEntry = taskPool.get(task.id);
- if (taskEntry) {
- taskEntry.log.push(JSON.stringify(logObj));
- updateAllClients();
- }
- } catch (e) {
- // fallback: ignore or log error
- logger.error("Failed to parse log chunk", {
- error: e,
- chunk: chunk,
- });
- }
- callback();
- },
- });
-
- // Use pino with the custom stream
- const taskLogger = pino(
- {
- // You can configure timestamp, level, etc. here
- timestamp: pino.stdTimeFunctions.isoTime,
- base: null, // Remove pid/hostname if not needed
- formatters: {
- level(label) {
- return {
- level: label,
- };
- },
- },
- },
- logStream,
- );
-
const progress = (progress: number) => {
- if (progress < 0 || progress > 100) {
- logger.error("Progress must be between 0 and 100", { progress });
- return;
- }
- const taskEntry = this.taskPool.get(task.id);
+ const taskEntry = this.taskRegistry.get(task.id);
if (!taskEntry) return;
taskEntry.progress = progress;
- // log(`Progress: ${progress}%`);
updateAllClients();
};
- this.taskPool.set(task.id, {
+ const log = (entry: string) => {
+ const taskEntry = this.taskRegistry.get(task.id);
+ if (!taskEntry) return;
+ taskEntry.log.push(entry);
+ updateAllClients();
+ };
+
+ this.taskRegistry.set(task.id, {
name: task.name,
- taskGroup: task.taskGroup,
success: false,
progress: 0,
error: undefined,
log: [],
clients: new Map(),
acls: task.acls,
- startTime: new Date().toISOString(),
- endTime: undefined,
});
- await updateAllClients(true);
+ updateAllClients(true);
droplet.callAltThreadFunc(async () => {
- const taskEntry = this.taskPool.get(task.id);
+ const taskEntry = this.taskRegistry.get(task.id);
if (!taskEntry) throw new Error("No task entry");
try {
- await task.run({ progress, logger: taskLogger });
+ await task.run({ progress, log });
taskEntry.success = true;
} catch (error: unknown) {
taskEntry.success = false;
@@ -216,35 +106,13 @@ class TaskHandler {
description: (error as string).toString(),
};
}
-
- taskEntry.endTime = new Date().toISOString();
await updateAllClients();
for (const clientId of taskEntry.clients.keys()) {
if (!this.clientRegistry.get(clientId)) continue;
this.disconnect(clientId, task.id);
}
-
- await prisma.task.create({
- data: {
- id: task.id,
- taskGroup: taskEntry.taskGroup,
- name: taskEntry.name,
-
- started: taskEntry.startTime,
- ended: taskEntry.endTime,
-
- success: taskEntry.success,
- progress: taskEntry.progress,
- log: taskEntry.log,
-
- acls: taskEntry.acls,
-
- ...(taskEntry.error ? { error: taskEntry.error } : undefined),
- },
- });
-
- this.taskPool.delete(task.id);
+ this.taskRegistry.delete(task.id);
});
}
@@ -254,12 +122,7 @@ class TaskHandler {
peer: PeerImpl,
request: MinimumRequestObject,
) {
- const task =
- this.taskPool.get(taskId) ??
- (await prisma.task.findFirst({
- where: { id: taskId },
- orderBy: { started: "desc" },
- }));
+ const task = this.taskRegistry.get(taskId);
if (!task) {
peer.send(
`error/${taskId}/Unknown task/Drop couldn't find the task you're looking for.`,
@@ -269,7 +132,7 @@ class TaskHandler {
const allowed = await aclManager.hasACL(request, task.acls);
if (!allowed) {
- // logger.warn("user does not have necessary ACLs");
+ console.warn("user does not have necessary ACLs");
peer.send(
`error/${taskId}/Unknown task/Drop couldn't find the task you're looking for.`,
);
@@ -277,17 +140,13 @@ class TaskHandler {
}
this.clientRegistry.set(clientId, peer);
- if ("clients" in task) {
- task.clients.set(clientId, true); // Uniquely insert client to avoid sending duplicate traffic
- }
+ task.clients.set(clientId, true); // Uniquely insert client to avoid sending duplicate traffic
const catchupMessage: TaskMessage = {
id: taskId,
name: task.name,
success: task.success,
- error: task.error as unknown as
- | { title: string; description: string }
- | undefined,
+ error: task.error,
log: task.log,
progress: task.progress,
};
@@ -301,8 +160,8 @@ class TaskHandler {
}
disconnectAll(id: string) {
- for (const taskId of this.taskPool.keys()) {
- this.taskPool.get(taskId)?.clients.delete(id);
+ for (const taskId of this.taskRegistry.keys()) {
+ this.taskRegistry.get(taskId)?.clients.delete(id);
this.sendDisconnectEvent(id, taskId);
}
@@ -310,13 +169,13 @@ class TaskHandler {
}
disconnect(id: string, taskId: string) {
- const task = this.taskPool.get(taskId);
+ const task = this.taskRegistry.get(taskId);
if (!task) return false;
task.clients.delete(id);
this.sendDisconnectEvent(id, taskId);
- const allClientIds = this.taskPool
+ const allClientIds = this.taskRegistry
.values()
.toArray()
.map((e) => e.clients.keys().toArray())
@@ -328,126 +187,18 @@ class TaskHandler {
return true;
}
-
- runningTasks() {
- return this.taskPool
- .entries()
- .map(([id, value]) => ({ ...value, id, log: undefined }))
- .toArray();
- }
-
- hasTask(id: string) {
- return this.taskPool.has(id);
- }
-
- dailyTasks() {
- return this.dailyScheduledTasks;
- }
-
- weeklyTasks() {
- return this.weeklyScheduledTasks;
- }
-
- async runTaskGroupByName(name: TaskGroup) {
- const taskConstructor = this.taskCreators.get(name);
- if (!taskConstructor) {
- logger.warn(`No task found for group ${name}`);
- return;
- }
- const task = taskConstructor();
- await this.create(task);
- return task.id;
- }
-
- /**
- * Runs all daily tasks that are scheduled to run once a day.
- */
- async triggerDailyTasks() {
- for (const taskGroup of this.dailyScheduledTasks) {
- const mostRecent = await prisma.task.findFirst({
- where: {
- taskGroup,
- },
- orderBy: {
- ended: "desc",
- },
- });
- if (mostRecent) {
- const currentTime = Date.now();
- const lastRun = mostRecent.ended.getTime();
- const difference = currentTime - lastRun;
- if (difference < 1000 * 60 * 60 * 24) {
- // If it's been less than one day
- continue; // skip
- }
- }
- await this.runTaskGroupByName(taskGroup);
- }
-
- // After running daily tasks, trigger weekly tasks as well
- await this.triggerWeeklyTasks();
- }
-
- private async triggerWeeklyTasks() {
- for (const taskGroup of this.weeklyScheduledTasks) {
- const mostRecent = await prisma.task.findFirst({
- where: {
- taskGroup,
- },
- orderBy: {
- ended: "desc",
- },
- });
- if (mostRecent) {
- const currentTime = Date.now();
- const lastRun = mostRecent.ended.getTime();
- const difference = currentTime - lastRun;
- if (difference < 1000 * 60 * 60 * 24 * 7) {
- // If it's been less than one week
- continue; // skip
- }
- }
- await this.runTaskGroupByName(taskGroup);
- }
- }
}
export type TaskRunContext = {
progress: (progress: number) => void;
- logger: typeof logger;
+ log: (message: string) => void;
};
-export function wrapTaskContext(
- context: TaskRunContext,
- options: { min: number; max: number; prefix: string },
-): TaskRunContext {
- const child = context.logger.child({
- prefix: options.prefix,
- });
-
- return {
- progress(progress) {
- if (progress > 100 || progress < 0) {
- logger.warn("[wrapTaskContext] progress must be between 0 and 100");
- }
-
- // I was too tired to figure this out
- // https://stackoverflow.com/a/929107
- const oldRange = 100;
- const newRange = options.max - options.min;
- const adjustedProgress = (progress * newRange) / oldRange + options.min;
- return context.progress(adjustedProgress);
- },
- logger: child,
- };
-}
-
export interface Task {
id: string;
- taskGroup: TaskGroup;
name: string;
run: (context: TaskRunContext) => Promise;
- acls: GlobalACL[];
+ acls: string[];
}
export type TaskMessage = {
@@ -455,73 +206,14 @@ export type TaskMessage = {
name: string;
success: boolean;
progress: number;
- error: null | undefined | { title: string; description: string };
+ error: undefined | { title: string; description: string };
log: string[];
reset?: boolean;
};
export type PeerImpl = {
send: (message: string) => void;
- close: () => void;
};
-export interface BuildTask {
- buildId: () => string;
- taskGroup: TaskGroup;
- name: string;
- run: (context: TaskRunContext) => Promise;
- acls: GlobalACL[];
-}
-
-interface DropTask {
- taskGroup: TaskGroup;
- build: () => Task;
-}
-
-export const TaskLog = type({
- timestamp: "string",
- message: "string",
- level: "string",
-});
-
-// /**
-// * Create a log message with a timestamp in the format YYYY-MM-DD HH:mm:ss.SSS UTC
-// * @param message
-// * @returns
-// */
-// function msgWithTimestamp(message: string): string {
-// const now = new Date();
-
-// const pad = (n: number, width = 2) => n.toString().padStart(width, "0");
-
-// const year = now.getUTCFullYear();
-// const month = pad(now.getUTCMonth() + 1);
-// const day = pad(now.getUTCDate());
-
-// const hours = pad(now.getUTCHours());
-// const minutes = pad(now.getUTCMinutes());
-// const seconds = pad(now.getUTCSeconds());
-// const milliseconds = pad(now.getUTCMilliseconds(), 3);
-
-// const log: typeof TaskLog.infer = {
-// timestamp: `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds} UTC`,
-// message,
-// };
-// return JSON.stringify(log);
-// }
-
-export function defineDropTask(buildTask: BuildTask): DropTask {
- return {
- taskGroup: buildTask.taskGroup,
- build: () => ({
- id: buildTask.buildId(),
- taskGroup: buildTask.taskGroup,
- name: buildTask.name,
- run: buildTask.run,
- acls: buildTask.acls,
- }),
- };
-}
-
export const taskHandler = new TaskHandler();
export default taskHandler;
diff --git a/server/internal/tasks/registry/debug.ts b/server/internal/tasks/registry/debug.ts
deleted file mode 100644
index 9cd8a4a..0000000
--- a/server/internal/tasks/registry/debug.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { defineDropTask } from "..";
-
-export default defineDropTask({
- buildId: () => `debug:${new Date().toISOString()}`,
- name: "Debug Task",
- acls: ["system:maintenance:read"],
- taskGroup: "debug",
- async run({ progress, logger }) {
- const amount = 1000;
- for (let i = 0; i < amount; i++) {
- progress((i / amount) * 100);
- logger.info(`dajksdkajd ${i}`);
- logger.warn("warning");
- logger.error("error\nmultiline and stuff\nwoah more lines");
- await new Promise((r) => setTimeout(r, 1500));
- }
- },
-});
diff --git a/server/internal/tasks/registry/invitations.ts b/server/internal/tasks/registry/invitations.ts
deleted file mode 100644
index a247f7b..0000000
--- a/server/internal/tasks/registry/invitations.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import prisma from "~/server/internal/db/database";
-import { defineDropTask } from "..";
-
-export default defineDropTask({
- buildId: () => `cleanup:invitations:${new Date().toISOString()}`,
- name: "Cleanup Invitations",
- acls: ["system:maintenance:read"],
- taskGroup: "cleanup:invitations",
- async run({ progress, logger }) {
- logger.info("Cleaning invitations");
-
- const now = new Date();
-
- await prisma.invitation.deleteMany({
- where: {
- expires: {
- lt: now,
- },
- },
- });
-
- logger.info("Done");
- progress(100);
- },
-});
diff --git a/server/internal/tasks/registry/sessions.ts b/server/internal/tasks/registry/sessions.ts
deleted file mode 100644
index 6839829..0000000
--- a/server/internal/tasks/registry/sessions.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import sessionHandler from "~/server/internal/session";
-import { defineDropTask } from "..";
-
-export default defineDropTask({
- buildId: () => `cleanup:sessions:${new Date().toISOString()}`,
- name: "Cleanup Sessions",
- acls: ["system:maintenance:read"],
- taskGroup: "cleanup:sessions",
- async run({ progress, logger }) {
- logger.info("Cleaning up sessions");
- await sessionHandler.cleanupSessions();
- logger.info("Done");
- progress(100);
- },
-});
diff --git a/server/internal/tasks/registry/update.ts b/server/internal/tasks/registry/update.ts
deleted file mode 100644
index 452fd19..0000000
--- a/server/internal/tasks/registry/update.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-import { type } from "arktype";
-import * as semver from "semver";
-import { defineDropTask } from "..";
-import { systemConfig } from "../../config/sys-conf";
-import notificationSystem from "../../notifications";
-
-const latestRelease = type({
- url: "string", // api url for specific release
- html_url: "string", // user facing url
- id: "number", // release id
- tag_name: "string", // tag used for release
- name: "string", // release name
- draft: "boolean",
- prerelease: "boolean",
- created_at: "string",
- published_at: "string",
-});
-
-export default defineDropTask({
- buildId: () => `check:update:${new Date().toISOString()}`,
- name: "Check for Update",
- acls: ["system:maintenance:read"],
- taskGroup: "check:update",
- async run({ progress, logger }) {
- // TODO: maybe implement some sort of rate limit thing to prevent this from calling github api a bunch in the event of crashloop or whatever?
- // probably will require custom task scheduler for object cleanup anyway, so something to thing about
-
- if (!systemConfig.shouldCheckForUpdates()) {
- logger.info("Update check is disabled by configuration");
- progress(100);
- return;
- }
-
- logger.info("Checking for update");
-
- const currVerStr = systemConfig.getDropVersion();
- const currVer = semver.coerce(currVerStr);
- if (currVer === null) {
- const msg = "Drop provided a invalid semver tag";
- logger.info(msg);
- throw new Error(msg);
- }
- progress(30);
-
- const response = await fetch(
- "https://api.github.com/repos/Drop-OSS/drop/releases/latest",
- );
- progress(50);
-
- // if response failed somehow
- if (!response.ok) {
- logger.info("Failed to check for update ", {
- status: response.status,
- body: response.body,
- });
-
- throw new Error(
- `Failed to check for update: ${response.status} ${response.body}`,
- );
- }
-
- // parse and validate response
- const resJson = await response.json();
- const body = latestRelease(resJson);
- if (body instanceof type.errors) {
- logger.info(body.summary);
- logger.info("GitHub Api response" + JSON.stringify(resJson));
- throw new Error(
- `GitHub Api response did not match expected schema: ${body.summary}`,
- );
- }
-
- // parse remote version
- const latestVer = semver.coerce(body.tag_name);
- if (latestVer === null) {
- const msg = "Github Api returned invalid semver tag";
- logger.info(msg);
- throw new Error(msg);
- }
- progress(70);
-
- // TODO: handle prerelease identifiers https://github.com/npm/node-semver#prerelease-identifiers
- // check if is newer version
- if (semver.gt(latestVer, currVer)) {
- logger.info("Update available");
- notificationSystem.systemPush({
- nonce: `drop-update-available-${currVer}-to-${latestVer}`,
- title: `Update available to v${latestVer}`,
- description: `A new version of Drop is available v${latestVer}`,
- actions: [`View|${body.html_url}`],
- acls: ["system:notifications:read"],
- });
- } else {
- logger.info("no update available");
- }
-
- logger.info("Done");
- progress(100);
- },
-});
diff --git a/server/internal/utils/handlefileupload.ts b/server/internal/utils/handlefileupload.ts
index 4e36c44..e5fe80c 100644
--- a/server/internal/utils/handlefileupload.ts
+++ b/server/internal/utils/handlefileupload.ts
@@ -6,21 +6,23 @@ export async function handleFileUpload(
h3: H3Event,
metadata: { [key: string]: string },
permissions: Array,
- max = -1,
-): Promise<[string[], { [key: string]: string }, Pull, Dump] | undefined> {
+): Promise<
+ [string | undefined, { [key: string]: string }, Pull, Dump] | undefined
+> {
const formData = await readMultipartFormData(h3);
if (!formData) return undefined;
const transactionalHandler = new ObjectTransactionalHandler();
const [add, pull, dump] = transactionalHandler.new(metadata, permissions);
const options: { [key: string]: string } = {};
- const ids = [];
+ let id;
for (const entry of formData) {
if (entry.filename) {
- if (max > 0 && ids.length >= max) continue;
+ // Only pick one file
+ if (id) continue;
// Add file to transaction handler so we can void it later if we error out
- ids.push(add(entry.data));
+ id = add(entry.data);
continue;
}
if (!entry.name) continue;
@@ -28,5 +30,5 @@ export async function handleFileUpload(
options[entry.name] = entry.data.toString("utf-8");
}
- return [ids, options, pull, dump];
+ return [id, options, pull, dump];
}
diff --git a/server/internal/utils/parseplatform.ts b/server/internal/utils/parseplatform.ts
index 5a00e95..fd69e38 100644
--- a/server/internal/utils/parseplatform.ts
+++ b/server/internal/utils/parseplatform.ts
@@ -1,4 +1,4 @@
-import { Platform } from "~/prisma/client/enums";
+import { Platform } from "~/prisma/client";
export function parsePlatform(platform: string) {
switch (platform.toLowerCase()) {
diff --git a/server/middleware/latency.ts b/server/middleware/latency.ts
deleted file mode 100644
index cfa2508..0000000
--- a/server/middleware/latency.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export default defineEventHandler(async () => {
- // await new Promise((r) => setTimeout(r, 700));
-});
diff --git a/server/plugins/01.system-init.ts b/server/plugins/01.system-init.ts
index edffdcc..a28edbe 100644
--- a/server/plugins/01.system-init.ts
+++ b/server/plugins/01.system-init.ts
@@ -3,7 +3,7 @@ import prisma from "~/server/internal/db/database";
export default defineNitroPlugin(async (_nitro) => {
// Ensure system user exists
// The system user owns any user-based code
- // that we want to reuse for the app
+ // that we want to re-use for the app
// e.g. notifications
await prisma.user.upsert({
where: {
diff --git a/server/plugins/02.setup-admin.ts b/server/plugins/02.setup-admin.ts
index 25a8704..1d4a128 100644
--- a/server/plugins/02.setup-admin.ts
+++ b/server/plugins/02.setup-admin.ts
@@ -1,18 +1,6 @@
-import { APITokenMode } from "~/prisma/client/enums";
import prisma from "~/server/internal/db/database";
-import { systemConfig } from "../internal/config/sys-conf";
-import { logger } from "../internal/logging";
export default defineNitroPlugin(async (_nitro) => {
- await prisma.aPIToken.deleteMany({
- where: {
- acls: {
- hasSome: ["setup"],
- },
- mode: APITokenMode.System,
- },
- });
-
const userCount = await prisma.user.count({
where: { id: { not: "system" } },
});
@@ -22,14 +10,18 @@ export default defineNitroPlugin(async (_nitro) => {
// but has not been configured
// so it should be in-place
- const token = await prisma.aPIToken.create({
- data: {
- name: "Setup Wizard",
- mode: APITokenMode.System,
- acls: ["setup"],
+ // Create admin invitation
+ await prisma.invitation.upsert({
+ where: {
+ id: "admin",
+ },
+ create: {
+ id: "admin",
+ isAdmin: true,
+ expires: new Date("4096-01-01"),
+ },
+ update: {
+ isAdmin: true,
},
});
-
- const setupUrl = `${systemConfig.getExternalUrl()}/setup?token=${token.token}`;
- logger.info(`Open ${setupUrl} in a browser to get started with Drop.`);
});
diff --git a/server/plugins/03.metadata-init.ts b/server/plugins/03.metadata-init.ts
index c9f2616..aa47bf3 100644
--- a/server/plugins/03.metadata-init.ts
+++ b/server/plugins/03.metadata-init.ts
@@ -5,7 +5,6 @@ import { GiantBombProvider } from "../internal/metadata/giantbomb";
import { IGDBProvider } from "../internal/metadata/igdb";
import { ManualMetadataProvider } from "../internal/metadata/manual";
import { PCGamingWikiProvider } from "../internal/metadata/pcgamingwiki";
-import { logger } from "~/server/internal/logging";
export default defineNitroPlugin(async (_nitro) => {
const metadataProviders = [
@@ -22,9 +21,9 @@ export default defineNitroPlugin(async (_nitro) => {
const id = prov.source();
providers.set(id, prov);
- logger.info(`enabled metadata provider: ${prov.name()}`);
+ console.log(`enabled metadata provider: ${prov.name()}`);
} catch (e) {
- logger.warn(`skipping metadata provider setup: ${e}`);
+ console.warn(`skipping metadata provider setup: ${e}`);
}
}
@@ -36,7 +35,7 @@ export default defineNitroPlugin(async (_nitro) => {
const priority = max * 2 - index; // Offset by the length --- (max - index) + max
const provider = providers.get(providerId);
if (!provider) {
- logger.warn(`failed to add existing metadata provider: ${providerId}`);
+ console.warn(`failed to add existing metadata provider: ${providerId}`);
continue;
}
metadataHandler.addProvider(provider, priority);
diff --git a/server/plugins/04.auth-init.ts b/server/plugins/04.auth-init.ts
index a2f3e5b..1c0bc24 100644
--- a/server/plugins/04.auth-init.ts
+++ b/server/plugins/04.auth-init.ts
@@ -1,5 +1,39 @@
-import authManager from "~/server/internal/auth";
+import { AuthMec } from "~/prisma/client";
+import { OIDCManager } from "../internal/oidc";
+
+export const enabledAuthManagers: {
+ [AuthMec.Simple]: boolean;
+ [AuthMec.OpenID]: OIDCManager | undefined;
+} = {
+ [AuthMec.Simple]: false,
+ [AuthMec.OpenID]: undefined,
+};
+
+const initFunctions: {
+ [K in keyof typeof enabledAuthManagers]: () => Promise;
+} = {
+ [AuthMec.OpenID]: OIDCManager.prototype.create,
+ [AuthMec.Simple]: async () => {
+ const disabled = process.env.DISABLE_SIMPLE_AUTH as string | undefined;
+ return !disabled;
+ },
+};
export default defineNitroPlugin(async () => {
- await authManager.init();
+ for (const [key, init] of Object.entries(initFunctions)) {
+ try {
+ const object = await init();
+ if (!object) break;
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ (enabledAuthManagers as any)[key] = object;
+ console.log(`enabled auth: ${key}`);
+ } catch (e) {
+ console.warn(e);
+ }
+ }
+
+ // Add every other auth mechanism here, and fall back to simple if none of them are enabled
+ if (!enabledAuthManagers[AuthMec.OpenID]) {
+ enabledAuthManagers[AuthMec.Simple] = true;
+ }
});
diff --git a/server/plugins/05.library-init.ts b/server/plugins/05.library-init.ts
deleted file mode 100644
index 9891b51..0000000
--- a/server/plugins/05.library-init.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import { LibraryBackend } from "~/prisma/client/enums";
-import prisma from "../internal/db/database";
-import type { JsonValue } from "@prisma/client/runtime/library";
-import type { LibraryProvider } from "../internal/library/provider";
-import type { FilesystemProviderConfig } from "../internal/library/providers/filesystem";
-import { FilesystemProvider } from "../internal/library/providers/filesystem";
-import libraryManager from "../internal/library";
-import path from "path";
-import { FlatFilesystemProvider } from "../internal/library/providers/flat";
-import { logger } from "~/server/internal/logging";
-
-export const libraryConstructors: {
- [key in LibraryBackend]: (
- value: JsonValue,
- id: string,
- ) => LibraryProvider;
-} = {
- Filesystem: function (
- value: JsonValue,
- id: string,
- ): LibraryProvider {
- return new FilesystemProvider(value, id);
- },
- FlatFilesystem: function (
- value: JsonValue,
- id: string,
- ): LibraryProvider {
- return new FlatFilesystemProvider(value, id);
- },
-};
-
-export default defineNitroPlugin(async () => {
- let successes = 0;
- const libraries = await prisma.library.findMany({});
-
- // Add migration handler
- const legacyPath = process.env.LIBRARY;
- if (legacyPath && libraries.length == 0) {
- const options: typeof FilesystemProviderConfig.infer = {
- baseDir: path.resolve(legacyPath),
- };
-
- const library = await prisma.library.create({
- data: {
- name: "Auto-created",
- backend: LibraryBackend.Filesystem,
- options,
- },
- });
-
- libraries.push(library);
-
- // Update all existing games
- await prisma.game.updateMany({
- where: {
- libraryId: null,
- },
- data: {
- libraryId: library.id,
- },
- });
- }
-
- // Delete all games that don't have a library provider after the legacy handler
- // (leftover from a bug)
- await prisma.game.deleteMany({
- where: {
- libraryId: null,
- },
- });
-
- for (const library of libraries) {
- const constructor = libraryConstructors[library.backend];
- try {
- const provider = constructor(library.options, library.id);
- libraryManager.addLibrary(provider);
- successes++;
- } catch (e) {
- logger.warn(
- `Failed to create library (${library.id}) of type ${library.backend}:\n ${e}`,
- );
- }
- }
-
- if (successes == 0) {
- logger.warn(
- "No library was successfully initialised. Please check for errors. If you have just set up an instance, this is normal.",
- );
- }
-});
diff --git a/server/plugins/redirect.ts b/server/plugins/redirect.ts
new file mode 100644
index 0000000..8218a0c
--- /dev/null
+++ b/server/plugins/redirect.ts
@@ -0,0 +1,27 @@
+import { H3Error } from "h3";
+import sessionHandler from "../internal/session";
+
+export default defineNitroPlugin((nitro) => {
+ nitro.hooks.hook("error", async (error, { event }) => {
+ if (!event) return;
+
+ // Don't handle for API routes
+ if (event.path.startsWith("/api")) return;
+ if (event.path.startsWith("/auth")) return;
+
+ // Make sure it's a web error
+ if (!(error instanceof H3Error)) return;
+
+ switch (error.statusCode) {
+ case 401:
+ case 403: {
+ const user = await sessionHandler.getSession(event);
+ if (user) break;
+ return sendRedirect(
+ event,
+ `/auth/signin?redirect=${encodeURIComponent(event.path)}`,
+ );
+ }
+ }
+ });
+});
diff --git a/server/plugins/tasks.ts b/server/plugins/tasks.ts
index 3a31fd5..3c8dde4 100644
--- a/server/plugins/tasks.ts
+++ b/server/plugins/tasks.ts
@@ -1,4 +1,7 @@
export default defineNitroPlugin(async (_nitro) => {
// all tasks we should run on server boot
- await runTask("dailyTasks");
+ await Promise.all([
+ runTask("cleanup:invitations"),
+ runTask("cleanup:sessions"),
+ ]);
});
diff --git a/server/routes/auth/callback/oidc.get.ts b/server/routes/auth/callback/oidc.get.ts
index 5aba8fd..e2a6854 100644
--- a/server/routes/auth/callback/oidc.get.ts
+++ b/server/routes/auth/callback/oidc.get.ts
@@ -1,16 +1,7 @@
import sessionHandler from "~/server/internal/session";
-import authManager from "~/server/internal/auth";
-
-defineRouteMeta({
- openAPI: {
- tags: ["Auth"],
- description: "OIDC Signin callback",
- parameters: [],
- },
-});
+import { enabledAuthManagers } from "~/server/plugins/04.auth-init";
export default defineEventHandler(async (h3) => {
- const enabledAuthManagers = authManager.getAuthProviders();
if (!enabledAuthManagers.OpenID) return sendRedirect(h3, "/auth/signin");
const manager = enabledAuthManagers.OpenID;
@@ -30,19 +21,15 @@ export default defineEventHandler(async (h3) => {
statusMessage: "No state in query params.",
});
- const result = await manager.authorize(code, state);
+ const user = await manager.authorize(code, state);
- if (typeof result === "string")
+ if (typeof user === "string")
throw createError({
statusCode: 403,
- statusMessage: `Failed to sign in: "${result}". Please try again.`,
+ statusMessage: `Failed to sign in: "${user}". Please try again.`,
});
- await sessionHandler.signin(h3, result.user.id, true);
-
- if (result.options.redirect) {
- return sendRedirect(h3, result.options.redirect);
- }
+ await sessionHandler.signin(h3, user.id, true);
return sendRedirect(h3, "/");
});
diff --git a/server/routes/auth/oidc.get.ts b/server/routes/auth/oidc.get.ts
index 8ba7c74..be3cf94 100644
--- a/server/routes/auth/oidc.get.ts
+++ b/server/routes/auth/oidc.get.ts
@@ -1,25 +1,10 @@
-import authManager from "~/server/internal/auth";
-
-defineRouteMeta({
- openAPI: {
- tags: ["Auth"],
- description: "OIDC Signin redirect",
- parameters: [],
- },
-});
+import { enabledAuthManagers } from "~/server/plugins/04.auth-init";
export default defineEventHandler((h3) => {
- const redirect = getQuery(h3).redirect?.toString();
-
- const enabledAuthManagers = authManager.getAuthProviders();
- if (!enabledAuthManagers.OpenID)
- return sendRedirect(
- h3,
- `/auth/signin${redirect ? `?redirect=${encodeURIComponent(redirect)}` : ""}`,
- );
+ if (!enabledAuthManagers.OpenID) return sendRedirect(h3, "/auth/signin");
const manager = enabledAuthManagers.OpenID;
- const { redirectUrl } = manager.generateAuthSession({ redirect });
+ const { redirectUrl } = manager.generateAuthSession();
return sendRedirect(h3, redirectUrl);
});
diff --git a/server/routes/auth/signout.get.ts b/server/routes/auth/signout.get.ts
index 3f0b277..ebeb6f7 100644
--- a/server/routes/auth/signout.get.ts
+++ b/server/routes/auth/signout.get.ts
@@ -1,13 +1,5 @@
import sessionHandler from "../../internal/session";
-defineRouteMeta({
- openAPI: {
- tags: ["Auth"],
- description: "Tells server to deauthorize this session",
- parameters: [],
- },
-});
-
export default defineEventHandler(async (h3) => {
await sessionHandler.signout(h3);
diff --git a/server/tasks/cleanup/invitations.ts b/server/tasks/cleanup/invitations.ts
new file mode 100644
index 0000000..b2afc45
--- /dev/null
+++ b/server/tasks/cleanup/invitations.ts
@@ -0,0 +1,23 @@
+import prisma from "~/server/internal/db/database";
+
+export default defineTask({
+ meta: {
+ name: "cleanup:invitations",
+ },
+ async run() {
+ console.log("[Task cleanup:invitations]: Cleaning invitations");
+
+ const now = new Date();
+
+ await prisma.invitation.deleteMany({
+ where: {
+ expires: {
+ lt: now,
+ },
+ },
+ });
+
+ console.log("[Task cleanup:invitations]: Done");
+ return { result: true };
+ },
+});
diff --git a/server/internal/tasks/registry/objects.ts b/server/tasks/cleanup/objects.ts
similarity index 62%
rename from server/internal/tasks/registry/objects.ts
rename to server/tasks/cleanup/objects.ts
index 63a5e71..62955dc 100644
--- a/server/internal/tasks/registry/objects.ts
+++ b/server/tasks/cleanup/objects.ts
@@ -1,6 +1,5 @@
import prisma from "~/server/internal/db/database";
import objectHandler from "~/server/internal/objects";
-import { defineDropTask } from "..";
type FieldReferenceMap = {
[modelName: string]: {
@@ -10,51 +9,29 @@ type FieldReferenceMap = {
};
};
-export default defineDropTask({
- buildId: () => `cleanup:objects:${new Date().toISOString()}`,
- name: "Cleanup Objects",
- acls: ["system:maintenance:read"],
- taskGroup: "cleanup:objects",
- async run({ progress, logger }) {
- logger.info("Cleaning unreferenced objects");
+export default defineTask({
+ meta: {
+ name: "cleanup:objects",
+ },
+ async run() {
+ console.log("[Task cleanup:objects]: Cleaning unreferenced objects");
- // get all objects
const objects = await objectHandler.listAll();
- logger.info(`searching for ${objects.length} objects`);
- progress(30);
-
- // find unreferenced objects
- const refMap = buildRefMap();
- logger.info("Building reference map");
- logger.info(
- `Found ${Object.keys(refMap).length} models with reference fields`,
+ console.log(
+ `[Task cleanup:objects]: searching for ${objects.length} objects`,
);
- logger.info("Searching for unreferenced objects");
- const unrefedObjects = await findUnreferencedStrings(objects, refMap);
- logger.info(`found ${unrefedObjects.length} Unreferenced objects`);
- // logger.info(unrefedObjects);
- progress(60);
+ console.log(objects);
+ const results = await findUnreferencedStrings(objects, buildRefMap());
+ console.log(
+ `[Task cleanup:objects]: found ${results.length} Unreferenced objects`,
+ );
+ console.log(results);
- // remove objects
- const deletePromises: Promise[] = [];
- for (const obj of unrefedObjects) {
- logger.info(`Deleting object ${obj}`);
- deletePromises.push(objectHandler.deleteAsSystem(obj));
- }
- await Promise.all(deletePromises);
-
- // Remove any possible leftover metadata
- await objectHandler.cleanupMetadata(logger);
-
- logger.info("Done");
- progress(100);
+ console.log("[Task cleanup:objects]: Done");
+ return { result: true };
},
});
-/**
- * Builds a map of Prisma models and their fields that may contain object IDs
- * @returns
- */
function buildRefMap(): FieldReferenceMap {
const tables = Object.keys(prisma).filter(
(v) => !(v.startsWith("$") || v.startsWith("_") || v === "constructor"),
@@ -82,12 +59,6 @@ function buildRefMap(): FieldReferenceMap {
return result;
}
-/**
- * Searches all models for a given id in their fields
- * @param id
- * @param fieldRefMap
- * @returns
- */
async function isReferencedInModelFields(
id: string,
fieldRefMap: FieldReferenceMap,
@@ -140,12 +111,6 @@ async function isReferencedInModelFields(
return false;
}
-/**
- * Takes a list of objects and checks if they are referenced in any model fields
- * @param objects
- * @param fieldRefMap
- * @returns
- */
async function findUnreferencedStrings(
objects: string[],
fieldRefMap: FieldReferenceMap,
diff --git a/server/tasks/cleanup/sessions.ts b/server/tasks/cleanup/sessions.ts
new file mode 100644
index 0000000..b613a72
--- /dev/null
+++ b/server/tasks/cleanup/sessions.ts
@@ -0,0 +1,13 @@
+import sessionHandler from "~/server/internal/session";
+
+export default defineTask({
+ meta: {
+ name: "cleanup:sessions",
+ },
+ async run() {
+ console.log("[Task cleanup:sessions]: Cleaning up sessions");
+ await sessionHandler.cleanupSessions();
+ console.log("[Task cleanup:sessions]: Done");
+ return { result: true };
+ },
+});
diff --git a/server/tasks/dailyTasks.ts b/server/tasks/dailyTasks.ts
deleted file mode 100644
index e36735c..0000000
--- a/server/tasks/dailyTasks.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import taskHandler from "~/server/internal/tasks";
-
-export default defineTask({
- meta: {
- name: "dailyTasks",
- },
- async run() {
- await taskHandler.triggerDailyTasks();
-
- return {};
- },
-});
diff --git a/server/tasks/downloadCleanup.ts b/server/tasks/downloadCleanup.ts
deleted file mode 100644
index 7509531..0000000
--- a/server/tasks/downloadCleanup.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import contextManager from "../internal/downloads/coordinator";
-
-export default defineTask({
- meta: {
- name: "downloadCleanup",
- },
- async run() {
- await contextManager.cleanup();
- return { result: true };
- },
-});
diff --git a/utils/parseTaskLog.ts b/utils/parseTaskLog.ts
deleted file mode 100644
index 93f1e21..0000000
--- a/utils/parseTaskLog.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { TaskLog } from "~/server/internal/tasks";
-
-const labelNumberMap = {
- 100: "silent",
- 60: "fatal",
- 50: "error",
- 40: "warn",
- 30: "info",
- 20: "debug",
- 10: "trace",
- 0: "off",
-};
-
-export function parseTaskLog(
- logStr?: string | undefined,
-): typeof TaskLog.infer {
- if (!logStr) return { message: "", timestamp: "", level: "" };
- const log = JSON.parse(logStr);
-
- if (typeof log.level === "number") {
- log.level = labelNumberMap[
- log.level as keyof typeof labelNumberMap
- ] as string;
- }
-
- return {
- message: log.msg,
- timestamp: log.time,
- level: log.level,
- };
-}
diff --git a/yarn.lock b/yarn.lock
index 5878256..68fcd2c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,7 +2,7 @@
# yarn lockfile v1
-"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.3.0":
+"@ampproject/remapping@^2.2.0":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
@@ -10,274 +10,257 @@
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
-"@antfu/install-pkg@^1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-1.1.0.tgz#78fa036be1a6081b5a77a5cf59f50c7752b6ba26"
- integrity sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==
+"@antfu/install-pkg@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-1.0.0.tgz#2912a150fc8b35ec912f583f90074ee98f64d66a"
+ integrity sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==
dependencies:
- package-manager-detector "^1.3.0"
- tinyexec "^1.0.1"
+ package-manager-detector "^0.2.8"
+ tinyexec "^0.3.2"
-"@apidevtools/json-schema-ref-parser@^14.1.1":
- version "14.1.1"
- resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.1.1.tgz#0bae59809b7848c7a89dc6bb2f3bb980b7c290b1"
- integrity sha512-uGF1YGOzzD50L7HLNWclXmsEhQflw8/zZHIz0/AzkJrKL5r9PceUipZxR/cp/8veTk4TVfdDJLyIwXLjaP5ePg==
+"@apidevtools/json-schema-ref-parser@^11.7.0":
+ version "11.9.3"
+ resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.9.3.tgz#0e0c9061fc41cf03737d499a4e6a8299fdd2bfa7"
+ integrity sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==
dependencies:
+ "@jsdevtools/ono" "^7.1.3"
"@types/json-schema" "^7.0.15"
js-yaml "^4.1.0"
-"@ark/schema@0.46.0":
- version "0.46.0"
- resolved "https://registry.yarnpkg.com/@ark/schema/-/schema-0.46.0.tgz#81a1a0dc1ff0f2faa098cba05de505a174bdc64e"
- integrity sha512-c2UQdKgP2eqqDArfBqQIJppxJHvNNXuQPeuSPlDML4rjw+f1cu0qAlzOG4b8ujgm9ctIDWwhpyw6gjG5ledIVQ==
+"@ark/schema@0.45.5":
+ version "0.45.5"
+ resolved "https://registry.yarnpkg.com/@ark/schema/-/schema-0.45.5.tgz#77374cae18e86e169492e8a4c9747148bfb13596"
+ integrity sha512-RW25FuQRcn4Mc33auOkEL1CLuyj86LmI5YGeuhYYrxEQqK23D99m5T+MGBuOSAbECBtQ8VnI4BaC5Hbb7Ly6tQ==
dependencies:
- "@ark/util" "0.46.0"
+ "@ark/util" "0.45.5"
-"@ark/util@0.46.0":
- version "0.46.0"
- resolved "https://registry.yarnpkg.com/@ark/util/-/util-0.46.0.tgz#aee240bdaf413793e5ca4c4e8e3707aa965f4be3"
- integrity sha512-JPy/NGWn/lvf1WmGCPw2VGpBg5utZraE84I7wli18EDF3p3zc/e9WolT35tINeZO3l7C77SjqRJeAUoT0CvMRg==
+"@ark/util@0.45.5":
+ version "0.45.5"
+ resolved "https://registry.yarnpkg.com/@ark/util/-/util-0.45.5.tgz#7742fa3973bfeea253442a44b51a0ea492c43e51"
+ integrity sha512-BbuDOKJJYZ2dzZDNhBavkhgGD2hv4/idEhXpEPA5weOlE9/kU7XwAvEWn74tCuySHrD7peDqe2Ct/EDUlM40qg==
-"@babel/code-frame@^7.26.2", "@babel/code-frame@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
- integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
+"@babel/code-frame@^7.26.2":
+ version "7.26.2"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
+ integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
dependencies:
- "@babel/helper-validator-identifier" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.25.9"
js-tokens "^4.0.0"
- picocolors "^1.1.1"
+ picocolors "^1.0.0"
-"@babel/compat-data@^7.27.2":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.0.tgz#9fc6fd58c2a6a15243cd13983224968392070790"
- integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==
+"@babel/compat-data@^7.26.8":
+ version "7.26.8"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367"
+ integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==
-"@babel/core@^7.25.2", "@babel/core@^7.27.1":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.0.tgz#55dad808d5bf3445a108eefc88ea3fdf034749a4"
- integrity sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==
+"@babel/core@^7.25.2", "@babel/core@^7.26.7":
+ version "7.26.10"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9"
+ integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==
dependencies:
"@ampproject/remapping" "^2.2.0"
- "@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.28.0"
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-module-transforms" "^7.27.3"
- "@babel/helpers" "^7.27.6"
- "@babel/parser" "^7.28.0"
- "@babel/template" "^7.27.2"
- "@babel/traverse" "^7.28.0"
- "@babel/types" "^7.28.0"
+ "@babel/code-frame" "^7.26.2"
+ "@babel/generator" "^7.26.10"
+ "@babel/helper-compilation-targets" "^7.26.5"
+ "@babel/helper-module-transforms" "^7.26.0"
+ "@babel/helpers" "^7.26.10"
+ "@babel/parser" "^7.26.10"
+ "@babel/template" "^7.26.9"
+ "@babel/traverse" "^7.26.10"
+ "@babel/types" "^7.26.10"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.3"
semver "^6.3.1"
-"@babel/generator@^7.25.0", "@babel/generator@^7.28.0":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.0.tgz#9cc2f7bd6eb054d77dc66c2664148a0c5118acd2"
- integrity sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==
+"@babel/generator@^7.25.0", "@babel/generator@^7.26.10", "@babel/generator@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.0.tgz#764382b5392e5b9aff93cadb190d0745866cbc2c"
+ integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==
dependencies:
- "@babel/parser" "^7.28.0"
- "@babel/types" "^7.28.0"
- "@jridgewell/gen-mapping" "^0.3.12"
- "@jridgewell/trace-mapping" "^0.3.28"
+ "@babel/parser" "^7.27.0"
+ "@babel/types" "^7.27.0"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
jsesc "^3.0.2"
-"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3":
- version "7.27.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5"
- integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==
+"@babel/helper-annotate-as-pure@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4"
+ integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==
dependencies:
- "@babel/types" "^7.27.3"
+ "@babel/types" "^7.25.9"
-"@babel/helper-compilation-targets@^7.27.2":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d"
- integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==
+"@babel/helper-compilation-targets@^7.26.5":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880"
+ integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==
dependencies:
- "@babel/compat-data" "^7.27.2"
- "@babel/helper-validator-option" "^7.27.1"
+ "@babel/compat-data" "^7.26.8"
+ "@babel/helper-validator-option" "^7.25.9"
browserslist "^4.24.0"
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281"
- integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==
+"@babel/helper-create-class-features-plugin@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz#518fad6a307c6a96f44af14912b2c20abe9bfc30"
+ integrity sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.27.1"
- "@babel/helper-member-expression-to-functions" "^7.27.1"
- "@babel/helper-optimise-call-expression" "^7.27.1"
- "@babel/helper-replace-supers" "^7.27.1"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
- "@babel/traverse" "^7.27.1"
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-member-expression-to-functions" "^7.25.9"
+ "@babel/helper-optimise-call-expression" "^7.25.9"
+ "@babel/helper-replace-supers" "^7.26.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+ "@babel/traverse" "^7.27.0"
semver "^6.3.1"
-"@babel/helper-globals@^7.28.0":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674"
- integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==
-
-"@babel/helper-member-expression-to-functions@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44"
- integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==
+"@babel/helper-member-expression-to-functions@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3"
+ integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==
dependencies:
- "@babel/traverse" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
-"@babel/helper-module-imports@^7.25.9", "@babel/helper-module-imports@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204"
- integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
+"@babel/helper-module-imports@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
+ integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
dependencies:
- "@babel/traverse" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
-"@babel/helper-module-transforms@^7.27.3":
- version "7.27.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02"
- integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==
+"@babel/helper-module-transforms@^7.26.0":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae"
+ integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
dependencies:
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-validator-identifier" "^7.27.1"
- "@babel/traverse" "^7.27.3"
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+ "@babel/traverse" "^7.25.9"
-"@babel/helper-optimise-call-expression@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200"
- integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==
+"@babel/helper-optimise-call-expression@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e"
+ integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==
dependencies:
- "@babel/types" "^7.27.1"
+ "@babel/types" "^7.25.9"
-"@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c"
- integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==
+"@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5":
+ version "7.26.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35"
+ integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==
-"@babel/helper-replace-supers@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0"
- integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==
+"@babel/helper-replace-supers@^7.26.5":
+ version "7.26.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz#6cb04e82ae291dae8e72335dfe438b0725f14c8d"
+ integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==
dependencies:
- "@babel/helper-member-expression-to-functions" "^7.27.1"
- "@babel/helper-optimise-call-expression" "^7.27.1"
- "@babel/traverse" "^7.27.1"
+ "@babel/helper-member-expression-to-functions" "^7.25.9"
+ "@babel/helper-optimise-call-expression" "^7.25.9"
+ "@babel/traverse" "^7.26.5"
-"@babel/helper-skip-transparent-expression-wrappers@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56"
- integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==
+"@babel/helper-skip-transparent-expression-wrappers@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9"
+ integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==
dependencies:
- "@babel/traverse" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/traverse" "^7.25.9"
+ "@babel/types" "^7.25.9"
-"@babel/helper-string-parser@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
- integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
+"@babel/helper-string-parser@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
+ integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
-"@babel/helper-validator-identifier@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
- integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
+"@babel/helper-validator-identifier@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
-"@babel/helper-validator-option@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f"
- integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
+"@babel/helper-validator-option@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
+ integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
-"@babel/helpers@^7.27.6":
- version "7.28.2"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.2.tgz#80f0918fecbfebea9af856c419763230040ee850"
- integrity sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==
+"@babel/helpers@^7.26.10":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808"
+ integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==
dependencies:
- "@babel/template" "^7.27.2"
- "@babel/types" "^7.28.2"
+ "@babel/template" "^7.27.0"
+ "@babel/types" "^7.27.0"
-"@babel/parser@^7.22.5", "@babel/parser@^7.24.6", "@babel/parser@^7.25.3", "@babel/parser@^7.25.4", "@babel/parser@^7.26.7", "@babel/parser@^7.26.9", "@babel/parser@^7.27.0", "@babel/parser@^7.27.2", "@babel/parser@^7.27.7", "@babel/parser@^7.28.0":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e"
- integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==
+"@babel/parser@^7.25.3", "@babel/parser@^7.25.4", "@babel/parser@^7.26.10", "@babel/parser@^7.26.9", "@babel/parser@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec"
+ integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==
dependencies:
- "@babel/types" "^7.28.0"
+ "@babel/types" "^7.27.0"
"@babel/plugin-syntax-jsx@^7.25.9":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c"
- integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290"
+ integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-syntax-typescript@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18"
- integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==
+"@babel/plugin-syntax-typescript@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399"
+ integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-typescript@^7.27.1":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz#796cbd249ab56c18168b49e3e1d341b72af04a6b"
- integrity sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==
+"@babel/plugin-transform-typescript@^7.26.7":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz#a29fd3481da85601c7e34091296e9746d2cccba8"
+ integrity sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.27.3"
- "@babel/helper-create-class-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
- "@babel/plugin-syntax-typescript" "^7.27.1"
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-create-class-features-plugin" "^7.27.0"
+ "@babel/helper-plugin-utils" "^7.26.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
+ "@babel/plugin-syntax-typescript" "^7.25.9"
-"@babel/runtime@^7.14.0":
- version "7.28.2"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.2.tgz#2ae5a9d51cc583bd1f5673b3bb70d6d819682473"
- integrity sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==
-
-"@babel/template@^7.26.9", "@babel/template@^7.27.2":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d"
- integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==
+"@babel/template@^7.26.9", "@babel/template@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4"
+ integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==
dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/parser" "^7.27.2"
- "@babel/types" "^7.27.1"
+ "@babel/code-frame" "^7.26.2"
+ "@babel/parser" "^7.27.0"
+ "@babel/types" "^7.27.0"
-"@babel/traverse@^7.25.3", "@babel/traverse@^7.26.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.28.0":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b"
- integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==
+"@babel/traverse@^7.25.3", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.9", "@babel/traverse@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70"
+ integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==
dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.28.0"
- "@babel/helper-globals" "^7.28.0"
- "@babel/parser" "^7.28.0"
- "@babel/template" "^7.27.2"
- "@babel/types" "^7.28.0"
+ "@babel/code-frame" "^7.26.2"
+ "@babel/generator" "^7.27.0"
+ "@babel/parser" "^7.27.0"
+ "@babel/template" "^7.27.0"
+ "@babel/types" "^7.27.0"
debug "^4.3.1"
+ globals "^11.1.0"
-"@babel/types@7.28.0":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.0.tgz#2fd0159a6dc7353933920c43136335a9b264d950"
- integrity sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==
+"@babel/types@^7.25.4", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.26.8", "@babel/types@^7.26.9", "@babel/types@^7.27.0":
+ version "7.27.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559"
+ integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==
dependencies:
- "@babel/helper-string-parser" "^7.27.1"
- "@babel/helper-validator-identifier" "^7.27.1"
+ "@babel/helper-string-parser" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
-"@babel/types@^7.25.4", "@babel/types@^7.26.8", "@babel/types@^7.26.9", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.0", "@babel/types@^7.28.2":
- version "7.28.2"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.2.tgz#da9db0856a9a88e0a13b019881d7513588cf712b"
- integrity sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==
- dependencies:
- "@babel/helper-string-parser" "^7.27.1"
- "@babel/helper-validator-identifier" "^7.27.1"
+"@capsizecss/metrics@^2.1.1":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@capsizecss/metrics/-/metrics-2.2.0.tgz#f8cad1e2911e2e1bb16c2cb69da41be8f5c9b31b"
+ integrity sha512-DkFIser1KbGxWyG2hhQQeCit72TnOQDx5pr9bkA7+XlIy7qv+4lYtslH3bidVxm2qkY2guAgypSIPYuQQuk70A==
-"@capsizecss/metrics@^3.5.0":
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/@capsizecss/metrics/-/metrics-3.5.0.tgz#80b4b36d00651288e568c46e7b7c2f4e7d187b6f"
- integrity sha512-Ju2I/Qn3c1OaU8FgeW4Tc22D4C9NwyVfKzNmzst59bvxBjPoLYNZMqFYn+HvCtn4MpXwiaDtCE8fNuQLpdi9yA==
-
-"@capsizecss/unpack@^2.4.0":
+"@capsizecss/unpack@^2.0.1":
version "2.4.0"
resolved "https://registry.yarnpkg.com/@capsizecss/unpack/-/unpack-2.4.0.tgz#db93ee886b8016c155ba7934c7adbe42a9734f13"
integrity sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==
@@ -286,20 +269,20 @@
cross-fetch "^3.0.4"
fontkit "^2.0.2"
-"@clack/core@0.5.0":
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/@clack/core/-/core-0.5.0.tgz#970df024a927d6af90111667a0384e233b5ffa1a"
- integrity sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==
+"@clack/core@0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@clack/core/-/core-0.4.1.tgz#36c8aed3f4904060a39275817e804e7a8ffb7e1c"
+ integrity sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==
dependencies:
picocolors "^1.0.0"
sisteransi "^1.0.5"
-"@clack/prompts@^0.11.0":
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/@clack/prompts/-/prompts-0.11.0.tgz#5c0218f2b46626a50d72d8a485681eb8d94bd2a7"
- integrity sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==
+"@clack/prompts@^0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@clack/prompts/-/prompts-0.10.0.tgz#3fb268c1eb9b4fc6bc5952744273e7a0cb01995a"
+ integrity sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ==
dependencies:
- "@clack/core" "0.5.0"
+ "@clack/core" "0.4.1"
picocolors "^1.0.0"
sisteransi "^1.0.5"
@@ -310,396 +293,257 @@
dependencies:
mime "^3.0.0"
-"@colors/colors@1.6.0", "@colors/colors@^1.6.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0"
- integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==
+"@drop-oss/droplet-darwin-arm64@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-darwin-arm64/-/droplet-darwin-arm64-0.7.2.tgz#fb714d3bf83dbf5e0ee6068ce2fdc74652a9d073"
+ integrity sha512-g1IiaSWYd+NDhyRbEKxSxrKFieJV/bwijcFfzP5VLHbTohDu5zJLe6Exc/IXbIb+Ex70Rfsk8Sf9n1zfHCD+Fg==
-"@dabh/diagnostics@^2.0.2":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a"
- integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==
- dependencies:
- colorspace "1.1.x"
- enabled "2.0.x"
- kuler "^2.0.0"
+"@drop-oss/droplet-darwin-universal@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-darwin-universal/-/droplet-darwin-universal-0.7.2.tgz#237d70fab92b892e4d40855d13fd54ad55cf026e"
+ integrity sha512-wVVkMi0uwOob876xNFc37/5dGusKjlsWc4Z9bTUtTGeWo9gx5BkEpHBRrwD9NBAklr0Eu7Kmin3niB7pfx9vTw==
-"@dependents/detective-less@^5.0.1":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@dependents/detective-less/-/detective-less-5.0.1.tgz#e6c5b502f0d26a81da4170c1ccd848a6eaa68470"
- integrity sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ==
- dependencies:
- gonzales-pe "^4.3.0"
- node-source-walk "^7.0.1"
+"@drop-oss/droplet-darwin-x64@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-darwin-x64/-/droplet-darwin-x64-0.7.2.tgz#ed12ced467ff38f7eb2419b0ae6b1c508d828b84"
+ integrity sha512-/p53OVesFG1Q/3+kYImitduGvZFfrfyVgdW+twoy+DYTX5EE1XZKaLZs2PSnbFSnnFJTmWvfnGqN5s+Dh12AKw==
-"@discordapp/twemoji@^16.0.1":
- version "16.0.1"
- resolved "https://registry.yarnpkg.com/@discordapp/twemoji/-/twemoji-16.0.1.tgz#8af227ed1243e65d12582850ff94f287f9d2cb0d"
- integrity sha512-figLiBWzjS5cyrAjLaGjM8AAaowO3qvK8rg5bA2dElB4qsaPMvBVlFDMO2d3x+nC1igt7kgWH4dvNmvvUHUF8w==
- dependencies:
- "@twemoji/parser" "16.0.0"
- fs-extra "^8.0.1"
- jsonfile "^5.0.0"
- universalify "^0.1.2"
+"@drop-oss/droplet-linux-arm-gnueabihf@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-arm-gnueabihf/-/droplet-linux-arm-gnueabihf-0.7.2.tgz#2fb0bfae2cb5fd08942d4f490f25046f006123ce"
+ integrity sha512-hZtkKhgMkSqhueOEBRBZlSWE6uawM9M31gPmajrYHNOEnnmt8oUtZriPvC1ffZwZnQb4LL7IMGUZmXTl6guZXQ==
-"@drop-oss/droplet-darwin-arm64@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-darwin-arm64/-/droplet-darwin-arm64-3.0.1.tgz#37acbeaedcf28623c18b545aa2ed9205533a7128"
- integrity sha512-LXe8vsXUBL96boI78H6oXpSaPVwF4cCwJ5l/QVtsOWMebNo6gk9wICDZ+5IoR/Ol32t1a1lk+DjbD1zeGenPxg==
+"@drop-oss/droplet-linux-arm-musleabihf@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-arm-musleabihf/-/droplet-linux-arm-musleabihf-0.7.2.tgz#cbf54f5ff271a9e4601f6f6489cb6f630c6e9cbc"
+ integrity sha512-FBy8GE06mWSlv/t3d7iOF2wP9jvvPTePwPpIQyMpmEOz5MmdwF3/PFFncV4WcmxQ/RHUhIrZ3M9Dfq8WCiXPgw==
-"@drop-oss/droplet-darwin-universal@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-darwin-universal/-/droplet-darwin-universal-3.0.1.tgz#8e90214758ae03e2e37501a107e5a8acaeec6d32"
- integrity sha512-Mf2gjC24u6s8djV/3slZvwdr4+h0qBu2OYXBUSDfR4H/VJwV5TstnWVKF+U8d1hjmHE9eLO8elbGNnpQmSoTOQ==
+"@drop-oss/droplet-linux-arm64-gnu@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-arm64-gnu/-/droplet-linux-arm64-gnu-0.7.2.tgz#96062bf8a63de742995d89b782fa7e11f26d984f"
+ integrity sha512-Ev+WOUwazMgzz3tcHZefCaELSQ/dUJA795eXiNp0jDFRhddeybulxabte9hM9XjP5Yg/pZ0GpenWMjcWvxVaIQ==
-"@drop-oss/droplet-darwin-x64@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-darwin-x64/-/droplet-darwin-x64-3.0.1.tgz#602cf4e7cb1ceda4ef95673f61542025b9215e9a"
- integrity sha512-4IIDl/E+hzZ2Vt9m4FMPlZEXwj1EwE6qXyUidACK6TTFqpjLpsEHKuhv1FOxGyJ8qkvagtyPCc+cs1TxoZD6FA==
+"@drop-oss/droplet-linux-arm64-musl@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-arm64-musl/-/droplet-linux-arm64-musl-0.7.2.tgz#cabb0305e3337dc8fabe4d46d21756fe2d93bde6"
+ integrity sha512-uJ0oOjPNNsNrqc8kJhlOxetz+lYb1QUOIKyKjpmTKVHYjNXj8bvc/FSDYwQjCPRs0r9qrEszF8hW6lsibQ92/g==
-"@drop-oss/droplet-linux-arm64-gnu@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-arm64-gnu/-/droplet-linux-arm64-gnu-3.0.1.tgz#a49d1998229fafbd42ac4b8fc5f67754ab1ac49c"
- integrity sha512-klGvlLf1xSMT3iYsIAaBbmbir1ZJWtcVyOMUlsfc1lkJ8mgyB+PrW4BsnYj7Pp4G34n7WsOChjC8TdJDBBuBWg==
+"@drop-oss/droplet-linux-riscv64-gnu@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-riscv64-gnu/-/droplet-linux-riscv64-gnu-0.7.2.tgz#5ea5b99df8677def14da6099dec9577433736655"
+ integrity sha512-5xdbTvEs8MiOL3ren+QyCXvcLmKWa7NSAehdunaD82qIwV19Xz+/C7OC1jN2zGgAQ0TBM/HcbkmWITNEQB7Oiw==
-"@drop-oss/droplet-linux-arm64-musl@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-arm64-musl/-/droplet-linux-arm64-musl-3.0.1.tgz#3e0ffee4f0aba051c244236aecdb5c1221c1b999"
- integrity sha512-oOjvGETlrJGC1RlNhUoVS9N89Rn/0DqBauVz3BBFjJTKSd5jU3/gLzwgmfkKDGVEU5lyGPAn2WQroiESEG9wdA==
+"@drop-oss/droplet-linux-x64-gnu@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-x64-gnu/-/droplet-linux-x64-gnu-0.7.2.tgz#244f137f6f301c307414e43b7cbd42fbd3e3247f"
+ integrity sha512-xM7tEzAR/yGFpO3C3lLpyOiqCD84MqwXQS6I1aR+z7IU+tAVwX1JYmu4HYGw1pxPCHpK/9w8NtAwzgSiw5d2jQ==
-"@drop-oss/droplet-linux-riscv64-gnu@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-riscv64-gnu/-/droplet-linux-riscv64-gnu-3.0.1.tgz#2208f1a038d54ced68d1537c4daa964b115d4e5c"
- integrity sha512-Zf3gUsWq9Hqb275MOi7PJDhmJz7Qa/Y1XMen880bxPaOeDFqFOoKUxUr2/qv1MYp6tT3zO27NprGsHirYWqsyA==
+"@drop-oss/droplet-linux-x64-musl@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-x64-musl/-/droplet-linux-x64-musl-0.7.2.tgz#37bc2d079cc63949bd5ac5194be65cb9c769feb0"
+ integrity sha512-s9YbnqPQhz468py49icPO74ezXF+EGKt7DX9vMs7XIp2Uyz+pWejRkerSj70WTypy5UcSNgcIBOB6kfD/FMMAQ==
-"@drop-oss/droplet-linux-x64-gnu@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-x64-gnu/-/droplet-linux-x64-gnu-3.0.1.tgz#ffe2e39f978d32858a003f0c28614a8a4d1bdeef"
- integrity sha512-sskblycJdtNJVnRHjPHhwHkQUfQNaDIWDzXOzEaBPOcDKqYA7od7VMDAseqBkrKDn7l8bBUtRXFAipdsO8hffw==
+"@drop-oss/droplet-win32-arm64-msvc@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-win32-arm64-msvc/-/droplet-win32-arm64-msvc-0.7.2.tgz#c0a6048b9dc89596bf230346c5bbe86fcdc27009"
+ integrity sha512-E0isKXZIt/mFUAfziZ9hat84uol4hWHcEZ86xxfz4L8/wljrKU7Vbw9yaYznk4FvKRHnwoccymtOTLrSq2Ju4Q==
-"@drop-oss/droplet-linux-x64-musl@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-linux-x64-musl/-/droplet-linux-x64-musl-3.0.1.tgz#4bd501eeeddfdaf3c49e6508cc1798419b0c78cc"
- integrity sha512-lh+1M6UAf5+ET1/ZEFRsB3shFHjkT/9Ql9akr/vyUue91TWPmP71meqVkCugWDhP6lxBt56jg2VVrJfmPAsK6w==
+"@drop-oss/droplet-win32-x64-msvc@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet-win32-x64-msvc/-/droplet-win32-x64-msvc-0.7.2.tgz#2835e05bcf9923eb23e04b94c298520ecb6299d0"
+ integrity sha512-O5t2B/3Ld+17q1qDPVds3V/Ex2as2l8piVBgEKIkEL51wJYu7ucwMwWrfdMWKXRn17Fl5ueeujZLuD3iySRkLw==
-"@drop-oss/droplet-win32-arm64-msvc@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-win32-arm64-msvc/-/droplet-win32-arm64-msvc-3.0.1.tgz#9308c75d22773fbb78bba0286c101870b3eaf5f6"
- integrity sha512-caQDPoDNJyyJXUEijw+hGTy0wmCrW5efTqBwnvMcQ282EOilg1d5WeJ31pfEcuLYF4MK1t9uaLcG6jZ9YLtzEQ==
-
-"@drop-oss/droplet-win32-x64-msvc@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet-win32-x64-msvc/-/droplet-win32-x64-msvc-3.0.1.tgz#3f50f1328bd7aafd8dfe7edd0413f13217cbc9ce"
- integrity sha512-bp8KwewF/T3JkVeJWkg86U3b0cGQD9i8k92x6HYPtnF5nLPAb2UIUEJgmYYFNPFe36RECBV7PIIG0ujdT1ELQw==
-
-"@drop-oss/droplet@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@drop-oss/droplet/-/droplet-3.0.1.tgz#e7f6772aa1f94010d41086fc8a1f396a5d392184"
- integrity sha512-YhtgpwNqEHO8R03yf9Xb5LXuaLWkQvY+2lxOD1PwzpGI5V9PKlDE+x1IJBmdBF5bDPDGk9MxQidGtnYQuAEBEA==
+"@drop-oss/droplet@^0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@drop-oss/droplet/-/droplet-0.7.2.tgz#a914dbee85cb3b3a0c9dd90d9cebec5bb0575bce"
+ integrity sha512-XxKUuRMYMdTVT4IaetNRN07iUpHJkXdS1LKfPBDrNkjszfG0SGjqCd1PVw7p6ugPWdezS8ygGODR6c/cAOQ4kw==
optionalDependencies:
- "@drop-oss/droplet-darwin-arm64" "3.0.1"
- "@drop-oss/droplet-darwin-universal" "3.0.1"
- "@drop-oss/droplet-darwin-x64" "3.0.1"
- "@drop-oss/droplet-linux-arm64-gnu" "3.0.1"
- "@drop-oss/droplet-linux-arm64-musl" "3.0.1"
- "@drop-oss/droplet-linux-riscv64-gnu" "3.0.1"
- "@drop-oss/droplet-linux-x64-gnu" "3.0.1"
- "@drop-oss/droplet-linux-x64-musl" "3.0.1"
- "@drop-oss/droplet-win32-arm64-msvc" "3.0.1"
- "@drop-oss/droplet-win32-x64-msvc" "3.0.1"
+ "@drop-oss/droplet-darwin-arm64" "0.7.2"
+ "@drop-oss/droplet-darwin-universal" "0.7.2"
+ "@drop-oss/droplet-darwin-x64" "0.7.2"
+ "@drop-oss/droplet-linux-arm-gnueabihf" "0.7.2"
+ "@drop-oss/droplet-linux-arm-musleabihf" "0.7.2"
+ "@drop-oss/droplet-linux-arm64-gnu" "0.7.2"
+ "@drop-oss/droplet-linux-arm64-musl" "0.7.2"
+ "@drop-oss/droplet-linux-riscv64-gnu" "0.7.2"
+ "@drop-oss/droplet-linux-x64-gnu" "0.7.2"
+ "@drop-oss/droplet-linux-x64-musl" "0.7.2"
+ "@drop-oss/droplet-win32-arm64-msvc" "0.7.2"
+ "@drop-oss/droplet-win32-x64-msvc" "0.7.2"
-"@emnapi/core@^1.4.3":
- version "1.4.5"
- resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.5.tgz#bfbb0cbbbb9f96ec4e2c4fd917b7bbe5495ceccb"
- integrity sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==
+"@drop-oss/headscalez@0.0.4":
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/@drop-oss/headscalez/-/headscalez-0.0.4.tgz#7558fbbc542d93fb0c69bdcf48917bdae676c62d"
+ integrity sha512-vdDq6Qe/T5S0FKKYdnBXvOh53wGs8nxy6O3ACVyUjTbTGkDn3z5og4joh5TxoAOFodPHRLCihVuroiymS7yNTg==
dependencies:
- "@emnapi/wasi-threads" "1.0.4"
+ "@protobuf-ts/grpcweb-transport" "^2.10.0"
+ "@protobuf-ts/runtime" "^2.10.0"
+ "@protobuf-ts/runtime-rpc" "^2.10.0"
+ execa "^9.5.3"
+ fs-extra "^11.3.0"
+ node-graceful-shutdown "^1.1.5"
+ ofetch "^1.4.1"
+
+"@emnapi/core@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.0.tgz#8844b02d799198158ac1fea21ae2bc81b881da9a"
+ integrity sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==
+ dependencies:
+ "@emnapi/wasi-threads" "1.0.1"
tslib "^2.4.0"
-"@emnapi/runtime@^1.4.3":
- version "1.4.5"
- resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.5.tgz#c67710d0661070f38418b6474584f159de38aba9"
- integrity sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==
+"@emnapi/runtime@^1.2.0", "@emnapi/runtime@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.0.tgz#8f509bf1059a5551c8fe829a1c4e91db35fdfbee"
+ integrity sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==
dependencies:
tslib "^2.4.0"
-"@emnapi/wasi-threads@1.0.4", "@emnapi/wasi-threads@^1.0.2":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz#703fc094d969e273b1b71c292523b2f792862bf4"
- integrity sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==
+"@emnapi/wasi-threads@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz#d7ae71fd2166b1c916c6cd2d0df2ef565a2e1a5b"
+ integrity sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==
dependencies:
tslib "^2.4.0"
-"@es-joy/jsdoccomment@~0.52.0":
- version "0.52.0"
- resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.52.0.tgz#106945b6d1abed89597aa104b80ff8f9fb7038a6"
- integrity sha512-BXuN7BII+8AyNtn57euU2Yxo9yA/KUDNzrpXyi3pfqKmBhhysR6ZWOebFh3vyPoqA3/j1SOvGgucElMGwlXing==
+"@es-joy/jsdoccomment@~0.49.0":
+ version "0.49.0"
+ resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz#e5ec1eda837c802eca67d3b29e577197f14ba1db"
+ integrity sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==
dependencies:
- "@types/estree" "^1.0.8"
- "@typescript-eslint/types" "^8.34.1"
comment-parser "1.4.1"
esquery "^1.6.0"
jsdoc-type-pratt-parser "~4.1.0"
-"@esbuild/aix-ppc64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz#4e0f91776c2b340e75558f60552195f6fad09f18"
- integrity sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==
+"@esbuild/aix-ppc64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8"
+ integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==
-"@esbuild/aix-ppc64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz#a1414903bb38027382f85f03dda6065056757727"
- integrity sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==
+"@esbuild/android-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196"
+ integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==
-"@esbuild/android-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz#bc766407f1718923f6b8079c8c61bf86ac3a6a4f"
- integrity sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==
+"@esbuild/android-arm@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee"
+ integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==
-"@esbuild/android-arm64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz#c859994089e9767224269884061f89dae6fb51c6"
- integrity sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==
+"@esbuild/android-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2"
+ integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==
-"@esbuild/android-arm@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.5.tgz#4290d6d3407bae3883ad2cded1081a234473ce26"
- integrity sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==
+"@esbuild/darwin-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423"
+ integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==
-"@esbuild/android-arm@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.8.tgz#96a8f2ca91c6cd29ea90b1af79d83761c8ba0059"
- integrity sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==
+"@esbuild/darwin-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374"
+ integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==
-"@esbuild/android-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.5.tgz#40c11d9cbca4f2406548c8a9895d321bc3b35eff"
- integrity sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==
+"@esbuild/freebsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6"
+ integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==
-"@esbuild/android-x64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.8.tgz#a3a626c4fec4a024a9fa8c7679c39996e92916f0"
- integrity sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==
+"@esbuild/freebsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809"
+ integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==
-"@esbuild/darwin-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz#49d8bf8b1df95f759ac81eb1d0736018006d7e34"
- integrity sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==
+"@esbuild/linux-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058"
+ integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==
-"@esbuild/darwin-arm64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz#a5e1252ca2983d566af1c0ea39aded65736fc66d"
- integrity sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==
+"@esbuild/linux-arm@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6"
+ integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==
-"@esbuild/darwin-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz#e27a5d92a14886ef1d492fd50fc61a2d4d87e418"
- integrity sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==
+"@esbuild/linux-ia32@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737"
+ integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==
-"@esbuild/darwin-x64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz#5271b0df2bb12ce8df886704bfdd1c7cc01385d2"
- integrity sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==
+"@esbuild/linux-loong64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a"
+ integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==
-"@esbuild/freebsd-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz#97cede59d638840ca104e605cdb9f1b118ba0b1c"
- integrity sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==
+"@esbuild/linux-mips64el@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30"
+ integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==
-"@esbuild/freebsd-arm64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz#d0a0e7fdf19733b8bb1566b81df1aa0bb7e46ada"
- integrity sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==
+"@esbuild/linux-ppc64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067"
+ integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==
-"@esbuild/freebsd-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz#71c77812042a1a8190c3d581e140d15b876b9c6f"
- integrity sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==
+"@esbuild/linux-riscv64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3"
+ integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==
-"@esbuild/freebsd-x64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz#2de8b2e0899d08f1cb1ef3128e159616e7e85343"
- integrity sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==
+"@esbuild/linux-s390x@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602"
+ integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==
-"@esbuild/linux-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz#f7b7c8f97eff8ffd2e47f6c67eb5c9765f2181b8"
- integrity sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==
+"@esbuild/linux-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb"
+ integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==
-"@esbuild/linux-arm64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz#a4209efadc0c2975716458484a4e90c237c48ae9"
- integrity sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==
+"@esbuild/netbsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac"
+ integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==
-"@esbuild/linux-arm@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz#2a0be71b6cd8201fa559aea45598dffabc05d911"
- integrity sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==
+"@esbuild/netbsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f"
+ integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==
-"@esbuild/linux-arm@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz#ccd9e291c24cd8d9142d819d463e2e7200d25b19"
- integrity sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==
+"@esbuild/openbsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f"
+ integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==
-"@esbuild/linux-ia32@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz#763414463cd9ea6fa1f96555d2762f9f84c61783"
- integrity sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==
+"@esbuild/openbsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768"
+ integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==
-"@esbuild/linux-ia32@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz#006ad1536d0c2b28fb3a1cf0b53bcb85aaf92c4d"
- integrity sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==
+"@esbuild/sunos-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb"
+ integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==
-"@esbuild/linux-loong64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz#428cf2213ff786a502a52c96cf29d1fcf1eb8506"
- integrity sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==
+"@esbuild/win32-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf"
+ integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==
-"@esbuild/linux-loong64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz#127b3fbfb2c2e08b1397e985932f718f09a8f5c4"
- integrity sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==
+"@esbuild/win32-ia32@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f"
+ integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==
-"@esbuild/linux-mips64el@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz#5cbcc7fd841b4cd53358afd33527cd394e325d96"
- integrity sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==
+"@esbuild/win32-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d"
+ integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==
-"@esbuild/linux-mips64el@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz#837d1449517791e3fa7d82675a2d06d9f56cb340"
- integrity sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==
-
-"@esbuild/linux-ppc64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz#0d954ab39ce4f5e50f00c4f8c4fd38f976c13ad9"
- integrity sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==
-
-"@esbuild/linux-ppc64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz#aa2e3bd93ab8df084212f1895ca4b03c42d9e0fe"
- integrity sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==
-
-"@esbuild/linux-riscv64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz#0e7dd30730505abd8088321e8497e94b547bfb1e"
- integrity sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==
-
-"@esbuild/linux-riscv64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz#a340620e31093fef72767dd28ab04214b3442083"
- integrity sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==
-
-"@esbuild/linux-s390x@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz#5669af81327a398a336d7e40e320b5bbd6e6e72d"
- integrity sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==
-
-"@esbuild/linux-s390x@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz#ddfed266c8c13f5efb3105a0cd47f6dcd0e79e71"
- integrity sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==
-
-"@esbuild/linux-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz#b2357dd153aa49038967ddc1ffd90c68a9d2a0d4"
- integrity sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==
-
-"@esbuild/linux-x64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz#9a4f78c75c051e8c060183ebb39a269ba936a2ac"
- integrity sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==
-
-"@esbuild/netbsd-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz#53b4dfb8fe1cee93777c9e366893bd3daa6ba63d"
- integrity sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==
-
-"@esbuild/netbsd-arm64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz#902c80e1d678047926387230bc037e63e00697d0"
- integrity sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==
-
-"@esbuild/netbsd-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz#a0206f6314ce7dc8713b7732703d0f58de1d1e79"
- integrity sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==
-
-"@esbuild/netbsd-x64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz#2d9eb4692add2681ff05a14ce99de54fbed7079c"
- integrity sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==
-
-"@esbuild/openbsd-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz#2a796c87c44e8de78001d808c77d948a21ec22fd"
- integrity sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==
-
-"@esbuild/openbsd-arm64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz#89c3b998c6de739db38ab7fb71a8a76b3fa84a45"
- integrity sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==
-
-"@esbuild/openbsd-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz#28d0cd8909b7fa3953af998f2b2ed34f576728f0"
- integrity sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==
-
-"@esbuild/openbsd-x64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz#2f01615cf472b0e48c077045cfd96b5c149365cc"
- integrity sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==
-
-"@esbuild/openharmony-arm64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz#a201f720cd2c3ebf9a6033fcc3feb069a54b509a"
- integrity sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==
-
-"@esbuild/sunos-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz#a28164f5b997e8247d407e36c90d3fd5ddbe0dc5"
- integrity sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==
-
-"@esbuild/sunos-x64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz#07046c977985a3334667f19e6ab3a01a80862afb"
- integrity sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==
-
-"@esbuild/win32-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz#6eadbead38e8bd12f633a5190e45eff80e24007e"
- integrity sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==
-
-"@esbuild/win32-arm64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz#4a5470caf0d16127c05d4833d4934213c69392d1"
- integrity sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==
-
-"@esbuild/win32-ia32@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz#bab6288005482f9ed2adb9ded7e88eba9a62cc0d"
- integrity sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==
-
-"@esbuild/win32-ia32@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz#3de3e8470b7b328d99dbc3e9ec1eace207e5bbc4"
- integrity sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==
-
-"@esbuild/win32-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz#7fc114af5f6563f19f73324b5d5ff36ece0803d1"
- integrity sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==
-
-"@esbuild/win32-x64@0.25.8":
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz#610d7ea539d2fcdbe39237b5cc175eb2c4451f9c"
- integrity sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==
-
-"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0", "@eslint-community/eslint-utils@^4.7.0":
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a"
- integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0", "@eslint-community/eslint-utils@^4.5.1":
+ version "4.5.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz#b0fc7e06d0c94f801537fd4237edc2706d3b8e4c"
+ integrity sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==
dependencies:
eslint-visitor-keys "^3.4.3"
@@ -709,53 +553,60 @@
integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
"@eslint/compat@^1.2.5":
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.3.1.tgz#19f62ee48896d38f8eab591bee2a25dd69abc273"
- integrity sha512-k8MHony59I5EPic6EQTCNOuPoVBnoYXkP+20xvwFjN7t0qI3ImyvyBgg+hIVPwC8JaxVjjUZld+cLfBLFDLucg==
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.2.8.tgz#6baa38061ca8850199bf5a322afab34537ba3621"
+ integrity sha512-LqCYHdWL/QqKIJuZ/ucMAv8d4luKGs4oCPgpt8mWztQAtPrHfXKQ/XAUc8ljCHAfJCn6SvkpTcGt5Tsh8saowA==
-"@eslint/config-array@^0.21.0":
- version "0.21.0"
- resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.0.tgz#abdbcbd16b124c638081766392a4d6b509f72636"
- integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==
+"@eslint/config-array@^0.20.0":
+ version "0.20.0"
+ resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.20.0.tgz#7a1232e82376712d3340012a2f561a2764d1988f"
+ integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==
dependencies:
"@eslint/object-schema" "^2.1.6"
debug "^4.3.1"
minimatch "^3.1.2"
-"@eslint/config-helpers@^0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.3.0.tgz#3e09a90dfb87e0005c7694791e58e97077271286"
- integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==
+"@eslint/config-helpers@^0.2.0":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.1.tgz#26042c028d1beee5ce2235a7929b91c52651646d"
+ integrity sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==
-"@eslint/config-inspector@^1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@eslint/config-inspector/-/config-inspector-1.1.0.tgz#965ce2a9fdad28f11e63077248068bb4c94a9f7d"
- integrity sha512-DQGzRGV6jKujyxxCPlhwwyzq3HTW/NbFX9A4npPjW0+0A3KemxYJWZdwqJn4rauPsRUpJ8yuh5uOyMCChrnFsg==
+"@eslint/config-inspector@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@eslint/config-inspector/-/config-inspector-1.0.2.tgz#2e2dee499eb66ba61211d793b849319aec64b3e3"
+ integrity sha512-lPo4ijqq/xA2eVXpfc9jdTN4Y1YTFLBXF1TpgxGqwBFymrpSl5IbxEPcEq7v82xv94EuQsGCqzI/QVMZ16cafg==
dependencies:
"@nodelib/fs.walk" "^3.0.1"
- ansis "^4.1.0"
+ ansis "^3.17.0"
bundle-require "^5.1.0"
cac "^6.7.14"
chokidar "^4.0.3"
- debug "^4.4.1"
- esbuild "^0.25.5"
+ debug "^4.4.0"
+ esbuild "^0.25.0"
find-up "^7.0.0"
get-port-please "^3.1.2"
- h3 "^1.15.3"
+ h3 "^1.15.1"
mlly "^1.7.4"
mrmime "^2.0.1"
- open "^10.1.2"
- tinyglobby "^0.2.14"
- ws "^8.18.2"
+ open "^10.1.0"
+ tinyglobby "^0.2.12"
+ ws "^8.18.1"
-"@eslint/core@^0.15.0", "@eslint/core@^0.15.1":
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.15.1.tgz#d530d44209cbfe2f82ef86d6ba08760196dd3b60"
- integrity sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==
+"@eslint/core@^0.12.0":
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e"
+ integrity sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==
dependencies:
"@types/json-schema" "^7.0.15"
-"@eslint/eslintrc@^3.0.0", "@eslint/eslintrc@^3.3.1":
+"@eslint/core@^0.13.0":
+ version "0.13.0"
+ resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.13.0.tgz#bf02f209846d3bf996f9e8009db62df2739b458c"
+ integrity sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==
+ dependencies:
+ "@types/json-schema" "^7.0.15"
+
+"@eslint/eslintrc@^3.3.1":
version "3.3.1"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964"
integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==
@@ -770,22 +621,22 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@9.31.0", "@eslint/js@^9.31.0":
- version "9.31.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.31.0.tgz#adb1f39953d8c475c4384b67b67541b0d7206ed8"
- integrity sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==
+"@eslint/js@9.24.0", "@eslint/js@^9.23.0":
+ version "9.24.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.24.0.tgz#685277980bb7bf84ecc8e4e133ccdda7545a691e"
+ integrity sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==
"@eslint/object-schema@^2.1.6":
version "2.1.6"
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f"
integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==
-"@eslint/plugin-kit@^0.3.1", "@eslint/plugin-kit@^0.3.3":
- version "0.3.4"
- resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz#c6b9f165e94bf4d9fdd493f1c028a94aaf5fc1cc"
- integrity sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==
+"@eslint/plugin-kit@^0.2.7":
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz#47488d8f8171b5d4613e833313f3ce708e3525f8"
+ integrity sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==
dependencies:
- "@eslint/core" "^0.15.1"
+ "@eslint/core" "^0.13.0"
levn "^0.4.1"
"@fastify/accept-negotiator@^1.1.0":
@@ -793,11 +644,6 @@
resolved "https://registry.yarnpkg.com/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz#c1c66b3b771c09742a54dd5bc87c582f6b0630ff"
integrity sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==
-"@fastify/busboy@^3.1.1":
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-3.1.1.tgz#af3aea7f1e52ec916d8b5c9dcc0f09d4c060a3fc"
- integrity sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==
-
"@headlessui/vue@^1.7.23":
version "1.7.23"
resolved "https://registry.yarnpkg.com/@headlessui/vue/-/vue-1.7.23.tgz#7fe19dbeca35de9e6270c82c78c4864e6a6f7391"
@@ -834,159 +680,128 @@
integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
"@humanwhocodes/retry@^0.4.2":
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba"
- integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.2.tgz#1860473de7dfa1546767448f333db80cb0ff2161"
+ integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==
-"@intlify/bundle-utils@^10.0.1":
- version "10.0.1"
- resolved "https://registry.yarnpkg.com/@intlify/bundle-utils/-/bundle-utils-10.0.1.tgz#6416e1c327bcc3b3579d803dc9bbe0d30ec0b012"
- integrity sha512-WkaXfSevtpgtUR4t8K2M6lbR7g03mtOxFeh+vXp5KExvPqS12ppaRj1QxzwRuRI5VUto54A22BjKoBMLyHILWQ==
+"@img/sharp-darwin-arm64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08"
+ integrity sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==
+ optionalDependencies:
+ "@img/sharp-libvips-darwin-arm64" "1.0.4"
+
+"@img/sharp-darwin-x64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61"
+ integrity sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==
+ optionalDependencies:
+ "@img/sharp-libvips-darwin-x64" "1.0.4"
+
+"@img/sharp-libvips-darwin-arm64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz#447c5026700c01a993c7804eb8af5f6e9868c07f"
+ integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==
+
+"@img/sharp-libvips-darwin-x64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062"
+ integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==
+
+"@img/sharp-libvips-linux-arm64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704"
+ integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==
+
+"@img/sharp-libvips-linux-arm@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197"
+ integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==
+
+"@img/sharp-libvips-linux-s390x@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce"
+ integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==
+
+"@img/sharp-libvips-linux-x64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0"
+ integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==
+
+"@img/sharp-libvips-linuxmusl-arm64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5"
+ integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==
+
+"@img/sharp-libvips-linuxmusl-x64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff"
+ integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==
+
+"@img/sharp-linux-arm64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22"
+ integrity sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==
+ optionalDependencies:
+ "@img/sharp-libvips-linux-arm64" "1.0.4"
+
+"@img/sharp-linux-arm@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff"
+ integrity sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==
+ optionalDependencies:
+ "@img/sharp-libvips-linux-arm" "1.0.5"
+
+"@img/sharp-linux-s390x@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667"
+ integrity sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==
+ optionalDependencies:
+ "@img/sharp-libvips-linux-s390x" "1.0.4"
+
+"@img/sharp-linux-x64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb"
+ integrity sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==
+ optionalDependencies:
+ "@img/sharp-libvips-linux-x64" "1.0.4"
+
+"@img/sharp-linuxmusl-arm64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b"
+ integrity sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==
+ optionalDependencies:
+ "@img/sharp-libvips-linuxmusl-arm64" "1.0.4"
+
+"@img/sharp-linuxmusl-x64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48"
+ integrity sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==
+ optionalDependencies:
+ "@img/sharp-libvips-linuxmusl-x64" "1.0.4"
+
+"@img/sharp-wasm32@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1"
+ integrity sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==
dependencies:
- "@intlify/message-compiler" "^11.1.2"
- "@intlify/shared" "^11.1.2"
- acorn "^8.8.2"
- escodegen "^2.1.0"
- estree-walker "^2.0.2"
- jsonc-eslint-parser "^2.3.0"
- mlly "^1.2.0"
- source-map-js "^1.0.1"
- yaml-eslint-parser "^1.2.2"
+ "@emnapi/runtime" "^1.2.0"
-"@intlify/core-base@10.0.8":
- version "10.0.8"
- resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-10.0.8.tgz#2fcf46bab72d4daa8575eb11e04a549ea4030ac3"
- integrity sha512-FoHslNWSoHjdUBLy35bpm9PV/0LVI/DSv9L6Km6J2ad8r/mm0VaGg06C40FqlE8u2ADcGUM60lyoU7Myo4WNZQ==
- dependencies:
- "@intlify/message-compiler" "10.0.8"
- "@intlify/shared" "10.0.8"
+"@img/sharp-win32-ia32@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9"
+ integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==
-"@intlify/core-base@^11.0.0":
- version "11.1.11"
- resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-11.1.11.tgz#e36893a7d37a3a75fae30977fc58c1d8cf3c853f"
- integrity sha512-1Z0N8jTfkcD2Luq9HNZt+GmjpFe4/4PpZF3AOzoO1u5PTtSuXZcfhwBatywbfE2ieB/B5QHIoOFmCXY2jqVKEQ==
- dependencies:
- "@intlify/message-compiler" "11.1.11"
- "@intlify/shared" "11.1.11"
-
-"@intlify/core@^10.0.3":
- version "10.0.8"
- resolved "https://registry.yarnpkg.com/@intlify/core/-/core-10.0.8.tgz#ab7b38cd5930d076e20ad320ee7324e2497e729f"
- integrity sha512-2BbgN0aeuYHOHe7kVlTr2XxyrnLQZ/4/Y0Pw8luU67723+AqVYqxB7ZG1FzLCVNwAmzdVZMjKzFpgOzdUSdBfw==
- dependencies:
- "@intlify/core-base" "10.0.8"
- "@intlify/shared" "10.0.8"
-
-"@intlify/eslint-plugin-vue-i18n@^4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@intlify/eslint-plugin-vue-i18n/-/eslint-plugin-vue-i18n-4.0.1.tgz#c7d0c6379b2daea6270b641ea860720e720115dc"
- integrity sha512-xZKG7EvMvvumK9sdpnt6Dxa/dxV6/05/hRXIgJc0XI4l0+QUnyfdz5qXEvDm21T+OQsFN0CK/C+p0Fpra2wscQ==
- dependencies:
- "@eslint/eslintrc" "^3.0.0"
- "@intlify/core-base" "^11.0.0"
- "@intlify/message-compiler" "^11.0.0"
- debug "^4.3.4"
- eslint-compat-utils "^0.6.0"
- glob "^10.3.3"
- globals "^16.0.0"
- ignore "^7.0.0"
- import-fresh "^3.3.0"
- is-language-code "^3.1.0"
- js-yaml "^4.1.0"
- json5 "^2.2.3"
- lodash "^4.17.21"
- parse5 "^7.1.2"
- semver "^7.5.4"
- synckit "^0.10.0"
-
-"@intlify/h3@^0.6.1":
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/@intlify/h3/-/h3-0.6.1.tgz#ded9e5f71864f63e4ee50923dff53389dea7ff41"
- integrity sha512-hFMcqWXCoFNZkraa+JF7wzByGdE0vGi8rUs7CTFrE4hE3X2u9QcelH8VRO8mPgJDH+TgatzvrVp6iZsWVluk2A==
- dependencies:
- "@intlify/core" "^10.0.3"
- "@intlify/utils" "^0.13.0"
-
-"@intlify/message-compiler@10.0.8":
- version "10.0.8"
- resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-10.0.8.tgz#48aee742916f8aaa43945682f32bec1c9e73e2f8"
- integrity sha512-DV+sYXIkHVd5yVb2mL7br/NEUwzUoLBsMkV3H0InefWgmYa34NLZUvMCGi5oWX+Hqr2Y2qUxnVrnOWF4aBlgWg==
- dependencies:
- "@intlify/shared" "10.0.8"
- source-map-js "^1.0.2"
-
-"@intlify/message-compiler@11.1.11", "@intlify/message-compiler@^11.0.0", "@intlify/message-compiler@^11.1.2":
- version "11.1.11"
- resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-11.1.11.tgz#ba10641f86af0e991ac9def0385bd345c8f150fb"
- integrity sha512-7PC6neomoc/z7a8JRjPBbu0T2TzR2MQuY5kn2e049MP7+o32Ve7O8husylkA7K9fQRe4iNXZWTPnDJ6vZdtS1Q==
- dependencies:
- "@intlify/shared" "11.1.11"
- source-map-js "^1.0.2"
-
-"@intlify/shared@10.0.8", "@intlify/shared@^10.0.0", "@intlify/shared@^10.0.7":
- version "10.0.8"
- resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-10.0.8.tgz#5f8019919dea8695b2e345257fc0cda7665d8ef9"
- integrity sha512-BcmHpb5bQyeVNrptC3UhzpBZB/YHHDoEREOUERrmF2BRxsyOEuRrq+Z96C/D4+2KJb8kuHiouzAei7BXlG0YYw==
-
-"@intlify/shared@11.1.11", "@intlify/shared@^11.1.2":
- version "11.1.11"
- resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-11.1.11.tgz#6bba3b86617c05767356e4ca939c9e300563a083"
- integrity sha512-RIBFTIqxZSsxUqlcyoR7iiC632bq7kkOwYvZlvcVObHfrF4NhuKc4FKvu8iPCrEO+e3XsY7/UVpfgzg+M7ETzA==
-
-"@intlify/unplugin-vue-i18n@^6.0.8":
- version "6.0.8"
- resolved "https://registry.yarnpkg.com/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-6.0.8.tgz#2162dced28b01f7ea471b577ba10ecc4ba523d0d"
- integrity sha512-Vvm3KhjE6TIBVUQAk37rBiaYy2M5OcWH0ZcI1XKEsOTeN1o0bErk+zeuXmcrcMc/73YggfI8RoxOUz9EB/69JQ==
- dependencies:
- "@eslint-community/eslint-utils" "^4.4.0"
- "@intlify/bundle-utils" "^10.0.1"
- "@intlify/shared" "^11.1.2"
- "@intlify/vue-i18n-extensions" "^8.0.0"
- "@rollup/pluginutils" "^5.1.0"
- "@typescript-eslint/scope-manager" "^8.13.0"
- "@typescript-eslint/typescript-estree" "^8.13.0"
- debug "^4.3.3"
- fast-glob "^3.2.12"
- js-yaml "^4.1.0"
- json5 "^2.2.3"
- pathe "^1.0.0"
- picocolors "^1.0.0"
- source-map-js "^1.0.2"
- unplugin "^1.1.0"
- vue "^3.4"
-
-"@intlify/utils@^0.13.0":
- version "0.13.0"
- resolved "https://registry.yarnpkg.com/@intlify/utils/-/utils-0.13.0.tgz#bea7014796b633a9f4d312833642d33b38755cba"
- integrity sha512-8i3uRdAxCGzuHwfmHcVjeLQBtysQB2aXl/ojoagDut5/gY5lvWCQ2+cnl2TiqE/fXj/D8EhWG/SLKA7qz4a3QA==
-
-"@intlify/vue-i18n-extensions@^8.0.0":
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/@intlify/vue-i18n-extensions/-/vue-i18n-extensions-8.0.0.tgz#84adc3f40829ee144f056b774a77d838ce3f5034"
- integrity sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ==
- dependencies:
- "@babel/parser" "^7.24.6"
- "@intlify/shared" "^10.0.0"
- "@vue/compiler-dom" "^3.2.45"
- vue-i18n "^10.0.0"
+"@img/sharp-win32-x64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342"
+ integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==
"@ioredis/commands@^1.1.1":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11"
integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==
-"@isaacs/balanced-match@^4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29"
- integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==
-
-"@isaacs/brace-expansion@^5.0.0":
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3"
- integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==
- dependencies:
- "@isaacs/balanced-match" "^4.0.1"
-
"@isaacs/cliui@^8.0.2":
version "8.0.2"
resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
@@ -1006,12 +821,13 @@
dependencies:
minipass "^7.0.4"
-"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5":
- version "0.3.12"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz#2234ce26c62889f03db3d7fea43c1932ab3e927b"
- integrity sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==
+"@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
+ integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
dependencies:
- "@jridgewell/sourcemap-codec" "^1.5.0"
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.24"
"@jridgewell/resolve-uri@^3.1.0":
@@ -1019,27 +835,37 @@
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+
"@jridgewell/source-map@^0.3.3":
- version "0.3.10"
- resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.10.tgz#a35714446a2e84503ff9bfe66f1d1d4846f2075b"
- integrity sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a"
+ integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==
dependencies:
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.25"
-"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7"
- integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
+ integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
-"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28":
- version "0.3.29"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz#a58d31eaadaf92c6695680b2e1d464a9b8fbf7fc"
- integrity sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+ version "0.3.25"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
dependencies:
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@jsdevtools/ono@^7.1.3":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
+ integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
+
"@kwsites/file-exists@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99"
@@ -1052,14 +878,6 @@
resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919"
integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==
-"@lobomfz/prismark@0.0.3":
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/@lobomfz/prismark/-/prismark-0.0.3.tgz#8b4eb34963e96cf3fff01432e62de22f184f2f2d"
- integrity sha512-g2xfR/F+sRBRUhWYlpUkafqZjqsQBetjfzdWvQndRU4wdoavn3zblM3OQwb7vrsrKB6Wmbs+DtLGaD5XBQ2v8A==
- dependencies:
- "@prisma/generator-helper" "^6.5.0"
- arktype "^2.1.9"
-
"@mapbox/node-pre-gyp@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.0.tgz#16d1d9049c0218820da81a12ae084e7fe67790d1"
@@ -1078,129 +896,26 @@
resolved "https://registry.yarnpkg.com/@mixmark-io/domino/-/domino-2.2.0.tgz#4e8ec69bf1afeb7a14f0628b7e2c0f35bdb336c3"
integrity sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==
-"@miyaneee/rollup-plugin-json5@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@miyaneee/rollup-plugin-json5/-/rollup-plugin-json5-1.2.0.tgz#a0995e55bfcf055aea0c9c73e0b2dcac120e036e"
- integrity sha512-JjTIaXZp9WzhUHpElrqPnl1AzBi/rvRs065F71+aTmlqvTMVkdbjZ8vfFl4nRlgJy+TPBw69ZK4pwFdmOAt4aA==
+"@napi-rs/wasm-runtime@^0.2.7", "@napi-rs/wasm-runtime@^0.2.8":
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.8.tgz#642e8390ee78ed21d6b79c467aa610e249224ed6"
+ integrity sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==
dependencies:
- "@rollup/pluginutils" "^5.1.0"
- json5 "^2.2.3"
+ "@emnapi/core" "^1.4.0"
+ "@emnapi/runtime" "^1.4.0"
+ "@tybys/wasm-util" "^0.9.0"
-"@napi-rs/wasm-runtime@^0.2.11", "@napi-rs/wasm-runtime@^0.2.9":
- version "0.2.12"
- resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz#3e78a8b96e6c33a6c517e1894efbd5385a7cb6f2"
- integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==
+"@netlify/functions@^3.0.2":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-3.0.4.tgz#0668f0cb5995948624f8f597c29b4bcf0b1eb7fc"
+ integrity sha512-Ox8+ABI+nsLK+c4/oC5dpquXuEIjzfTlJrdQKgQijCsDQoje7inXFAtKDLvvaGvuvE+PVpMLwQcIUL6P9Ob1hQ==
dependencies:
- "@emnapi/core" "^1.4.3"
- "@emnapi/runtime" "^1.4.3"
- "@tybys/wasm-util" "^0.10.0"
+ "@netlify/serverless-functions-api" "1.36.0"
-"@netlify/binary-info@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@netlify/binary-info/-/binary-info-1.0.0.tgz#cd0d86fb783fb03e52067f0cd284865e57be86c8"
- integrity sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==
-
-"@netlify/blobs@9.1.2":
- version "9.1.2"
- resolved "https://registry.yarnpkg.com/@netlify/blobs/-/blobs-9.1.2.tgz#8589b5bbf45fd4b2a3815722de546108c2917f85"
- integrity sha512-7dMjExSH4zj4ShvLem49mE3mf0K171Tx2pV4WDWhJbRUWW3SJIR2qntz0LvUGS97N5HO1SmnzrgWUhEXCsApiw==
- dependencies:
- "@netlify/dev-utils" "2.2.0"
- "@netlify/runtime-utils" "1.3.1"
-
-"@netlify/dev-utils@2.2.0":
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/@netlify/dev-utils/-/dev-utils-2.2.0.tgz#c3451174c15dc836cf0381a50896532291e597b4"
- integrity sha512-5XUvZuffe3KetyhbWwd4n2ktd7wraocCYw10tlM+/u/95iAz29GjNiuNxbCD1T6Bn1MyGc4QLVNKOWhzJkVFAw==
- dependencies:
- "@whatwg-node/server" "^0.9.60"
- chokidar "^4.0.1"
- decache "^4.6.2"
- dot-prop "9.0.0"
- env-paths "^3.0.0"
- find-up "7.0.0"
- lodash.debounce "^4.0.8"
- netlify "^13.3.5"
- parse-gitignore "^2.0.0"
- uuid "^11.1.0"
- write-file-atomic "^6.0.0"
-
-"@netlify/functions@^3.1.10":
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-3.1.10.tgz#d2254e428428617db66d44d4a4b5cab294f826ec"
- integrity sha512-sI93kcJ2cUoMgDRPnrEm0lZhuiDVDqM6ngS/UbHTApIH3+eg3yZM5p/0SDFQQq9Bad0/srFmgBmTdXushzY5kg==
- dependencies:
- "@netlify/blobs" "9.1.2"
- "@netlify/dev-utils" "2.2.0"
- "@netlify/serverless-functions-api" "1.41.2"
- "@netlify/zip-it-and-ship-it" "^12.1.0"
- cron-parser "^4.9.0"
- decache "^4.6.2"
- extract-zip "^2.0.1"
- is-stream "^4.0.1"
- jwt-decode "^4.0.0"
- lambda-local "^2.2.0"
- read-package-up "^11.0.0"
- source-map-support "^0.5.21"
-
-"@netlify/open-api@^2.37.0":
- version "2.37.0"
- resolved "https://registry.yarnpkg.com/@netlify/open-api/-/open-api-2.37.0.tgz#fe2896f993d07e1a881a671b121d0f0dbae6a3c2"
- integrity sha512-zXnRFkxgNsalSgU8/vwTWnav3R+8KG8SsqHxqaoJdjjJtnZR7wo3f+qqu4z+WtZ/4V7fly91HFUwZ6Uz2OdW7w==
-
-"@netlify/runtime-utils@1.3.1":
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/@netlify/runtime-utils/-/runtime-utils-1.3.1.tgz#b2d9dc9716f4f6ece39cf1ab034cb6245caae8a3"
- integrity sha512-7/vIJlMYrPJPlEW84V2yeRuG3QBu66dmlv9neTmZ5nXzwylhBEOhy11ai+34A8mHCSZI4mKns25w3HM9kaDdJg==
-
-"@netlify/serverless-functions-api@1.41.2":
- version "1.41.2"
- resolved "https://registry.yarnpkg.com/@netlify/serverless-functions-api/-/serverless-functions-api-1.41.2.tgz#268016647b33be93d30bbe86757b6a1495f30510"
- integrity sha512-pfCkH50JV06SGMNsNPjn8t17hOcId4fA881HeYQgMBOrewjsw4csaYgHEnCxCEu24Y5x75E2ULbFpqm9CvRCqw==
-
-"@netlify/serverless-functions-api@^2.1.3":
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/@netlify/serverless-functions-api/-/serverless-functions-api-2.1.3.tgz#fe1bec094e88e018da84ea8898f3fa0d81462a48"
- integrity sha512-bNlN/hpND8xFQzpjyKxm6vJayD+bPBlOvs4lWihE7WULrphuH1UuFsoVE5386bNNGH8Rs1IH01AFsl7ALQgOlQ==
-
-"@netlify/zip-it-and-ship-it@^12.1.0":
- version "12.2.1"
- resolved "https://registry.yarnpkg.com/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-12.2.1.tgz#83e911e4f54dd00031028e772fdf851e8cb807a5"
- integrity sha512-zAr+8Tg80y/sUbhdUkZsq4Uy1IMzkSB6H/sKRMrDQ2NJx4uPgf5X5jMdg9g2FljNcxzpfJwc1Gg4OXQrjD0Z4A==
- dependencies:
- "@babel/parser" "^7.22.5"
- "@babel/types" "7.28.0"
- "@netlify/binary-info" "^1.0.0"
- "@netlify/serverless-functions-api" "^2.1.3"
- "@vercel/nft" "0.29.4"
- archiver "^7.0.0"
- common-path-prefix "^3.0.0"
- copy-file "^11.0.0"
- es-module-lexer "^1.0.0"
- esbuild "0.25.5"
- execa "^8.0.0"
- fast-glob "^3.3.3"
- filter-obj "^6.0.0"
- find-up "^7.0.0"
- is-builtin-module "^3.1.0"
- is-path-inside "^4.0.0"
- junk "^4.0.0"
- locate-path "^7.0.0"
- merge-options "^3.0.4"
- minimatch "^9.0.0"
- normalize-path "^3.0.0"
- p-map "^7.0.0"
- path-exists "^5.0.0"
- precinct "^12.0.0"
- require-package-name "^2.0.1"
- resolve "^2.0.0-next.1"
- semver "^7.3.8"
- tmp-promise "^3.0.2"
- toml "^3.0.0"
- unixify "^1.0.0"
- urlpattern-polyfill "8.0.2"
- yargs "^17.0.0"
- zod "^3.23.8"
+"@netlify/serverless-functions-api@1.36.0":
+ version "1.36.0"
+ resolved "https://registry.yarnpkg.com/@netlify/serverless-functions-api/-/serverless-functions-api-1.36.0.tgz#e7e9ce83d059c4c845440ec861a7e69c0d800bfa"
+ integrity sha512-z6okREyK8in0486a22Oro0k+YsuyEjDXJt46FpgeOgXqKJ9ElM8QPll0iuLBkpbH33ENiNbIPLd1cuClRQnhiw==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@@ -1244,22 +959,20 @@
"@nodelib/fs.scandir" "4.0.1"
fastq "^1.15.0"
-"@nuxt/cli@^3.25.1":
- version "3.26.4"
- resolved "https://registry.yarnpkg.com/@nuxt/cli/-/cli-3.26.4.tgz#cf4e13831b364b4b7296212c2fe204c60fe25667"
- integrity sha512-PeZcH7ghQxIcCaKyu+So3qGEjKG18TN1ic4jKvKFQouNgzPSVfvZAeBOHU4znEuDFp/wmoN5EliyHO4HaSs+rw==
+"@nuxt/cli@^3.24.0":
+ version "3.24.1"
+ resolved "https://registry.yarnpkg.com/@nuxt/cli/-/cli-3.24.1.tgz#7a864e3133506859254547dc221fab2f11b852a6"
+ integrity sha512-dWoB3gZj2H04x58QWNWpshQUxjsf0TB6Ppy7YKswS5hGtQkOlQ5k85f133+Bg50TJqzNuZ3OUMRduftppdJjrg==
dependencies:
- c12 "^3.1.0"
+ c12 "^3.0.3"
+ chokidar "^4.0.3"
citty "^0.1.6"
clipboardy "^4.0.0"
- confbox "^0.2.2"
consola "^3.4.2"
defu "^6.1.4"
- exsolve "^1.0.7"
fuse.js "^7.1.0"
- get-port-please "^3.2.0"
giget "^2.0.0"
- h3 "^1.15.3"
+ h3 "^1.15.1"
httpxy "^0.1.7"
jiti "^2.4.2"
listhen "^1.9.0"
@@ -1268,57 +981,58 @@
ohash "^2.0.11"
pathe "^2.0.3"
perfect-debounce "^1.0.0"
- pkg-types "^2.2.0"
+ pkg-types "^2.1.0"
scule "^1.3.0"
- semver "^7.7.2"
- std-env "^3.9.0"
+ semver "^7.7.1"
+ std-env "^3.8.1"
tinyexec "^1.0.1"
- ufo "^1.6.1"
- youch "^4.1.0-beta.10"
+ ufo "^1.5.4"
+ youch "^4.1.0-beta.6"
"@nuxt/devalue@^2.0.2":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@nuxt/devalue/-/devalue-2.0.2.tgz#5749f04df13bda4c863338d8dabaf370f45ef7c7"
integrity sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==
-"@nuxt/devtools-kit@2.6.2", "@nuxt/devtools-kit@^2.4.0", "@nuxt/devtools-kit@^2.6.2":
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/@nuxt/devtools-kit/-/devtools-kit-2.6.2.tgz#c215976aaa6e404b018ad19ce7fbda5d570ed63d"
- integrity sha512-esErdMQ0u3wXXogKQ3IE2m0fxv52w6CzPsfsXF4o5ZVrUQrQaH58ygupDAQTYdlGTgtqmEA6KkHTGG5cM6yxeg==
+"@nuxt/devtools-kit@2.3.2", "@nuxt/devtools-kit@^2.2.1", "@nuxt/devtools-kit@^2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/devtools-kit/-/devtools-kit-2.3.2.tgz#81dc6d3a2a08f22a58068d9557ac333ba662ae27"
+ integrity sha512-K0citnz9bSecPCLl4jGfE5I5St+E9XtDmOvYqq3ranGZGZ2Mvs5RwgUkaOrn4rulvUmBGBl7Exwh5YX9PONrEQ==
dependencies:
- "@nuxt/kit" "^3.17.6"
+ "@nuxt/kit" "^3.16.1"
+ "@nuxt/schema" "^3.16.1"
execa "^8.0.1"
-"@nuxt/devtools-wizard@2.6.2":
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/@nuxt/devtools-wizard/-/devtools-wizard-2.6.2.tgz#db657bd759cf853f441497ec62d05c7d48712d89"
- integrity sha512-s1eYYKi2eZu2ZUPQrf22C0SceWs5/C3c3uow/DVunD304Um/Tj062xM9E4p1B9L8yjaq8t0Gtyu/YvZdo/reyg==
+"@nuxt/devtools-wizard@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/devtools-wizard/-/devtools-wizard-2.3.2.tgz#1f6d6fdfcf2eb4416a4d4a0066bdb74fc409883d"
+ integrity sha512-vrGjcb7O/ojrWM9FXjAyWgMLUTkb9bmQUCXc//wZw8YnJLR/hmmvo0XFwmz31BN7nMLZaMpUclROdlhRSPNf1Q==
dependencies:
consola "^3.4.2"
- diff "^8.0.2"
+ diff "^7.0.0"
execa "^8.0.1"
magicast "^0.3.5"
pathe "^2.0.3"
- pkg-types "^2.2.0"
+ pkg-types "^2.1.0"
prompts "^2.4.2"
- semver "^7.7.2"
+ semver "^7.7.1"
-"@nuxt/devtools@^2.6.2":
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/@nuxt/devtools/-/devtools-2.6.2.tgz#f2476bb4ada9cd9d3f3bc28f47a54bc3c2238244"
- integrity sha512-pqcSDPv1I+8fxa6FvhAxVrfcN/sXYLOBe9scTLbRQOVLTO0pHzryayho678qNKiwWGgj/rcjEDr6IZCgwqOCfA==
+"@nuxt/devtools@^2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/devtools/-/devtools-2.3.2.tgz#cfaf7a38abca8369eeea4303d04ce6711adcab80"
+ integrity sha512-MMx7pUW0aPDRmhe3jy91srEiFWq/Q70rjbGoHhzpVosuvyvy/fi0oKOFQqN5V4V7jJLiEx4HAoD0QdqP0I6xBA==
dependencies:
- "@nuxt/devtools-kit" "2.6.2"
- "@nuxt/devtools-wizard" "2.6.2"
- "@nuxt/kit" "^3.17.6"
- "@vue/devtools-core" "^7.7.7"
- "@vue/devtools-kit" "^7.7.7"
- birpc "^2.4.0"
+ "@nuxt/devtools-kit" "2.3.2"
+ "@nuxt/devtools-wizard" "2.3.2"
+ "@nuxt/kit" "^3.16.1"
+ "@vue/devtools-core" "^7.7.2"
+ "@vue/devtools-kit" "^7.7.2"
+ birpc "^2.3.0"
consola "^3.4.2"
- destr "^2.0.5"
+ destr "^2.0.3"
error-stack-parser-es "^1.0.5"
execa "^8.0.1"
- fast-npm-meta "^0.4.4"
+ fast-npm-meta "^0.3.1"
get-port-please "^3.1.2"
hookable "^5.5.3"
image-meta "^0.2.1"
@@ -1330,96 +1044,95 @@
ohash "^2.0.11"
pathe "^2.0.3"
perfect-debounce "^1.0.0"
- pkg-types "^2.2.0"
- semver "^7.7.2"
- simple-git "^3.28.0"
+ pkg-types "^2.1.0"
+ semver "^7.7.1"
+ simple-git "^3.27.0"
sirv "^3.0.1"
structured-clone-es "^1.0.0"
- tinyglobby "^0.2.14"
- vite-plugin-inspect "^11.3.0"
- vite-plugin-vue-tracer "^1.0.0"
+ tinyglobby "^0.2.12"
+ vite-plugin-inspect "^11.0.0"
+ vite-plugin-vue-tracer "^0.1.3"
which "^5.0.0"
- ws "^8.18.3"
+ ws "^8.18.1"
-"@nuxt/eslint-config@1.7.1":
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/@nuxt/eslint-config/-/eslint-config-1.7.1.tgz#3118c116be62d24c2d917c559fba43a6e0c9404a"
- integrity sha512-xY9CNA24LGiauNw2h1L76iw/SFChEIojqQQM5UgGU+nfRfAZaitfumsmqhMXa6tTdnbF+uf6EpumaMdk3LNRpg==
+"@nuxt/eslint-config@1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@nuxt/eslint-config/-/eslint-config-1.3.0.tgz#b24dae6aa3b7024a22d0bf9662adca4a5952cf9e"
+ integrity sha512-m0ebtmjyAiPVctBn+YijVst3WA2tQ6s/YJT4Dr33bTiSVvl+sFapxvAV+YOTyS4WECCBtjTAct61gamjbiahPg==
dependencies:
- "@antfu/install-pkg" "^1.1.0"
- "@clack/prompts" "^0.11.0"
- "@eslint/js" "^9.31.0"
- "@nuxt/eslint-plugin" "1.7.1"
- "@stylistic/eslint-plugin" "^5.2.1"
- "@typescript-eslint/eslint-plugin" "^8.38.0"
- "@typescript-eslint/parser" "^8.38.0"
+ "@antfu/install-pkg" "^1.0.0"
+ "@clack/prompts" "^0.10.0"
+ "@eslint/js" "^9.23.0"
+ "@nuxt/eslint-plugin" "1.3.0"
+ "@stylistic/eslint-plugin" "^4.2.0"
+ "@typescript-eslint/eslint-plugin" "^8.28.0"
+ "@typescript-eslint/parser" "^8.28.0"
eslint-config-flat-gitignore "^2.1.0"
- eslint-flat-config-utils "^2.1.0"
+ eslint-flat-config-utils "^2.0.1"
eslint-merge-processors "^2.0.0"
- eslint-plugin-import-lite "^0.3.0"
- eslint-plugin-import-x "^4.16.1"
- eslint-plugin-jsdoc "^51.4.1"
- eslint-plugin-regexp "^2.9.0"
- eslint-plugin-unicorn "^60.0.0"
- eslint-plugin-vue "^10.3.0"
+ eslint-plugin-import-x "^4.9.4"
+ eslint-plugin-jsdoc "^50.6.9"
+ eslint-plugin-regexp "^2.7.0"
+ eslint-plugin-unicorn "^58.0.0"
+ eslint-plugin-vue "^10.0.0"
eslint-processor-vue-blocks "^2.0.0"
- globals "^16.3.0"
+ globals "^16.0.0"
local-pkg "^1.1.1"
pathe "^2.0.3"
- vue-eslint-parser "^10.2.0"
+ vue-eslint-parser "^10.1.1"
-"@nuxt/eslint-plugin@1.7.1":
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/@nuxt/eslint-plugin/-/eslint-plugin-1.7.1.tgz#be49606b09ff291d54df5b293426981f681f74cb"
- integrity sha512-az7qM8g95JPI8SO4c7lcbab3DVQPsNxCVik+b4XwtpEhxtkW0BEq3VFCmM5aZbFhmV4qE5TOCl7LA4Saq4lhGQ==
+"@nuxt/eslint-plugin@1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@nuxt/eslint-plugin/-/eslint-plugin-1.3.0.tgz#043ad787bb20cebbf59182e5fadf048ba0f8cec6"
+ integrity sha512-XrBSM81/nqMg4t4/iI2ZzSWlqz6v2IHmgQHobVuRASFI4b4fPRMoAl46CEGoDs8TgK7RBOJ1BziJ64c7Icos0g==
dependencies:
- "@typescript-eslint/types" "^8.38.0"
- "@typescript-eslint/utils" "^8.38.0"
+ "@typescript-eslint/types" "^8.28.0"
+ "@typescript-eslint/utils" "^8.28.0"
"@nuxt/eslint@^1.3.0":
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/@nuxt/eslint/-/eslint-1.7.1.tgz#4983593169a97108a154480f464319c71e2025f5"
- integrity sha512-/kbtRE6+kSDR+WxR/aL64E7ov58VUSsbwwOdS55R7f8ZjIReF+hfVBGA8CxXHo0LgIGTmoQbz7km4Nx+sGhxQw==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@nuxt/eslint/-/eslint-1.3.0.tgz#3a2ce21f47a72a3f04d4ae8715cbdbe158667c03"
+ integrity sha512-0jdXePVFIzK4firlSS9CJTa9zlyPKJ0/t1Ny2/8pkssfNEhVA1B4RQpMDuvQ40QPcgMpeCdtNhQxHaIxyD/QLg==
dependencies:
- "@eslint/config-inspector" "^1.1.0"
- "@nuxt/devtools-kit" "^2.6.2"
- "@nuxt/eslint-config" "1.7.1"
- "@nuxt/eslint-plugin" "1.7.1"
- "@nuxt/kit" "^4.0.1"
+ "@eslint/config-inspector" "^1.0.2"
+ "@nuxt/devtools-kit" "^2.3.2"
+ "@nuxt/eslint-config" "1.3.0"
+ "@nuxt/eslint-plugin" "1.3.0"
+ "@nuxt/kit" "^3.16.1"
chokidar "^4.0.3"
- eslint-flat-config-utils "^2.1.0"
- eslint-typegen "^2.2.1"
+ eslint-flat-config-utils "^2.0.1"
+ eslint-typegen "^2.1.0"
find-up "^7.0.0"
- get-port-please "^3.2.0"
+ get-port-please "^3.1.2"
mlly "^1.7.4"
pathe "^2.0.3"
- unimport "^5.2.0"
+ unimport "^4.1.3"
"@nuxt/fonts@^0.11.0":
- version "0.11.4"
- resolved "https://registry.yarnpkg.com/@nuxt/fonts/-/fonts-0.11.4.tgz#21c0ef65cc841a33610cd2abe16e6f551c013d37"
- integrity sha512-GbLavsC+9FejVwY+KU4/wonJsKhcwOZx/eo4EuV57C4osnF/AtEmev8xqI0DNlebMEhEGZbu1MGwDDDYbeR7Bw==
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/@nuxt/fonts/-/fonts-0.11.0.tgz#a9ae5d3467f29cb3c863b1c4f8c1f0a20388fc3e"
+ integrity sha512-YdQqJDm+B9A6hyhralFcUXMCLdQZTKuqHPpAeD6Gb3uYLxfVYVyKKxc5Ch0n656u1mp9CaPaeK4CkDAQDgxAbQ==
dependencies:
- "@nuxt/devtools-kit" "^2.4.0"
- "@nuxt/kit" "^3.17.3"
- consola "^3.4.2"
+ "@nuxt/devtools-kit" "^2.2.1"
+ "@nuxt/kit" "^3.16.0"
+ consola "^3.4.0"
css-tree "^3.1.0"
defu "^6.1.4"
- esbuild "^0.25.4"
- fontaine "^0.6.0"
- h3 "^1.15.3"
+ esbuild "^0.25.0"
+ fontaine "^0.5.0"
+ h3 "^1.15.1"
jiti "^2.4.2"
- magic-regexp "^0.10.0"
+ magic-regexp "^0.8.0"
magic-string "^0.30.17"
node-fetch-native "^1.6.6"
ohash "^2.0.11"
pathe "^2.0.3"
sirv "^3.0.1"
- tinyglobby "^0.2.13"
- ufo "^1.6.1"
- unifont "^0.4.1"
- unplugin "^2.3.3"
- unstorage "^1.16.0"
+ tinyglobby "^0.2.12"
+ ufo "^1.5.4"
+ unifont "^0.1.7"
+ unplugin "^2.2.0"
+ unstorage "^1.15.0"
"@nuxt/image@^1.10.0":
version "1.10.0"
@@ -1439,71 +1152,81 @@
optionalDependencies:
ipx "^2.1.0"
-"@nuxt/kit@3.17.7", "@nuxt/kit@^3.11.2", "@nuxt/kit@^3.12.4", "@nuxt/kit@^3.13.2", "@nuxt/kit@^3.15.4", "@nuxt/kit@^3.16.0", "@nuxt/kit@^3.17.2", "@nuxt/kit@^3.17.3", "@nuxt/kit@^3.17.6":
- version "3.17.7"
- resolved "https://registry.yarnpkg.com/@nuxt/kit/-/kit-3.17.7.tgz#2c6123c0495ac4b8f1c9b6207744a8d13c8da8ee"
- integrity sha512-JLno3ur7Pix2o/StxIMlEHRkMawA6h7uzjZBDgxdeKXRWTYY8ID9YekSkN4PBlEFGXBfCBOcPd5+YqcyBUAMkw==
+"@nuxt/kit@3.16.2":
+ version "3.16.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/kit/-/kit-3.16.2.tgz#9fbb2ef3bd9ebeb499b4cc5215e2f857c54b75d7"
+ integrity sha512-K1SAUo2vweTfudKZzjKsZ5YJoxPLTspR5qz5+G61xtZreLpsdpDYfBseqsIAl5VFLJuszeRpWQ01jP9LfQ6Ksw==
dependencies:
- c12 "^3.0.4"
+ c12 "^3.0.2"
consola "^3.4.2"
defu "^6.1.4"
- destr "^2.0.5"
+ destr "^2.0.3"
errx "^0.1.0"
- exsolve "^1.0.7"
- ignore "^7.0.5"
+ exsolve "^1.0.4"
+ globby "^14.1.0"
+ ignore "^7.0.3"
jiti "^2.4.2"
klona "^2.0.6"
knitwork "^1.2.0"
mlly "^1.7.4"
ohash "^2.0.11"
pathe "^2.0.3"
- pkg-types "^2.2.0"
+ pkg-types "^2.1.0"
scule "^1.3.0"
- semver "^7.7.2"
- std-env "^3.9.0"
- tinyglobby "^0.2.14"
- ufo "^1.6.1"
+ semver "^7.7.1"
+ std-env "^3.8.1"
+ ufo "^1.5.4"
unctx "^2.4.1"
- unimport "^5.1.0"
+ unimport "^4.1.3"
untyped "^2.0.0"
-"@nuxt/kit@^4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@nuxt/kit/-/kit-4.0.1.tgz#15d1ab3e36f963fdd4f19106ef3212fee6230002"
- integrity sha512-9vYpbuK3xcVhuDq+NyoLhbAolV/bEESaozFOMutl0jhrODcNWFrJ8wQSZIt9yxcFXUgXgUa2ms31qaUEpXrykw==
+"@nuxt/kit@^3.11.2", "@nuxt/kit@^3.12.4", "@nuxt/kit@^3.13.2", "@nuxt/kit@^3.15.4", "@nuxt/kit@^3.16.0", "@nuxt/kit@^3.16.1":
+ version "3.16.1"
+ resolved "https://registry.yarnpkg.com/@nuxt/kit/-/kit-3.16.1.tgz#7acc5457b83fc2c7ecb25d728d83899eef4464d4"
+ integrity sha512-Perby8hJGUeCWad5oTVXb/Ibvp18ZCUC5PxHHu+acMDmVfnxSo48yqk7qNd09VkTF3LEzoEjNZpmW2ZWN0ry7A==
dependencies:
- c12 "^3.1.0"
+ c12 "^3.0.2"
consola "^3.4.2"
defu "^6.1.4"
- destr "^2.0.5"
+ destr "^2.0.3"
errx "^0.1.0"
- exsolve "^1.0.7"
- ignore "^7.0.5"
+ exsolve "^1.0.4"
+ globby "^14.1.0"
+ ignore "^7.0.3"
jiti "^2.4.2"
klona "^2.0.6"
+ knitwork "^1.2.0"
mlly "^1.7.4"
ohash "^2.0.11"
pathe "^2.0.3"
- pkg-types "^2.2.0"
+ pkg-types "^2.1.0"
scule "^1.3.0"
- semver "^7.7.2"
- std-env "^3.9.0"
- tinyglobby "^0.2.14"
- ufo "^1.6.1"
+ semver "^7.7.1"
+ std-env "^3.8.1"
+ ufo "^1.5.4"
unctx "^2.4.1"
- unimport "^5.1.0"
+ unimport "^4.1.2"
untyped "^2.0.0"
-"@nuxt/schema@3.17.7":
- version "3.17.7"
- resolved "https://registry.yarnpkg.com/@nuxt/schema/-/schema-3.17.7.tgz#20a8d17423c411c5d369341595d8d6455532cbe7"
- integrity sha512-c22IE/ECvjUScFyOJH/0VnSf5izDLmwkrCRlZKNhHzcNZUBFe5mCE5BM28QSVRSLGcC/mqg5POyNjf2tRwf+/w==
+"@nuxt/schema@3.16.2":
+ version "3.16.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/schema/-/schema-3.16.2.tgz#9231d6c8a6212670fcc0d2a348418e26f7d832df"
+ integrity sha512-2HZPM372kuI/uw9VU/hOoYuzv803oZAtyoEKC5dQCQTKAQ293AjypF3WljMXUSReFS/hcbBSgGzYUPHr3Qo+pg==
dependencies:
- "@vue/shared" "^3.5.17"
consola "^3.4.2"
defu "^6.1.4"
pathe "^2.0.3"
- std-env "^3.9.0"
+ std-env "^3.8.1"
+
+"@nuxt/schema@^3.16.1":
+ version "3.16.1"
+ resolved "https://registry.yarnpkg.com/@nuxt/schema/-/schema-3.16.1.tgz#685ef851d127d0d5401bd5121b3adf1c3d2723e2"
+ integrity sha512-Ri8bmT6MljpVR4DlXf9+acfgGaI4OTEdAzJU5aF2rJS78abtpnBxjXBG65kuhoL1LUlfKppDl8fTkUw5LM2JXQ==
+ dependencies:
+ consola "^3.4.2"
+ defu "^6.1.4"
+ pathe "^2.0.3"
+ std-env "^3.8.1"
"@nuxt/telemetry@^2.6.6":
version "2.6.6"
@@ -1523,25 +1246,25 @@
rc9 "^2.1.2"
std-env "^3.8.1"
-"@nuxt/vite-builder@3.17.7":
- version "3.17.7"
- resolved "https://registry.yarnpkg.com/@nuxt/vite-builder/-/vite-builder-3.17.7.tgz#a0886306bc8a2f7584d0e2c2fdf20436531ab8e5"
- integrity sha512-XZEte9SMgONWsChKXOrK9/X8TqcSToXy6S9GzxJF199QKUpfsOJy+gZrjOWHS+WrIWdkBmiKBl11kvh8lCIpzA==
+"@nuxt/vite-builder@3.16.2":
+ version "3.16.2"
+ resolved "https://registry.yarnpkg.com/@nuxt/vite-builder/-/vite-builder-3.16.2.tgz#0897a01d0371859caa356030be9bef9510f7d518"
+ integrity sha512-HjK3iZb5GAC4hADOkl2ayn2uNUG4K4qizJ7ud4crHLPw6WHPeT/RhB3j7PpsyRftBnHhlZCsL4Gj/i3rmdcVJw==
dependencies:
- "@nuxt/kit" "3.17.7"
+ "@nuxt/kit" "3.16.2"
"@rollup/plugin-replace" "^6.0.2"
- "@vitejs/plugin-vue" "^5.2.4"
- "@vitejs/plugin-vue-jsx" "^4.2.0"
+ "@vitejs/plugin-vue" "^5.2.3"
+ "@vitejs/plugin-vue-jsx" "^4.1.2"
autoprefixer "^10.4.21"
consola "^3.4.2"
- cssnano "^7.0.7"
+ cssnano "^7.0.6"
defu "^6.1.4"
- esbuild "^0.25.6"
+ esbuild "^0.25.2"
escape-string-regexp "^5.0.0"
- exsolve "^1.0.7"
+ exsolve "^1.0.4"
externality "^1.0.2"
get-port-please "^3.1.2"
- h3 "^1.15.3"
+ h3 "^1.15.1"
jiti "^2.4.2"
knitwork "^1.2.0"
magic-string "^0.30.17"
@@ -1550,196 +1273,69 @@
ohash "^2.0.11"
pathe "^2.0.3"
perfect-debounce "^1.0.0"
- pkg-types "^2.2.0"
- postcss "^8.5.6"
- rollup-plugin-visualizer "^6.0.3"
- std-env "^3.9.0"
- ufo "^1.6.1"
- unenv "^2.0.0-rc.18"
- vite "^6.3.5"
- vite-node "^3.2.4"
- vite-plugin-checker "^0.10.0"
+ pkg-types "^2.1.0"
+ postcss "^8.5.3"
+ rollup-plugin-visualizer "^5.14.0"
+ std-env "^3.8.1"
+ ufo "^1.5.4"
+ unenv "^2.0.0-rc.15"
+ unplugin "^2.2.2"
+ vite "^6.2.4"
+ vite-node "^3.1.1"
+ vite-plugin-checker "^0.9.1"
vue-bundle-renderer "^2.1.1"
-"@nuxtjs/i18n@^9.5.5":
- version "9.5.6"
- resolved "https://registry.yarnpkg.com/@nuxtjs/i18n/-/i18n-9.5.6.tgz#10462d372e72f56760814ace4d6d2c740d81cf6d"
- integrity sha512-PhrQtJT6Di9uoslL5BTrBFqntFlfCaUKlO3T9ORJwmWFdowPqQeFjQ9OjVbKA6TNWr3kQhDqLbIcGlhbuG1USQ==
+"@oxc-parser/binding-darwin-arm64@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.56.5.tgz#deac354d144b85dac8db4db3379d0bad63b2ac75"
+ integrity sha512-rj4WZqQVJQgLnGnDu2ciIOC5SqcBPc4x11RN0NwuedSGzny5mtBdNVLwt0+8iB15lIjrOKg5pjYJ8GQVPca5HA==
+
+"@oxc-parser/binding-darwin-x64@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.56.5.tgz#9cfabdc1dc69642926a9165310e85a1fff50b9d8"
+ integrity sha512-Rr7aMkqcxGIM6fgkpaj9SJj0u1O1g+AT7mJwmdi5PLSQRPR4CkDKfztEnAj5k+d2blWvh9nPZH8G0OCwxIHk1Q==
+
+"@oxc-parser/binding-linux-arm-gnueabihf@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.56.5.tgz#61220508c18571ec6db98f15f3f2221e3c26e742"
+ integrity sha512-jcFCThrWUt5k1GM43tdmI1m2dEnWUPPHHTWKBJbZBXzXLrJJzkqv5OU87Spf1004rYj9swwpa13kIldFwMzglA==
+
+"@oxc-parser/binding-linux-arm64-gnu@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.56.5.tgz#a8fdb2287458c56889aeeed2b352a342a51bf539"
+ integrity sha512-zo/9RDgWvugKxCpHHcAC5EW0AqoEvODJ4Iv4aT1Xonv6kcydbyPSXJBQhhZUvTXTAFIlQKl6INHl+Xki9Qs3fw==
+
+"@oxc-parser/binding-linux-arm64-musl@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.56.5.tgz#9f5876f7f7e8541996a228408997a3c5b88948b4"
+ integrity sha512-SCIqrL5apVbrtMoqOpKX/Ez+c46WmW0Tyhtu+Xby281biH+wYu70m+fux9ZsGmbHc2ojd4FxUcaUdCZtb5uTOQ==
+
+"@oxc-parser/binding-linux-x64-gnu@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.56.5.tgz#07b6b201e50368611b3e258cebea380a2020c8e4"
+ integrity sha512-I2mpX35NWo83hay4wrnzFLk3VuGK1BBwHaqvEdqsCode8iG8slYJRJPICVbCEWlkR3rotlTQ+608JcRU0VqZ5Q==
+
+"@oxc-parser/binding-linux-x64-musl@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.56.5.tgz#5462efaa752ce93055d905078ad02d317a8867a1"
+ integrity sha512-xfzUHGYOh3PGWZdBuY5r1czvE8EGWPAmhTWHqkw3/uAfUVWN/qrrLjMojiaiWyUgl/9XIFg05m5CJH9dnngh5Q==
+
+"@oxc-parser/binding-wasm32-wasi@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.56.5.tgz#c446240cb34fe19324c528a18b9ad635983026c1"
+ integrity sha512-+z3Ofmc1v5kcu8fXgG5vn7T1f52P47ceTTmTXsm5HPY7rq5EMYRUaBnxH6cesXwY1OVVCwYlIZbCiy8Pm1w8zQ==
dependencies:
- "@intlify/h3" "^0.6.1"
- "@intlify/shared" "^10.0.7"
- "@intlify/unplugin-vue-i18n" "^6.0.8"
- "@intlify/utils" "^0.13.0"
- "@miyaneee/rollup-plugin-json5" "^1.2.0"
- "@nuxt/kit" "^3.17.2"
- "@oxc-parser/wasm" "^0.60.0"
- "@rollup/plugin-yaml" "^4.1.2"
- "@vue/compiler-sfc" "^3.5.13"
- debug "^4.4.0"
- defu "^6.1.4"
- esbuild "^0.25.1"
- estree-walker "^3.0.3"
- h3 "^1.15.1"
- knitwork "^1.2.0"
- magic-string "^0.30.17"
- mlly "^1.7.4"
- oxc-parser "^0.70.0"
- pathe "^2.0.3"
- typescript "^5.6.2"
- ufo "^1.5.4"
- unplugin "^2.2.2"
- unplugin-vue-router "^0.12.0"
- vue-i18n "^10.0.7"
- vue-router "^4.5.1"
+ "@napi-rs/wasm-runtime" "^0.2.7"
-"@oxc-parser/binding-android-arm64@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.76.0.tgz#2bf8524add42f7a399ea0da9ae8e764bb9aeb61b"
- integrity sha512-1XJW/16CDmF5bHE7LAyPPmEEVnxSadDgdJz+xiLqBrmC4lfAeuAfRw3HlOygcPGr+AJsbD4Z5sFJMkwjbSZlQg==
+"@oxc-parser/binding-win32-arm64-msvc@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.56.5.tgz#9d6f3131344e78fd0367aa6c4c9ab07f2e1d7a69"
+ integrity sha512-pRg8QrbMh8PgnXBreiONoJBR306u+JN19BXQC7oKIaG4Zxt9Mn8XIyuhUv3ytqjLudSiG2ERWQUoCGLs+yfW0A==
-"@oxc-parser/binding-darwin-arm64@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.70.0.tgz#60765c91612a72914a272723503ab64fdc7cea49"
- integrity sha512-pIi7L9PnsBctS/ruW6JQVSYRJkh76PblBN46uQxpBfVsM57c1s4HGZlmGysQWbdmQTFDZW+SmH3u0JpmDLF0+A==
-
-"@oxc-parser/binding-darwin-arm64@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.76.0.tgz#e253b72b235dd6600449a5907e355f167a92a986"
- integrity sha512-yoQwSom8xsB+JdGsPUU0xxmxLKiF2kdlrK7I56WtGKZilixuBf/TmOwNYJYLRWkBoW5l2/pDZOhBm2luwmLiLw==
-
-"@oxc-parser/binding-darwin-x64@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.70.0.tgz#6807a789f4e46fc079aaa28e836141e57f1dfc1e"
- integrity sha512-EbKqtOHzZR56ZFC5HHg6XrYneFAJmpLC1Z6FSgbI061Ley1atAViQg7S6Agm9wAcPpns+BeFJqXEBx/y3MKa2w==
-
-"@oxc-parser/binding-darwin-x64@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.76.0.tgz#4490fd095ed0564f48938ca4f8cf3f00f7afeb1a"
- integrity sha512-uRIopPLvr3pf2Xj7f5LKyCuqzIU6zOS+zEIR8UDYhcgJyZHnvBkfrYnfcztyIcrGdQehrFUi3uplmI09E7RdiQ==
-
-"@oxc-parser/binding-freebsd-x64@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.70.0.tgz#249072ebeaec38166e08b7245986ee8bc70cafaa"
- integrity sha512-MVUaOMEUVE8q3nsWtEo589h++V5wAdqTbCRa9WY4Yuyxska4xcuJQk/kDNCx+n92saS7Luk+b20O9+VCI03c+A==
-
-"@oxc-parser/binding-freebsd-x64@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.76.0.tgz#b1a448bfc52bec9523a7aa3958476ed8f391c367"
- integrity sha512-a0EOFvnOd2FqmDSvH6uWLROSlU6KV/JDKbsYDA/zRLyKcG6HCsmFnPsp8iV7/xr9WMbNgyJi6R5IMpePQlUq7Q==
-
-"@oxc-parser/binding-linux-arm-gnueabihf@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.70.0.tgz#66be9f0c09adea967192a1f5baed47232f89b1cc"
- integrity sha512-8N4JTYTgKiRHlMUDAdzKs6iEC57a8ex408VgKoLD/Fl+Un79qOti3S9sotdnWSdH/BsDQeO5NW+PKaqFBTw+hA==
-
-"@oxc-parser/binding-linux-arm-gnueabihf@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.76.0.tgz#4a8f1fc55582bc2a045dd79242d4fb18f1af2560"
- integrity sha512-ikRYDHL3fOdZwfJKmcdqjlLgkeNZ3Ez0qM8wAev5zlHZ+lY/Ig7qG5SCqPlvuTu+nNQ6zrFFaKvvt69EBKXU/g==
-
-"@oxc-parser/binding-linux-arm-musleabihf@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.70.0.tgz#8fe8513130a507291fc28be79ad6788dcb7f8ed8"
- integrity sha512-Bsu+YvtgWuSfSDJTHMF5APZBOtvddR0GiHyrL0yaXDwaYvAL/E7XcoSK2GdmKTpw+J8nk5IlejEXlQliPo52pQ==
-
-"@oxc-parser/binding-linux-arm-musleabihf@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.76.0.tgz#bcd4f29ce158b1a817178c2e6962d1b51e9dc5ae"
- integrity sha512-dtRv5J5MRCLR7x39K8ufIIW4svIc7gYFUaI0YFXmmeOBhK/K2t/CkguPnDroKtsmXIPHDRtmJ1JJYzNcgJl6Wg==
-
-"@oxc-parser/binding-linux-arm64-gnu@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.70.0.tgz#5bbc468f295a6a136f39f409d2e0bbb7a118fcf4"
- integrity sha512-tDzHWKexJPHR+qSiuAFoZ1v8EgCd4ggBNbjJHkcIHsoYKnsKaT1+uE9xfW9UhI1mhv2lo1JJ9n9og2yDTGxSeA==
-
-"@oxc-parser/binding-linux-arm64-gnu@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.76.0.tgz#a398c29fc1d5a9cf16025a366fd2cca2a0cab097"
- integrity sha512-IE4iiiggFH2snagQxHrY5bv6dDpRMMat+vdlMN/ibonA65eOmRLp8VLTXnDiNrcla/itJ1L9qGABHNKU+SnE8g==
-
-"@oxc-parser/binding-linux-arm64-musl@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.70.0.tgz#80b6b7d58241d13d351a2db61ad1f6a75332e394"
- integrity sha512-BJ+N25UWmHU624558ojSTnht3uFL00jV1c8qk1hnKf4cl6+ovFcoktRWAWSBlgLEP8tLlu8qgIhz875tMj2PkQ==
-
-"@oxc-parser/binding-linux-arm64-musl@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.76.0.tgz#35c3236396a70dfb071f5a92764b23acca9f6357"
- integrity sha512-wi9zQPMDHrBuRuT7Iurfidc9qlZh7cKa5vfYzOWNBCaqJdgxmNOFzvYen02wVUxSWGKhpiPHxrPX0jdRyJ8Npg==
-
-"@oxc-parser/binding-linux-riscv64-gnu@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.70.0.tgz#96366b6abcbb8737271da551cd569b30883cc358"
- integrity sha512-nxu22nVuPA2xy1cxvBC0D5mVl0myqStOw3XBkVkDViNL01iPyuEFJd5VsM0GqsgrXvF95H/jrbMd+XWnto924g==
-
-"@oxc-parser/binding-linux-riscv64-gnu@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.76.0.tgz#0e3e6567e78bcab5f29376d17512c428cdd7db64"
- integrity sha512-0tqqu1pqPee2lLGY8vtYlX1L415fFn89e0a3yp4q5N9f03j1rRs0R31qesTm3bt/UK8HYjECZ+56FCVPs2MEMQ==
-
-"@oxc-parser/binding-linux-s390x-gnu@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.70.0.tgz#8314032cefa6168fe25a4d621568d9cb6777d0ab"
- integrity sha512-AQ6Xj97lYRxHZl94cZIHJxT5M1qkeEi+vQe+e7M2lAtjcURl8cwhZmWKSv4rt4BQRVfO3ys0bY8AgIh4eFJiqw==
-
-"@oxc-parser/binding-linux-s390x-gnu@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.76.0.tgz#a37496f6b9f2976c40daba44e3b521822323d210"
- integrity sha512-y36Hh1a5TA+oIGtlc8lT7N9vdHXBlhBetQJW0p457KbiVQ7jF7AZkaPWhESkjHWAsTVKD2OjCa9ZqfaqhSI0FQ==
-
-"@oxc-parser/binding-linux-x64-gnu@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.70.0.tgz#0ab2bdf656a11a97cd9dc6cafc140cbe4b8b15e6"
- integrity sha512-RIxaVsIxtG90CoX6/Okij8itaMrJp4SEJm1pSL0pz3hGo0yur3Il9M1mmGvOpW+avY8uHdwXIvf2qMnnTKZuoQ==
-
-"@oxc-parser/binding-linux-x64-gnu@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.76.0.tgz#ea13a10abe105f8ef29a36ae0285de7ed69488de"
- integrity sha512-7/acaG9htovp3gp/J0kHgbItQTuHctl+rbqPPqZ9DRBYTz8iV8kv3QN8t8Or8i/hOmOjfZp9McDoSU1duoR4/A==
-
-"@oxc-parser/binding-linux-x64-musl@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.70.0.tgz#99c7b4e168581c457a5371a9d26f2a7096780f7a"
- integrity sha512-B3S0G4TlZ+WLdQq4mSQtt2ZW0MAkKWc8dla17tZY86kcXvvCWwACvj7I27Z/nSlb7uJOdRZS9/r6Gw0uAARNVQ==
-
-"@oxc-parser/binding-linux-x64-musl@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.76.0.tgz#6733905918333044865cb4d1e42988741fc54dc0"
- integrity sha512-AxFt0reY6Q2rfudABmMTFGR8tFFr58NlH2rRBQgcj+F+iEwgJ+jMwAPhXd2y1I2zaI8GspuahedUYQinqxWqjA==
-
-"@oxc-parser/binding-wasm32-wasi@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.70.0.tgz#6352acd7f8613edcc40af9ea5aedf5ba975e16aa"
- integrity sha512-QN8yxH7eHXTqed8Oo7ZUzOWn6hixXa8EVINLy21eLU9isoifSPKMswSmCXHxsM2L5rIIvzoaKfghGOru1mMQbw==
- dependencies:
- "@napi-rs/wasm-runtime" "^0.2.9"
-
-"@oxc-parser/binding-wasm32-wasi@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.76.0.tgz#c47b50591e25b63d6d2ba7c34b5a71fa39c0a608"
- integrity sha512-wHdkHdhf6AWBoO8vs5cpoR6zEFY1rB+fXWtq6j/xb9j/lu1evlujRVMkh8IM/M/pOUIrNkna3nzST/mRImiveQ==
- dependencies:
- "@napi-rs/wasm-runtime" "^0.2.11"
-
-"@oxc-parser/binding-win32-arm64-msvc@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.70.0.tgz#5665291efe1e5138bd0cd81fe306ba0584a737f2"
- integrity sha512-6k8/s78g0GQKqrxk4F0wYj32NBF9oSP6089e6BeuIRQ9l+Zh0cuI6unJeLzXNszxmlqq84xmf/tmP3MSDG43Uw==
-
-"@oxc-parser/binding-win32-arm64-msvc@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.76.0.tgz#3bd03fe4bfe792e9de2e6c492036c85314593b05"
- integrity sha512-G7ZlEWcb2hNwCK3qalzqJoyB6HaTigQ/GEa7CU8sAJ/WwMdG/NnPqiC9IqpEAEy1ARSo4XMALfKbKNuqbSs5mg==
-
-"@oxc-parser/binding-win32-x64-msvc@0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.70.0.tgz#5243514c36da3fe34da7eb8e4e133a2a6f31a451"
- integrity sha512-nd9o1QtEvupaJZ3Wn7PfsuC00n31NNRQZ5+Mui6Q0ZyDzp+obqPUSbSt7xh9Dy0c5zgtYMk8WY4n/VBJY2VvTQ==
-
-"@oxc-parser/binding-win32-x64-msvc@0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.76.0.tgz#3dbef82283f871c9cb59325c9daf4f740d11a6e9"
- integrity sha512-0jLzzmnu8/mqNhKBnNS2lFUbPEzRdj5ReiZwHGHpjma0+ullmmwP2AqSEqx3ssHDK9CpcEMdKOK2LsbCfhHKIA==
+"@oxc-parser/binding-win32-x64-msvc@0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.56.5.tgz#97abddb929e894f07e2eaba3f64959f89749aa47"
+ integrity sha512-VALZNcuyw/6rwsxOACQ2YS6rey2d/ym4cNfXqJrHB/MZduAPj4xvij72gHGu3Ywm31KVGLVWk/mrMRiM9CINcA==
"@oxc-parser/wasm@^0.60.0":
version "0.60.0"
@@ -1748,21 +1344,16 @@
dependencies:
"@oxc-project/types" "^0.60.0"
+"@oxc-project/types@^0.56.5":
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.56.5.tgz#ff3f2a2b09e493e3eab6c8e403de2eb02c3efe67"
+ integrity sha512-skY3kOJwp22W4RkaadH1hZ3hqFHjkRrIIE0uQ4VUg+/Chvbl+2pF+B55IrIk2dgsKXS57YEUsJuN6I6s4rgFjA==
+
"@oxc-project/types@^0.60.0":
version "0.60.0"
resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.60.0.tgz#ffd6e3575e9dca16dfb2efb71d6e68788edb23d0"
integrity sha512-prhfNnb3ATFHOCv7mzKFfwLij5RzoUz6Y1n525ZhCEqfq5wreCXL+DyVoq3ShukPo7q45ZjYIdjFUgjj+WKzng==
-"@oxc-project/types@^0.70.0":
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.70.0.tgz#72564fe077b66dfa2c47207ec5c005faed309c08"
- integrity sha512-ngyLUpUjO3dpqygSRQDx7nMx8+BmXbWOU4oIwTJFV2MVIDG7knIZwgdwXlQWLg3C3oxg1lS7ppMtPKqKFb7wzw==
-
-"@oxc-project/types@^0.76.0":
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.76.0.tgz#89ae800d774ccb344278fc17ab6c15348da8b995"
- integrity sha512-CH3THIrSViKal8yV/Wh3FK0pFhp40nzW1MUDCik9fNuid2D/7JJXKJnfFOAvMxInGXDlvmgT6ACAzrl47TqzkQ==
-
"@parcel/watcher-android-arm64@2.5.1":
version "2.5.1"
resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1"
@@ -1871,118 +1462,125 @@
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
-"@pkgr/core@^0.2.0":
- version "0.2.9"
- resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.9.tgz#d229a7b7f9dac167a156992ef23c7f023653f53b"
- integrity sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==
+"@pkgr/core@^0.1.0":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.2.tgz#1cf95080bb7072fafaa3cb13b442fab4695c3893"
+ integrity sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==
+
+"@pkgr/core@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.1.tgz#6d083acfddae21fb329c8df8c94bf895ce7d0c15"
+ integrity sha512-VzgHzGblFmUeBmmrk55zPyrQIArQN4vujc9shWytaPdB3P7qhi0cpaiKIr7tlCmFv2lYUwnLospIqjL9ZSAhhg==
+
+"@pkgr/core@^0.2.3":
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.4.tgz#d897170a2b0ba51f78a099edccd968f7b103387c"
+ integrity sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==
"@polka/url@^1.0.0-next.24":
- version "1.0.0-next.29"
- resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.29.tgz#5a40109a1ab5f84d6fd8fc928b19f367cbe7e7b1"
- integrity sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==
+ version "1.0.0-next.28"
+ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.28.tgz#d45e01c4a56f143ee69c54dd6b12eade9e270a73"
+ integrity sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==
-"@poppinss/colors@^4.1.4", "@poppinss/colors@^4.1.5":
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/@poppinss/colors/-/colors-4.1.5.tgz#09273b845a4816f5fd9c53c78a3bc656650fe18f"
- integrity sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==
+"@poppinss/colors@^4.1.4":
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/@poppinss/colors/-/colors-4.1.4.tgz#ba0188a0ad3d249175f7291f9a051eba74ed180e"
+ integrity sha512-FA+nTU8p6OcSH4tLDY5JilGYr1bVWHpNmcLr7xmMEdbWmKHa+3QZ+DqefrXKmdjO/brHTnQZo20lLSjaO7ydog==
dependencies:
kleur "^4.1.5"
-"@poppinss/dumper@^0.6.3", "@poppinss/dumper@^0.6.4":
- version "0.6.4"
- resolved "https://registry.yarnpkg.com/@poppinss/dumper/-/dumper-0.6.4.tgz#b902ff0b2850f5367f947ffdb2d7154f22856d43"
- integrity sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==
+"@poppinss/dumper@^0.6.3":
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/@poppinss/dumper/-/dumper-0.6.3.tgz#0639be63ed59aaf3e11bfe0b17de71a26fc1bac3"
+ integrity sha512-iombbn8ckOixMtuV1p3f8jN6vqhXefNjJttoPaJDMeIk/yIGhkkL3OrHkEjE9SRsgoAx1vBUU2GtgggjvA5hCA==
dependencies:
- "@poppinss/colors" "^4.1.5"
- "@sindresorhus/is" "^7.0.2"
+ "@poppinss/colors" "^4.1.4"
+ "@sindresorhus/is" "^7.0.1"
supports-color "^10.0.0"
-"@poppinss/exception@^1.2.2":
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/@poppinss/exception/-/exception-1.2.2.tgz#8d30d42e126c54fe84e997433e4dcac610090743"
- integrity sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==
+"@poppinss/exception@^1.2.0":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@poppinss/exception/-/exception-1.2.1.tgz#8a5f2120fabb64a99772166d537d8a97490209ff"
+ integrity sha512-aQypoot0HPSJa6gDPEPTntc1GT6QINrSbgRlRhadGW2WaYqUK3tK4Bw9SBMZXhmxd3GeAlZjVcODHgiu+THY7A==
-"@prisma/client@^6.11.1":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@prisma/client/-/client-6.12.0.tgz#e855c76fbad75b9b28ce7879be47bfeaba8ff588"
- integrity sha512-wn98bJ3Cj6edlF4jjpgXwbnQIo/fQLqqQHPk2POrZPxTlhY3+n90SSIF3LMRVa8VzRFC/Gec3YKJRxRu+AIGVA==
+"@prisma/client@^6.7.0":
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/@prisma/client/-/client-6.7.0.tgz#69f913b0a8cfb6aa5de5dca6aa57bfd4e91e7e95"
+ integrity sha512-+k61zZn1XHjbZul8q6TdQLpuI/cvyfil87zqK2zpreNIXyXtpUv3+H/oM69hcsFcZXaokHJIzPAt5Z8C8eK2QA==
-"@prisma/config@6.12.0":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@prisma/config/-/config-6.12.0.tgz#365af09f162b59516b4e63153dd0238b50461b6d"
- integrity sha512-HovZWzhWEMedHxmjefQBRZa40P81N7/+74khKFz9e1AFjakcIQdXgMWKgt20HaACzY+d1LRBC+L4tiz71t9fkg==
+"@prisma/config@6.7.0":
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/@prisma/config/-/config-6.7.0.tgz#ae80b889ba1facc308ecca2009aa6dfbe92c28db"
+ integrity sha512-di8QDdvSz7DLUi3OOcCHSwxRNeW7jtGRUD2+Z3SdNE3A+pPiNT8WgUJoUyOwJmUr5t+JA2W15P78C/N+8RXrOA==
dependencies:
- jiti "2.4.2"
+ esbuild ">=0.12 <1"
+ esbuild-register "3.6.0"
-"@prisma/debug@6.12.0":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-6.12.0.tgz#15a6a0941624cb0adf20e0df978bbcc85e3c6518"
- integrity sha512-plbz6z72orcqr0eeio7zgUrZj5EudZUpAeWkFTA/DDdXEj28YHDXuiakvR6S7sD6tZi+jiwQEJAPeV6J6m/tEQ==
+"@prisma/debug@6.7.0":
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-6.7.0.tgz#a955174e4f481b0ca5d7c0fd458ef848432afd59"
+ integrity sha512-RabHn9emKoYFsv99RLxvfG2GHzWk2ZI1BuVzqYtmMSIcuGboHY5uFt3Q3boOREM9de6z5s3bQoyKeWnq8Fz22w==
-"@prisma/dmmf@6.12.0":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@prisma/dmmf/-/dmmf-6.12.0.tgz#fcb94347d1a96db675a18e4d558bf44a37dee737"
- integrity sha512-vL8zy61mi9Mv+w5qLvtF9hrhGu4rUZqhSpWWTxx1nengr1Wi7JfKkjJGBiCT79hSurq3oMC71iGAScyqwvi4Fg==
+"@prisma/engines-version@6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed":
+ version "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed"
+ resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed.tgz#4ec7c8ee187924a910ec244e3790412d1069d723"
+ integrity sha512-EvpOFEWf1KkJpDsBCrih0kg3HdHuaCnXmMn7XFPObpFTzagK1N0Q0FMnYPsEhvARfANP5Ok11QyoTIRA2hgJTA==
-"@prisma/engines-version@6.12.0-15.8047c96bbd92db98a2abc7c9323ce77c02c89dbc":
- version "6.12.0-15.8047c96bbd92db98a2abc7c9323ce77c02c89dbc"
- resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-6.12.0-15.8047c96bbd92db98a2abc7c9323ce77c02c89dbc.tgz#db1d677728e1231669e8031ae5f23c393daa3fab"
- integrity sha512-70vhecxBJlRr06VfahDzk9ow4k1HIaSfVUT3X0/kZoHCMl9zbabut4gEXAyzJZxaCGi5igAA7SyyfBI//mmkbQ==
-
-"@prisma/engines@6.12.0":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-6.12.0.tgz#a264ac99ec87e95f8b4b276691d43e2ec3306956"
- integrity sha512-4BRZZUaAuB4p0XhTauxelvFs7IllhPmNLvmla0bO1nkECs8n/o1pUvAVbQ/VOrZR5DnF4HED0PrGai+rIOVePA==
+"@prisma/engines@6.7.0":
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-6.7.0.tgz#291835aa5df84e9c33a1cfe1566e639909d46627"
+ integrity sha512-3wDMesnOxPrOsq++e5oKV9LmIiEazFTRFZrlULDQ8fxdub5w4NgRBoxtWbvXmj2nJVCnzuz6eFix3OhIqsZ1jw==
dependencies:
- "@prisma/debug" "6.12.0"
- "@prisma/engines-version" "6.12.0-15.8047c96bbd92db98a2abc7c9323ce77c02c89dbc"
- "@prisma/fetch-engine" "6.12.0"
- "@prisma/get-platform" "6.12.0"
+ "@prisma/debug" "6.7.0"
+ "@prisma/engines-version" "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed"
+ "@prisma/fetch-engine" "6.7.0"
+ "@prisma/get-platform" "6.7.0"
-"@prisma/fetch-engine@6.12.0":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-6.12.0.tgz#231515dde53dd8efc36e79837729456d2b3e71f1"
- integrity sha512-EamoiwrK46rpWaEbLX9aqKDPOd8IyLnZAkiYXFNuq0YsU0Z8K09/rH8S7feOWAVJ3xzeSgcEJtBlVDrajM9Sag==
+"@prisma/fetch-engine@6.7.0":
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-6.7.0.tgz#c8bc042ee6438d62d5bf77aafa6c56cf0002c5d8"
+ integrity sha512-zLlAGnrkmioPKJR4Yf7NfW3hftcvqeNNEHleMZK9yX7RZSkhmxacAYyfGsCcqRt47jiZ7RKdgE0Wh2fWnm7WsQ==
dependencies:
- "@prisma/debug" "6.12.0"
- "@prisma/engines-version" "6.12.0-15.8047c96bbd92db98a2abc7c9323ce77c02c89dbc"
- "@prisma/get-platform" "6.12.0"
+ "@prisma/debug" "6.7.0"
+ "@prisma/engines-version" "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed"
+ "@prisma/get-platform" "6.7.0"
-"@prisma/generator-helper@^6.5.0":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@prisma/generator-helper/-/generator-helper-6.12.0.tgz#8cafbd8ad2e21ce320ebcda59c4b85e9d8a0dfa9"
- integrity sha512-Bu8AuZJ7xBkmTUHiAL545sc0R5h9HSCnk3NF0POTh8GOMg3JnSoBJUQXVT2z97vkQ8NhtnqEJUlGwkDTbn8pKw==
+"@prisma/get-platform@6.7.0":
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-6.7.0.tgz#967f21f8ad966b941dcb47b153b84958655390d1"
+ integrity sha512-i9IH5lO4fQwnMLvQLYNdgVh9TK3PuWBfQd7QLk/YurnAIg+VeADcZDbmhAi4XBBDD+hDif9hrKyASu0hbjwabw==
dependencies:
- "@prisma/debug" "6.12.0"
- "@prisma/dmmf" "6.12.0"
- "@prisma/generator" "6.12.0"
+ "@prisma/debug" "6.7.0"
-"@prisma/generator@6.12.0":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@prisma/generator/-/generator-6.12.0.tgz#c831cb6cb4534566d03d446d30072fc7a0626480"
- integrity sha512-zHZQKfKNwCp/XweIEuzQG2o4N5AxxWwa9W/QjOP0IFrphjPOTYvsEg8fYqboJDGVAspwY9crT8sppoz5kUovsA==
-
-"@prisma/get-platform@6.12.0":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-6.12.0.tgz#b41845b87426b64358018d752b14e9a2c8cb7bc4"
- integrity sha512-nRerTGhTlgyvcBlyWgt8OLNIV7QgJS2XYXMJD1hysorMCuLAjuDDuoxmVt7C2nLxbuxbWPp7OuFRHC23HqD9dA==
+"@protobuf-ts/grpcweb-transport@^2.10.0":
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/@protobuf-ts/grpcweb-transport/-/grpcweb-transport-2.10.0.tgz#c09f29694ec7dc4fc1107a0bf30d359325939311"
+ integrity sha512-VUyD+8kn4XEfWoEiKjAsWX5XWkt8Gfdp/uquS17yt9hdfMBVx3o5tlXX5ylwfWhcIjbRvkf7WHEEdS2wMuq86Q==
dependencies:
- "@prisma/debug" "6.12.0"
+ "@protobuf-ts/runtime" "^2.10.0"
+ "@protobuf-ts/runtime-rpc" "^2.10.0"
-"@rolldown/pluginutils@^1.0.0-beta.9":
- version "1.0.0-beta.29"
- resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.29.tgz#f8fc9a8788757dccba0d3b7fee93183621773d4c"
- integrity sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==
+"@protobuf-ts/runtime-rpc@^2.10.0":
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.10.0.tgz#68de8dcc369e56579569a4deafd394cf4683dc66"
+ integrity sha512-8CS/XPv3+pMK4v8UKhtCdvbS4h9l7aqlteKdRt0/UbIKZ8n0qHj6hX8cBhz2ngvohxCOS0N08zPr9aCLBNhW3Q==
+ dependencies:
+ "@protobuf-ts/runtime" "^2.10.0"
+
+"@protobuf-ts/runtime@^2.10.0":
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.10.0.tgz#bc90f632647ff2ae72887546ddf3d193f3f43d98"
+ integrity sha512-ypYwGg9Pn3W/2lZ7/HW60hONGuSdzphvOY8Dq7LeNttymDe0y3LaTUUMRpuGqOT6FfrWEMnfQbyqU8AAreo8wA==
"@rollup/plugin-alias@^5.1.1":
version "5.1.1"
resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-5.1.1.tgz#53601d88cda8b1577aa130b4a6e452283605bf26"
integrity sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==
-"@rollup/plugin-commonjs@^28.0.6":
- version "28.0.6"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.6.tgz#32425f28832a1831c4388b71541ef229ef34cd4c"
- integrity sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==
+"@rollup/plugin-commonjs@^28.0.3":
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.3.tgz#44c2cc7c955c6113b96696b55e6bc2446bd67913"
+ integrity sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==
dependencies:
"@rollup/pluginutils" "^5.0.1"
commondir "^1.0.1"
@@ -2036,155 +1634,155 @@
smob "^1.0.0"
terser "^5.17.4"
-"@rollup/plugin-yaml@^4.1.2":
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-yaml/-/plugin-yaml-4.1.2.tgz#a3b4cd5793dfd374b815c60183f5adf21bf1ff66"
- integrity sha512-RpupciIeZMUqhgFE97ba0s98mOFS7CWzN3EJNhJkqSv9XLlWYtwVdtE6cDw6ASOF/sZVFS7kRJXftaqM2Vakdw==
- dependencies:
- "@rollup/pluginutils" "^5.0.1"
- js-yaml "^4.1.0"
- tosource "^2.0.0-alpha.3"
-
-"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.1.0", "@rollup/pluginutils@^5.1.3":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.2.0.tgz#eac25ca5b0bdda4ba735ddaca5fbf26bd435f602"
- integrity sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==
+"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.1.0", "@rollup/pluginutils@^5.1.3", "@rollup/pluginutils@^5.1.4":
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz#bb94f1f9eaaac944da237767cdfee6c5b2262d4a"
+ integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==
dependencies:
"@types/estree" "^1.0.0"
estree-walker "^2.0.2"
picomatch "^4.0.2"
-"@rollup/rollup-android-arm-eabi@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.1.tgz#8560592f0dcf43b8cb0949af9f1d916205148d12"
- integrity sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==
+"@rollup/rollup-android-arm-eabi@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz#6ba67cc0f3a2d7e3a208256a349c2cb2798f57be"
+ integrity sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==
-"@rollup/rollup-android-arm64@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.1.tgz#6bfb777bbce998691b6fd3e916b05cd46392d020"
- integrity sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==
+"@rollup/rollup-android-arm64@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.38.0.tgz#c8806f88fd6727d3cf144c4ffb00f40d451b6618"
+ integrity sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==
-"@rollup/rollup-darwin-arm64@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.1.tgz#7efce10220293a22e7b7b595d05d8b8400a7bcf3"
- integrity sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==
+"@rollup/rollup-darwin-arm64@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.38.0.tgz#c4654989b97bba0de7205cf5b3342984d4451d5a"
+ integrity sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==
-"@rollup/rollup-darwin-x64@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.1.tgz#c617a8ece21050bfbea299c126767d2e70cfa79a"
- integrity sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==
+"@rollup/rollup-darwin-x64@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.38.0.tgz#77ee357aeeefe3fe8bee33df18c240e391450476"
+ integrity sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==
-"@rollup/rollup-freebsd-arm64@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.1.tgz#5a6af0a9acf82162d2910933649ae24fc0ea3ecb"
- integrity sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==
+"@rollup/rollup-freebsd-arm64@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.38.0.tgz#ac8028c99221d1cef22788adda465077d5926911"
+ integrity sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==
-"@rollup/rollup-freebsd-x64@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.1.tgz#ae9709463560196fc275bd0da598668a2e341023"
- integrity sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==
+"@rollup/rollup-freebsd-x64@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.38.0.tgz#64376ff0e1541cd8677e74898782ec4935277e02"
+ integrity sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==
-"@rollup/rollup-linux-arm-gnueabihf@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.1.tgz#6ec52661764dbd54c19d6520a403aa385a5c0fbf"
- integrity sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==
+"@rollup/rollup-linux-arm-gnueabihf@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.38.0.tgz#7de1584c09adcac08f90d1e500c679c428b6eb36"
+ integrity sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==
-"@rollup/rollup-linux-arm-musleabihf@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.1.tgz#fd33ba4a43ef8419e96811236493d19436271923"
- integrity sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==
+"@rollup/rollup-linux-arm-musleabihf@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.38.0.tgz#1d5d0f28d93cdc37d60c381c6bbe649bed4960d5"
+ integrity sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==
-"@rollup/rollup-linux-arm64-gnu@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.1.tgz#933b3d99b73c9d7bf4506cab0d5d313c7e74fd2d"
- integrity sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==
+"@rollup/rollup-linux-arm64-gnu@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.38.0.tgz#a97f73a43a374e44bef4a9ed84899c26454831ea"
+ integrity sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==
-"@rollup/rollup-linux-arm64-musl@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.1.tgz#dbe9ae24ee9e97b75662fddcb69eb7f23c89280a"
- integrity sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==
+"@rollup/rollup-linux-arm64-musl@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.38.0.tgz#00e3b646a7976752052ebc72d005808b9e7f2801"
+ integrity sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==
-"@rollup/rollup-linux-loongarch64-gnu@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.1.tgz#818c5a071eec744436dbcdd76fe9c3c869dc9a8d"
- integrity sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==
+"@rollup/rollup-linux-loongarch64-gnu@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.38.0.tgz#0d6dcaa3671cf987faace4b34ab7320ee3c18b65"
+ integrity sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==
-"@rollup/rollup-linux-powerpc64le-gnu@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.1.tgz#6b8591def27d886fa147fb0340126c7d6682a7e4"
- integrity sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==
+"@rollup/rollup-linux-powerpc64le-gnu@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.38.0.tgz#54c2d7a4d86767001475f0157c408fd042f7fd8f"
+ integrity sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==
-"@rollup/rollup-linux-riscv64-gnu@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.1.tgz#f1861ac4ee8da64e0b0d23853ff26fe2baa876cf"
- integrity sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==
+"@rollup/rollup-linux-riscv64-gnu@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.38.0.tgz#8cb565417b29851a0c549614898bdab689f23187"
+ integrity sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==
-"@rollup/rollup-linux-riscv64-musl@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.1.tgz#320c961401a923b374e358664527b188e374e1ae"
- integrity sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==
+"@rollup/rollup-linux-riscv64-musl@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.38.0.tgz#8bc00b75fd07b15c35a54b41a5f052c01dbf925b"
+ integrity sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==
-"@rollup/rollup-linux-s390x-gnu@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.1.tgz#1763eed3362b50b6164d3f0947486c03cc7e616d"
- integrity sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==
+"@rollup/rollup-linux-s390x-gnu@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.38.0.tgz#1fe4a88b97e36d64dbf1f01cfa7842d269a094cf"
+ integrity sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==
-"@rollup/rollup-linux-x64-gnu@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.1.tgz#0d4c8d0b8f801902f0844a40a9d981a0179f4971"
- integrity sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==
+"@rollup/rollup-linux-x64-gnu@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.38.0.tgz#11c32c463e68a86e279cda090a9405a7558f9406"
+ integrity sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==
-"@rollup/rollup-linux-x64-musl@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.1.tgz#ec30bb48b5fe22a3aaba98072f2d5b7139e1a8eb"
- integrity sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==
+"@rollup/rollup-linux-x64-musl@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.38.0.tgz#520c2a8547672ec6c56a6833f6d38e9380d63dc7"
+ integrity sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==
-"@rollup/rollup-win32-arm64-msvc@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.1.tgz#27a6e48d1502e8e4bed96bedfb533738655874f2"
- integrity sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==
+"@rollup/rollup-win32-arm64-msvc@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.38.0.tgz#d27ab565009357014c9f2d6393ee58bd63a63cb8"
+ integrity sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==
-"@rollup/rollup-win32-ia32-msvc@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.1.tgz#a2fbad3bec20ff879f3fd51720adf33692ca8f3d"
- integrity sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==
+"@rollup/rollup-win32-ia32-msvc@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.38.0.tgz#6c02847c60fcc7a6d74e00a60f350d079558d84d"
+ integrity sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==
-"@rollup/rollup-win32-x64-msvc@4.45.1":
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.1.tgz#e5085c6d13da15b4c5133cd2a6bb11f25b6bb77a"
- integrity sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==
+"@rollup/rollup-win32-x64-msvc@4.38.0":
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.38.0.tgz#38197da22c1af7b6b5d1cc7541757379193b8e83"
+ integrity sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==
-"@sindresorhus/is@^7.0.2":
- version "7.0.2"
- resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-7.0.2.tgz#a0df078a8d29f9741503c5a9c302de474ec8564a"
- integrity sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==
+"@sec-ant/readable-stream@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz#60de891bb126abfdc5410fdc6166aca065f10a0c"
+ integrity sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==
+
+"@sindresorhus/is@^7.0.1":
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-7.0.1.tgz#693cd0bfa7fdc71a3386b72088b660fb70851927"
+ integrity sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==
"@sindresorhus/merge-streams@^2.1.0":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958"
integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==
+"@sindresorhus/merge-streams@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz#abb11d99aeb6d27f1b563c38147a72d50058e339"
+ integrity sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==
+
"@speed-highlight/core@^1.2.7":
version "1.2.7"
resolved "https://registry.yarnpkg.com/@speed-highlight/core/-/core-1.2.7.tgz#eeaa7c1e7198559abbb98e4acbc93d108d35f2d3"
integrity sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==
-"@stylistic/eslint-plugin@^5.2.1":
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin/-/eslint-plugin-5.2.2.tgz#a1cb24f17263e1dcb2d5c94069dc3ae7af1eb9ce"
- integrity sha512-bE2DUjruqXlHYP3Q2Gpqiuj2bHq7/88FnuaS0FjeGGLCy+X6a07bGVuwtiOYnPSLHR6jmx5Bwdv+j7l8H+G97A==
+"@stylistic/eslint-plugin@^4.2.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin/-/eslint-plugin-4.2.0.tgz#7860ea84aa7ee3b21757907b863eb62f4f8b0455"
+ integrity sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==
dependencies:
- "@eslint-community/eslint-utils" "^4.7.0"
- "@typescript-eslint/types" "^8.37.0"
- eslint-visitor-keys "^4.2.1"
- espree "^10.4.0"
+ "@typescript-eslint/utils" "^8.23.0"
+ eslint-visitor-keys "^4.2.0"
+ espree "^10.3.0"
estraverse "^5.3.0"
- picomatch "^4.0.3"
+ picomatch "^4.0.2"
"@swc/helpers@^0.5.12":
- version "0.5.17"
- resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.17.tgz#5a7be95ac0f0bf186e7e6e890e7a6f6cda6ce971"
- integrity sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==
+ version "0.5.15"
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7"
+ integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==
dependencies:
tslib "^2.8.0"
@@ -2195,106 +1793,86 @@
dependencies:
mini-svg-data-uri "^1.2.3"
-"@tailwindcss/node@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.1.11.tgz#d626af65fc9872e5e9d8884791d7e3856e945359"
- integrity sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==
+"@tailwindcss/node@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.0.17.tgz#c40a29035ceb40b7de38e155b5dacfda20dd47e9"
+ integrity sha512-LIdNwcqyY7578VpofXyqjH6f+3fP4nrz7FBLki5HpzqjYfXdF2m/eW18ZfoKePtDGg90Bvvfpov9d2gy5XVCbg==
dependencies:
- "@ampproject/remapping" "^2.3.0"
enhanced-resolve "^5.18.1"
jiti "^2.4.2"
- lightningcss "1.30.1"
- magic-string "^0.30.17"
- source-map-js "^1.2.1"
- tailwindcss "4.1.11"
+ tailwindcss "4.0.17"
-"@tailwindcss/oxide-android-arm64@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.11.tgz#1f387d8302f011b61c226deb0c3a1d2bd79c6915"
- integrity sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==
+"@tailwindcss/oxide-android-arm64@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.17.tgz#f8e1bb04c3af8923f39d3ddf3a3a52d2a398b29b"
+ integrity sha512-3RfO0ZK64WAhop+EbHeyxGThyDr/fYhxPzDbEQjD2+v7ZhKTb2svTWy+KK+J1PHATus2/CQGAGp7pHY/8M8ugg==
-"@tailwindcss/oxide-darwin-arm64@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.11.tgz#acd35ffb7e4eae83d0a3fe2f8ea36cfcc9b21f7e"
- integrity sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==
+"@tailwindcss/oxide-darwin-arm64@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.17.tgz#345ff836e24f57ab4ae3837e677ecc80ca964e8b"
+ integrity sha512-e1uayxFQCCDuzTk9s8q7MC5jFN42IY7nzcr5n0Mw/AcUHwD6JaBkXnATkD924ZsHyPDvddnusIEvkgLd2CiREg==
-"@tailwindcss/oxide-darwin-x64@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.11.tgz#a0022312993a3893d6ff0312d6e3c83c4636fef4"
- integrity sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==
+"@tailwindcss/oxide-darwin-x64@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.17.tgz#b16698d42a29ed8e26b9b6063afceefdbe4dd9dd"
+ integrity sha512-d6z7HSdOKfXQ0HPlVx1jduUf/YtBuCCtEDIEFeBCzgRRtDsUuRtofPqxIVaSCUTOk5+OfRLonje6n9dF6AH8wQ==
-"@tailwindcss/oxide-freebsd-x64@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.11.tgz#dd8e55eb0b88fe7995b8148c0e0ae5fa27092d22"
- integrity sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==
+"@tailwindcss/oxide-freebsd-x64@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.17.tgz#4b92d981ff70fb354959c3e517a25e3590f2037d"
+ integrity sha512-EjrVa6lx3wzXz3l5MsdOGtYIsRjgs5Mru6lDv4RuiXpguWeOb3UzGJ7vw7PEzcFadKNvNslEQqoAABeMezprxQ==
-"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.11.tgz#02ee99090988847d3f13d277679012cbffcdde37"
- integrity sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==
+"@tailwindcss/oxide-linux-arm-gnueabihf@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.17.tgz#94154c6f4174b375b3bedc9fecf88e7c55072aaa"
+ integrity sha512-65zXfCOdi8wuaY0Ye6qMR5LAXokHYtrGvo9t/NmxvSZtCCitXV/gzJ/WP5ksXPhff1SV5rov0S+ZIZU+/4eyCQ==
-"@tailwindcss/oxide-linux-arm64-gnu@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.11.tgz#4837559c102bebe65089879f6a0278ed473b4813"
- integrity sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==
+"@tailwindcss/oxide-linux-arm64-gnu@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.17.tgz#11614d3642ab9eb8b42a0bf28e952a833801a09b"
+ integrity sha512-+aaq6hJ8ioTdbJV5IA1WjWgLmun4T7eYLTvJIToiXLHy5JzUERRbIZjAcjgK9qXMwnvuu7rqpxzej+hGoEcG5g==
-"@tailwindcss/oxide-linux-arm64-musl@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.11.tgz#bec465112a13a1383558ff36afdf28b8a8cb9021"
- integrity sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==
+"@tailwindcss/oxide-linux-arm64-musl@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.17.tgz#5dc1826d103d8082e9d3f3fe4d3180bf8cf80163"
+ integrity sha512-/FhWgZCdUGAeYHYnZKekiOC0aXFiBIoNCA0bwzkICiMYS5Rtx2KxFfMUXQVnl4uZRblG5ypt5vpPhVaXgGk80w==
-"@tailwindcss/oxide-linux-x64-gnu@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.11.tgz#f9e47e6aa67ff77f32f7412bc9698d4278e101bf"
- integrity sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==
+"@tailwindcss/oxide-linux-x64-gnu@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.17.tgz#1d50848d4b21d528f63f470ae7239db2624dc6bb"
+ integrity sha512-gELJzOHK6GDoIpm/539Golvk+QWZjxQcbkKq9eB2kzNkOvrP0xc5UPgO9bIMNt1M48mO8ZeNenCMGt6tfkvVBg==
-"@tailwindcss/oxide-linux-x64-musl@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.11.tgz#7d6e8adcfb9bc84d8e2e2e8781d661edb9e41ba8"
- integrity sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==
+"@tailwindcss/oxide-linux-x64-musl@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.17.tgz#ac1d476927a89f862c67937e9369edaf6eccb592"
+ integrity sha512-68NwxcJrZn94IOW4TysMIbYv5AlM6So1luTlbYUDIGnKma1yTFGBRNEJ+SacJ3PZE2rgcTBNRHX1TB4EQ/XEHw==
-"@tailwindcss/oxide-wasm32-wasi@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.11.tgz#a1762f4939c6ebaa824696fda2fd7db1b85fbed2"
- integrity sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==
- dependencies:
- "@emnapi/core" "^1.4.3"
- "@emnapi/runtime" "^1.4.3"
- "@emnapi/wasi-threads" "^1.0.2"
- "@napi-rs/wasm-runtime" "^0.2.11"
- "@tybys/wasm-util" "^0.9.0"
- tslib "^2.8.0"
+"@tailwindcss/oxide-win32-arm64-msvc@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.17.tgz#f30694a6bea7f84c4b367b2af81085cb3bf569bc"
+ integrity sha512-AkBO8efP2/7wkEXkNlXzRD4f/7WerqKHlc6PWb5v0jGbbm22DFBLbIM19IJQ3b+tNewQZa+WnPOaGm0SmwMNjw==
-"@tailwindcss/oxide-win32-arm64-msvc@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.11.tgz#70ba392dca0fa3707ebe27d2bd6ac3e69d35e3b7"
- integrity sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==
+"@tailwindcss/oxide-win32-x64-msvc@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.17.tgz#ac86a140bbe205c1285d20f6c490b3b51598fdc0"
+ integrity sha512-7/DTEvXcoWlqX0dAlcN0zlmcEu9xSermuo7VNGX9tJ3nYMdo735SHvbrHDln1+LYfF6NhJ3hjbpbjkMOAGmkDg==
-"@tailwindcss/oxide-win32-x64-msvc@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.11.tgz#cdcb9eea9225a346c0695f67f621990b0534763f"
- integrity sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==
-
-"@tailwindcss/oxide@4.1.11":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.1.11.tgz#569b668c99c337b7b8204bc5b6a833429755a05b"
- integrity sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==
- dependencies:
- detect-libc "^2.0.4"
- tar "^7.4.3"
+"@tailwindcss/oxide@4.0.17":
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.0.17.tgz#8b496d8645508fd8f39035930e05b5674f1817f2"
+ integrity sha512-B4OaUIRD2uVrULpAD1Yksx2+wNarQr2rQh65nXqaqbLY1jCd8fO+3KLh/+TH4Hzh2NTHQvgxVbPdUDOtLk7vAw==
optionalDependencies:
- "@tailwindcss/oxide-android-arm64" "4.1.11"
- "@tailwindcss/oxide-darwin-arm64" "4.1.11"
- "@tailwindcss/oxide-darwin-x64" "4.1.11"
- "@tailwindcss/oxide-freebsd-x64" "4.1.11"
- "@tailwindcss/oxide-linux-arm-gnueabihf" "4.1.11"
- "@tailwindcss/oxide-linux-arm64-gnu" "4.1.11"
- "@tailwindcss/oxide-linux-arm64-musl" "4.1.11"
- "@tailwindcss/oxide-linux-x64-gnu" "4.1.11"
- "@tailwindcss/oxide-linux-x64-musl" "4.1.11"
- "@tailwindcss/oxide-wasm32-wasi" "4.1.11"
- "@tailwindcss/oxide-win32-arm64-msvc" "4.1.11"
- "@tailwindcss/oxide-win32-x64-msvc" "4.1.11"
+ "@tailwindcss/oxide-android-arm64" "4.0.17"
+ "@tailwindcss/oxide-darwin-arm64" "4.0.17"
+ "@tailwindcss/oxide-darwin-x64" "4.0.17"
+ "@tailwindcss/oxide-freebsd-x64" "4.0.17"
+ "@tailwindcss/oxide-linux-arm-gnueabihf" "4.0.17"
+ "@tailwindcss/oxide-linux-arm64-gnu" "4.0.17"
+ "@tailwindcss/oxide-linux-arm64-musl" "4.0.17"
+ "@tailwindcss/oxide-linux-x64-gnu" "4.0.17"
+ "@tailwindcss/oxide-linux-x64-musl" "4.0.17"
+ "@tailwindcss/oxide-win32-arm64-msvc" "4.0.17"
+ "@tailwindcss/oxide-win32-x64-msvc" "4.0.17"
"@tailwindcss/typography@^0.5.15":
version "0.5.16"
@@ -2307,25 +1885,26 @@
postcss-selector-parser "6.0.10"
"@tailwindcss/vite@^4.0.6":
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/@tailwindcss/vite/-/vite-4.1.11.tgz#9af1c9d328b31e67c6a0657500bcaa78be6df9f7"
- integrity sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw==
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/vite/-/vite-4.0.17.tgz#57d710e96a3d73aa0e54093d480eb0f9466a82fb"
+ integrity sha512-HJbBYDlDVg5cvYZzECb6xwc1IDCEM3uJi3hEZp3BjZGCNGJcTsnCpan+z+VMW0zo6gR0U6O6ElqU1OoZ74Dhww==
dependencies:
- "@tailwindcss/node" "4.1.11"
- "@tailwindcss/oxide" "4.1.11"
- tailwindcss "4.1.11"
+ "@tailwindcss/node" "4.0.17"
+ "@tailwindcss/oxide" "4.0.17"
+ lightningcss "1.29.2"
+ tailwindcss "4.0.17"
-"@tanstack/virtual-core@3.13.12":
- version "3.13.12"
- resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.13.12.tgz#1dff176df9cc8f93c78c5e46bcea11079b397578"
- integrity sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==
+"@tanstack/virtual-core@3.13.5":
+ version "3.13.5"
+ resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.13.5.tgz#0128ac36b027e44a5b63e38bf6b01e50008b7aff"
+ integrity sha512-gMLNylxhJdUlfRR1G3U9rtuwUh2IjdrrniJIDcekVJN3/3i+bluvdMi3+eodnxzJq5nKnxnigo9h0lIpaqV6HQ==
"@tanstack/vue-virtual@^3.0.0-beta.60":
- version "3.13.12"
- resolved "https://registry.yarnpkg.com/@tanstack/vue-virtual/-/vue-virtual-3.13.12.tgz#a66daac9e6822ce4bcba76a3954937440697c264"
- integrity sha512-vhF7kEU9EXWXh+HdAwKJ2m3xaOnTTmgcdXcF2pim8g4GvI7eRrk2YRuV5nUlZnd/NbCIX4/Ja2OZu5EjJL06Ww==
+ version "3.13.5"
+ resolved "https://registry.yarnpkg.com/@tanstack/vue-virtual/-/vue-virtual-3.13.5.tgz#8d2123863e2fb4b6d49637797fd1c80753ddff08"
+ integrity sha512-1hhUA6CUjmKc5JDyKLcYOV6mI631FaKKxXh77Ja4UtIy6EOofYaLPk8vVgvK6vLMUSfHR2vI3ZpPY9ibyX60SA==
dependencies:
- "@tanstack/virtual-core" "3.13.12"
+ "@tanstack/virtual-core" "3.13.5"
"@tokenizer/token@^0.3.0":
version "0.3.0"
@@ -2337,18 +1916,6 @@
resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
-"@twemoji/parser@16.0.0":
- version "16.0.0"
- resolved "https://registry.yarnpkg.com/@twemoji/parser/-/parser-16.0.0.tgz#289f610ed73204f46141a94180566cf3c1f86f81"
- integrity sha512-jmuIjkp3OIaEemwMy3sArBwZSuZkRqmueGwRe2Zk4cFzbUJISFBJSZLDUUBNIgq3c+nY49ideYN2OiII6JUqwA==
-
-"@tybys/wasm-util@^0.10.0":
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.0.tgz#2fd3cd754b94b378734ce17058d0507c45c88369"
- integrity sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==
- dependencies:
- tslib "^2.4.0"
-
"@tybys/wasm-util@^0.9.0":
version "0.9.0"
resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355"
@@ -2370,10 +1937,15 @@
dependencies:
"@types/ms" "*"
-"@types/estree@*", "@types/estree@1.0.8", "@types/estree@^1.0.0", "@types/estree@^1.0.6", "@types/estree@^1.0.8":
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
- integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
+"@types/doctrine@^0.0.9":
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.9.tgz#d86a5f452a15e3e3113b99e39616a9baa0f9863f"
+ integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==
+
+"@types/estree@*", "@types/estree@1.0.7", "@types/estree@^1.0.0", "@types/estree@^1.0.6":
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8"
+ integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==
"@types/json-schema@^7.0.15":
version "7.0.15"
@@ -2391,18 +1963,18 @@
integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
"@types/node@*":
- version "24.1.0"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-24.1.0.tgz#0993f7dc31ab5cc402d112315b463e383d68a49c"
- integrity sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==
+ version "22.13.14"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.14.tgz#70d84ec91013dcd2ba2de35532a5a14c2b4cc912"
+ integrity sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==
dependencies:
- undici-types "~7.8.0"
+ undici-types "~6.20.0"
"@types/node@^22.13.16":
- version "22.16.5"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-22.16.5.tgz#cc46ac3994cd957000d0c11095a0b1dae2ea2368"
- integrity sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==
+ version "22.13.16"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.16.tgz#802cff8e4c3b3fc7461c2adcc92d73d89779edad"
+ integrity sha512-15tM+qA4Ypml/N7kyRdvfRjBQT2RL461uF1Bldn06K0Nzn1lY3nAPgHlsVrJxdZ9WhZiW0Fmc1lOYMtDsAuB3w==
dependencies:
- undici-types "~6.21.0"
+ undici-types "~6.20.0"
"@types/normalize-package-data@^2.4.3":
version "2.4.4"
@@ -2410,251 +1982,190 @@
integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==
"@types/parse-path@^7.0.0":
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/@types/parse-path/-/parse-path-7.1.0.tgz#1bdddfe4fb2038e76c7e622234a97d6a050a1be3"
- integrity sha512-EULJ8LApcVEPbrfND0cRQqutIOdiIgJ1Mgrhpy755r14xMohPTEpkV/k28SJvuOs9bHRFW8x+KeDAEPiGQPB9Q==
- dependencies:
- parse-path "*"
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/@types/parse-path/-/parse-path-7.0.3.tgz#cec2da2834ab58eb2eb579122d9a1fc13bd7ef36"
+ integrity sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==
"@types/resolve@1.20.2":
version "1.20.2"
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975"
integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==
-"@types/semver@^7.7.0":
- version "7.7.0"
- resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e"
- integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==
-
-"@types/triple-beam@^1.3.2":
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c"
- integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==
-
"@types/turndown@^5.0.5":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@types/turndown/-/turndown-5.0.5.tgz#614de24fc9ace4d8c0d9483ba81dc8c1976dd26f"
integrity sha512-TL2IgGgc7B5j78rIccBtlYAnkuv8nUQqhQc+DSYV5j9Be9XOcm/SKOVRuA47xAVI3680Tk9B1d8flK2GWT2+4w==
-"@types/web-bluetooth@^0.0.21":
- version "0.0.21"
- resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz#525433c784aed9b457aaa0ee3d92aeb71f346b63"
- integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==
-
-"@types/yauzl@^2.9.1":
- version "2.10.3"
- resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
- integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
- dependencies:
- "@types/node" "*"
-
-"@typescript-eslint/eslint-plugin@^8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz#6e5220d16f2691ab6d983c1737dd5b36e17641b7"
- integrity sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==
+"@typescript-eslint/eslint-plugin@^8.28.0":
+ version "8.29.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.1.tgz#593639d9bb5239b2d877d65757b7e2c9100a2e84"
+ integrity sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
- "@typescript-eslint/scope-manager" "8.38.0"
- "@typescript-eslint/type-utils" "8.38.0"
- "@typescript-eslint/utils" "8.38.0"
- "@typescript-eslint/visitor-keys" "8.38.0"
+ "@typescript-eslint/scope-manager" "8.29.1"
+ "@typescript-eslint/type-utils" "8.29.1"
+ "@typescript-eslint/utils" "8.29.1"
+ "@typescript-eslint/visitor-keys" "8.29.1"
graphemer "^1.4.0"
- ignore "^7.0.0"
+ ignore "^5.3.1"
natural-compare "^1.4.0"
- ts-api-utils "^2.1.0"
+ ts-api-utils "^2.0.1"
-"@typescript-eslint/parser@^8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.38.0.tgz#6723a5ea881e1777956b1045cba30be5ea838293"
- integrity sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==
+"@typescript-eslint/parser@^8.28.0":
+ version "8.29.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.29.1.tgz#10bf37411be0a199c27b6515726e22fe8d3df8d0"
+ integrity sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==
dependencies:
- "@typescript-eslint/scope-manager" "8.38.0"
- "@typescript-eslint/types" "8.38.0"
- "@typescript-eslint/typescript-estree" "8.38.0"
- "@typescript-eslint/visitor-keys" "8.38.0"
+ "@typescript-eslint/scope-manager" "8.29.1"
+ "@typescript-eslint/types" "8.29.1"
+ "@typescript-eslint/typescript-estree" "8.29.1"
+ "@typescript-eslint/visitor-keys" "8.29.1"
debug "^4.3.4"
-"@typescript-eslint/project-service@8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.38.0.tgz#4900771f943163027fd7d2020a062892056b5e2f"
- integrity sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==
+"@typescript-eslint/scope-manager@8.29.1":
+ version "8.29.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz#cfdfd4144f20c38b9d3e430efd6480e297ef52f6"
+ integrity sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==
dependencies:
- "@typescript-eslint/tsconfig-utils" "^8.38.0"
- "@typescript-eslint/types" "^8.38.0"
+ "@typescript-eslint/types" "8.29.1"
+ "@typescript-eslint/visitor-keys" "8.29.1"
+
+"@typescript-eslint/type-utils@8.29.1":
+ version "8.29.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.29.1.tgz#653dfff5c1711bc920a6a46a5a2c274899f00179"
+ integrity sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "8.29.1"
+ "@typescript-eslint/utils" "8.29.1"
debug "^4.3.4"
+ ts-api-utils "^2.0.1"
-"@typescript-eslint/scope-manager@8.38.0", "@typescript-eslint/scope-manager@^8.13.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz#5a0efcb5c9cf6e4121b58f87972f567c69529226"
- integrity sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==
+"@typescript-eslint/types@8.29.1", "@typescript-eslint/types@^8.28.0":
+ version "8.29.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.29.1.tgz#984ed1283fedbfb41d3993a9abdcb7b299971500"
+ integrity sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==
+
+"@typescript-eslint/typescript-estree@8.29.1":
+ version "8.29.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz#4ac085665ed5390d11c0e3426427978570e3b747"
+ integrity sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==
dependencies:
- "@typescript-eslint/types" "8.38.0"
- "@typescript-eslint/visitor-keys" "8.38.0"
-
-"@typescript-eslint/tsconfig-utils@8.38.0", "@typescript-eslint/tsconfig-utils@^8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz#6de4ce224a779601a8df667db56527255c42c4d0"
- integrity sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==
-
-"@typescript-eslint/type-utils@8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz#a56cd84765fa6ec135fe252b5db61e304403a85b"
- integrity sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==
- dependencies:
- "@typescript-eslint/types" "8.38.0"
- "@typescript-eslint/typescript-estree" "8.38.0"
- "@typescript-eslint/utils" "8.38.0"
- debug "^4.3.4"
- ts-api-utils "^2.1.0"
-
-"@typescript-eslint/types@8.38.0", "@typescript-eslint/types@^8.34.0", "@typescript-eslint/types@^8.34.1", "@typescript-eslint/types@^8.35.0", "@typescript-eslint/types@^8.37.0", "@typescript-eslint/types@^8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.38.0.tgz#297351c994976b93c82ac0f0e206c8143aa82529"
- integrity sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==
-
-"@typescript-eslint/typescript-estree@8.38.0", "@typescript-eslint/typescript-estree@^8.13.0", "@typescript-eslint/typescript-estree@^8.23.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz#82262199eb6778bba28a319e25ad05b1158957df"
- integrity sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==
- dependencies:
- "@typescript-eslint/project-service" "8.38.0"
- "@typescript-eslint/tsconfig-utils" "8.38.0"
- "@typescript-eslint/types" "8.38.0"
- "@typescript-eslint/visitor-keys" "8.38.0"
+ "@typescript-eslint/types" "8.29.1"
+ "@typescript-eslint/visitor-keys" "8.29.1"
debug "^4.3.4"
fast-glob "^3.3.2"
is-glob "^4.0.3"
minimatch "^9.0.4"
semver "^7.6.0"
- ts-api-utils "^2.1.0"
+ ts-api-utils "^2.0.1"
-"@typescript-eslint/utils@8.38.0", "@typescript-eslint/utils@^8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.38.0.tgz#5f10159899d30eb92ba70e642ca6f754bddbf15a"
- integrity sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==
+"@typescript-eslint/utils@8.29.1", "@typescript-eslint/utils@^8.23.0", "@typescript-eslint/utils@^8.28.0", "@typescript-eslint/utils@^8.29.0":
+ version "8.29.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.29.1.tgz#3d206c8c8def3527a8eb0588e94e3e60f7e167c9"
+ integrity sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==
dependencies:
- "@eslint-community/eslint-utils" "^4.7.0"
- "@typescript-eslint/scope-manager" "8.38.0"
- "@typescript-eslint/types" "8.38.0"
- "@typescript-eslint/typescript-estree" "8.38.0"
+ "@eslint-community/eslint-utils" "^4.4.0"
+ "@typescript-eslint/scope-manager" "8.29.1"
+ "@typescript-eslint/types" "8.29.1"
+ "@typescript-eslint/typescript-estree" "8.29.1"
-"@typescript-eslint/visitor-keys@8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz#a9765a527b082cb8fc60fd8a16e47c7ad5b60ea5"
- integrity sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==
+"@typescript-eslint/visitor-keys@8.29.1":
+ version "8.29.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz#9b74e5098c71138d42bbf2178fbe4dfad45d6b9a"
+ integrity sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==
dependencies:
- "@typescript-eslint/types" "8.38.0"
- eslint-visitor-keys "^4.2.1"
+ "@typescript-eslint/types" "8.29.1"
+ eslint-visitor-keys "^4.2.0"
-"@unhead/vue@^2.0.12":
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/@unhead/vue/-/vue-2.0.12.tgz#65b4b3d61f928d6969ff33728d53311c5b31c8ee"
- integrity sha512-WFaiCVbBd39FK6Bx3GQskhgT9s45Vjx6dRQegYheVwU1AnF+FAfJVgWbrl21p6fRJcLAFp0xDz6wE18JYBM0eQ==
+"@unhead/vue@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@unhead/vue/-/vue-2.0.5.tgz#7c34b598cf1a3381bda6b43ea4edd2483ca575fd"
+ integrity sha512-csjNmBHvJGzSestlpApOpgxqaTdXSN2zwNIPFuWB+C4rtLX4x3+Tm7C5rQwU0iYy3CNJGjJT9cCcSyV55Jg4EQ==
dependencies:
hookable "^5.5.3"
- unhead "2.0.12"
+ unhead "2.0.5"
-"@unrs/resolver-binding-android-arm-eabi@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz#9f5b04503088e6a354295e8ea8fe3cb99e43af81"
- integrity sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==
+"@unrs/resolver-binding-darwin-arm64@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.4.1.tgz#56a6638f202eff593dab780cc7b45ea020489dc6"
+ integrity sha512-8Tv+Bsd0BjGwfEedIyor4inw8atppRxM5BdUnIt+3mAm/QXUm7Dw74CHnXpfZKXkp07EXJGiA8hStqCINAWhdw==
-"@unrs/resolver-binding-android-arm64@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz#7414885431bd7178b989aedc4d25cccb3865bc9f"
- integrity sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==
+"@unrs/resolver-binding-darwin-x64@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.4.1.tgz#9b935596b19fe249a4823af84e1949605fe084b8"
+ integrity sha512-X8c3PhWziEMKAzZz+YAYWfwawi5AEgzy/hmfizAB4C70gMHLKmInJcp1270yYAOs7z07YVFI220pp50z24Jk3A==
-"@unrs/resolver-binding-darwin-arm64@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz#b4a8556f42171fb9c9f7bac8235045e82aa0cbdf"
- integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==
+"@unrs/resolver-binding-freebsd-x64@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.4.1.tgz#72bc9ae0299aad59bb07c53776f1f470f4457528"
+ integrity sha512-UUr/nREy1UdtxXQnmLaaTXFGOcGxPwNIzeJdb3KXai3TKtC1UgNOB9s8KOA4TaxOUBR/qVgL5BvBwmUjD5yuVA==
-"@unrs/resolver-binding-darwin-x64@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz#fd4d81257b13f4d1a083890a6a17c00de571f0dc"
- integrity sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==
+"@unrs/resolver-binding-linux-arm-gnueabihf@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.4.1.tgz#82921377ff7e20b28ca26f636b2231fe449d4a53"
+ integrity sha512-e3pII53dEeS8inkX6A1ad2UXE0nuoWCqik4kOxaDnls0uJUq0ntdj5d9IYd+bv5TDwf9DSge/xPOvCmRYH+Tsw==
-"@unrs/resolver-binding-freebsd-x64@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz#d2513084d0f37c407757e22f32bd924a78cfd99b"
- integrity sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==
+"@unrs/resolver-binding-linux-arm-musleabihf@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.4.1.tgz#9b315738ecd677f9caa93717891016636a2ee820"
+ integrity sha512-e/AKKd9gR+HNmVyDEPI/PIz2t0DrA3cyonHNhHVjrkxe8pMCiYiqhtn1+h+yIpHUtUlM6Y1FNIdivFa+r7wrEQ==
-"@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz#844d2605d057488d77fab09705f2866b86164e0a"
- integrity sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==
+"@unrs/resolver-binding-linux-arm64-gnu@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.4.1.tgz#98e1bba4f7c7761fdea4ed5effc0a5ad6954cc79"
+ integrity sha512-vtIu34luF1jRktlHtiwm2mjuE8oJCsFiFr8hT5+tFQdqFKjPhbJXn83LswKsOhy0GxAEevpXDI4xxEwkjuXIPA==
-"@unrs/resolver-binding-linux-arm-musleabihf@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz#204892995cefb6bd1d017d52d097193bc61ddad3"
- integrity sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==
+"@unrs/resolver-binding-linux-arm64-musl@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.4.1.tgz#62fb410adcf82b6513891639ef74f7e0339bb681"
+ integrity sha512-H3PaOuGyhFXiyJd+09uPhGl4gocmhyi1BRzvsP8Lv5AQO3p3/ZY7WjV4t2NkBksm9tMjf3YbOVHyPWi2eWsNYw==
-"@unrs/resolver-binding-linux-arm64-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz#023eb0c3aac46066a10be7a3f362e7b34f3bdf9d"
- integrity sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==
+"@unrs/resolver-binding-linux-ppc64-gnu@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.4.1.tgz#0a0d7bc9eb5ff70678f266a8ee80a464ebbec0e3"
+ integrity sha512-4+GmJcaaFntCi1S01YByqp8wLMjV/FyQyHVGm0vedIhL1Vfx7uHkz/sZmKsidRwokBGuxi92GFmSzqT2O8KcNA==
-"@unrs/resolver-binding-linux-arm64-musl@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz#9e6f9abb06424e3140a60ac996139786f5d99be0"
- integrity sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==
+"@unrs/resolver-binding-linux-s390x-gnu@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.4.1.tgz#02c9dd02ac1c6192253749cc7fca35b9d7a249bd"
+ integrity sha512-6RDQVCmtFYTlhy89D5ixTqo9bTQqFhvNN0Ey1wJs5r+01Dq15gPHRXv2jF2bQATtMrOfYwv+R2ZR9ew1N1N3YQ==
-"@unrs/resolver-binding-linux-ppc64-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz#b111417f17c9d1b02efbec8e08398f0c5527bb44"
- integrity sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==
+"@unrs/resolver-binding-linux-x64-gnu@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.4.1.tgz#83fa32f5da9a5f3143185b2d0bc2ad95e4a7a102"
+ integrity sha512-XpU9uzIkD86+19NjCXxlVPISMUrVXsXo5htxtuG+uJ59p5JauSRZsIxQxzzfKzkxEjdvANPM/lS1HFoX6A6QeA==
-"@unrs/resolver-binding-linux-riscv64-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz#92ffbf02748af3e99873945c9a8a5ead01d508a9"
- integrity sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==
+"@unrs/resolver-binding-linux-x64-musl@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.4.1.tgz#32405d987943b4fd621f783f33fad700e3ac2d0f"
+ integrity sha512-3CDjG/spbTKCSHl66QP2ekHSD+H34i7utuDIM5gzoNBcZ1gTO0Op09Wx5cikXnhORRf9+HyDWzm37vU1PLSM1A==
-"@unrs/resolver-binding-linux-riscv64-musl@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz#0bec6f1258fc390e6b305e9ff44256cb207de165"
- integrity sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==
-
-"@unrs/resolver-binding-linux-s390x-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz#577843a084c5952f5906770633ccfb89dac9bc94"
- integrity sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==
-
-"@unrs/resolver-binding-linux-x64-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz#36fb318eebdd690f6da32ac5e0499a76fa881935"
- integrity sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==
-
-"@unrs/resolver-binding-linux-x64-musl@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz#bfb9af75f783f98f6a22c4244214efe4df1853d6"
- integrity sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==
-
-"@unrs/resolver-binding-wasm32-wasi@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz#752c359dd875684b27429500d88226d7cc72f71d"
- integrity sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==
+"@unrs/resolver-binding-wasm32-wasi@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.4.1.tgz#21d18351367e3bfe035636df05153d7f08823568"
+ integrity sha512-50tYhvbCTnuzMn7vmP8IV2UKF7ITo1oihygEYq9wW2DUb/Y+QMqBHJUSCABRngATjZ4shOK6f2+s0gQX6ElENQ==
dependencies:
- "@napi-rs/wasm-runtime" "^0.2.11"
+ "@napi-rs/wasm-runtime" "^0.2.8"
-"@unrs/resolver-binding-win32-arm64-msvc@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz#ce5735e600e4c2fbb409cd051b3b7da4a399af35"
- integrity sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==
+"@unrs/resolver-binding-win32-arm64-msvc@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.4.1.tgz#563563b9ea7761dd7d20603792b518c4924d6f50"
+ integrity sha512-KyJiIne/AqV4IW0wyQO34wSMuJwy3VxVQOfIXIPyQ/Up6y/zi2P/WwXb78gHsLiGRUqCA9LOoCX+6dQZde0g1g==
-"@unrs/resolver-binding-win32-ia32-msvc@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz#72fc57bc7c64ec5c3de0d64ee0d1810317bc60a6"
- integrity sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==
+"@unrs/resolver-binding-win32-ia32-msvc@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.4.1.tgz#c734d9389fe57912b5b3b05aa000d9cb6771ceee"
+ integrity sha512-y2NUD7pygrBolN2NoXUrwVqBpKPhF8DiSNE5oB5/iFO49r2DpoYqdj5HPb3F42fPBH5qNqj6Zg63+xCEzAD2hw==
-"@unrs/resolver-binding-win32-x64-msvc@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz#538b1e103bf8d9864e7b85cc96fa8d6fb6c40777"
- integrity sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==
+"@unrs/resolver-binding-win32-x64-msvc@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.4.1.tgz#e32c666092bc419fd7c3e28fea7c74292aaa94a3"
+ integrity sha512-hVXaObGI2lGFmrtT77KSbPQ3I+zk9IU500wobjk0+oX59vg/0VqAzABNtt3YSQYgXTC2a/LYxekLfND/wlt0yQ==
-"@vercel/nft@0.29.4", "@vercel/nft@^0.29.4":
- version "0.29.4"
- resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.29.4.tgz#e56b07d193776bcf67b31ac4da065ceb8e8d362e"
- integrity sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==
+"@vercel/nft@^0.29.2":
+ version "0.29.2"
+ resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.29.2.tgz#0a852a67f5f24ee7c55139f065d46175688fcbbb"
+ integrity sha512-A/Si4mrTkQqJ6EXJKv5EYCDQ3NL6nJXxG8VGXePsaiQigsomHYQC9xSpX8qGk7AEZk4b1ssbYIqJ0ISQQ7bfcA==
dependencies:
"@mapbox/node-pre-gyp" "^2.0.0"
"@rollup/pluginutils" "^5.1.3"
@@ -2669,53 +2180,41 @@
picomatch "^4.0.2"
resolve-from "^5.0.0"
-"@vitejs/plugin-vue-jsx@^4.2.0":
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.2.0.tgz#2738ec05d4705ed553a107342017192e37351640"
- integrity sha512-DSTrmrdLp+0LDNF77fqrKfx7X0ErRbOcUAgJL/HbSesqQwoUvUQ4uYQqaex+rovqgGcoPqVk+AwUh3v9CuiYIw==
+"@vitejs/plugin-vue-jsx@^4.1.2":
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.1.2.tgz#7ab813bcba9a514a2bdee5b0e17c30d6e420c748"
+ integrity sha512-4Rk0GdE0QCdsIkuMmWeg11gmM4x8UmTnZR/LWPm7QJ7+BsK4tq08udrN0isrrWqz5heFy9HLV/7bOLgFS8hUjA==
dependencies:
- "@babel/core" "^7.27.1"
- "@babel/plugin-transform-typescript" "^7.27.1"
- "@rolldown/pluginutils" "^1.0.0-beta.9"
- "@vue/babel-plugin-jsx" "^1.4.0"
+ "@babel/core" "^7.26.7"
+ "@babel/plugin-transform-typescript" "^7.26.7"
+ "@vue/babel-plugin-jsx" "^1.2.5"
-"@vitejs/plugin-vue@^5.2.4":
- version "5.2.4"
- resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz#9e8a512eb174bfc2a333ba959bbf9de428d89ad8"
- integrity sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==
+"@vitejs/plugin-vue@^5.2.3":
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz#71a8fc82d4d2e425af304c35bf389506f674d89b"
+ integrity sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==
-"@volar/language-core@2.4.20":
- version "2.4.20"
- resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-2.4.20.tgz#be6d4efc6bb2f77d6c01bbbb3ef53661a869e0d0"
- integrity sha512-dRDF1G33xaAIDqR6+mXUIjXYdu9vzSxlMGfMEwBxQsfY/JMUEXSpLTR057oTKlUQ2nIvCmP9k94A8h8z2VrNSA==
+"@volar/language-core@2.4.12", "@volar/language-core@~2.4.11":
+ version "2.4.12"
+ resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-2.4.12.tgz#98c8424f8d81a9cad1760a587b1c6db27d05f0cc"
+ integrity sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==
dependencies:
- "@volar/source-map" "2.4.20"
+ "@volar/source-map" "2.4.12"
-"@volar/source-map@2.4.20":
- version "2.4.20"
- resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-2.4.20.tgz#55ff844410d8d670ef2c3722e2717223edbf8717"
- integrity sha512-mVjmFQH8mC+nUaVwmbxoYUy8cww+abaO8dWzqPUjilsavjxH0jCJ3Mp8HFuHsdewZs2c+SP+EO7hCd8Z92whJg==
+"@volar/source-map@2.4.12":
+ version "2.4.12"
+ resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-2.4.12.tgz#7cc8c6b1b134a2215f06c91ad011d94eef81b0ed"
+ integrity sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==
-"@volar/typescript@2.4.20":
- version "2.4.20"
- resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-2.4.20.tgz#c388d6fe5ee31ddeb5338d01dbbfc71054065a7c"
- integrity sha512-Oc4DczPwQyXcVbd+5RsNEqX6ia0+w3p+klwdZQ6ZKhFjWoBP9PCPQYlKYRi/tDemWphW93P/Vv13vcE9I9D2GQ==
+"@volar/typescript@~2.4.11":
+ version "2.4.12"
+ resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-2.4.12.tgz#8c638c23cab89ab131cdcd2d6f2a51768caaa015"
+ integrity sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==
dependencies:
- "@volar/language-core" "2.4.20"
+ "@volar/language-core" "2.4.12"
path-browserify "^1.0.1"
vscode-uri "^3.0.8"
-"@vue-macros/common@3.0.0-beta.15":
- version "3.0.0-beta.15"
- resolved "https://registry.yarnpkg.com/@vue-macros/common/-/common-3.0.0-beta.15.tgz#6c4404759e2c01429c93589ae4c282725d519175"
- integrity sha512-DMgq/rIh1H20WYNWU7krIbEfJRYDDhy7ix64GlT4AVUJZZWCZ5pxiYVJR3A3GmWQPkn7Pg7i3oIiGqu4JGC65w==
- dependencies:
- "@vue/compiler-sfc" "^3.5.17"
- ast-kit "^2.1.0"
- local-pkg "^1.1.1"
- magic-string-ast "^1.0.0"
- unplugin-utils "^0.2.4"
-
"@vue-macros/common@^1.16.1":
version "1.16.1"
resolved "https://registry.yarnpkg.com/@vue-macros/common/-/common-1.16.1.tgz#dac7ebc57ded4d6fb19d7f9a83d2973971d9fa65"
@@ -2733,7 +2232,7 @@
resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.4.0.tgz#616020488692a9c42a613280d62ed1b727045d95"
integrity sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==
-"@vue/babel-plugin-jsx@^1.4.0":
+"@vue/babel-plugin-jsx@^1.2.5":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.4.0.tgz#c155c795ce980edf46aa6feceed93945a95ca658"
integrity sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==
@@ -2759,47 +2258,47 @@
"@babel/parser" "^7.26.9"
"@vue/compiler-sfc" "^3.5.13"
-"@vue/compiler-core@3.5.18":
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.18.tgz#521a138cdd970d9bfd27e42168d12f77a04b2074"
- integrity sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==
+"@vue/compiler-core@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz#b0ae6c4347f60c03e849a05d34e5bf747c9bda05"
+ integrity sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==
dependencies:
- "@babel/parser" "^7.28.0"
- "@vue/shared" "3.5.18"
+ "@babel/parser" "^7.25.3"
+ "@vue/shared" "3.5.13"
entities "^4.5.0"
estree-walker "^2.0.2"
- source-map-js "^1.2.1"
+ source-map-js "^1.2.0"
-"@vue/compiler-dom@3.5.18", "@vue/compiler-dom@^3.2.45", "@vue/compiler-dom@^3.5.0":
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz#e13504492c3061ec5bbe6a2e789f15261d4f03a7"
- integrity sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==
+"@vue/compiler-dom@3.5.13", "@vue/compiler-dom@^3.5.0":
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz#bb1b8758dbc542b3658dda973b98a1c9311a8a58"
+ integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==
dependencies:
- "@vue/compiler-core" "3.5.18"
- "@vue/shared" "3.5.18"
+ "@vue/compiler-core" "3.5.13"
+ "@vue/shared" "3.5.13"
-"@vue/compiler-sfc@3.5.18", "@vue/compiler-sfc@^3.5.13", "@vue/compiler-sfc@^3.5.17":
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz#ba1e849561337d809937994cdaf900539542eeca"
- integrity sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==
+"@vue/compiler-sfc@3.5.13", "@vue/compiler-sfc@^3.5.13":
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz#461f8bd343b5c06fac4189c4fef8af32dea82b46"
+ integrity sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==
dependencies:
- "@babel/parser" "^7.28.0"
- "@vue/compiler-core" "3.5.18"
- "@vue/compiler-dom" "3.5.18"
- "@vue/compiler-ssr" "3.5.18"
- "@vue/shared" "3.5.18"
+ "@babel/parser" "^7.25.3"
+ "@vue/compiler-core" "3.5.13"
+ "@vue/compiler-dom" "3.5.13"
+ "@vue/compiler-ssr" "3.5.13"
+ "@vue/shared" "3.5.13"
estree-walker "^2.0.2"
- magic-string "^0.30.17"
- postcss "^8.5.6"
- source-map-js "^1.2.1"
+ magic-string "^0.30.11"
+ postcss "^8.4.48"
+ source-map-js "^1.2.0"
-"@vue/compiler-ssr@3.5.18":
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz#aecde0b0bff268a9c9014ba66799307c4a784328"
- integrity sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==
+"@vue/compiler-ssr@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz#e771adcca6d3d000f91a4277c972a996d07f43ba"
+ integrity sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==
dependencies:
- "@vue/compiler-dom" "3.5.18"
- "@vue/shared" "3.5.18"
+ "@vue/compiler-dom" "3.5.13"
+ "@vue/shared" "3.5.13"
"@vue/compiler-vue2@^2.7.16":
version "2.7.16"
@@ -2809,171 +2308,99 @@
de-indent "^1.0.2"
he "^1.2.0"
-"@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.6.4":
+"@vue/devtools-api@^6.6.4":
version "6.6.4"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343"
integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
-"@vue/devtools-core@^7.7.7":
- version "7.7.7"
- resolved "https://registry.yarnpkg.com/@vue/devtools-core/-/devtools-core-7.7.7.tgz#9885e2ecb7b462cca8e629d9cff0ab00bfd30d63"
- integrity sha512-9z9TLbfC+AjAi1PQyWX+OErjIaJmdFlbDHcD+cAMYKY6Bh5VlsAtCeGyRMrXwIlMEQPukvnWt3gZBLwTAIMKzQ==
+"@vue/devtools-core@^7.7.2":
+ version "7.7.2"
+ resolved "https://registry.yarnpkg.com/@vue/devtools-core/-/devtools-core-7.7.2.tgz#fbba7714b4cecd4e4b80e1b68c249b013c6ea6a7"
+ integrity sha512-lexREWj1lKi91Tblr38ntSsy6CvI8ba7u+jmwh2yruib/ltLUcsIzEjCnrkh1yYGGIKXbAuYV2tOG10fGDB9OQ==
dependencies:
- "@vue/devtools-kit" "^7.7.7"
- "@vue/devtools-shared" "^7.7.7"
+ "@vue/devtools-kit" "^7.7.2"
+ "@vue/devtools-shared" "^7.7.2"
mitt "^3.0.1"
- nanoid "^5.1.0"
- pathe "^2.0.3"
- vite-hot-client "^2.0.4"
+ nanoid "^5.0.9"
+ pathe "^2.0.2"
+ vite-hot-client "^0.2.4"
-"@vue/devtools-kit@^7.7.7":
- version "7.7.7"
- resolved "https://registry.yarnpkg.com/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz#41a64f9526e9363331c72405544df020ce2e3641"
- integrity sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==
+"@vue/devtools-kit@^7.7.2":
+ version "7.7.2"
+ resolved "https://registry.yarnpkg.com/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz#3315bd5b144f98c7b84c2f44270b445644ec8f10"
+ integrity sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==
dependencies:
- "@vue/devtools-shared" "^7.7.7"
- birpc "^2.3.0"
+ "@vue/devtools-shared" "^7.7.2"
+ birpc "^0.2.19"
hookable "^5.5.3"
mitt "^3.0.1"
perfect-debounce "^1.0.0"
speakingurl "^14.0.1"
- superjson "^2.2.2"
+ superjson "^2.2.1"
-"@vue/devtools-shared@^7.7.7":
- version "7.7.7"
- resolved "https://registry.yarnpkg.com/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz#ff14aa8c1262ebac8c0397d3b09f767cd489750c"
- integrity sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==
+"@vue/devtools-shared@^7.7.2":
+ version "7.7.2"
+ resolved "https://registry.yarnpkg.com/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz#b11b143820130a32d8ce5737e264d06ab6d62f40"
+ integrity sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==
dependencies:
rfdc "^1.4.1"
-"@vue/language-core@3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-3.0.4.tgz#aa080a96d385ad8e23a801265cf80225ac4be414"
- integrity sha512-BvueED4LfBCSNH66eeUQk37MQCb7hjdezzGgxniM0LbriW53AJIyLorgshAtStmjfsAuOCcTl/c1b+nz/ye8xQ==
+"@vue/language-core@2.2.8":
+ version "2.2.8"
+ resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-2.2.8.tgz#05befa390399fbd4409bc703ee0520b8ac1b7088"
+ integrity sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==
dependencies:
- "@volar/language-core" "2.4.20"
+ "@volar/language-core" "~2.4.11"
"@vue/compiler-dom" "^3.5.0"
"@vue/compiler-vue2" "^2.7.16"
"@vue/shared" "^3.5.0"
- alien-signals "^2.0.5"
+ alien-signals "^1.0.3"
+ minimatch "^9.0.3"
muggle-string "^0.4.1"
path-browserify "^1.0.1"
- picomatch "^4.0.2"
-"@vue/reactivity@3.5.18":
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.18.tgz#fe32166e3938832c54b4134e60e9b58ca7d9bdb4"
- integrity sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==
+"@vue/reactivity@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.13.tgz#b41ff2bb865e093899a22219f5b25f97b6fe155f"
+ integrity sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==
dependencies:
- "@vue/shared" "3.5.18"
+ "@vue/shared" "3.5.13"
-"@vue/runtime-core@3.5.18":
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.18.tgz#9e9ae8b9491548b53d0cea2bf25746d27c52e191"
- integrity sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==
+"@vue/runtime-core@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz#1fafa4bf0b97af0ebdd9dbfe98cd630da363a455"
+ integrity sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==
dependencies:
- "@vue/reactivity" "3.5.18"
- "@vue/shared" "3.5.18"
+ "@vue/reactivity" "3.5.13"
+ "@vue/shared" "3.5.13"
-"@vue/runtime-dom@3.5.18":
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.18.tgz#1150952d1048b5822e4f1dd8aed24665cbb22107"
- integrity sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==
+"@vue/runtime-dom@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz#610fc795de9246300e8ae8865930d534e1246215"
+ integrity sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==
dependencies:
- "@vue/reactivity" "3.5.18"
- "@vue/runtime-core" "3.5.18"
- "@vue/shared" "3.5.18"
+ "@vue/reactivity" "3.5.13"
+ "@vue/runtime-core" "3.5.13"
+ "@vue/shared" "3.5.13"
csstype "^3.1.3"
-"@vue/server-renderer@3.5.18":
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.18.tgz#e9fa267b95b3a1d8cddca762377e5de2ae9122bd"
- integrity sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==
+"@vue/server-renderer@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz#429ead62ee51de789646c22efe908e489aad46f7"
+ integrity sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==
dependencies:
- "@vue/compiler-ssr" "3.5.18"
- "@vue/shared" "3.5.18"
+ "@vue/compiler-ssr" "3.5.13"
+ "@vue/shared" "3.5.13"
-"@vue/shared@3.5.18", "@vue/shared@^3.5.0", "@vue/shared@^3.5.13", "@vue/shared@^3.5.17":
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.18.tgz#529f24a88d3ed678d50fd5c07455841fbe8ac95e"
- integrity sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==
-
-"@vueuse/core@13.6.0":
- version "13.6.0"
- resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-13.6.0.tgz#4137f63dc4cef2ff8ae74ee146d6b6070d707878"
- integrity sha512-DJbD5fV86muVmBgS9QQPddVX7d9hWYswzlf4bIyUD2dj8GC46R1uNClZhVAmsdVts4xb2jwp1PbpuiA50Qee1A==
- dependencies:
- "@types/web-bluetooth" "^0.0.21"
- "@vueuse/metadata" "13.6.0"
- "@vueuse/shared" "13.6.0"
-
-"@vueuse/metadata@13.6.0":
- version "13.6.0"
- resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-13.6.0.tgz#49196025c96c7daeb591c20a54b61cc336af99b6"
- integrity sha512-rnIH7JvU7NjrpexTsl2Iwv0V0yAx9cw7+clymjKuLSXG0QMcLD0LDgdNmXic+qL0SGvgSVPEpM9IDO/wqo1vkQ==
-
-"@vueuse/nuxt@13.6.0":
- version "13.6.0"
- resolved "https://registry.yarnpkg.com/@vueuse/nuxt/-/nuxt-13.6.0.tgz#96dfa26021bc17e1c5020c1c42ba425a9d00112f"
- integrity sha512-zOZ5XkA7Svsx90934UWwKUsThAjKSD48Ks/mjEzl2gJm5d5zYJg+CJxPi7Wv5XECtCBOX18GpmTKqanWlbA1aQ==
- dependencies:
- "@nuxt/kit" "^4.0.1"
- "@vueuse/core" "13.6.0"
- "@vueuse/metadata" "13.6.0"
- local-pkg "^1.1.1"
-
-"@vueuse/shared@13.6.0":
- version "13.6.0"
- resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-13.6.0.tgz#872fdbd725fb4e3a12bd5aab85af9a5db0b1e481"
- integrity sha512-pDykCSoS2T3fsQrYqf9SyF0QXWHmcGPQ+qiOVjlYSzlWd9dgppB2bFSM1GgKKkt7uzn0BBMV3IbJsUfHG2+BCg==
-
-"@whatwg-node/disposablestack@^0.0.6":
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/@whatwg-node/disposablestack/-/disposablestack-0.0.6.tgz#2064a1425ea66194def6df0c7a1851b6939c82bb"
- integrity sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==
- dependencies:
- "@whatwg-node/promise-helpers" "^1.0.0"
- tslib "^2.6.3"
-
-"@whatwg-node/fetch@^0.10.5":
- version "0.10.9"
- resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.10.9.tgz#ac7b5fe966c7df0f124695a40dce8fc63ea97f07"
- integrity sha512-2TaXKmjy53cybNtaAtzbPOzwIPkjXbzvZcimnaJxQwYXKSC8iYnWoZOyT4+CFt8w0KDieg5J5dIMNzUrW/UZ5g==
- dependencies:
- "@whatwg-node/node-fetch" "^0.7.22"
- urlpattern-polyfill "^10.0.0"
-
-"@whatwg-node/node-fetch@^0.7.22":
- version "0.7.22"
- resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.7.22.tgz#9f56970ce0abd2a2680e5d22cff0ea871eeb4f85"
- integrity sha512-h4GGjGF2vH3kGJ/fEOeg9Xfu4ncoyRwFcjGIxr/5dTBgZNVwq888byIsZ+XXRDJnNnRlzVVVQDcqrZpY2yctGA==
- dependencies:
- "@fastify/busboy" "^3.1.1"
- "@whatwg-node/disposablestack" "^0.0.6"
- "@whatwg-node/promise-helpers" "^1.3.2"
- tslib "^2.6.3"
-
-"@whatwg-node/promise-helpers@^1.0.0", "@whatwg-node/promise-helpers@^1.2.2", "@whatwg-node/promise-helpers@^1.3.2":
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz#3b54987ad6517ef6db5920c66a6f0dada606587d"
- integrity sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==
- dependencies:
- tslib "^2.6.3"
-
-"@whatwg-node/server@^0.9.60":
- version "0.9.71"
- resolved "https://registry.yarnpkg.com/@whatwg-node/server/-/server-0.9.71.tgz#5715011b58ab8a0a8abb25759a426ff50d2dce4b"
- integrity sha512-ueFCcIPaMgtuYDS9u0qlUoEvj6GiSsKrwnOLPp9SshqjtcRaR1IEHRjoReq3sXNydsF5i0ZnmuYgXq9dV53t0g==
- dependencies:
- "@whatwg-node/disposablestack" "^0.0.6"
- "@whatwg-node/fetch" "^0.10.5"
- "@whatwg-node/promise-helpers" "^1.2.2"
- tslib "^2.6.3"
+"@vue/shared@3.5.13", "@vue/shared@^3.5.0", "@vue/shared@^3.5.13":
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f"
+ integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==
abbrev@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-3.0.1.tgz#8ac8b3b5024d31464fe2a5feeea9f4536bf44025"
- integrity sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-3.0.0.tgz#c29a6337e167ac61a84b41b80461b29c5c271a27"
+ integrity sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==
abort-controller@^3.0.0:
version "3.0.0"
@@ -2992,15 +2419,15 @@ acorn-jsx@^5.3.2:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-acorn@^8.14.0, acorn@^8.14.1, acorn@^8.15.0, acorn@^8.5.0, acorn@^8.6.0, acorn@^8.8.2, acorn@^8.9.0:
- version "8.15.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
- integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
+acorn@^8.14.0, acorn@^8.14.1, acorn@^8.6.0, acorn@^8.8.2:
+ version "8.14.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb"
+ integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
agent-base@^7.1.2:
- version "7.1.4"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8"
- integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1"
+ integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==
ajv@^6.12.4:
version "6.12.6"
@@ -3012,10 +2439,10 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-alien-signals@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/alien-signals/-/alien-signals-2.0.5.tgz#7528fc28de7cd76ccb6aad1d46d5b5635ce10805"
- integrity sha512-PdJB6+06nUNAClInE3Dweq7/2xVAYM64vvvS1IHVHSJmgeOtEdrAGyp7Z2oJtYm0B342/Exd2NT0uMJaThcjLQ==
+alien-signals@^1.0.3:
+ version "1.0.13"
+ resolved "https://registry.yarnpkg.com/alien-signals/-/alien-signals-1.0.13.tgz#8d6db73462f742ee6b89671fbd8c37d0b1727a7e"
+ integrity sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==
ansi-regex@^5.0.1:
version "5.0.1"
@@ -3039,12 +2466,12 @@ ansi-styles@^6.1.0:
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
-ansis@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/ansis/-/ansis-4.1.0.tgz#cd43ecd3f814f37223e518291c0e0b04f2915a0d"
- integrity sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==
+ansis@^3.16.0, ansis@^3.17.0:
+ version "3.17.0"
+ resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.17.0.tgz#fa8d9c2a93fe7d1177e0c17f9eeb562a58a832d7"
+ integrity sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==
-anymatch@^3.1.3, anymatch@~3.1.2:
+anymatch@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
@@ -3065,7 +2492,7 @@ archiver-utils@^5.0.0, archiver-utils@^5.0.2:
normalize-path "^3.0.0"
readable-stream "^4.0.0"
-archiver@^7.0.0, archiver@^7.0.1:
+archiver@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/archiver/-/archiver-7.0.1.tgz#c9d91c350362040b8927379c7aa69c0655122f61"
integrity sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==
@@ -3083,49 +2510,36 @@ are-docs-informative@^0.0.2:
resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963"
integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==
-argon2@^0.43.0:
- version "0.43.1"
- resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.43.1.tgz#8155ae67fd4ca2a7364364ca3e45e0d8fbbc0ee9"
- integrity sha512-TfOzvDWUaQPurCT1hOwIeFNkgrAJDpbBGBGWDgzDsm11nNhImc13WhdGdCU6K7brkp8VpeY07oGtSex0Wmhg8w==
+argon2@^0.41.1:
+ version "0.41.1"
+ resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.41.1.tgz#30ce6b013e273bc7e92c558d40e66d35e5e8c63b"
+ integrity sha512-dqCW8kJXke8Ik+McUcMDltrbuAWETPyU6iq+4AhxqKphWi7pChB/Zgd/Tp/o8xRLbg8ksMj46F/vph9wnxpTzQ==
dependencies:
"@phc/format" "^1.0.0"
- node-addon-api "^8.4.0"
- node-gyp-build "^4.8.4"
+ node-addon-api "^8.1.0"
+ node-gyp-build "^4.8.1"
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-arktype@^2.1.10, arktype@^2.1.9:
- version "2.1.20"
- resolved "https://registry.yarnpkg.com/arktype/-/arktype-2.1.20.tgz#dd46726b0faf23c2753369876c77bb037e7089d9"
- integrity sha512-IZCEEXaJ8g+Ijd59WtSYwtjnqXiwM8sWQ5EjGamcto7+HVN9eK0C4p0zDlCuAwWhpqr6fIBkxPuYDl4/Mcj/+Q==
+arktype@^2.1.10:
+ version "2.1.15"
+ resolved "https://registry.yarnpkg.com/arktype/-/arktype-2.1.15.tgz#d21a09bc0404473e8aa7d943c4e817666a0650ca"
+ integrity sha512-ro31NmDxOEFysUjSQL4O9Q12sQuobImqXyqQbWzK7LNB/gvfflnZyeNBsysZYf5HP3pY39P9EgynMYiyqbJQ1g==
dependencies:
- "@ark/schema" "0.46.0"
- "@ark/util" "0.46.0"
+ "@ark/schema" "0.45.5"
+ "@ark/util" "0.45.5"
ast-kit@^1.0.1, ast-kit@^1.4.0:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/ast-kit/-/ast-kit-1.4.3.tgz#030f1bfb55bd72d426dc1d0ba82a8de5c75acd7c"
- integrity sha512-MdJqjpodkS5J149zN0Po+HPshkTdUyrvF7CKTafUgv69vBSPtncrj+3IiUgqdd7ElIEkbeXCsEouBUwLrw9Ilg==
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/ast-kit/-/ast-kit-1.4.2.tgz#75d3706c12549573c7de9e7c38ed04fb7d0cc10f"
+ integrity sha512-lvGehj1XsrIoQrD5CfPduIzQbcpuX2EPjlk/vDMDQF9U9HLRB6WwMTdighj5n52hdhh8xg9VgPTU7Q25MuJ/rw==
dependencies:
- "@babel/parser" "^7.27.0"
+ "@babel/parser" "^7.26.9"
pathe "^2.0.3"
-ast-kit@^2.0.0, ast-kit@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ast-kit/-/ast-kit-2.1.1.tgz#b6b44e160b8fcc3781cfe0f382713ecefb061ea5"
- integrity sha512-mfh6a7gKXE8pDlxTvqIc/syH/P3RkzbOF6LeHdcKztLEzYe6IMsRCL7N8vI7hqTGWNxpkCuuRTpT21xNWqhRtQ==
- dependencies:
- "@babel/parser" "^7.27.7"
- pathe "^2.0.3"
-
-ast-module-types@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-6.0.1.tgz#4b4ca0251c57b815bab62604dcb22f8c903e2523"
- integrity sha512-WHw67kLXYbZuHTmcdbIrVArCq5wxo6NEuj3hiYAWr8mwJeC+C2mMCIBIWCiDoCye/OF/xelc+teJ1ERoWmnEIA==
-
ast-walker-scope@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/ast-walker-scope/-/ast-walker-scope-0.6.2.tgz#b827e8949c129802f76fe0f142e95fd7efda57dc"
@@ -3134,20 +2548,12 @@ ast-walker-scope@^0.6.2:
"@babel/parser" "^7.25.3"
ast-kit "^1.0.1"
-ast-walker-scope@^0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/ast-walker-scope/-/ast-walker-scope-0.8.1.tgz#2994ba9ed550fdfa57cee274e4fc34053a5495e5"
- integrity sha512-72XOdbzQCMKERvFrxAykatn2pu7osPNq/sNUzwcHdWzwPvOsNpPqkawfDXVvQbA2RT+ivtsMNjYdojTUZitt1A==
- dependencies:
- "@babel/parser" "^7.27.2"
- ast-kit "^2.0.0"
-
async-sema@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/async-sema/-/async-sema-3.1.1.tgz#e527c08758a0f8f6f9f15f799a173ff3c40ea808"
integrity sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==
-async@^3.2.3, async@^3.2.4:
+async@^3.2.4:
version "3.2.6"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce"
integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
@@ -3157,11 +2563,6 @@ asynckit@^0.4.0:
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
-atomic-sleep@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b"
- integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==
-
autoprefixer@^10.4.20, autoprefixer@^10.4.21:
version "10.4.21"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d"
@@ -3175,12 +2576,12 @@ autoprefixer@^10.4.20, autoprefixer@^10.4.21:
postcss-value-parser "^4.2.0"
axios@^1.7.7:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/axios/-/axios-1.11.0.tgz#c2ec219e35e414c025b2095e8b8280278478fdb6"
- integrity sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==
+ version "1.8.4"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.4.tgz#78990bb4bc63d2cae072952d374835950a82f447"
+ integrity sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==
dependencies:
follow-redirects "^1.15.6"
- form-data "^4.0.4"
+ form-data "^4.0.0"
proxy-from-env "^1.1.0"
b4a@^1.6.4:
@@ -3194,14 +2595,14 @@ balanced-match@^1.0.0:
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
bare-events@^2.2.0, bare-events@^2.5.4:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.6.0.tgz#11d9506da109e363a2f3af050fbb005ccdb3ee8f"
- integrity sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.5.4.tgz#16143d435e1ed9eafd1ab85f12b89b3357a41745"
+ integrity sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==
bare-fs@^4.0.1:
- version "4.1.6"
- resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-4.1.6.tgz#0925521e7310f65cb1f154cab264f0b647a7cdef"
- integrity sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-4.0.2.tgz#a879c7b5d9242663ef80d75d6b99c2c6701664d6"
+ integrity sha512-S5mmkMesiduMqnz51Bfh0Et9EX0aTCJxhsI4bvzFFLs8Z1AV8RDHadfY5CyLwdoLHgXbNBEN1gQcbEtGwuvixw==
dependencies:
bare-events "^2.5.4"
bare-path "^3.0.0"
@@ -3243,11 +2644,6 @@ bcryptjs@*, bcryptjs@^3.0.2:
resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-3.0.2.tgz#caadcca1afefe372ed6e20f86db8e8546361c1ca"
integrity sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==
-binary-extensions@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
- integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
-
bindings@^1.4.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
@@ -3255,10 +2651,15 @@ bindings@^1.4.0:
dependencies:
file-uri-to-path "1.0.0"
-birpc@^2.3.0, birpc@^2.4.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/birpc/-/birpc-2.5.0.tgz#3a014e54c17eceba0ce15738d484ea371dbf6527"
- integrity sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==
+birpc@^0.2.19:
+ version "0.2.19"
+ resolved "https://registry.yarnpkg.com/birpc/-/birpc-0.2.19.tgz#cdd183a4a70ba103127d49765b4a71349da5a0ca"
+ integrity sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==
+
+birpc@^2.0.19, birpc@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/birpc/-/birpc-2.3.0.tgz#e5a402dc785ef952a2383ef3cfc075e0842f3e8c"
+ integrity sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==
bl@^4.0.3:
version "4.1.0"
@@ -3280,21 +2681,21 @@ boolbase@^1.0.0:
integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
brace-expansion@^1.1.7:
- version "1.1.12"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843"
- integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
brace-expansion@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7"
- integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
dependencies:
balanced-match "^1.0.0"
-braces@^3.0.3, braces@~3.0.2:
+braces@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
@@ -3308,26 +2709,21 @@ brotli@^1.3.2:
dependencies:
base64-js "^1.1.2"
-browserslist@^4.0.0, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.25.1:
- version "4.25.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111"
- integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==
+browserslist@^4.0.0, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.4:
+ version "4.24.4"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b"
+ integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
dependencies:
- caniuse-lite "^1.0.30001726"
- electron-to-chromium "^1.5.173"
+ caniuse-lite "^1.0.30001688"
+ electron-to-chromium "^1.5.73"
node-releases "^2.0.19"
- update-browserslist-db "^1.1.3"
+ update-browserslist-db "^1.1.1"
buffer-crc32@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405"
integrity sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==
-buffer-crc32@~0.2.3:
- version "0.2.13"
- resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
- integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
-
buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
@@ -3349,11 +2745,6 @@ buffer@^6.0.3:
base64-js "^1.3.1"
ieee754 "^1.2.1"
-builtin-modules@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
- integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
-
builtin-modules@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-5.0.0.tgz#9be95686dedad2e9eed05592b07733db87dcff1a"
@@ -3373,22 +2764,40 @@ bundle-require@^5.1.0:
dependencies:
load-tsconfig "^0.2.3"
-c12@^3.0.4, c12@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/c12/-/c12-3.1.0.tgz#9e237970e1d3b74ebae51d25945cb59664c12c89"
- integrity sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==
+c12@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/c12/-/c12-3.0.2.tgz#5ceba55cf081ff4cf95b22c593c80b34cf1f3d2e"
+ integrity sha512-6Tzk1/TNeI3WBPpK0j/Ss4+gPj3PUJYbWl/MWDJBThFvwNGNkXtd7Cz8BJtD4aRwoGHtzQD0SnxamgUiBH0/Nw==
+ dependencies:
+ chokidar "^4.0.3"
+ confbox "^0.1.8"
+ defu "^6.1.4"
+ dotenv "^16.4.7"
+ exsolve "^1.0.0"
+ giget "^2.0.0"
+ jiti "^2.4.2"
+ ohash "^2.0.5"
+ pathe "^2.0.3"
+ perfect-debounce "^1.0.0"
+ pkg-types "^2.0.0"
+ rc9 "^2.1.2"
+
+c12@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/c12/-/c12-3.0.3.tgz#4d6d4d35f084606ff616d1bcae60e6676eacd4bd"
+ integrity sha512-uC3MacKBb0Z15o5QWCHvHWj5Zv34pGQj9P+iXKSpTuSGFS0KKhUWf4t9AJ+gWjYOdmWCPEGpEzm8sS0iqbpo1w==
dependencies:
chokidar "^4.0.3"
confbox "^0.2.2"
defu "^6.1.4"
- dotenv "^16.6.1"
- exsolve "^1.0.7"
+ dotenv "^16.4.7"
+ exsolve "^1.0.4"
giget "^2.0.0"
jiti "^2.4.2"
ohash "^2.0.11"
pathe "^2.0.3"
perfect-debounce "^1.0.0"
- pkg-types "^2.2.0"
+ pkg-types "^2.1.0"
rc9 "^2.1.2"
cac@^6.7.14:
@@ -3404,19 +2813,6 @@ call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
es-errors "^1.3.0"
function-bind "^1.1.2"
-call-bound@^1.0.2:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
- integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
- dependencies:
- call-bind-apply-helpers "^1.0.2"
- get-intrinsic "^1.3.0"
-
-callsite@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
- integrity sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==
-
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
@@ -3432,10 +2828,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001726:
- version "1.0.30001727"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz#22e9706422ad37aa50556af8c10e40e2d93a8b85"
- integrity sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001688, caniuse-lite@^1.0.30001702:
+ version "1.0.30001707"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz#c5e104d199e6f4355a898fcd995a066c7eb9bf41"
+ integrity sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==
canvas-renderer@~2.2.0:
version "2.2.1"
@@ -3452,61 +2848,12 @@ chalk@^4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-change-case@^5.4.4:
- version "5.4.4"
- resolved "https://registry.yarnpkg.com/change-case/-/change-case-5.4.4.tgz#0d52b507d8fb8f204343432381d1a6d7bff97a02"
- integrity sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==
-
character-entities@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22"
integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
-cheerio-select@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4"
- integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==
- dependencies:
- boolbase "^1.0.0"
- css-select "^5.1.0"
- css-what "^6.1.0"
- domelementtype "^2.3.0"
- domhandler "^5.0.3"
- domutils "^3.0.1"
-
-cheerio@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.1.2.tgz#26af77e89336c81c63ea83197f868b4cbd351369"
- integrity sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==
- dependencies:
- cheerio-select "^2.1.0"
- dom-serializer "^2.0.0"
- domhandler "^5.0.3"
- domutils "^3.2.2"
- encoding-sniffer "^0.2.1"
- htmlparser2 "^10.0.0"
- parse5 "^7.3.0"
- parse5-htmlparser2-tree-adapter "^7.1.0"
- parse5-parser-stream "^7.1.2"
- undici "^7.12.0"
- whatwg-mimetype "^4.0.0"
-
-chokidar@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
- integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
- 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"
- optionalDependencies:
- fsevents "~2.3.2"
-
-chokidar@^4.0.0, chokidar@^4.0.1, chokidar@^4.0.3:
+chokidar@^4.0.0, chokidar@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30"
integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
@@ -3523,10 +2870,10 @@ chownr@^3.0.0:
resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4"
integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==
-ci-info@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.0.tgz#c39b1013f8fdbd28cd78e62318357d02da160cd7"
- integrity sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==
+ci-info@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7"
+ integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==
citty@^0.1.5, citty@^0.1.6:
version "0.1.6"
@@ -3570,13 +2917,6 @@ cluster-key-slot@^1.1.0:
resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac"
integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==
-color-convert@^1.9.3:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
@@ -3584,17 +2924,12 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-
-color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4:
+color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-color-string@^1.6.0, color-string@^1.9.0:
+color-string@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
@@ -3602,14 +2937,6 @@ color-string@^1.6.0, color-string@^1.9.0:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
-color@^3.1.3:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164"
- integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
- dependencies:
- color-convert "^1.9.3"
- color-string "^1.6.0"
-
color@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
@@ -3623,19 +2950,6 @@ colord@^2.9.3:
resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
-colorette@^2.0.7:
- version "2.0.20"
- resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a"
- integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
-
-colorspace@1.1.x:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243"
- integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==
- dependencies:
- color "^3.1.3"
- text-hex "1.0.x"
-
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -3643,21 +2957,6 @@ combined-stream@^1.0.8:
dependencies:
delayed-stream "~1.0.0"
-commander@^10.0.1:
- version "10.0.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
- integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
-
-commander@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906"
- integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==
-
-commander@^12.1.0:
- version "12.1.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
- integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
-
commander@^2.20.0, commander@^2.20.3:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
@@ -3668,25 +2967,20 @@ commander@^7.2.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
-comment-parser@1.4.1, comment-parser@^1.4.0, comment-parser@^1.4.1:
+comment-parser@1.4.1, comment-parser@^1.4.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc"
integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==
-common-path-prefix@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0"
- integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==
-
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
-compatx@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/compatx/-/compatx-0.2.0.tgz#76bae4e221c8de3da795f52b2e0b67003735b313"
- integrity sha512-6gLRNt4ygsi5NyMVhceOCFv14CIdDFN7fQjX1U4+47qVE/+kjPoXMK65KWK+dWxmFzMTuKazoQ9sch6pM0p5oA==
+compatx@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/compatx/-/compatx-0.1.8.tgz#af6f61910ade6ce1073c0fdff23c786bcd75c026"
+ integrity sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==
compress-commons@^6.0.2:
version "6.0.2"
@@ -3709,6 +3003,11 @@ confbox@^0.1.8:
resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06"
integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==
+confbox@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.2.1.tgz#ae39f2c99699afa451d00206479f15f9a1208a8b"
+ integrity sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==
+
confbox@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.2.2.tgz#8652f53961c74d9e081784beed78555974a9c110"
@@ -3746,20 +3045,12 @@ copy-anything@^3.0.2:
dependencies:
is-what "^4.1.8"
-copy-file@^11.0.0:
- version "11.0.0"
- resolved "https://registry.yarnpkg.com/copy-file/-/copy-file-11.0.0.tgz#903f0a5a34e5534eaf775352ac9381359c13f258"
- integrity sha512-mFsNh/DIANLqFt5VHZoGirdg7bK5+oTWlhnGu6tgRhzBlnEKWaPX2xrFaLltii/6rmhqFMJqffUgknuRdpYlHw==
+core-js-compat@^3.41.0:
+ version "3.41.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17"
+ integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==
dependencies:
- graceful-fs "^4.2.11"
- p-event "^6.0.0"
-
-core-js-compat@^3.44.0:
- version "3.44.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.44.0.tgz#62b9165b97e4cbdb8bca16b14818e67428b4a0f8"
- integrity sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==
- dependencies:
- browserslist "^4.25.1"
+ browserslist "^4.24.4"
core-util-is@~1.0.0:
version "1.0.3"
@@ -3779,17 +3070,10 @@ crc32-stream@^6.0.0:
crc-32 "^1.2.0"
readable-stream "^4.0.0"
-cron-parser@^4.9.0:
- version "4.9.0"
- resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.9.0.tgz#0340694af3e46a0894978c6f52a6dbb5c0f11ad5"
- integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==
- dependencies:
- luxon "^3.2.1"
-
-croner@^9.1.0:
- version "9.1.0"
- resolved "https://registry.yarnpkg.com/croner/-/croner-9.1.0.tgz#94ccbba2570bca329f60f36ec19875dccf9a63aa"
- integrity sha512-p9nwwR4qyT5W996vBZhdvBCnMhicY5ytZkR4D1Xj0wuTDEiMnjwR57Q3RXYY/s0EpX6Ay3vgIcfaR+ewGHsi+g==
+croner@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/croner/-/croner-9.0.0.tgz#1db62160142cf32eb22622e9ae27ba29156883f7"
+ integrity sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA==
cross-fetch@^3.0.4:
version "3.2.0"
@@ -3807,10 +3091,10 @@ cross-spawn@^7.0.3, cross-spawn@^7.0.6:
shebang-command "^2.0.0"
which "^2.0.1"
-"crossws@>=0.2.0 <0.4.0", crossws@^0.3.4, crossws@^0.3.5:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.3.5.tgz#daad331d44148ea6500098bc858869f3a5ab81a6"
- integrity sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==
+"crossws@>=0.2.0 <0.4.0", crossws@^0.3.3, crossws@^0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.3.4.tgz#06164c6495ea99152ea7557c99310b52d9be9b29"
+ integrity sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==
dependencies:
uncrypto "^0.1.3"
@@ -3820,9 +3104,9 @@ css-declaration-sorter@^7.2.0:
integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==
css-select@^5.1.0:
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.2.2.tgz#01b6e8d163637bb2dd6c982ca4ed65863682786e"
- integrity sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
+ integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
dependencies:
boolbase "^1.0.0"
css-what "^6.1.0"
@@ -3838,7 +3122,7 @@ css-tree@^2.3.1:
mdn-data "2.0.30"
source-map-js "^1.0.1"
-css-tree@^3.0.0, css-tree@^3.0.1, css-tree@^3.1.0:
+css-tree@^3.0.0, css-tree@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.1.0.tgz#7aabc035f4e66b5c86f54570d55e05b1346eb0fd"
integrity sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==
@@ -3855,9 +3139,9 @@ css-tree@~2.2.0:
source-map-js "^1.0.1"
css-what@^6.1.0:
- version "6.2.2"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea"
- integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
+ integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
cssesc@^3.0.0:
version "3.0.0"
@@ -3869,54 +3153,54 @@ cssfilter@0.0.10:
resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae"
integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==
-cssnano-preset-default@^7.0.8:
- version "7.0.8"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-7.0.8.tgz#a2e380cb73931dc817fa360217840b2e377463ee"
- integrity sha512-d+3R2qwrUV3g4LEMOjnndognKirBZISylDZAF/TPeCWVjEwlXS2e4eN4ICkoobRe7pD3H6lltinKVyS1AJhdjQ==
+cssnano-preset-default@^7.0.6:
+ version "7.0.6"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz#0220fa7507478369aa2a226bac03e1204cd024c1"
+ integrity sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==
dependencies:
- browserslist "^4.25.1"
+ browserslist "^4.23.3"
css-declaration-sorter "^7.2.0"
- cssnano-utils "^5.0.1"
- postcss-calc "^10.1.1"
- postcss-colormin "^7.0.4"
- postcss-convert-values "^7.0.6"
- postcss-discard-comments "^7.0.4"
- postcss-discard-duplicates "^7.0.2"
- postcss-discard-empty "^7.0.1"
- postcss-discard-overridden "^7.0.1"
- postcss-merge-longhand "^7.0.5"
- postcss-merge-rules "^7.0.6"
- postcss-minify-font-values "^7.0.1"
- postcss-minify-gradients "^7.0.1"
- postcss-minify-params "^7.0.4"
- postcss-minify-selectors "^7.0.5"
- postcss-normalize-charset "^7.0.1"
- postcss-normalize-display-values "^7.0.1"
- postcss-normalize-positions "^7.0.1"
- postcss-normalize-repeat-style "^7.0.1"
- postcss-normalize-string "^7.0.1"
- postcss-normalize-timing-functions "^7.0.1"
- postcss-normalize-unicode "^7.0.4"
- postcss-normalize-url "^7.0.1"
- postcss-normalize-whitespace "^7.0.1"
- postcss-ordered-values "^7.0.2"
- postcss-reduce-initial "^7.0.4"
- postcss-reduce-transforms "^7.0.1"
- postcss-svgo "^7.1.0"
- postcss-unique-selectors "^7.0.4"
+ cssnano-utils "^5.0.0"
+ postcss-calc "^10.0.2"
+ postcss-colormin "^7.0.2"
+ postcss-convert-values "^7.0.4"
+ postcss-discard-comments "^7.0.3"
+ postcss-discard-duplicates "^7.0.1"
+ postcss-discard-empty "^7.0.0"
+ postcss-discard-overridden "^7.0.0"
+ postcss-merge-longhand "^7.0.4"
+ postcss-merge-rules "^7.0.4"
+ postcss-minify-font-values "^7.0.0"
+ postcss-minify-gradients "^7.0.0"
+ postcss-minify-params "^7.0.2"
+ postcss-minify-selectors "^7.0.4"
+ postcss-normalize-charset "^7.0.0"
+ postcss-normalize-display-values "^7.0.0"
+ postcss-normalize-positions "^7.0.0"
+ postcss-normalize-repeat-style "^7.0.0"
+ postcss-normalize-string "^7.0.0"
+ postcss-normalize-timing-functions "^7.0.0"
+ postcss-normalize-unicode "^7.0.2"
+ postcss-normalize-url "^7.0.0"
+ postcss-normalize-whitespace "^7.0.0"
+ postcss-ordered-values "^7.0.1"
+ postcss-reduce-initial "^7.0.2"
+ postcss-reduce-transforms "^7.0.0"
+ postcss-svgo "^7.0.1"
+ postcss-unique-selectors "^7.0.3"
-cssnano-utils@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-5.0.1.tgz#f529e9aa0d7930512ca45b9e2ddb8d6b9092eb30"
- integrity sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==
+cssnano-utils@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-5.0.0.tgz#b53a0343dd5d21012911882db6ae7d2eae0e3687"
+ integrity sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==
-cssnano@^7.0.7:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-7.1.0.tgz#f1a89ac4753982aebe5ae9583f3e9ad6645aded5"
- integrity sha512-Pu3rlKkd0ZtlCUzBrKL1Z4YmhKppjC1H9jo7u1o4qaKqyhvixFgu5qLyNIAOjSTg9DjVPtUqdROq2EfpVMEe+w==
+cssnano@^7.0.6:
+ version "7.0.6"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-7.0.6.tgz#63d54fd42bc017f6aaed69e47d9aaef85b7850ec"
+ integrity sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==
dependencies:
- cssnano-preset-default "^7.0.8"
- lilconfig "^3.1.3"
+ cssnano-preset-default "^7.0.6"
+ lilconfig "^3.1.2"
csso@^5.0.5:
version "5.0.5"
@@ -3930,44 +3214,41 @@ csstype@^3.1.3:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
-data-uri-to-buffer@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
- integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
-
-dateformat@^4.6.3:
- version "4.6.3"
- resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5"
- integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==
-
-db0@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/db0/-/db0-0.3.2.tgz#f2f19a547ac5519714a510edf0f93daf61ff7e47"
- integrity sha512-xzWNQ6jk/+NtdfLyXEipbX55dmDSeteLFt/ayF+wZUU5bzKgmrDOxmInUTbyVRp46YwnJdkDA1KhB7WIXFofJw==
+db0@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/db0/-/db0-0.3.1.tgz#84366f06cd9a154545b077be5cb955e4ac278314"
+ integrity sha512-3RogPLE2LLq6t4YiFCREyl572aBjkfMvfwPyN51df00TbPbryL3XqBYuJ/j6mgPssPK8AKfYdLxizaO5UG10sA==
de-indent@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
-debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.1:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b"
- integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
+debug@2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6, debug@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
+ integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
dependencies:
ms "^2.1.3"
-decache@^4.6.2:
- version "4.6.2"
- resolved "https://registry.yarnpkg.com/decache/-/decache-4.6.2.tgz#c1df1325a2f36d53922e08f33380f083148199cd"
- integrity sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==
+debug@^3.2.7:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
- callsite "^1.0.0"
+ ms "^2.1.1"
decode-named-character-reference@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed"
- integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz#5d6ce68792808901210dac42a8e9853511e2b8bf"
+ integrity sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==
dependencies:
character-entities "^2.0.0"
@@ -4041,96 +3322,25 @@ dequal@^2.0.0:
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
-destr@^2.0.2, destr@^2.0.3, destr@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.5.tgz#7d112ff1b925fb8d2079fac5bdb4a90973b51fdb"
- integrity sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==
+destr@^2.0.2, destr@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.3.tgz#7f9e97cb3d16dbdca7be52aca1644ce402cfe449"
+ integrity sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==
+
+destroy@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
detect-libc@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
-detect-libc@^2.0.0, detect-libc@^2.0.2, detect-libc@^2.0.3, detect-libc@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8"
- integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
-
-detective-amd@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-6.0.1.tgz#71eb13b5d9b17222d7b4de3fb89a8e684d8b9a23"
- integrity sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g==
- dependencies:
- ast-module-types "^6.0.1"
- escodegen "^2.1.0"
- get-amd-module-type "^6.0.1"
- node-source-walk "^7.0.1"
-
-detective-cjs@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/detective-cjs/-/detective-cjs-6.0.1.tgz#4fb81a67337630811409abb2148b2b622cacbdcd"
- integrity sha512-tLTQsWvd2WMcmn/60T2inEJNhJoi7a//PQ7DwRKEj1yEeiQs4mrONgsUtEJKnZmrGWBBmE0kJ1vqOG/NAxwaJw==
- dependencies:
- ast-module-types "^6.0.1"
- node-source-walk "^7.0.1"
-
-detective-es6@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-5.0.1.tgz#f0c026bc9b767a243e57ef282f4343fcf3b8ec4e"
- integrity sha512-XusTPuewnSUdoxRSx8OOI6xIA/uld/wMQwYsouvFN2LAg7HgP06NF1lHRV3x6BZxyL2Kkoih4ewcq8hcbGtwew==
- dependencies:
- node-source-walk "^7.0.1"
-
-detective-postcss@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/detective-postcss/-/detective-postcss-7.0.1.tgz#f5822d8988339fb56851fcdb079d51fbcff114db"
- integrity sha512-bEOVpHU9picRZux5XnwGsmCN4+8oZo7vSW0O0/Enq/TO5R2pIAP2279NsszpJR7ocnQt4WXU0+nnh/0JuK4KHQ==
- dependencies:
- is-url "^1.2.4"
- postcss-values-parser "^6.0.2"
-
-detective-sass@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/detective-sass/-/detective-sass-6.0.1.tgz#fcf5aa51bebf7b721807be418418470ee2409f8a"
- integrity sha512-jSGPO8QDy7K7pztUmGC6aiHkexBQT4GIH+mBAL9ZyBmnUIOFbkfZnO8wPRRJFP/QP83irObgsZHCoDHZ173tRw==
- dependencies:
- gonzales-pe "^4.3.0"
- node-source-walk "^7.0.1"
-
-detective-scss@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/detective-scss/-/detective-scss-5.0.1.tgz#6a7f792dc9c0e8cfc0d252a50ba26a6df12596a7"
- integrity sha512-MAyPYRgS6DCiS6n6AoSBJXLGVOydsr9huwXORUlJ37K3YLyiN0vYHpzs3AdJOgHobBfispokoqrEon9rbmKacg==
- dependencies:
- gonzales-pe "^4.3.0"
- node-source-walk "^7.0.1"
-
-detective-stylus@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-5.0.1.tgz#57d54a0b405305ee16655e42008b38a827a9f179"
- integrity sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA==
-
-detective-typescript@^14.0.0:
- version "14.0.0"
- resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-14.0.0.tgz#3cf429652eb7d7d2be2c050ac47af957a559527d"
- integrity sha512-pgN43/80MmWVSEi5LUuiVvO/0a9ss5V7fwVfrJ4QzAQRd3cwqU1SfWGXJFcNKUqoD5cS+uIovhw5t/0rSeC5Mw==
- dependencies:
- "@typescript-eslint/typescript-estree" "^8.23.0"
- ast-module-types "^6.0.1"
- node-source-walk "^7.0.1"
-
-detective-vue2@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/detective-vue2/-/detective-vue2-2.2.0.tgz#35fd1d39e261b064aca9fcaf20e136c76877482a"
- integrity sha512-sVg/t6O2z1zna8a/UIV6xL5KUa2cMTQbdTIIvqNM0NIPswp52fe43Nwmbahzj3ww4D844u/vC2PYfiGLvD3zFA==
- dependencies:
- "@dependents/detective-less" "^5.0.1"
- "@vue/compiler-sfc" "^3.5.13"
- detective-es6 "^5.0.1"
- detective-sass "^6.0.1"
- detective-scss "^5.0.1"
- detective-stylus "^5.0.1"
- detective-typescript "^14.0.0"
+detect-libc@^2.0.0, detect-libc@^2.0.2, detect-libc@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
+ integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
devalue@^5.1.1:
version "5.1.1"
@@ -4149,10 +3359,17 @@ dfa@^1.2.0:
resolved "https://registry.yarnpkg.com/dfa/-/dfa-1.2.0.tgz#96ac3204e2d29c49ea5b57af8d92c2ae12790657"
integrity sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==
-diff@^8.0.2:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/diff/-/diff-8.0.2.tgz#712156a6dd288e66ebb986864e190c2fc9eddfae"
- integrity sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==
+diff@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a"
+ integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
dom-serializer@^2.0.0:
version "2.0.0"
@@ -4175,7 +3392,7 @@ domhandler@^5.0.2, domhandler@^5.0.3:
dependencies:
domelementtype "^2.3.0"
-domutils@^3.0.1, domutils@^3.2.1, domutils@^3.2.2:
+domutils@^3.0.1:
version "3.2.2"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78"
integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==
@@ -4184,17 +3401,17 @@ domutils@^3.0.1, domutils@^3.2.1, domutils@^3.2.2:
domelementtype "^2.3.0"
domhandler "^5.0.3"
-dot-prop@9.0.0, dot-prop@^9.0.0:
+dot-prop@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-9.0.0.tgz#bae5982fe6dc6b8fddb92efef4f2ddff26779e92"
integrity sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==
dependencies:
type-fest "^4.18.2"
-dotenv@^16.3.1, dotenv@^16.4.7, dotenv@^16.6.1:
- version "16.6.1"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020"
- integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==
+dotenv@^16.4.7:
+ version "16.4.7"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26"
+ integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
dunder-proto@^1.0.1:
version "1.0.1"
@@ -4220,10 +3437,10 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
-electron-to-chromium@^1.5.173:
- version "1.5.191"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.191.tgz#8ae49a471447b1ceaf1d4d183a9000082f52363c"
- integrity sha512-xcwe9ELcuxYLUFqZZxL19Z6HVKcvNkIwhbHUz7L3us6u12yR+7uY89dSl570f/IqNthx8dAw3tojG7i4Ni4tDA==
+electron-to-chromium@^1.5.73:
+ version "1.5.128"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz#8ea537b369c32527b3cc47df7973bffe5d3c2980"
+ integrity sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -4235,35 +3452,27 @@ emoji-regex@^9.2.2:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-enabled@2.0.x:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
- integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
-encodeurl@^2.0.0:
+encodeurl@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
-encoding-sniffer@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz#396ec97ac22ce5a037ba44af1992ac9d46a7b819"
- integrity sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==
- dependencies:
- iconv-lite "^0.6.3"
- whatwg-encoding "^3.1.1"
-
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
- version "1.4.5"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c"
- integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
enhanced-resolve@^5.14.1, enhanced-resolve@^5.18.1:
- version "5.18.2"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz#7903c5b32ffd4b2143eeb4b92472bd68effd5464"
- integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==
+ version "5.18.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf"
+ integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@@ -4273,16 +3482,6 @@ entities@^4.2.0, entities@^4.5.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
-entities@^6.0.0:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694"
- integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==
-
-env-paths@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-3.0.0.tgz#2f1e89c2f6dbd3408e1b1711dd82d62e317f58da"
- integrity sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==
-
error-stack-parser-es@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz#e6a1655dd12f39bb3a85bf4c7088187d78740327"
@@ -4303,10 +3502,10 @@ es-errors@^1.3.0:
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
-es-module-lexer@^1.0.0, es-module-lexer@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a"
- integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==
+es-module-lexer@^1.5.3, es-module-lexer@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21"
+ integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
version "1.1.1"
@@ -4325,75 +3524,50 @@ es-set-tostringtag@^2.1.0:
has-tostringtag "^1.0.2"
hasown "^2.0.2"
-esbuild@0.25.5:
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.5.tgz#71075054993fdfae76c66586f9b9c1f8d7edd430"
- integrity sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==
- optionalDependencies:
- "@esbuild/aix-ppc64" "0.25.5"
- "@esbuild/android-arm" "0.25.5"
- "@esbuild/android-arm64" "0.25.5"
- "@esbuild/android-x64" "0.25.5"
- "@esbuild/darwin-arm64" "0.25.5"
- "@esbuild/darwin-x64" "0.25.5"
- "@esbuild/freebsd-arm64" "0.25.5"
- "@esbuild/freebsd-x64" "0.25.5"
- "@esbuild/linux-arm" "0.25.5"
- "@esbuild/linux-arm64" "0.25.5"
- "@esbuild/linux-ia32" "0.25.5"
- "@esbuild/linux-loong64" "0.25.5"
- "@esbuild/linux-mips64el" "0.25.5"
- "@esbuild/linux-ppc64" "0.25.5"
- "@esbuild/linux-riscv64" "0.25.5"
- "@esbuild/linux-s390x" "0.25.5"
- "@esbuild/linux-x64" "0.25.5"
- "@esbuild/netbsd-arm64" "0.25.5"
- "@esbuild/netbsd-x64" "0.25.5"
- "@esbuild/openbsd-arm64" "0.25.5"
- "@esbuild/openbsd-x64" "0.25.5"
- "@esbuild/sunos-x64" "0.25.5"
- "@esbuild/win32-arm64" "0.25.5"
- "@esbuild/win32-ia32" "0.25.5"
- "@esbuild/win32-x64" "0.25.5"
+esbuild-register@3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.6.0.tgz#cf270cfa677baebbc0010ac024b823cbf723a36d"
+ integrity sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==
+ dependencies:
+ debug "^4.3.4"
-esbuild@^0.25.0, esbuild@^0.25.1, esbuild@^0.25.4, esbuild@^0.25.5, esbuild@^0.25.6:
- version "0.25.8"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.8.tgz#482d42198b427c9c2f3a81b63d7663aecb1dda07"
- integrity sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==
+"esbuild@>=0.12 <1", esbuild@^0.25.0, esbuild@^0.25.1, esbuild@^0.25.2:
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b"
+ integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==
optionalDependencies:
- "@esbuild/aix-ppc64" "0.25.8"
- "@esbuild/android-arm" "0.25.8"
- "@esbuild/android-arm64" "0.25.8"
- "@esbuild/android-x64" "0.25.8"
- "@esbuild/darwin-arm64" "0.25.8"
- "@esbuild/darwin-x64" "0.25.8"
- "@esbuild/freebsd-arm64" "0.25.8"
- "@esbuild/freebsd-x64" "0.25.8"
- "@esbuild/linux-arm" "0.25.8"
- "@esbuild/linux-arm64" "0.25.8"
- "@esbuild/linux-ia32" "0.25.8"
- "@esbuild/linux-loong64" "0.25.8"
- "@esbuild/linux-mips64el" "0.25.8"
- "@esbuild/linux-ppc64" "0.25.8"
- "@esbuild/linux-riscv64" "0.25.8"
- "@esbuild/linux-s390x" "0.25.8"
- "@esbuild/linux-x64" "0.25.8"
- "@esbuild/netbsd-arm64" "0.25.8"
- "@esbuild/netbsd-x64" "0.25.8"
- "@esbuild/openbsd-arm64" "0.25.8"
- "@esbuild/openbsd-x64" "0.25.8"
- "@esbuild/openharmony-arm64" "0.25.8"
- "@esbuild/sunos-x64" "0.25.8"
- "@esbuild/win32-arm64" "0.25.8"
- "@esbuild/win32-ia32" "0.25.8"
- "@esbuild/win32-x64" "0.25.8"
+ "@esbuild/aix-ppc64" "0.25.2"
+ "@esbuild/android-arm" "0.25.2"
+ "@esbuild/android-arm64" "0.25.2"
+ "@esbuild/android-x64" "0.25.2"
+ "@esbuild/darwin-arm64" "0.25.2"
+ "@esbuild/darwin-x64" "0.25.2"
+ "@esbuild/freebsd-arm64" "0.25.2"
+ "@esbuild/freebsd-x64" "0.25.2"
+ "@esbuild/linux-arm" "0.25.2"
+ "@esbuild/linux-arm64" "0.25.2"
+ "@esbuild/linux-ia32" "0.25.2"
+ "@esbuild/linux-loong64" "0.25.2"
+ "@esbuild/linux-mips64el" "0.25.2"
+ "@esbuild/linux-ppc64" "0.25.2"
+ "@esbuild/linux-riscv64" "0.25.2"
+ "@esbuild/linux-s390x" "0.25.2"
+ "@esbuild/linux-x64" "0.25.2"
+ "@esbuild/netbsd-arm64" "0.25.2"
+ "@esbuild/netbsd-x64" "0.25.2"
+ "@esbuild/openbsd-arm64" "0.25.2"
+ "@esbuild/openbsd-x64" "0.25.2"
+ "@esbuild/sunos-x64" "0.25.2"
+ "@esbuild/win32-arm64" "0.25.2"
+ "@esbuild/win32-ia32" "0.25.2"
+ "@esbuild/win32-x64" "0.25.2"
escalade@^3.1.1, escalade@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
-escape-html@^1.0.3:
+escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
@@ -4413,24 +3587,6 @@ escape-string-regexp@^5.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
-escodegen@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17"
- integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
- dependencies:
- esprima "^4.0.1"
- estraverse "^5.2.0"
- esutils "^2.0.2"
- optionalDependencies:
- source-map "~0.6.1"
-
-eslint-compat-utils@^0.6.0:
- version "0.6.5"
- resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz#6b06350a1c947c4514cfa64a170a6bfdbadc7ec2"
- integrity sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==
- dependencies:
- semver "^7.5.4"
-
eslint-config-flat-gitignore@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-config-flat-gitignore/-/eslint-config-flat-gitignore-2.1.0.tgz#8b93caa703977f04dee11e4c3c8303432462921c"
@@ -4438,74 +3594,80 @@ eslint-config-flat-gitignore@^2.1.0:
dependencies:
"@eslint/compat" "^1.2.5"
-eslint-config-prettier@^10.1.1:
- version "10.1.8"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz#15734ce4af8c2778cc32f0b01b37b0b5cd1ecb97"
- integrity sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==
+eslint-config-prettier@^10.1.5:
+ version "10.1.5"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz#00c18d7225043b6fbce6a665697377998d453782"
+ integrity sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==
-eslint-flat-config-utils@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/eslint-flat-config-utils/-/eslint-flat-config-utils-2.1.0.tgz#ddb7f71493d33bd2459dadd3a79f81943910214b"
- integrity sha512-6fjOJ9tS0k28ketkUcQ+kKptB4dBZY2VijMZ9rGn8Cwnn1SH0cZBoPXT8AHBFHxmHcLFQK9zbELDinZ2Mr1rng==
+eslint-flat-config-utils@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-flat-config-utils/-/eslint-flat-config-utils-2.0.1.tgz#a953109da31df91ab25cac39f67e90c6c50171d5"
+ integrity sha512-brf0eAgQ6JlKj3bKfOTuuI7VcCZvi8ZCD1MMTVoEvS/d38j8cByZViLFALH/36+eqB17ukmfmKq3bWzGvizejA==
dependencies:
- pathe "^2.0.3"
+ pathe "^2.0.2"
-eslint-import-context@^0.1.9:
- version "0.1.9"
- resolved "https://registry.yarnpkg.com/eslint-import-context/-/eslint-import-context-0.1.9.tgz#967b0b2f0a90ef4b689125e088f790f0b7756dbe"
- integrity sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==
+eslint-import-resolver-node@^0.3.9:
+ version "0.3.9"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
+ integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
dependencies:
- get-tsconfig "^4.10.1"
- stable-hash-x "^0.2.0"
+ debug "^3.2.7"
+ is-core-module "^2.13.0"
+ resolve "^1.22.4"
eslint-merge-processors@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/eslint-merge-processors/-/eslint-merge-processors-2.0.0.tgz#f1e02bd863962fab7fd038c293979283e61b473c"
integrity sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==
-eslint-plugin-import-lite@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import-lite/-/eslint-plugin-import-lite-0.3.0.tgz#78fb6df41ed6e4ddfa40706ebe7a35563d4173d0"
- integrity sha512-dkNBAL6jcoCsXZsQ/Tt2yXmMDoNt5NaBh/U7yvccjiK8cai6Ay+MK77bMykmqQA2bTF6lngaLCDij6MTO3KkvA==
+eslint-plugin-import-x@^4.9.4:
+ version "4.10.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import-x/-/eslint-plugin-import-x-4.10.2.tgz#41bee5d2c69776c79221dd09fa56bd2006ac31d4"
+ integrity sha512-jO3Y6+zBUyTX5MVbbLSzoz6fe65t+WEBaXStRLM4EBhZWbuSwAH3cLwARtM0Yp4zRtZGp9sL2zzK7G9JkHR8LA==
dependencies:
- "@eslint-community/eslint-utils" "^4.7.0"
- "@typescript-eslint/types" "^8.34.0"
-
-eslint-plugin-import-x@^4.16.1:
- version "4.16.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import-x/-/eslint-plugin-import-x-4.16.1.tgz#a96ee1ad5ba6816f9a5573a9617935011a24c4df"
- integrity sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ==
- dependencies:
- "@typescript-eslint/types" "^8.35.0"
- comment-parser "^1.4.1"
- debug "^4.4.1"
- eslint-import-context "^0.1.9"
+ "@pkgr/core" "^0.2.1"
+ "@types/doctrine" "^0.0.9"
+ "@typescript-eslint/utils" "^8.29.0"
+ debug "^4.4.0"
+ doctrine "^3.0.0"
+ eslint-import-resolver-node "^0.3.9"
+ get-tsconfig "^4.10.0"
is-glob "^4.0.3"
minimatch "^9.0.3 || ^10.0.1"
- semver "^7.7.2"
- stable-hash-x "^0.2.0"
- unrs-resolver "^1.9.2"
+ semver "^7.7.1"
+ stable-hash "^0.0.5"
+ tslib "^2.8.1"
+ unrs-resolver "^1.4.1"
-eslint-plugin-jsdoc@^51.4.1:
- version "51.4.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.4.1.tgz#a512460da6ba328ac3be0c3e7b2aaa4633175625"
- integrity sha512-y4CA9OkachG8v5nAtrwvcvjIbdcKgSyS6U//IfQr4FZFFyeBFwZFf/tfSsMr46mWDJgidZjBTqoCRlXywfFBMg==
+eslint-plugin-jsdoc@^50.6.9:
+ version "50.6.9"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.9.tgz#b4afc06110958b9c525456b6c4348bf14e21c298"
+ integrity sha512-7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw==
dependencies:
- "@es-joy/jsdoccomment" "~0.52.0"
+ "@es-joy/jsdoccomment" "~0.49.0"
are-docs-informative "^0.0.2"
comment-parser "1.4.1"
- debug "^4.4.1"
+ debug "^4.3.6"
escape-string-regexp "^4.0.0"
- espree "^10.4.0"
+ espree "^10.1.0"
esquery "^1.6.0"
- parse-imports-exports "^0.2.4"
- semver "^7.7.2"
+ parse-imports "^2.1.1"
+ semver "^7.6.3"
spdx-expression-parse "^4.0.0"
+ synckit "^0.9.1"
-eslint-plugin-regexp@^2.9.0:
- version "2.9.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-regexp/-/eslint-plugin-regexp-2.9.0.tgz#0783be374e68c7a7af98543334fd4f8572949e3f"
- integrity sha512-9WqJMnOq8VlE/cK+YAo9C9YHhkOtcEtEk9d12a+H7OSZFwlpI6stiHmYPGa2VE0QhTzodJyhlyprUaXDZLgHBw==
+eslint-plugin-prettier@^5.4.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.0.tgz#54d4748904e58eaf1ffe26c4bffa4986ca7f952b"
+ integrity sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+ synckit "^0.11.0"
+
+eslint-plugin-regexp@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-regexp/-/eslint-plugin-regexp-2.7.0.tgz#84fa2d2b122e343f596cfb83ed8a5517a1dfef2a"
+ integrity sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.11.0"
@@ -4515,34 +3677,33 @@ eslint-plugin-regexp@^2.9.0:
regexp-ast-analysis "^0.7.1"
scslre "^0.3.0"
-eslint-plugin-unicorn@^60.0.0:
- version "60.0.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz#68f712bcb17e94bd176cce7312647ba1d1409c3c"
- integrity sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==
+eslint-plugin-unicorn@^58.0.0:
+ version "58.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-58.0.0.tgz#38c12a59537312eeb9cb1cd747afe038db4bda41"
+ integrity sha512-fc3iaxCm9chBWOHPVjn+Czb/wHS0D2Mko7wkOdobqo9R2bbFObc4LyZaLTNy0mhZOP84nKkLhTUQxlLOZ7EjKw==
dependencies:
- "@babel/helper-validator-identifier" "^7.27.1"
- "@eslint-community/eslint-utils" "^4.7.0"
- "@eslint/plugin-kit" "^0.3.3"
- change-case "^5.4.4"
- ci-info "^4.3.0"
+ "@babel/helper-validator-identifier" "^7.25.9"
+ "@eslint-community/eslint-utils" "^4.5.1"
+ "@eslint/plugin-kit" "^0.2.7"
+ ci-info "^4.2.0"
clean-regexp "^1.0.0"
- core-js-compat "^3.44.0"
+ core-js-compat "^3.41.0"
esquery "^1.6.0"
- find-up-simple "^1.0.1"
- globals "^16.3.0"
+ globals "^16.0.0"
indent-string "^5.0.0"
is-builtin-module "^5.0.0"
jsesc "^3.1.0"
pluralize "^8.0.0"
+ read-package-up "^11.0.0"
regexp-tree "^0.1.27"
regjsparser "^0.12.0"
- semver "^7.7.2"
+ semver "^7.7.1"
strip-indent "^4.0.0"
-eslint-plugin-vue@^10.3.0:
- version "10.3.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-10.3.0.tgz#d8fb96d06bc71829177fe81590489117b9540c17"
- integrity sha512-A0u9snqjCfYaPnqqOaH6MBLVWDUIN4trXn8J3x67uDcXvR7X6Ut8p16N+nYhMCQ9Y7edg2BIRGzfyZsY0IdqoQ==
+eslint-plugin-vue@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-10.0.0.tgz#42707bfb8c4490b0b1a4be6f11a416fb16c3d11c"
+ integrity sha512-XKckedtajqwmaX6u1VnECmZ6xJt+YvlmMzBPZd+/sI3ub2lpYZyFnsyWo7c3nMOQKJQudeyk1lw/JxdgeKT64w==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
natural-compare "^1.4.0"
@@ -4556,45 +3717,45 @@ eslint-processor-vue-blocks@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-processor-vue-blocks/-/eslint-processor-vue-blocks-2.0.0.tgz#b06a2e2bdefda75792e9fc9f00a9de305e657472"
integrity sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==
-eslint-scope@^8.2.0, eslint-scope@^8.4.0:
- version "8.4.0"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82"
- integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==
+eslint-scope@^8.2.0, eslint-scope@^8.3.0:
+ version "8.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d"
+ integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
-eslint-typegen@^2.2.1:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/eslint-typegen/-/eslint-typegen-2.3.0.tgz#abc45b3d34bab723a0b8af5384aeacc5b92ec1c9"
- integrity sha512-azYgAvhlz1AyTpeLfVSKcrNJInuIsRrcUrOcHmEl8T9oMKesePVUPrF8gRgE6azV8CAlFzxJDTyaXAAbA/BYiA==
+eslint-typegen@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-typegen/-/eslint-typegen-2.1.0.tgz#d06e64b2f3a5f158586d94b9477f7c4368552ce3"
+ integrity sha512-tY9TTx07InS+mQ/+zYnCMHkdsS00GPaQy84PwHiQd2XWwXIptRExKcz1kI8eG1CGg1sBs9mONwSfbGMbvI4fNA==
dependencies:
- json-schema-to-typescript-lite "^15.0.0"
+ json-schema-to-typescript-lite "^14.1.0"
ohash "^2.0.11"
-eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
-eslint-visitor-keys@^4.2.0, eslint-visitor-keys@^4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1"
- integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
+eslint-visitor-keys@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45"
+ integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
eslint@^9.24.0:
- version "9.31.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.31.0.tgz#9a488e6da75bbe05785cd62e43c5ea99356d21ba"
- integrity sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==
+ version "9.24.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.24.0.tgz#9a7f2e6cb2de81c405ab244b02f4584c79dc6bee"
+ integrity sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.12.1"
- "@eslint/config-array" "^0.21.0"
- "@eslint/config-helpers" "^0.3.0"
- "@eslint/core" "^0.15.0"
+ "@eslint/config-array" "^0.20.0"
+ "@eslint/config-helpers" "^0.2.0"
+ "@eslint/core" "^0.12.0"
"@eslint/eslintrc" "^3.3.1"
- "@eslint/js" "9.31.0"
- "@eslint/plugin-kit" "^0.3.1"
+ "@eslint/js" "9.24.0"
+ "@eslint/plugin-kit" "^0.2.7"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.4.2"
@@ -4605,9 +3766,9 @@ eslint@^9.24.0:
cross-spawn "^7.0.6"
debug "^4.3.2"
escape-string-regexp "^4.0.0"
- eslint-scope "^8.4.0"
- eslint-visitor-keys "^4.2.1"
- espree "^10.4.0"
+ eslint-scope "^8.3.0"
+ eslint-visitor-keys "^4.2.0"
+ espree "^10.3.0"
esquery "^1.5.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
@@ -4623,28 +3784,14 @@ eslint@^9.24.0:
natural-compare "^1.4.0"
optionator "^0.9.3"
-espree@^10.0.1, espree@^10.3.0, espree@^10.4.0:
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837"
- integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==
+espree@^10.0.1, espree@^10.1.0, espree@^10.3.0:
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a"
+ integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==
dependencies:
- acorn "^8.15.0"
+ acorn "^8.14.0"
acorn-jsx "^5.3.2"
- eslint-visitor-keys "^4.2.1"
-
-espree@^9.0.0:
- version "9.6.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
- integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
- dependencies:
- acorn "^8.9.0"
- acorn-jsx "^5.3.2"
- eslint-visitor-keys "^3.4.1"
-
-esprima@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
- integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+ eslint-visitor-keys "^4.2.0"
esquery@^1.5.0, esquery@^1.6.0:
version "1.6.0"
@@ -4682,7 +3829,7 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-etag@^1.8.1:
+etag@^1.8.1, etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
@@ -4697,7 +3844,7 @@ events@^3.3.0:
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
-execa@^8.0.0, execa@^8.0.1:
+execa@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c"
integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==
@@ -4712,15 +3859,33 @@ execa@^8.0.0, execa@^8.0.1:
signal-exit "^4.1.0"
strip-final-newline "^3.0.0"
+execa@^9.5.3:
+ version "9.5.3"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-9.5.3.tgz#aa9b6e92ea6692b88a240efc260ca30489b33e2a"
+ integrity sha512-QFNnTvU3UjgWFy8Ef9iDHvIdcgZ344ebkwYx4/KLbR+CKQA4xBaHzv+iRpp86QfMHP8faFQLh8iOc57215y4Rg==
+ dependencies:
+ "@sindresorhus/merge-streams" "^4.0.0"
+ cross-spawn "^7.0.3"
+ figures "^6.1.0"
+ get-stream "^9.0.0"
+ human-signals "^8.0.0"
+ is-plain-obj "^4.1.0"
+ is-stream "^4.0.1"
+ npm-run-path "^6.0.0"
+ pretty-ms "^9.0.0"
+ signal-exit "^4.1.0"
+ strip-final-newline "^4.0.0"
+ yoctocolors "^2.0.0"
+
expand-template@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
-exsolve@^1.0.5, exsolve@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.7.tgz#3b74e4c7ca5c5f9a19c3626ca857309fa99f9e9e"
- integrity sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==
+exsolve@^1.0.0, exsolve@^1.0.1, exsolve@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.4.tgz#7de5c75af82ecd15998328fbf5f2295883be3a39"
+ integrity sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==
externality@^1.0.2:
version "1.0.2"
@@ -4732,27 +3897,16 @@ externality@^1.0.2:
pathe "^1.1.1"
ufo "^1.1.2"
-extract-zip@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
- integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
- dependencies:
- debug "^4.1.1"
- get-stream "^5.1.0"
- yauzl "^2.10.0"
- optionalDependencies:
- "@types/yauzl" "^2.9.1"
-
-fast-copy@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35"
- integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==
-
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+fast-diff@^1.1.2:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
+ integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
+
fast-fifo@^1.2.0, fast-fifo@^1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c"
@@ -4765,7 +3919,7 @@ fast-fuzzy@^1.12.0:
dependencies:
graphemesplit "^2.4.1"
-fast-glob@^3.2.12, fast-glob@^3.3.2, fast-glob@^3.3.3:
+fast-glob@^3.3.2, fast-glob@^3.3.3:
version "3.3.3"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818"
integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
@@ -4786,20 +3940,10 @@ fast-levenshtein@^2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
-fast-npm-meta@^0.4.4:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/fast-npm-meta/-/fast-npm-meta-0.4.4.tgz#c62dc674a8d337189ce0ea1f3a1137e3d9144ea8"
- integrity sha512-cq8EVW3jpX1U3dO1AYanz2BJ6n9ITQgCwE1xjNwI5jO2a9erE369OZNO8Wt/Wbw8YHhCD/dimH9BxRsY+6DinA==
-
-fast-redact@^3.1.1:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4"
- integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==
-
-fast-safe-stringify@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884"
- integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==
+fast-npm-meta@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/fast-npm-meta/-/fast-npm-meta-0.3.1.tgz#26ee0fcecda0cce2d76e0d2ffe611317c3d64338"
+ integrity sha512-W9gVhqRyz2O3j20I0nFmYEyaMC/046oaMRxxAQ0w6noakfbhpLmlIXmnnqSOmVVuJZ6x5hOPVwlv7PocuawZsw==
fastq@^1.15.0, fastq@^1.6.0:
version "1.19.1"
@@ -4808,30 +3952,17 @@ fastq@^1.15.0, fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
-fd-slicer@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
- integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
+fdir@^6.2.0, fdir@^6.4.3:
+ version "6.4.3"
+ resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72"
+ integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==
+
+figures@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-6.1.0.tgz#935479f51865fa7479f6fa94fc6fc7ac14e62c4a"
+ integrity sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==
dependencies:
- pend "~1.2.0"
-
-fdir@^6.2.0, fdir@^6.4.4, fdir@^6.4.6:
- version "6.4.6"
- resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281"
- integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==
-
-fecha@^4.2.0:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
- integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
-
-fetch-blob@^3.1.2, fetch-blob@^3.1.4:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9"
- integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==
- dependencies:
- node-domexception "^1.0.0"
- web-streams-polyfill "^3.0.3"
+ is-unicode-supported "^2.0.0"
file-entry-cache@^8.0.0:
version "8.0.0"
@@ -4841,9 +3972,9 @@ file-entry-cache@^8.0.0:
flat-cache "^4.0.0"
file-type-mime@^0.4.3:
- version "0.4.7"
- resolved "https://registry.yarnpkg.com/file-type-mime/-/file-type-mime-0.4.7.tgz#9ce43e2630b3f5623f765220d6a48c2633d38c1d"
- integrity sha512-qrewzVfFZo8Z9jbrEQMeUeBuqhoWxp5pWOJ6X3U4MrNVu3fKVe9y55U8uMstBFN/9PLYxvf+nW4bqGBul5FNBg==
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/file-type-mime/-/file-type-mime-0.4.6.tgz#890c548c9c10320ee23c4b59d1feb9a0f415f19c"
+ integrity sha512-5jlSZixW0z7Avy9DsORN6U8bFs6l0G3jnLxp4CcDNo7Z3AlXAR9ArUVqkv/DlhTHQo8kBbRCWGtULdTejFEf1w==
file-type@^18.2.0:
version "18.7.0"
@@ -4866,25 +3997,11 @@ fill-range@^7.1.1:
dependencies:
to-regex-range "^5.0.1"
-filter-obj@^6.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-6.1.0.tgz#58725ceed8f0de54b432d74b6a3eb149453d7ed0"
- integrity sha512-xdMtCAODmPloU9qtmPcdBV9Kd27NtMse+4ayThxqIHUES5Z2S6bGpap5PpdmNM56ub7y3i1eyr+vJJIIgWGKmA==
-
-find-up-simple@^1.0.0, find-up-simple@^1.0.1:
+find-up-simple@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/find-up-simple/-/find-up-simple-1.0.1.tgz#18fb90ad49e45252c4d7fca56baade04fa3fca1e"
integrity sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==
-find-up@7.0.0, find-up@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-7.0.0.tgz#e8dec1455f74f78d888ad65bf7ca13dd2b4e66fb"
- integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==
- dependencies:
- locate-path "^7.2.0"
- path-exists "^5.0.0"
- unicorn-magic "^0.1.0"
-
find-up@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
@@ -4893,6 +4010,15 @@ find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
+find-up@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-7.0.0.tgz#e8dec1455f74f78d888ad65bf7ca13dd2b4e66fb"
+ integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==
+ dependencies:
+ locate-path "^7.2.0"
+ path-exists "^5.0.0"
+ unicorn-magic "^0.1.0"
+
flat-cache@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
@@ -4906,29 +4032,23 @@ flatted@^3.2.9:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358"
integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
-fn.name@1.x.x:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
- integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
-
follow-redirects@^1.15.6:
version "1.15.9"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
-fontaine@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/fontaine/-/fontaine-0.6.0.tgz#ce90d22119935f841390b5d8d9795d9dd0e749bf"
- integrity sha512-cfKqzB62GmztJhwJ0YXtzNsmpqKAcFzTqsakJ//5COTzbou90LU7So18U+4D8z+lDXr4uztaAUZBonSoPDcj1w==
+fontaine@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/fontaine/-/fontaine-0.5.0.tgz#0b01e6ef841da0eb6077430813812c2a22fc1987"
+ integrity sha512-vPDSWKhVAfTx4hRKT777+N6Szh2pAosAuzLpbppZ6O3UdD/1m6OlHjNcC3vIbgkRTIcLjzySLHXzPeLO2rE8cA==
dependencies:
- "@capsizecss/metrics" "^3.5.0"
- "@capsizecss/unpack" "^2.4.0"
- css-tree "^3.1.0"
- magic-regexp "^0.10.0"
- magic-string "^0.30.17"
- pathe "^2.0.3"
- ufo "^1.6.1"
- unplugin "^2.3.2"
+ "@capsizecss/metrics" "^2.1.1"
+ "@capsizecss/unpack" "^2.0.1"
+ magic-regexp "^0.8.0"
+ magic-string "^0.30.8"
+ pathe "^1.1.2"
+ ufo "^1.4.0"
+ unplugin "^1.8.3"
fontkit@^2.0.2:
version "2.0.4"
@@ -4953,33 +4073,25 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.6"
signal-exit "^4.0.1"
-form-data@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4"
- integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==
+form-data@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c"
+ integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
es-set-tostringtag "^2.1.0"
- hasown "^2.0.2"
mime-types "^2.1.12"
-formdata-polyfill@^4.0.10:
- version "4.0.10"
- resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
- integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==
- dependencies:
- fetch-blob "^3.1.2"
-
fraction.js@^4.3.7:
version "4.3.7"
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
-fresh@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4"
- integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
fs-constants@^1.0.0:
version "1.0.0"
@@ -4995,16 +4107,7 @@ fs-extra@^11.3.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
-fs-extra@^8.0.1:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
- integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
- dependencies:
- graceful-fs "^4.2.0"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
-fsevents@~2.3.2, fsevents@~2.3.3:
+fsevents@2.3.3, fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
@@ -5024,20 +4127,12 @@ gensync@^1.0.0-beta.2:
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-get-amd-module-type@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/get-amd-module-type/-/get-amd-module-type-6.0.1.tgz#191f479ae8706c246b52bf402fbe1bb0965d9f1e"
- integrity sha512-MtjsmYiCXcYDDrGqtNbeIYdAl85n+5mSv2r3FbzER/YV3ZILw4HNNIw34HuV5pyl0jzs6GFYU1VHVEefhgcNHQ==
- dependencies:
- ast-module-types "^6.0.1"
- node-source-walk "^7.0.1"
-
get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0:
+get-intrinsic@^1.2.6:
version "1.3.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
@@ -5053,10 +4148,10 @@ get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0:
hasown "^2.0.2"
math-intrinsics "^1.1.0"
-get-port-please@^3.1.2, get-port-please@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.2.0.tgz#0ce3cee194c448ac640ec39dc357a500f5d7d2bb"
- integrity sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==
+get-port-please@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.2.tgz#502795e56217128e4183025c89a48c71652f4e49"
+ integrity sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==
get-proto@^1.0.1:
version "1.0.1"
@@ -5066,22 +4161,23 @@ get-proto@^1.0.1:
dunder-proto "^1.0.1"
es-object-atoms "^1.0.0"
-get-stream@^5.1.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
- integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
- dependencies:
- pump "^3.0.0"
-
get-stream@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2"
integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==
-get-tsconfig@^4.10.1:
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e"
- integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==
+get-stream@^9.0.0:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-9.0.1.tgz#95157d21df8eb90d1647102b63039b1df60ebd27"
+ integrity sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==
+ dependencies:
+ "@sec-ant/readable-stream" "^0.4.1"
+ is-stream "^4.0.1"
+
+get-tsconfig@^4.10.0:
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.0.tgz#403a682b373a823612475a4c2928c7326fc0f6bb"
+ integrity sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==
dependencies:
resolve-pkg-maps "^1.0.0"
@@ -5097,27 +4193,27 @@ giget@^2.0.0:
nypm "^0.6.0"
pathe "^2.0.3"
-git-up@^8.1.0:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/git-up/-/git-up-8.1.1.tgz#06262adadb89a4a614d2922d803a0eda054be8c5"
- integrity sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==
+git-up@^8.0.0:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/git-up/-/git-up-8.0.1.tgz#2a82cfbc77b5eb04074ab1e48593911981654fc7"
+ integrity sha512-2XFu1uNZMSjkyetaF+8rqn6P0XqpMq/C+2ycjI6YwrIKcszZ5/WR4UubxjN0lILOKqLkLaHDaCr2B6fP1cke6g==
dependencies:
is-ssh "^1.4.0"
parse-url "^9.2.0"
git-url-parse@^16.0.1:
- version "16.1.0"
- resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-16.1.0.tgz#3bb6f378a2ba2903c4d8b1cdec004aa85a7ab66f"
- integrity sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw==
+ version "16.0.1"
+ resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-16.0.1.tgz#8a2b15ceafd29342e42a3d056a771fb9007bf5ae"
+ integrity sha512-mcD36GrhAzX5JVOsIO52qNpgRyFzYWRbU1VSRFCvJt1IJvqfvH427wWw/CFqkWvjVPtdG5VTx4MKUeC5GeFPDQ==
dependencies:
- git-up "^8.1.0"
+ git-up "^8.0.0"
github-from-package@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
-glob-parent@^5.1.2, glob-parent@~5.1.2:
+glob-parent@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -5131,7 +4227,7 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
-glob@^10.0.0, glob@^10.3.3, glob@^10.4.5:
+glob@^10.0.0, glob@^10.3.7, glob@^10.4.5:
version "10.4.5"
resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
@@ -5150,15 +4246,20 @@ global-directory@^4.0.1:
dependencies:
ini "4.1.1"
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
globals@^14.0.0:
version "14.0.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
-globals@^16.0.0, globals@^16.3.0:
- version "16.3.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-16.3.0.tgz#66118e765ddaf9e2d880f7e17658543f93f1f667"
- integrity sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==
+globals@^16.0.0:
+ version "16.0.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-16.0.0.tgz#3d7684652c5c4fbd086ec82f9448214da49382d8"
+ integrity sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==
globby@^14.1.0:
version "14.1.0"
@@ -5172,19 +4273,12 @@ globby@^14.1.0:
slash "^5.1.0"
unicorn-magic "^0.3.0"
-gonzales-pe@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3"
- integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==
- dependencies:
- minimist "^1.2.5"
-
gopd@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
-graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
+graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@@ -5209,19 +4303,19 @@ gzip-size@^7.0.0:
dependencies:
duplexer "^0.1.2"
-h3@^1.10.0, h3@^1.12.0, h3@^1.15.1, h3@^1.15.3:
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/h3/-/h3-1.15.3.tgz#e242ec6a7692a45caed3e4a73710cede4fb8d863"
- integrity sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==
+h3@^1.10.0, h3@^1.12.0, h3@^1.15.0, h3@^1.15.1:
+ version "1.15.1"
+ resolved "https://registry.yarnpkg.com/h3/-/h3-1.15.1.tgz#59d6f70d7ef619fad74ecdf465a08fff898033bb"
+ integrity sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==
dependencies:
cookie-es "^1.2.2"
- crossws "^0.3.4"
+ crossws "^0.3.3"
defu "^6.1.4"
- destr "^2.0.5"
+ destr "^2.0.3"
iron-webcrypto "^1.2.1"
node-mock-http "^1.0.0"
radix3 "^1.1.2"
- ufo "^1.6.1"
+ ufo "^1.5.4"
uncrypto "^0.1.3"
has-flag@^4.0.0:
@@ -5253,11 +4347,6 @@ he@^1.2.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-help-me@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6"
- integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==
-
hookable@^5.5.3:
version "5.5.3"
resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d"
@@ -5270,17 +4359,7 @@ hosted-git-info@^7.0.0:
dependencies:
lru-cache "^10.0.1"
-htmlparser2@^10.0.0:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-10.0.0.tgz#77ad249037b66bf8cc99c6e286ef73b83aeb621d"
- integrity sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==
- dependencies:
- domelementtype "^2.3.0"
- domhandler "^5.0.3"
- domutils "^3.2.1"
- entities "^6.0.0"
-
-http-errors@^2.0.0:
+http-errors@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
@@ -5314,27 +4393,25 @@ human-signals@^5.0.0:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28"
integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
-iconv-lite@0.6.3, iconv-lite@^0.6.3:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
- integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
- dependencies:
- safer-buffer ">= 2.1.2 < 3.0.0"
+human-signals@^8.0.0:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-8.0.1.tgz#f08bb593b6d1db353933d06156cedec90abe51fb"
+ integrity sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==
ieee754@^1.1.13, ieee754@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-ignore@^5.2.0:
+ignore@^5.2.0, ignore@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
-ignore@^7.0.0, ignore@^7.0.3, ignore@^7.0.5:
- version "7.0.5"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9"
- integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==
+ignore@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.3.tgz#397ef9315dfe0595671eefe8b633fec6943ab733"
+ integrity sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==
image-meta@^0.2.0, image-meta@^0.2.1:
version "0.2.1"
@@ -5342,11 +4419,11 @@ image-meta@^0.2.0, image-meta@^0.2.1:
integrity sha512-K6acvFaelNxx8wc2VjbIzXKDVB0Khs0QT35U6NkGfTdCmjLNcO2945m7RFNR9/RPVFm48hq7QPzK8uGH18HCGw==
immutable@^5.0.2:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.3.tgz#e6486694c8b76c37c063cca92399fa64098634d4"
- integrity sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.1.tgz#d4cb552686f34b076b3dcf23c4384c04424d8354"
+ integrity sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==
-import-fresh@^3.2.1, import-fresh@^3.3.0:
+import-fresh@^3.2.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf"
integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==
@@ -5354,16 +4431,16 @@ import-fresh@^3.2.1, import-fresh@^3.3.0:
parent-module "^1.0.0"
resolve-from "^4.0.0"
-impound@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/impound/-/impound-1.0.0.tgz#42a011b33ddcce550c801210eb36b24a691ac941"
- integrity sha512-8lAJ+1Arw2sMaZ9HE2ZmL5zOcMnt18s6+7Xqgq2aUVy4P1nlzAyPtzCDxsk51KVFwHEEdc6OWvUyqwHwhRYaug==
+impound@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/impound/-/impound-0.2.2.tgz#29a1040ee2742ec02a593f07204928611518715f"
+ integrity sha512-9CNg+Ly8QjH4FwCUoE9nl1zeqY1NPK1s1P6Btp4L8lJxn8oZLN/0p6RZhitnyEL0BnVWrcVPfbs0Q3x+O/ucHg==
dependencies:
- exsolve "^1.0.5"
- mocked-exports "^0.1.1"
+ "@rollup/pluginutils" "^5.1.4"
+ mlly "^1.7.4"
+ mocked-exports "^0.1.0"
pathe "^2.0.3"
- unplugin "^2.3.2"
- unplugin-utils "^0.2.4"
+ unplugin "^2.2.0"
imurmurhash@^0.1.4:
version "0.1.4"
@@ -5375,10 +4452,10 @@ indent-string@^5.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5"
integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==
-index-to-position@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/index-to-position/-/index-to-position-1.1.0.tgz#2e50bd54c8040bdd6d9b3d95ec2a8fedf86b4d44"
- integrity sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==
+index-to-position@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/index-to-position/-/index-to-position-1.0.0.tgz#baca236eb6e8c2b750b9225313c31751f84ef357"
+ integrity sha512-sCO7uaLVhRJ25vz1o8s9IFM3nVS4DkuQnyjMwiQPKvQuBYBDmb8H7zx8ki7nVh4HJQOdVWebyvLE0qt+clruxA==
inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
version "2.0.4"
@@ -5395,10 +4472,10 @@ ini@~1.3.0:
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-ioredis@^5.6.1:
- version "5.6.1"
- resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.6.1.tgz#1ed7dc9131081e77342503425afceaf7357ae599"
- integrity sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==
+ioredis@^5.6.0:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.6.0.tgz#faa2a27132f8a05c0ddfef400b01d1326df211a0"
+ integrity sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==
dependencies:
"@ioredis/commands" "^1.1.1"
cluster-key-slot "^1.1.0"
@@ -5411,9 +4488,9 @@ ioredis@^5.6.1:
standard-as-callback "^2.1.0"
ipx@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ipx/-/ipx-2.1.1.tgz#3c309a3ae364f2c56ddb152cb6d14ba7c5767567"
- integrity sha512-XuM9FEGOT+/45mfAWZ5ykwkZ/oE7vWpd1iWjRffMWlwAYIRzb/xD6wZhQ4BzmPMX6Ov5dqK0wUyD0OEN9oWT6g==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ipx/-/ipx-2.1.0.tgz#235d37f789b6c5100f34a0bb3b3bef9852af4d76"
+ integrity sha512-AVnPGXJ8L41vjd11Z4akIF2yd14636Klxul3tBySxHA6PKfCOQPxBDkCFK5zcWh0z/keR6toh1eg8qzdBVUgdA==
dependencies:
"@fastify/accept-negotiator" "^1.1.0"
citty "^0.1.5"
@@ -5442,20 +4519,6 @@ is-arrayish@^0.3.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-is-binary-path@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
- dependencies:
- binary-extensions "^2.0.0"
-
-is-builtin-module@^3.1.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169"
- integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==
- dependencies:
- builtin-modules "^3.3.0"
-
is-builtin-module@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-5.0.0.tgz#19df4b9c7451149b68176b0e06d18646db6308dd"
@@ -5490,7 +4553,7 @@ is-fullwidth-code-point@^3.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
@@ -5512,13 +4575,6 @@ is-installed-globally@^1.0.0:
global-directory "^4.0.1"
is-path-inside "^4.0.0"
-is-language-code@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-language-code/-/is-language-code-3.1.0.tgz#b2386b49227e7010636f16d0c2c681ca40136ab5"
- integrity sha512-zJdQ3QTeLye+iphMeK3wks+vXSRFKh68/Pnlw7aOfApFSEIOhYa8P9vwwa6QrImNNBMJTiL1PpYF0f4BxDuEgA==
- dependencies:
- "@babel/runtime" "^7.14.0"
-
is-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
@@ -5534,10 +4590,10 @@ is-path-inside@^4.0.0:
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-4.0.0.tgz#805aeb62c47c1b12fc3fd13bfb3ed1e7430071db"
integrity sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==
-is-plain-obj@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
- integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
+is-plain-obj@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
+ integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
is-reference@1.2.1:
version "1.2.1"
@@ -5553,7 +4609,7 @@ is-ssh@^1.4.0:
dependencies:
protocols "^2.0.1"
-is-stream@^2.0.0, is-stream@^2.0.1:
+is-stream@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
@@ -5568,15 +4624,10 @@ is-stream@^4.0.1:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-4.0.1.tgz#375cf891e16d2e4baec250b85926cffc14720d9b"
integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==
-is-url-superb@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2"
- integrity sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==
-
-is-url@^1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
- integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
+is-unicode-supported@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz#09f0ab0de6d3744d48d265ebb98f65d11f2a9b3a"
+ integrity sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==
is-what@^4.1.8:
version "4.1.16"
@@ -5635,21 +4686,11 @@ jdenticon@^3.3.0:
dependencies:
canvas-renderer "~2.2.0"
-jiti@2.4.2:
+jiti@^2.1.2, jiti@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560"
integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==
-jiti@^2.1.2, jiti@^2.4.2:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.5.1.tgz#bd099c1c2be1c59bbea4e5adcd127363446759d0"
- integrity sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==
-
-joycon@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03"
- integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==
-
js-base64@^3.6.0:
version "3.7.7"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79"
@@ -5692,12 +4733,12 @@ json-buffer@3.0.1:
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-json-schema-to-typescript-lite@^15.0.0:
- version "15.0.0"
- resolved "https://registry.yarnpkg.com/json-schema-to-typescript-lite/-/json-schema-to-typescript-lite-15.0.0.tgz#94b0bdc301f479fc7eca6d02ddaca16394e9356d"
- integrity sha512-5mMORSQm9oTLyjM4mWnyNBi2T042Fhg1/0gCIB6X8U/LVpM2A+Nmj2yEyArqVouDmFThDxpEXcnTgSrjkGJRFA==
+json-schema-to-typescript-lite@^14.1.0:
+ version "14.1.0"
+ resolved "https://registry.yarnpkg.com/json-schema-to-typescript-lite/-/json-schema-to-typescript-lite-14.1.0.tgz#a35624a2d783e5e125631a3d25ac4c2fb96dd191"
+ integrity sha512-b8K6P3aiLgiYKYcHacgZKrwPXPyjekqRPV5vkNfBt0EoohcOSXEbcuGzgi6KQmsAhuy5Mh2KMxofXodRhMxURA==
dependencies:
- "@apidevtools/json-schema-ref-parser" "^14.1.1"
+ "@apidevtools/json-schema-ref-parser" "^11.7.0"
"@types/json-schema" "^7.0.15"
json-schema-traverse@^0.4.1:
@@ -5715,32 +4756,6 @@ json5@^2.2.3:
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
-jsonc-eslint-parser@^2.3.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461"
- integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==
- dependencies:
- acorn "^8.5.0"
- eslint-visitor-keys "^3.0.0"
- espree "^9.0.0"
- semver "^7.3.5"
-
-jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-jsonfile@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-5.0.0.tgz#e6b718f73da420d612823996fdf14a03f6ff6922"
- integrity sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w==
- dependencies:
- universalify "^0.1.2"
- optionalDependencies:
- graceful-fs "^4.1.6"
-
jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
@@ -5750,16 +4765,6 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
-junk@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/junk/-/junk-4.0.1.tgz#7ee31f876388c05177fe36529ee714b07b50fbed"
- integrity sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==
-
-jwt-decode@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b"
- integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==
-
keyv@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
@@ -5787,20 +4792,6 @@ knitwork@^1.0.0, knitwork@^1.2.0:
resolved "https://registry.yarnpkg.com/knitwork/-/knitwork-1.2.0.tgz#3cc92e76249aeb35449cfbed3f31c6df8444db3f"
integrity sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==
-kuler@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
- integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
-
-lambda-local@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/lambda-local/-/lambda-local-2.2.0.tgz#733d183a4c3f2b16c6499b9ea72cec2f13278eef"
- integrity sha512-bPcgpIXbHnVGfI/omZIlgucDqlf4LrsunwoKue5JdZeGybt8L6KyJz2Zu19ffuZwIwLj2NAI2ZyaqNT6/cetcg==
- dependencies:
- commander "^10.0.1"
- dotenv "^16.3.1"
- winston "^3.10.0"
-
launch-editor@^2.10.0:
version "2.10.0"
resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.10.0.tgz#5ca3edfcb9667df1e8721310f3a40f1127d4bc42"
@@ -5824,75 +4815,75 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
-lightningcss-darwin-arm64@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz#3d47ce5e221b9567c703950edf2529ca4a3700ae"
- integrity sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==
+lightningcss-darwin-arm64@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz#6ceff38b01134af48e859394e1ca21e5d49faae6"
+ integrity sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==
-lightningcss-darwin-x64@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz#e81105d3fd6330860c15fe860f64d39cff5fbd22"
- integrity sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==
+lightningcss-darwin-x64@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz#891b6f9e57682d794223c33463ca66d3af3fb038"
+ integrity sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==
-lightningcss-freebsd-x64@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz#a0e732031083ff9d625c5db021d09eb085af8be4"
- integrity sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==
+lightningcss-freebsd-x64@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz#8a95f9ab73b2b2b0beefe1599fafa8b058938495"
+ integrity sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==
-lightningcss-linux-arm-gnueabihf@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz#1f5ecca6095528ddb649f9304ba2560c72474908"
- integrity sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==
+lightningcss-linux-arm-gnueabihf@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz#5c60bbf92b39d7ed51e363f7b98a7111bf5914a1"
+ integrity sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==
-lightningcss-linux-arm64-gnu@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz#eee7799726103bffff1e88993df726f6911ec009"
- integrity sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==
+lightningcss-linux-arm64-gnu@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz#e73d7608c4cce034c3654e5e8b53be74846224de"
+ integrity sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==
-lightningcss-linux-arm64-musl@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz#f2e4b53f42892feeef8f620cbb889f7c064a7dfe"
- integrity sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==
+lightningcss-linux-arm64-musl@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz#a95a18d5a909831c092e0a8d2de4b9ac1a8db151"
+ integrity sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==
-lightningcss-linux-x64-gnu@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz#2fc7096224bc000ebb97eea94aea248c5b0eb157"
- integrity sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==
+lightningcss-linux-x64-gnu@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz#551ca07e565394928642edee92acc042e546cb78"
+ integrity sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==
-lightningcss-linux-x64-musl@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz#66dca2b159fd819ea832c44895d07e5b31d75f26"
- integrity sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==
+lightningcss-linux-x64-musl@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz#2fd164554340831bce50285b57101817850dd258"
+ integrity sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==
-lightningcss-win32-arm64-msvc@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz#7d8110a19d7c2d22bfdf2f2bb8be68e7d1b69039"
- integrity sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==
+lightningcss-win32-arm64-msvc@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz#da43ea49fafc5d2de38e016f1a8539d5eed98318"
+ integrity sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==
-lightningcss-win32-x64-msvc@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz#fd7dd008ea98494b85d24b4bea016793f2e0e352"
- integrity sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==
+lightningcss-win32-x64-msvc@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz#ddefaa099a39b725b2f5bbdcb9fc718435cc9797"
+ integrity sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==
-lightningcss@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.30.1.tgz#78e979c2d595bfcb90d2a8c0eb632fe6c5bfed5d"
- integrity sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==
+lightningcss@1.29.2:
+ version "1.29.2"
+ resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.29.2.tgz#f5f0fd6e63292a232697e6fe709da5b47624def3"
+ integrity sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==
dependencies:
detect-libc "^2.0.3"
optionalDependencies:
- lightningcss-darwin-arm64 "1.30.1"
- lightningcss-darwin-x64 "1.30.1"
- lightningcss-freebsd-x64 "1.30.1"
- lightningcss-linux-arm-gnueabihf "1.30.1"
- lightningcss-linux-arm64-gnu "1.30.1"
- lightningcss-linux-arm64-musl "1.30.1"
- lightningcss-linux-x64-gnu "1.30.1"
- lightningcss-linux-x64-musl "1.30.1"
- lightningcss-win32-arm64-msvc "1.30.1"
- lightningcss-win32-x64-msvc "1.30.1"
+ lightningcss-darwin-arm64 "1.29.2"
+ lightningcss-darwin-x64 "1.29.2"
+ lightningcss-freebsd-x64 "1.29.2"
+ lightningcss-linux-arm-gnueabihf "1.29.2"
+ lightningcss-linux-arm64-gnu "1.29.2"
+ lightningcss-linux-arm64-musl "1.29.2"
+ lightningcss-linux-x64-gnu "1.29.2"
+ lightningcss-linux-x64-musl "1.29.2"
+ lightningcss-win32-arm64-msvc "1.29.2"
+ lightningcss-win32-x64-msvc "1.29.2"
-lilconfig@^3.1.3:
+lilconfig@^3.1.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4"
integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==
@@ -5942,28 +4933,18 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
-locate-path@^7.0.0, locate-path@^7.2.0:
+locate-path@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a"
integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==
dependencies:
p-locate "^6.0.0"
-lodash-es@^4.17.21:
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
- integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
-
lodash.castarray@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115"
integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==
-lodash.debounce@^4.0.8:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
- integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
-
lodash.defaults@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@@ -5999,18 +4980,6 @@ lodash@^4.17.15, lodash@^4.17.21:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-logform@^2.7.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/logform/-/logform-2.7.0.tgz#cfca97528ef290f2e125a08396805002b2d060d1"
- integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==
- dependencies:
- "@colors/colors" "1.6.0"
- "@types/triple-beam" "^1.3.2"
- fecha "^4.2.0"
- ms "^2.1.1"
- safe-stable-stringify "^2.3.1"
- triple-beam "^1.3.0"
-
lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.4.3:
version "10.4.3"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
@@ -6023,23 +4992,23 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-luxon@^3.2.1, luxon@^3.6.1:
- version "3.7.1"
- resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.7.1.tgz#9bd09aa84a56afb00c57ea78a8ec5bd16eb24ec0"
- integrity sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==
+luxon@^3.6.1:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.6.1.tgz#d283ffc4c0076cb0db7885ec6da1c49ba97e47b0"
+ integrity sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==
-magic-regexp@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/magic-regexp/-/magic-regexp-0.10.0.tgz#78b4421a50d2b7a67129bf2c424a333927c3a0e5"
- integrity sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==
+magic-regexp@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/magic-regexp/-/magic-regexp-0.8.0.tgz#c67de16456522a83672c22aa408b774facfd882e"
+ integrity sha512-lOSLWdE156csDYwCTIGiAymOLN7Epu/TU5e/oAnISZfU6qP+pgjkE+xbVjVn3yLPKN8n1G2yIAYTAM5KRk6/ow==
dependencies:
estree-walker "^3.0.3"
- magic-string "^0.30.12"
- mlly "^1.7.2"
+ magic-string "^0.30.8"
+ mlly "^1.6.1"
regexp-tree "^0.1.27"
type-level-regexp "~0.1.17"
- ufo "^1.5.4"
- unplugin "^2.0.0"
+ ufo "^1.4.0"
+ unplugin "^1.8.3"
magic-string-ast@^0.7.0:
version "0.7.1"
@@ -6048,14 +5017,7 @@ magic-string-ast@^0.7.0:
dependencies:
magic-string "^0.30.17"
-magic-string-ast@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/magic-string-ast/-/magic-string-ast-1.0.0.tgz#a42baa26a30e3368dd0b6c7d66eda4f6577abb42"
- integrity sha512-8rbuNizut2gW94kv7pqgt0dvk+AHLPVIm0iJtpSgQJ9dx21eWx5SBel8z3jp1xtC0j6/iyK3AWGhAR1H61s7LA==
- dependencies:
- magic-string "^0.30.17"
-
-magic-string@^0.30.11, magic-string@^0.30.12, magic-string@^0.30.17, magic-string@^0.30.3, magic-string@^0.30.8:
+magic-string@^0.30.11, magic-string@^0.30.17, magic-string@^0.30.3, magic-string@^0.30.8:
version "0.30.17"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
@@ -6091,13 +5053,6 @@ mdn-data@2.12.2:
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.12.2.tgz#9ae6c41a9e65adf61318b32bff7b64fbfb13f8cf"
integrity sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==
-merge-options@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7"
- integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==
- dependencies:
- is-plain-obj "^2.1.0"
-
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -6108,11 +5063,6 @@ merge2@^1.3.0:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-micro-api-client@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/micro-api-client/-/micro-api-client-3.3.0.tgz#52dd567d322f10faffe63d19d4feeac4e4ffd215"
- integrity sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg==
-
micromark-core-commonmark@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4"
@@ -6310,11 +5260,6 @@ mime-db@1.52.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-mime-db@^1.54.0:
- version "1.54.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5"
- integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
-
mime-types@^2.1.12, mime-types@^2.1.35:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
@@ -6322,22 +5267,20 @@ mime-types@^2.1.12, mime-types@^2.1.35:
dependencies:
mime-db "1.52.0"
-mime-types@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce"
- integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==
- dependencies:
- mime-db "^1.54.0"
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
mime@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
-mime@^4.0.7:
- version "4.0.7"
- resolved "https://registry.yarnpkg.com/mime/-/mime-4.0.7.tgz#0b7a98b08c63bd3c10251e797d67840c9bde9f13"
- integrity sha512-2OfDPL+e03E0LrXaGYOtTFIYhiuzep94NSsuhrNULq+stylcJedcHdzHtz0atMUuGwJfFYs0YL5xeC/Ca2x0eQ==
+mime@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-4.0.6.tgz#ca83bec0bcf2a02353d0e02da99be05603d04839"
+ integrity sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A==
mimic-fn@^4.0.0:
version "4.0.0"
@@ -6373,7 +5316,7 @@ minimatch@^5.1.0:
dependencies:
brace-expansion "^2.0.1"
-minimatch@^9.0.0, minimatch@^9.0.4:
+minimatch@^9.0.3, minimatch@^9.0.4:
version "9.0.5"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
@@ -6381,13 +5324,13 @@ minimatch@^9.0.0, minimatch@^9.0.4:
brace-expansion "^2.0.1"
"minimatch@^9.0.3 || ^10.0.1":
- version "10.0.3"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa"
- integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b"
+ integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==
dependencies:
- "@isaacs/brace-expansion" "^5.0.0"
+ brace-expansion "^2.0.1"
-minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
+minimist@^1.2.0, minimist@^1.2.3:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
@@ -6398,11 +5341,12 @@ minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
minizlib@^3.0.1:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.2.tgz#f33d638eb279f664439aa38dc5f91607468cb574"
- integrity sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.1.tgz#46d5329d1eb3c83924eff1d3b858ca0a31581012"
+ integrity sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==
dependencies:
- minipass "^7.1.2"
+ minipass "^7.0.4"
+ rimraf "^5.0.5"
mitt@^3.0.1:
version "3.0.1"
@@ -6419,7 +5363,7 @@ mkdirp@^3.0.1:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50"
integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
-mlly@^1.2.0, mlly@^1.3.0, mlly@^1.6.1, mlly@^1.7.1, mlly@^1.7.2, mlly@^1.7.4:
+mlly@^1.3.0, mlly@^1.6.1, mlly@^1.7.1, mlly@^1.7.4:
version "1.7.4"
resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.4.tgz#3d7295ea2358ec7a271eaa5d000a0f84febe100f"
integrity sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==
@@ -6429,25 +5373,22 @@ mlly@^1.2.0, mlly@^1.3.0, mlly@^1.6.1, mlly@^1.7.1, mlly@^1.7.2, mlly@^1.7.4:
pkg-types "^1.3.0"
ufo "^1.5.4"
-mocked-exports@^0.1.1:
+mocked-exports@^0.1.0, mocked-exports@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/mocked-exports/-/mocked-exports-0.1.1.tgz#6916efea9a9dd0f4abd6a0a72526f56a76c966ea"
integrity sha512-aF7yRQr/Q0O2/4pIXm6PZ5G+jAd7QS4Yu8m+WEeEHGnbo+7mE36CbLSDQiXYV8bVL3NfmdeqPJct0tUlnjVSnA==
-module-definition@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-6.0.1.tgz#47e73144cc5a9aa31f3380166fddf8e962ccb2e4"
- integrity sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g==
- dependencies:
- ast-module-types "^6.0.1"
- node-source-walk "^7.0.1"
-
mrmime@^2.0.0, mrmime@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc"
integrity sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==
-ms@^2.1.1, ms@^2.1.3:
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
+
+ms@2.1.3, ms@^2.1.1, ms@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
@@ -6457,12 +5398,12 @@ muggle-string@^0.4.1:
resolved "https://registry.yarnpkg.com/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328"
integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==
-nanoid@^3.3.11:
+nanoid@^3.3.8:
version "3.3.11"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
-nanoid@^5.1.0:
+nanoid@^5.0.9:
version "5.1.5"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.1.5.tgz#f7597f9d9054eb4da9548cdd53ca70f1790e87de"
integrity sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==
@@ -6477,11 +5418,6 @@ napi-build-utils@^2.0.0:
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e"
integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==
-napi-postinstall@^0.3.0:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.2.tgz#03c62080e88b311c4d7423b0f15f0c920bbcc626"
- integrity sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==
-
napi-wasm@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.3.tgz#7bb95c88e6561f84880bb67195437b1cfbe99224"
@@ -6492,99 +5428,87 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-netlify@^13.3.5:
- version "13.3.5"
- resolved "https://registry.yarnpkg.com/netlify/-/netlify-13.3.5.tgz#b3b44dfff378654eeb2968bc0f43c21e6a38abda"
- integrity sha512-Nc3loyVASW59W+8fLDZT1lncpG7llffyZ2o0UQLx/Fr20i7P8oP+lE7+TEcFvXj9IUWU6LjB9P3BH+iFGyp+mg==
- dependencies:
- "@netlify/open-api" "^2.37.0"
- lodash-es "^4.17.21"
- micro-api-client "^3.3.0"
- node-fetch "^3.0.0"
- p-wait-for "^5.0.0"
- qs "^6.9.6"
-
-nitropack@^2.11.12, nitropack@^2.11.13:
- version "2.12.4"
- resolved "https://registry.yarnpkg.com/nitropack/-/nitropack-2.12.4.tgz#eade37b69d2233b3068c6d11a970de6252a6f094"
- integrity sha512-MPmPRJWTeH03f/NmpN4q3iI3Woik4uaaWIoX34W3gMJiW06Vm1te/lPzuu5EXpXOK7Q2m3FymGMPXcExqih96Q==
+nitropack@^2.11.8:
+ version "2.11.8"
+ resolved "https://registry.yarnpkg.com/nitropack/-/nitropack-2.11.8.tgz#8a4d7f1b403341cb9ee931e1716e81d0078a73c4"
+ integrity sha512-ummTu4R8Lhd1nO3nWrW7eeiHA2ey3ntbWFKkYakm4rcbvT6meWp+oykyrYBNFQKhobQl9CydmUWlCyztYXFPJw==
dependencies:
"@cloudflare/kv-asset-handler" "^0.4.0"
- "@netlify/functions" "^3.1.10"
+ "@netlify/functions" "^3.0.2"
"@rollup/plugin-alias" "^5.1.1"
- "@rollup/plugin-commonjs" "^28.0.6"
+ "@rollup/plugin-commonjs" "^28.0.3"
"@rollup/plugin-inject" "^5.0.5"
"@rollup/plugin-json" "^6.1.0"
"@rollup/plugin-node-resolve" "^16.0.1"
"@rollup/plugin-replace" "^6.0.2"
"@rollup/plugin-terser" "^0.4.4"
- "@vercel/nft" "^0.29.4"
+ "@vercel/nft" "^0.29.2"
archiver "^7.0.1"
- c12 "^3.1.0"
+ c12 "^3.0.2"
chokidar "^4.0.3"
citty "^0.1.6"
- compatx "^0.2.0"
- confbox "^0.2.2"
+ compatx "^0.1.8"
+ confbox "^0.2.1"
consola "^3.4.2"
cookie-es "^2.0.0"
- croner "^9.1.0"
- crossws "^0.3.5"
- db0 "^0.3.2"
+ croner "^9.0.0"
+ crossws "^0.3.4"
+ db0 "^0.3.1"
defu "^6.1.4"
- destr "^2.0.5"
+ destr "^2.0.3"
dot-prop "^9.0.0"
- esbuild "^0.25.6"
+ esbuild "^0.25.1"
escape-string-regexp "^5.0.0"
etag "^1.8.1"
- exsolve "^1.0.7"
+ exsolve "^1.0.4"
globby "^14.1.0"
gzip-size "^7.0.0"
- h3 "^1.15.3"
+ h3 "^1.15.1"
hookable "^5.5.3"
httpxy "^0.1.7"
- ioredis "^5.6.1"
+ ioredis "^5.6.0"
jiti "^2.4.2"
klona "^2.0.6"
knitwork "^1.2.0"
listhen "^1.9.0"
magic-string "^0.30.17"
magicast "^0.3.5"
- mime "^4.0.7"
+ mime "^4.0.6"
mlly "^1.7.4"
node-fetch-native "^1.6.6"
- node-mock-http "^1.0.1"
+ node-mock-http "^1.0.0"
ofetch "^1.4.1"
ohash "^2.0.11"
pathe "^2.0.3"
perfect-debounce "^1.0.0"
- pkg-types "^2.2.0"
+ pkg-types "^2.1.0"
pretty-bytes "^6.1.1"
radix3 "^1.1.2"
- rollup "^4.45.0"
- rollup-plugin-visualizer "^6.0.3"
+ rollup "^4.36.0"
+ rollup-plugin-visualizer "^5.14.0"
scule "^1.3.0"
- semver "^7.7.2"
+ semver "^7.7.1"
serve-placeholder "^2.0.2"
- serve-static "^2.2.0"
+ serve-static "^1.16.2"
source-map "^0.7.4"
- std-env "^3.9.0"
- ufo "^1.6.1"
- ultrahtml "^1.6.0"
+ std-env "^3.8.1"
+ ufo "^1.5.4"
+ ultrahtml "^1.5.3"
uncrypto "^0.1.3"
unctx "^2.4.1"
- unenv "^2.0.0-rc.18"
- unimport "^5.1.0"
+ unenv "^2.0.0-rc.15"
+ unimport "^4.1.2"
unplugin-utils "^0.2.4"
- unstorage "^1.16.1"
+ unstorage "^1.15.0"
untyped "^2.0.0"
unwasm "^0.3.9"
- youch "4.1.0-beta.8"
- youch-core "^0.3.3"
+ youch "^4.1.0-beta.6"
+ youch-core "^0.3.2"
node-abi@^3.3.0:
- version "3.75.0"
- resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.75.0.tgz#2f929a91a90a0d02b325c43731314802357ed764"
- integrity sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==
+ version "3.74.0"
+ resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.74.0.tgz#5bfb4424264eaeb91432d2adb9da23c63a301ed0"
+ integrity sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==
dependencies:
semver "^7.3.5"
@@ -6598,15 +5522,10 @@ node-addon-api@^7.0.0:
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
-node-addon-api@^8.4.0:
- version "8.5.0"
- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-8.5.0.tgz#c91b2d7682fa457d2e1c388150f0dff9aafb8f3f"
- integrity sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==
-
-node-domexception@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
- integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
+node-addon-api@^8.1.0:
+ version "8.3.1"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-8.3.1.tgz#53bc8a4f8dbde3de787b9828059da94ba9fd4eed"
+ integrity sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==
node-fetch-native@^1.6.4, node-fetch-native@^1.6.6:
version "1.6.6"
@@ -6620,42 +5539,31 @@ node-fetch@^2.6.7, node-fetch@^2.7.0:
dependencies:
whatwg-url "^5.0.0"
-node-fetch@^3.0.0:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b"
- integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==
- dependencies:
- data-uri-to-buffer "^4.0.0"
- fetch-blob "^3.1.4"
- formdata-polyfill "^4.0.10"
-
node-forge@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
-node-gyp-build@^4.2.2, node-gyp-build@^4.8.4:
+node-graceful-shutdown@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/node-graceful-shutdown/-/node-graceful-shutdown-1.1.5.tgz#2c5b405a27d712a409e69b67dfe215d30154faff"
+ integrity sha512-tlz8XpPr+pqrEGWFNLtMwd0HdFsCAKp5NCmMvwcTZTA0hyrVd7gkKbivDcSM5uYB1331/cEjNTtmVtqKy8OSBw==
+
+node-gyp-build@^4.2.2, node-gyp-build@^4.8.1:
version "4.8.4"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8"
integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==
-node-mock-http@^1.0.0, node-mock-http@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/node-mock-http/-/node-mock-http-1.0.1.tgz#29b4e0b08d786acadda450e8c159d3e652b3cbfd"
- integrity sha512-0gJJgENizp4ghds/Ywu2FCmcRsgBTmRQzYPZm61wy+Em2sBarSka0OhQS5huLBg6od1zkNpnWMCZloQDFVvOMQ==
+node-mock-http@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-mock-http/-/node-mock-http-1.0.0.tgz#4b32cd509c7f46d844e68ea93fb8be405a18a42a"
+ integrity sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==
node-releases@^2.0.19:
version "2.0.19"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
-node-source-walk@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-7.0.1.tgz#3e4ab8d065377228fd038af7b2d4fb58f61defd3"
- integrity sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg==
- dependencies:
- "@babel/parser" "^7.26.7"
-
nopt@^8.0.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-8.1.0.tgz#b11d38caf0f8643ce885818518064127f602eae3"
@@ -6672,14 +5580,7 @@ normalize-package-data@^6.0.0:
semver "^7.3.5"
validate-npm-package-license "^3.0.4"
-normalize-path@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-normalize-path@^3.0.0, normalize-path@~3.0.0:
+normalize-path@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
@@ -6689,11 +5590,6 @@ normalize-range@^0.1.2:
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
-normalize-url@^8.0.2:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.2.tgz#3b343a42f837e4dae2b01917c04e8de3782e9170"
- integrity sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==
-
npm-run-path@^5.1.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f"
@@ -6738,37 +5634,39 @@ nuxt-security@2.2.0:
unplugin-remove "^1.0.3"
xss "^1.0.14"
-nuxt@^3.17.4:
- version "3.17.7"
- resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-3.17.7.tgz#1b5f43dbbe86052b4ca45be376ebb392ed4401d8"
- integrity sha512-1xl1HcKIbDHpNMW6pXhVhSM5Po51FW14mooyw5ZK5G+wMb0P+uzI/f7xmlaRkBv5Q8ZzUIH6gVUh3KyiucLn+w==
+nuxt@^3.16.2:
+ version "3.16.2"
+ resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-3.16.2.tgz#d25211e3026754993bb770a0c6f2af939ff4ecdf"
+ integrity sha512-yjIC/C4HW8Pd+m0ACGliEF0HnimXYGYvUzjOsTiLQKkDDt2T+djyZ+pCl9BfhQBA8rYmnsym2jUI+ubjv1iClw==
dependencies:
- "@nuxt/cli" "^3.25.1"
+ "@nuxt/cli" "^3.24.0"
"@nuxt/devalue" "^2.0.2"
- "@nuxt/devtools" "^2.6.2"
- "@nuxt/kit" "3.17.7"
- "@nuxt/schema" "3.17.7"
+ "@nuxt/devtools" "^2.3.2"
+ "@nuxt/kit" "3.16.2"
+ "@nuxt/schema" "3.16.2"
"@nuxt/telemetry" "^2.6.6"
- "@nuxt/vite-builder" "3.17.7"
- "@unhead/vue" "^2.0.12"
- "@vue/shared" "^3.5.17"
- c12 "^3.0.4"
+ "@nuxt/vite-builder" "3.16.2"
+ "@oxc-parser/wasm" "^0.60.0"
+ "@unhead/vue" "^2.0.2"
+ "@vue/shared" "^3.5.13"
+ c12 "^3.0.2"
chokidar "^4.0.3"
- compatx "^0.2.0"
+ compatx "^0.1.8"
consola "^3.4.2"
cookie-es "^2.0.0"
defu "^6.1.4"
- destr "^2.0.5"
+ destr "^2.0.3"
devalue "^5.1.1"
errx "^0.1.0"
- esbuild "^0.25.6"
+ esbuild "^0.25.2"
escape-string-regexp "^5.0.0"
estree-walker "^3.0.3"
- exsolve "^1.0.7"
- h3 "^1.15.3"
+ exsolve "^1.0.4"
+ globby "^14.1.0"
+ h3 "^1.15.1"
hookable "^5.5.3"
- ignore "^7.0.5"
- impound "^1.0.0"
+ ignore "^7.0.3"
+ impound "^0.2.2"
jiti "^2.4.2"
klona "^2.0.6"
knitwork "^1.2.0"
@@ -6776,34 +5674,34 @@ nuxt@^3.17.4:
mlly "^1.7.4"
mocked-exports "^0.1.1"
nanotar "^0.2.0"
- nitropack "^2.11.13"
+ nitropack "^2.11.8"
nypm "^0.6.0"
ofetch "^1.4.1"
ohash "^2.0.11"
on-change "^5.0.1"
- oxc-parser "^0.76.0"
+ oxc-parser "^0.56.3"
pathe "^2.0.3"
perfect-debounce "^1.0.0"
- pkg-types "^2.2.0"
+ pkg-types "^2.1.0"
radix3 "^1.1.2"
scule "^1.3.0"
- semver "^7.7.2"
- std-env "^3.9.0"
+ semver "^7.7.1"
+ std-env "^3.8.1"
strip-literal "^3.0.0"
- tinyglobby "0.2.14"
- ufo "^1.6.1"
- ultrahtml "^1.6.0"
+ tinyglobby "0.2.12"
+ ufo "^1.5.4"
+ ultrahtml "^1.5.3"
uncrypto "^0.1.3"
unctx "^2.4.1"
- unimport "^5.1.0"
- unplugin "^2.3.5"
- unplugin-vue-router "^0.14.0"
- unstorage "^1.16.0"
+ unimport "^4.1.3"
+ unplugin "^2.2.2"
+ unplugin-vue-router "^0.12.0"
+ unstorage "^1.15.0"
untyped "^2.0.0"
- vue "^3.5.17"
+ vue "^3.5.13"
vue-bundle-renderer "^2.1.1"
vue-devtools-stub "^0.1.0"
- vue-router "^4.5.1"
+ vue-router "^4.5.0"
nypm@^0.6.0:
version "0.6.0"
@@ -6816,11 +5714,6 @@ nypm@^0.6.0:
pkg-types "^2.0.0"
tinyexec "^0.3.2"
-object-inspect@^1.13.3:
- version "1.13.4"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213"
- integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
-
ofetch@^1.3.3, ofetch@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.4.1.tgz#b6bf6b0d75ba616cef6519dd8b6385a8bae480ec"
@@ -6830,7 +5723,12 @@ ofetch@^1.3.3, ofetch@^1.4.1:
node-fetch-native "^1.6.4"
ufo "^1.5.4"
-ohash@^2.0.0, ohash@^2.0.11:
+ohash@^1.1.4:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.6.tgz#9ff7b0271d7076290794537d68ec2b40a60d133e"
+ integrity sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==
+
+ohash@^2.0.11, ohash@^2.0.4, ohash@^2.0.5:
version "2.0.11"
resolved "https://registry.yarnpkg.com/ohash/-/ohash-2.0.11.tgz#60b11e8cff62ca9dee88d13747a5baa145f5900b"
integrity sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==
@@ -6840,12 +5738,7 @@ on-change@^5.0.1:
resolved "https://registry.yarnpkg.com/on-change/-/on-change-5.0.1.tgz#ced60d262211eee41043e7479515b4875d1744ef"
integrity sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==
-on-exit-leak-free@^2.1.0:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8"
- integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==
-
-on-finished@^2.4.1:
+on-finished@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
@@ -6859,13 +5752,6 @@ once@^1.3.1, once@^1.4.0:
dependencies:
wrappy "1"
-one-time@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
- integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
- dependencies:
- fn.name "1.x.x"
-
onetime@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
@@ -6873,17 +5759,17 @@ onetime@^6.0.0:
dependencies:
mimic-fn "^4.0.0"
-open@^10.1.2:
- version "10.2.0"
- resolved "https://registry.yarnpkg.com/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c"
- integrity sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==
+open@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1"
+ integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==
dependencies:
default-browser "^5.2.1"
define-lazy-prop "^3.0.0"
is-inside-container "^1.0.0"
- wsl-utils "^0.1.0"
+ is-wsl "^3.1.0"
-open@^8.0.0:
+open@^8.4.0:
version "8.4.2"
resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9"
integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
@@ -6904,57 +5790,23 @@ optionator@^0.9.3:
type-check "^0.4.0"
word-wrap "^1.2.5"
-oxc-parser@^0.70.0:
- version "0.70.0"
- resolved "https://registry.yarnpkg.com/oxc-parser/-/oxc-parser-0.70.0.tgz#695586d0fa2a245a6bde6891a626ecb4d552b503"
- integrity sha512-YbqTuQDDIYwQF/li0VFK5uTbmHV4jWFeQQONkPdf77vz+JMiq7SusmcSVZ4hBrGM+3WyLdKH5S7spnvz4XVVzQ==
+oxc-parser@^0.56.3:
+ version "0.56.5"
+ resolved "https://registry.yarnpkg.com/oxc-parser/-/oxc-parser-0.56.5.tgz#1b8763325d6c3d215af72ee46462d65695f845ca"
+ integrity sha512-MNT32sqiTFeSbQZP2WZIRQ/mlIpNNq4sua+/4hBG4qT5aef2iQe+1/BjezZURPlvucZeSfN1Y6b60l7OgBdyUA==
dependencies:
- "@oxc-project/types" "^0.70.0"
+ "@oxc-project/types" "^0.56.5"
optionalDependencies:
- "@oxc-parser/binding-darwin-arm64" "0.70.0"
- "@oxc-parser/binding-darwin-x64" "0.70.0"
- "@oxc-parser/binding-freebsd-x64" "0.70.0"
- "@oxc-parser/binding-linux-arm-gnueabihf" "0.70.0"
- "@oxc-parser/binding-linux-arm-musleabihf" "0.70.0"
- "@oxc-parser/binding-linux-arm64-gnu" "0.70.0"
- "@oxc-parser/binding-linux-arm64-musl" "0.70.0"
- "@oxc-parser/binding-linux-riscv64-gnu" "0.70.0"
- "@oxc-parser/binding-linux-s390x-gnu" "0.70.0"
- "@oxc-parser/binding-linux-x64-gnu" "0.70.0"
- "@oxc-parser/binding-linux-x64-musl" "0.70.0"
- "@oxc-parser/binding-wasm32-wasi" "0.70.0"
- "@oxc-parser/binding-win32-arm64-msvc" "0.70.0"
- "@oxc-parser/binding-win32-x64-msvc" "0.70.0"
-
-oxc-parser@^0.76.0:
- version "0.76.0"
- resolved "https://registry.yarnpkg.com/oxc-parser/-/oxc-parser-0.76.0.tgz#041650d3be1b6f31ee74b5c0f8987a6818fa85fd"
- integrity sha512-l98B2e9evuhES7zN99rb1QGhbzx25829TJFaKi2j0ib3/K/G5z1FdGYz6HZkrU3U8jdH7v2FC8mX1j2l9JrOUg==
- dependencies:
- "@oxc-project/types" "^0.76.0"
- optionalDependencies:
- "@oxc-parser/binding-android-arm64" "0.76.0"
- "@oxc-parser/binding-darwin-arm64" "0.76.0"
- "@oxc-parser/binding-darwin-x64" "0.76.0"
- "@oxc-parser/binding-freebsd-x64" "0.76.0"
- "@oxc-parser/binding-linux-arm-gnueabihf" "0.76.0"
- "@oxc-parser/binding-linux-arm-musleabihf" "0.76.0"
- "@oxc-parser/binding-linux-arm64-gnu" "0.76.0"
- "@oxc-parser/binding-linux-arm64-musl" "0.76.0"
- "@oxc-parser/binding-linux-riscv64-gnu" "0.76.0"
- "@oxc-parser/binding-linux-s390x-gnu" "0.76.0"
- "@oxc-parser/binding-linux-x64-gnu" "0.76.0"
- "@oxc-parser/binding-linux-x64-musl" "0.76.0"
- "@oxc-parser/binding-wasm32-wasi" "0.76.0"
- "@oxc-parser/binding-win32-arm64-msvc" "0.76.0"
- "@oxc-parser/binding-win32-x64-msvc" "0.76.0"
-
-p-event@^6.0.0:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/p-event/-/p-event-6.0.1.tgz#8f62a1e3616d4bc01fce3abda127e0383ef4715b"
- integrity sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==
- dependencies:
- p-timeout "^6.1.2"
+ "@oxc-parser/binding-darwin-arm64" "0.56.5"
+ "@oxc-parser/binding-darwin-x64" "0.56.5"
+ "@oxc-parser/binding-linux-arm-gnueabihf" "0.56.5"
+ "@oxc-parser/binding-linux-arm64-gnu" "0.56.5"
+ "@oxc-parser/binding-linux-arm64-musl" "0.56.5"
+ "@oxc-parser/binding-linux-x64-gnu" "0.56.5"
+ "@oxc-parser/binding-linux-x64-musl" "0.56.5"
+ "@oxc-parser/binding-wasm32-wasi" "0.56.5"
+ "@oxc-parser/binding-win32-arm64-msvc" "0.56.5"
+ "@oxc-parser/binding-win32-x64-msvc" "0.56.5"
p-limit@^3.0.2:
version "3.1.0"
@@ -6984,32 +5836,22 @@ p-locate@^6.0.0:
dependencies:
p-limit "^4.0.0"
-p-map@^7.0.0, p-map@^7.0.3:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-7.0.3.tgz#7ac210a2d36f81ec28b736134810f7ba4418cdb6"
- integrity sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==
-
-p-timeout@^6.0.0, p-timeout@^6.1.2:
- version "6.1.4"
- resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-6.1.4.tgz#418e1f4dd833fa96a2e3f532547dd2abdb08dbc2"
- integrity sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==
-
-p-wait-for@^5.0.0:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/p-wait-for/-/p-wait-for-5.0.2.tgz#1546a15e64accf1897377cb1507fa4c756fffe96"
- integrity sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==
- dependencies:
- p-timeout "^6.0.0"
-
package-json-from-dist@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
-package-manager-detector@^1.1.0, package-manager-detector@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-1.3.0.tgz#b42d641c448826e03c2b354272456a771ce453c0"
- integrity sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==
+package-manager-detector@^0.2.8:
+ version "0.2.11"
+ resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-0.2.11.tgz#3af0b34f99d86d24af0a0620603d2e1180d05c9c"
+ integrity sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==
+ dependencies:
+ quansync "^0.2.7"
+
+package-manager-detector@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-1.1.0.tgz#2c9f19adb9835d0b9e9baaab484a020d4ee07b87"
+ integrity sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==
pako@^0.2.5:
version "0.2.9"
@@ -7023,39 +5865,35 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
-parse-gitignore@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-2.0.0.tgz#81156b265115c507129f3faea067b8476da3b642"
- integrity sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==
-
-parse-imports-exports@^0.2.4:
- version "0.2.4"
- resolved "https://registry.yarnpkg.com/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz#e3fb3b5e264cfb55c25b5dfcbe7f410f8dc4e7af"
- integrity sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==
+parse-imports@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/parse-imports/-/parse-imports-2.2.1.tgz#0a6e8b5316beb5c9905f50eb2bbb8c64a4805642"
+ integrity sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==
dependencies:
- parse-statements "1.0.11"
+ es-module-lexer "^1.5.3"
+ slashes "^3.0.12"
parse-json@^8.0.0:
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-8.3.0.tgz#88a195a2157025139a2317a4f2f9252b61304ed5"
- integrity sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-8.2.0.tgz#794a590dcf54588ec2282ce6065f15121fa348a0"
+ integrity sha512-eONBZy4hm2AgxjNFd8a4nyDJnzUAH0g34xSQAwWEVGCjdZ4ZL7dKZBfq267GWP/JaS9zW62Xs2FeAdDvpHHJGQ==
dependencies:
"@babel/code-frame" "^7.26.2"
- index-to-position "^1.1.0"
- type-fest "^4.39.1"
+ index-to-position "^1.0.0"
+ type-fest "^4.37.0"
-parse-path@*, parse-path@^7.0.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.1.0.tgz#41fb513cb122831807a4c7b29c8727947a09d8c6"
- integrity sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==
+parse-ms@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-4.0.0.tgz#c0c058edd47c2a590151a718990533fd62803df4"
+ integrity sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==
+
+parse-path@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.1.tgz#ae548cd36315fd8881a3610eae99fa08123ee0e2"
+ integrity sha512-6ReLMptznuuOEzLoGEa+I1oWRSj2Zna5jLWC+l6zlfAI4dbbSaIES29ThzuPkbhNahT65dWzfoZEO6cfJw2Ksg==
dependencies:
protocols "^2.0.0"
-parse-statements@1.0.11:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/parse-statements/-/parse-statements-1.0.11.tgz#8787c5d383ae5746568571614be72b0689584344"
- integrity sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==
-
parse-url@^9.2.0:
version "9.2.0"
resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-9.2.0.tgz#d75da32b3bbade66e4eb0763fb4851d27526b97b"
@@ -7064,29 +5902,7 @@ parse-url@^9.2.0:
"@types/parse-path" "^7.0.0"
parse-path "^7.0.0"
-parse5-htmlparser2-tree-adapter@^7.1.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b"
- integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==
- dependencies:
- domhandler "^5.0.3"
- parse5 "^7.0.0"
-
-parse5-parser-stream@^7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz#d7c20eadc37968d272e2c02660fff92dd27e60e1"
- integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==
- dependencies:
- parse5 "^7.0.0"
-
-parse5@^7.0.0, parse5@^7.1.2, parse5@^7.3.0:
- version "7.3.0"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05"
- integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==
- dependencies:
- entities "^6.0.0"
-
-parseurl@^1.3.3:
+parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
@@ -7149,11 +5965,6 @@ peek-readable@^5.1.3:
resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.4.2.tgz#aff1e1ba27a7d6911ddb103f35252ffc1787af49"
integrity sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==
-pend@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
- integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
-
perfect-debounce@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a"
@@ -7164,63 +5975,15 @@ picocolors@^1.0.0, picocolors@^1.1.1:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
-picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+picomatch@^2.0.4, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-picomatch@^4.0.2, picomatch@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042"
- integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
-
-pino-abstract-transport@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60"
- integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==
- dependencies:
- split2 "^4.0.0"
-
-pino-pretty@^13.0.0:
- version "13.0.0"
- resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-13.0.0.tgz#21d57fe940e34f2e279905d7dba2d7e2c4f9bf17"
- integrity sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==
- dependencies:
- colorette "^2.0.7"
- dateformat "^4.6.3"
- fast-copy "^3.0.2"
- fast-safe-stringify "^2.1.1"
- help-me "^5.0.0"
- joycon "^3.1.1"
- minimist "^1.2.6"
- on-exit-leak-free "^2.1.0"
- pino-abstract-transport "^2.0.0"
- pump "^3.0.0"
- secure-json-parse "^2.4.0"
- sonic-boom "^4.0.1"
- strip-json-comments "^3.1.1"
-
-pino-std-serializers@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b"
- integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==
-
-pino@^9.7.0:
- version "9.7.0"
- resolved "https://registry.yarnpkg.com/pino/-/pino-9.7.0.tgz#ff7cd86eb3103ee620204dbd5ca6ffda8b53f645"
- integrity sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==
- dependencies:
- atomic-sleep "^1.0.0"
- fast-redact "^3.1.1"
- on-exit-leak-free "^2.1.0"
- pino-abstract-transport "^2.0.0"
- pino-std-serializers "^7.0.0"
- process-warning "^5.0.0"
- quick-format-unescaped "^4.0.3"
- real-require "^0.2.0"
- safe-stable-stringify "^2.3.1"
- sonic-boom "^4.0.1"
- thread-stream "^3.0.0"
+picomatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
+ integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
pkg-types@^1.0.3, pkg-types@^1.3.0:
version "1.3.1"
@@ -7231,13 +5994,13 @@ pkg-types@^1.0.3, pkg-types@^1.3.0:
mlly "^1.7.4"
pathe "^2.0.1"
-pkg-types@^2.0.0, pkg-types@^2.0.1, pkg-types@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-2.2.0.tgz#049bf404f82a66c465200149457acf0c5fb0fb2d"
- integrity sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==
+pkg-types@^2.0.0, pkg-types@^2.0.1, pkg-types@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-2.1.0.tgz#70c9e1b9c74b63fdde749876ee0aa007ea9edead"
+ integrity sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==
dependencies:
- confbox "^0.2.2"
- exsolve "^1.0.7"
+ confbox "^0.2.1"
+ exsolve "^1.0.1"
pathe "^2.0.3"
pluralize@^8.0.0:
@@ -7245,7 +6008,7 @@ pluralize@^8.0.0:
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
-postcss-calc@^10.1.1:
+postcss-calc@^10.0.2:
version "10.1.1"
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-10.1.1.tgz#52b385f2e628239686eb6e3a16207a43f36064ca"
integrity sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==
@@ -7253,179 +6016,179 @@ postcss-calc@^10.1.1:
postcss-selector-parser "^7.0.0"
postcss-value-parser "^4.2.0"
-postcss-colormin@^7.0.4:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-7.0.4.tgz#12b5ed701bc860d58e5267a51679415939563bdb"
- integrity sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==
- dependencies:
- browserslist "^4.25.1"
- caniuse-api "^3.0.0"
- colord "^2.9.3"
- postcss-value-parser "^4.2.0"
-
-postcss-convert-values@^7.0.6:
- version "7.0.6"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-7.0.6.tgz#aece10411e05409c221263cd77deb4e6ad2c483e"
- integrity sha512-MD/eb39Mr60hvgrqpXsgbiqluawYg/8K4nKsqRsuDX9f+xN1j6awZCUv/5tLH8ak3vYp/EMXwdcnXvfZYiejCQ==
- dependencies:
- browserslist "^4.25.1"
- postcss-value-parser "^4.2.0"
-
-postcss-discard-comments@^7.0.4:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz#9aded15cf437d14ee02b7589ee911b780cd73ffb"
- integrity sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==
- dependencies:
- postcss-selector-parser "^7.1.0"
-
-postcss-discard-duplicates@^7.0.2:
+postcss-colormin@^7.0.2:
version "7.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz#9cf3e659d4f94b046eef6f93679490c0250a8e4e"
- integrity sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==
-
-postcss-discard-empty@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz#b6c57e8b5c69023169abea30dceb93f98a2ffd9f"
- integrity sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==
-
-postcss-discard-overridden@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz#bd9c9bc5e4548d3b6e67e7f8d64f2c9d745ae2a0"
- integrity sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==
-
-postcss-merge-longhand@^7.0.5:
- version "7.0.5"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz#e1b126e92f583815482e8b1e82c47d2435a20421"
- integrity sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-7.0.2.tgz#6f3c53c13158168669f45adc3926f35cb240ef8e"
+ integrity sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==
dependencies:
- postcss-value-parser "^4.2.0"
- stylehacks "^7.0.5"
-
-postcss-merge-rules@^7.0.6:
- version "7.0.6"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-7.0.6.tgz#f5a0cabf6423b1370ba76d5363dfe44776f1e619"
- integrity sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==
- dependencies:
- browserslist "^4.25.1"
+ browserslist "^4.23.3"
caniuse-api "^3.0.0"
- cssnano-utils "^5.0.1"
- postcss-selector-parser "^7.1.0"
+ colord "^2.9.3"
+ postcss-value-parser "^4.2.0"
-postcss-minify-font-values@^7.0.1:
+postcss-convert-values@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz#fc13ecedded6365f3c794b502dbcf77d298da12c"
+ integrity sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==
+ dependencies:
+ browserslist "^4.23.3"
+ postcss-value-parser "^4.2.0"
+
+postcss-discard-comments@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz#9c414e8ee99d3514ad06a3465ccc20ec1dbce780"
+ integrity sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==
+ dependencies:
+ postcss-selector-parser "^6.1.2"
+
+postcss-discard-duplicates@^7.0.1:
version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz#6fb4770131b31fd5a2014bd84e32f386a3406664"
- integrity sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz#f87f2fe47d8f01afb1e98361c1db3ce1e8afd1a3"
+ integrity sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==
+
+postcss-discard-empty@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz#218829d1ef0a5d5142dd62f0aa60e00e599d2033"
+ integrity sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==
+
+postcss-discard-overridden@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz#b123ea51e3d4e1d0a254cf71eaff1201926d319c"
+ integrity sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==
+
+postcss-merge-longhand@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz#a52d0662b4b29420f3b64a8d5b0ac5133d8db776"
+ integrity sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+ stylehacks "^7.0.4"
+
+postcss-merge-rules@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz#648cc864d3121e6ec72c2a4f08df1cc801e60ce8"
+ integrity sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==
+ dependencies:
+ browserslist "^4.23.3"
+ caniuse-api "^3.0.0"
+ cssnano-utils "^5.0.0"
+ postcss-selector-parser "^6.1.2"
+
+postcss-minify-font-values@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz#d16a75a2548e000779566b3568fc874ee5d0aa17"
+ integrity sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-minify-gradients@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz#933cb642dd00df397237c17194f37dcbe4cad739"
- integrity sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==
+postcss-minify-gradients@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz#f6d84456e6d49164a55d0e45bb1b1809c6cf0959"
+ integrity sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==
dependencies:
colord "^2.9.3"
- cssnano-utils "^5.0.1"
+ cssnano-utils "^5.0.0"
postcss-value-parser "^4.2.0"
-postcss-minify-params@^7.0.4:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-7.0.4.tgz#665848c0674c5ff59e054e63e052339738cbc6a3"
- integrity sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==
+postcss-minify-params@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz#264a76e25f202d8b5ca5290569c0e8c3ac599dfe"
+ integrity sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==
dependencies:
- browserslist "^4.25.1"
- cssnano-utils "^5.0.1"
+ browserslist "^4.23.3"
+ cssnano-utils "^5.0.0"
postcss-value-parser "^4.2.0"
-postcss-minify-selectors@^7.0.5:
- version "7.0.5"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-7.0.5.tgz#d8c89eeeb208705ab4127a464d1f54a3bc22cae3"
- integrity sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==
+postcss-minify-selectors@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz#2b69c99ec48a1c223fce4840609d9c53340a11f5"
+ integrity sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==
dependencies:
cssesc "^3.0.0"
- postcss-selector-parser "^7.1.0"
+ postcss-selector-parser "^6.1.2"
-postcss-normalize-charset@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz#bccc3f7c5f4440883608eea8b444c8f41ce55ff6"
- integrity sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==
+postcss-normalize-charset@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz#92244ae73c31bf8f8885d5f16ff69e857ac6c001"
+ integrity sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==
-postcss-normalize-display-values@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz#feb40277d89a7f677b67a84cac999f0306e38235"
- integrity sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==
+postcss-normalize-display-values@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz#01fb50e5e97ef8935363629bea5a6d3b3aac1342"
+ integrity sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-positions@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz#c771c0d33034455205f060b999d8557c2308d22c"
- integrity sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==
+postcss-normalize-positions@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz#4eebd7c9d3dde40c97b8047cad38124fc844c463"
+ integrity sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-repeat-style@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz#05fe4d838eedbd996436c5cab78feef9bb1ae57b"
- integrity sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==
+postcss-normalize-repeat-style@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz#0cb784655d5714d29bd3bda6dee2fb628aa7227b"
+ integrity sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-string@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz#0f111e7b5dfb6de6ab19f09d9e1c16fabeee232f"
- integrity sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==
+postcss-normalize-string@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz#a119d3e63a9614570d8413d572fb9fc8c6a64e8c"
+ integrity sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-timing-functions@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz#7b645a36f113fec49d95d56386c9980316c71216"
- integrity sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==
+postcss-normalize-timing-functions@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz#99d0ee8c4b23b7f4355fafb91385833b9b07108b"
+ integrity sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-unicode@^7.0.4:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.4.tgz#9fd8d1d1e931b60ed946556e4d657b5879e3ee00"
- integrity sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==
- dependencies:
- browserslist "^4.25.1"
- postcss-value-parser "^4.2.0"
-
-postcss-normalize-url@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz#d6471a22b6747ce93d7038c16eb9f1ba8b307e25"
- integrity sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-normalize-whitespace@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz#ab8e9ff1f3213f3f3851c0a7d0e4ce4716777cea"
- integrity sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-ordered-values@^7.0.2:
+postcss-normalize-unicode@^7.0.2:
version "7.0.2"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz#0e803fbb9601e254270481772252de9a8c905f48"
- integrity sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==
+ resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz#095f8d36ea29adfdf494069c1de101112992a713"
+ integrity sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==
dependencies:
- cssnano-utils "^5.0.1"
+ browserslist "^4.23.3"
postcss-value-parser "^4.2.0"
-postcss-reduce-initial@^7.0.4:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-7.0.4.tgz#ebe8b4c85990efaa5a1accfc77f41f23cfa66187"
- integrity sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==
+postcss-normalize-url@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz#c88cb7cf8952d3ff631e4eba924e7b060ca802f6"
+ integrity sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==
dependencies:
- browserslist "^4.25.1"
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-whitespace@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz#46b025f0bea72139ddee63015619b0c21cebd845"
+ integrity sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-ordered-values@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz#8b4b5b8070ca7756bd49f07d5edf274b8f6782e0"
+ integrity sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==
+ dependencies:
+ cssnano-utils "^5.0.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-reduce-initial@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz#3dc085347a5943e18547d4b0aa5bd4ff5a93b2c5"
+ integrity sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==
+ dependencies:
+ browserslist "^4.23.3"
caniuse-api "^3.0.0"
-postcss-reduce-transforms@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz#f87111264b0dfa07e1f708d7e6401578707be5d6"
- integrity sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==
+postcss-reduce-transforms@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz#0386080a14e5faad9f8eda33375b79fe7c4f9677"
+ integrity sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==
dependencies:
postcss-value-parser "^4.2.0"
@@ -7437,7 +6200,7 @@ postcss-selector-parser@6.0.10:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
-postcss-selector-parser@^6.0.15:
+postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.1.2:
version "6.1.2"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de"
integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
@@ -7445,7 +6208,7 @@ postcss-selector-parser@^6.0.15:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
-postcss-selector-parser@^7.0.0, postcss-selector-parser@^7.1.0:
+postcss-selector-parser@^7.0.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262"
integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==
@@ -7453,41 +6216,32 @@ postcss-selector-parser@^7.0.0, postcss-selector-parser@^7.1.0:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
-postcss-svgo@^7.1.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-7.1.0.tgz#7eb6764a643ac2699bf56eef6d2676d428ed4542"
- integrity sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==
+postcss-svgo@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-7.0.1.tgz#2b63571d8e9568384df334bac9917baff4d23f58"
+ integrity sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==
dependencies:
postcss-value-parser "^4.2.0"
- svgo "^4.0.0"
+ svgo "^3.3.2"
-postcss-unique-selectors@^7.0.4:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-7.0.4.tgz#625ad1c808bdf322fab6c027ae8d4f2637140995"
- integrity sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==
+postcss-unique-selectors@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz#483fc11215b23d517d5d9bbe5833d9915619ca33"
+ integrity sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==
dependencies:
- postcss-selector-parser "^7.1.0"
+ postcss-selector-parser "^6.1.2"
postcss-value-parser@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss-values-parser@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz#636edc5b86c953896f1bb0d7a7a6615df00fb76f"
- integrity sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==
+postcss@^8.4.47, postcss@^8.4.48, postcss@^8.5.3:
+ version "8.5.3"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb"
+ integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
dependencies:
- color-name "^1.1.4"
- is-url-superb "^4.0.0"
- quote-unquote "^1.0.0"
-
-postcss@^8.5.1, postcss@^8.5.3, postcss@^8.5.6:
- version "8.5.6"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c"
- integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
- dependencies:
- nanoid "^3.3.11"
+ nanoid "^3.3.8"
picocolors "^1.1.1"
source-map-js "^1.2.1"
@@ -7509,60 +6263,50 @@ prebuild-install@^7.1.1:
tar-fs "^2.0.0"
tunnel-agent "^0.6.0"
-precinct@^12.0.0:
- version "12.2.0"
- resolved "https://registry.yarnpkg.com/precinct/-/precinct-12.2.0.tgz#6ab18f48034cc534f2c8fedb318f19a11bcd171b"
- integrity sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w==
- dependencies:
- "@dependents/detective-less" "^5.0.1"
- commander "^12.1.0"
- detective-amd "^6.0.1"
- detective-cjs "^6.0.1"
- detective-es6 "^5.0.1"
- detective-postcss "^7.0.1"
- detective-sass "^6.0.1"
- detective-scss "^5.0.1"
- detective-stylus "^5.0.1"
- detective-typescript "^14.0.0"
- detective-vue2 "^2.2.0"
- module-definition "^6.0.1"
- node-source-walk "^7.0.1"
- postcss "^8.5.1"
- typescript "^5.7.3"
-
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+prettier-linter-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+ integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+ dependencies:
+ fast-diff "^1.1.2"
+
prettier@^3.5.3:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393"
- integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5"
+ integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==
pretty-bytes@^6.1.1:
version "6.1.1"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.1.1.tgz#38cd6bb46f47afbf667c202cfc754bffd2016a3b"
integrity sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==
-prisma@^6.11.1:
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/prisma/-/prisma-6.12.0.tgz#4f5416c27b6f18df89c6fe42c9fb0e52f8fedc9a"
- integrity sha512-pmV7NEqQej9WjizN6RSNIwf7Y+jeh9mY1JEX2WjGxJi4YZWexClhde1yz/FuvAM+cTwzchcMytu2m4I6wPkIzg==
+pretty-ms@^9.0.0:
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-9.2.0.tgz#e14c0aad6493b69ed63114442a84133d7e560ef0"
+ integrity sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==
dependencies:
- "@prisma/config" "6.12.0"
- "@prisma/engines" "6.12.0"
+ parse-ms "^4.0.0"
+
+prisma@^6.7.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/prisma/-/prisma-6.7.0.tgz#7890e352bde11f6ec3018802d3fc1bcbe0027bd2"
+ integrity sha512-vArg+4UqnQ13CVhc2WUosemwh6hr6cr6FY2uzDvCIFwH8pu8BXVv38PktoMLVjtX7sbYThxbnZF5YiR8sN2clw==
+ dependencies:
+ "@prisma/config" "6.7.0"
+ "@prisma/engines" "6.7.0"
+ optionalDependencies:
+ fsevents "2.3.3"
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-process-warning@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7"
- integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==
-
process@^0.11.10:
version "0.11.10"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
@@ -7587,9 +6331,9 @@ proxy-from-env@^1.1.0:
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
pump@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d"
- integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8"
+ integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
@@ -7599,14 +6343,7 @@ punycode@^2.1.0:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-qs@^6.9.6:
- version "6.14.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930"
- integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==
- dependencies:
- side-channel "^1.1.0"
-
-quansync@^0.2.8:
+quansync@^0.2.7, quansync@^0.2.8:
version "0.2.10"
resolved "https://registry.yarnpkg.com/quansync/-/quansync-0.2.10.tgz#32053cf166fa36511aae95fc49796116f2dc20e1"
integrity sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==
@@ -7616,16 +6353,6 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-quick-format-unescaped@^4.0.3:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7"
- integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==
-
-quote-unquote@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/quote-unquote/-/quote-unquote-1.0.0.tgz#67a9a77148effeaf81a4d428404a710baaac8a0b"
- integrity sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==
-
radix3@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0"
@@ -7638,7 +6365,7 @@ randombytes@^2.1.0:
dependencies:
safe-buffer "^5.1.0"
-range-parser@^1.2.1:
+range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
@@ -7681,7 +6408,7 @@ read-pkg@^9.0.0:
type-fest "^4.6.0"
unicorn-magic "^0.1.0"
-readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.2:
+readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0:
version "3.6.2"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
@@ -7733,18 +6460,6 @@ readdirp@^4.0.1:
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d"
integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==
-readdirp@~3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
- integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
- dependencies:
- picomatch "^2.2.1"
-
-real-require@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78"
- integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==
-
redis-errors@^1.0.0, redis-errors@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
@@ -7784,21 +6499,11 @@ regjsparser@^0.12.0:
dependencies:
jsesc "~3.0.2"
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
- integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==
-
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
-require-package-name@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9"
- integrity sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==
-
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
@@ -7814,7 +6519,7 @@ resolve-pkg-maps@^1.0.0:
resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
-resolve@^1.22.1:
+resolve@^1.22.1, resolve@^1.22.4:
version "1.22.10"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
@@ -7823,15 +6528,6 @@ resolve@^1.22.1:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-resolve@^2.0.0-next.1:
- version "2.0.0-next.5"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c"
- integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==
- dependencies:
- is-core-module "^2.13.0"
- path-parse "^1.0.7"
- supports-preserve-symlinks-flag "^1.0.0"
-
restructure@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/restructure/-/restructure-3.0.2.tgz#e6b2fad214f78edee21797fa8160fef50eb9b49a"
@@ -7847,43 +6543,50 @@ rfdc@^1.4.1:
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
-rollup-plugin-visualizer@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-6.0.3.tgz#d05bd17e358a6d04bf593cf73556219c9c6d8dad"
- integrity sha512-ZU41GwrkDcCpVoffviuM9Clwjy5fcUxlz0oMoTXTYsK+tcIFzbdacnrr2n8TXcHxbGKKXtOdjxM2HUS4HjkwIw==
+rimraf@^5.0.5:
+ version "5.0.10"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c"
+ integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==
dependencies:
- open "^8.0.0"
+ glob "^10.3.7"
+
+rollup-plugin-visualizer@^5.14.0:
+ version "5.14.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz#be82d43fb3c644e396e2d50ac8a53d354022d57c"
+ integrity sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==
+ dependencies:
+ open "^8.4.0"
picomatch "^4.0.2"
source-map "^0.7.4"
yargs "^17.5.1"
-rollup@^4.34.9, rollup@^4.40.0, rollup@^4.45.0:
- version "4.45.1"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.45.1.tgz#d0ef72a8d0a9210d832f9c3c5f3b6a2aa4b0ba64"
- integrity sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==
+rollup@^4.30.1, rollup@^4.36.0:
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.38.0.tgz#e1ef4939aef0e1295f750ae4f73d1c8b7fc3abb8"
+ integrity sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==
dependencies:
- "@types/estree" "1.0.8"
+ "@types/estree" "1.0.7"
optionalDependencies:
- "@rollup/rollup-android-arm-eabi" "4.45.1"
- "@rollup/rollup-android-arm64" "4.45.1"
- "@rollup/rollup-darwin-arm64" "4.45.1"
- "@rollup/rollup-darwin-x64" "4.45.1"
- "@rollup/rollup-freebsd-arm64" "4.45.1"
- "@rollup/rollup-freebsd-x64" "4.45.1"
- "@rollup/rollup-linux-arm-gnueabihf" "4.45.1"
- "@rollup/rollup-linux-arm-musleabihf" "4.45.1"
- "@rollup/rollup-linux-arm64-gnu" "4.45.1"
- "@rollup/rollup-linux-arm64-musl" "4.45.1"
- "@rollup/rollup-linux-loongarch64-gnu" "4.45.1"
- "@rollup/rollup-linux-powerpc64le-gnu" "4.45.1"
- "@rollup/rollup-linux-riscv64-gnu" "4.45.1"
- "@rollup/rollup-linux-riscv64-musl" "4.45.1"
- "@rollup/rollup-linux-s390x-gnu" "4.45.1"
- "@rollup/rollup-linux-x64-gnu" "4.45.1"
- "@rollup/rollup-linux-x64-musl" "4.45.1"
- "@rollup/rollup-win32-arm64-msvc" "4.45.1"
- "@rollup/rollup-win32-ia32-msvc" "4.45.1"
- "@rollup/rollup-win32-x64-msvc" "4.45.1"
+ "@rollup/rollup-android-arm-eabi" "4.38.0"
+ "@rollup/rollup-android-arm64" "4.38.0"
+ "@rollup/rollup-darwin-arm64" "4.38.0"
+ "@rollup/rollup-darwin-x64" "4.38.0"
+ "@rollup/rollup-freebsd-arm64" "4.38.0"
+ "@rollup/rollup-freebsd-x64" "4.38.0"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.38.0"
+ "@rollup/rollup-linux-arm-musleabihf" "4.38.0"
+ "@rollup/rollup-linux-arm64-gnu" "4.38.0"
+ "@rollup/rollup-linux-arm64-musl" "4.38.0"
+ "@rollup/rollup-linux-loongarch64-gnu" "4.38.0"
+ "@rollup/rollup-linux-powerpc64le-gnu" "4.38.0"
+ "@rollup/rollup-linux-riscv64-gnu" "4.38.0"
+ "@rollup/rollup-linux-riscv64-musl" "4.38.0"
+ "@rollup/rollup-linux-s390x-gnu" "4.38.0"
+ "@rollup/rollup-linux-x64-gnu" "4.38.0"
+ "@rollup/rollup-linux-x64-musl" "4.38.0"
+ "@rollup/rollup-win32-arm64-msvc" "4.38.0"
+ "@rollup/rollup-win32-ia32-msvc" "4.38.0"
+ "@rollup/rollup-win32-x64-msvc" "4.38.0"
fsevents "~2.3.2"
run-applescript@^7.0.0:
@@ -7908,27 +6611,10 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-safe-stable-stringify@^2.3.1:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd"
- integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==
-
-"safer-buffer@>= 2.1.2 < 3.0.0":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-sanitize-filename@^1.6.3:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378"
- integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==
- dependencies:
- truncate-utf8-bytes "^1.0.0"
-
sass@^1.79.4:
- version "1.89.2"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.89.2.tgz#a771716aeae774e2b529f72c0ff2dfd46c9de10e"
- integrity sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==
+ version "1.86.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.86.0.tgz#f49464fb6237a903a93f4e8760ef6e37a5030114"
+ integrity sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==
dependencies:
chokidar "^4.0.0"
immutable "^5.0.2"
@@ -7936,11 +6622,6 @@ sass@^1.79.4:
optionalDependencies:
"@parcel/watcher" "^2.4.1"
-sax@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f"
- integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==
-
scslre@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/scslre/-/scslre-0.3.0.tgz#c3211e9bfc5547fc86b1eabaa34ed1a657060155"
@@ -7955,37 +6636,34 @@ scule@^1.3.0:
resolved "https://registry.yarnpkg.com/scule/-/scule-1.3.0.tgz#6efbd22fd0bb801bdcc585c89266a7d2daa8fbd3"
integrity sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==
-secure-json-parse@^2.4.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862"
- integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==
-
semver@^6.3.1:
version "6.3.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1, semver@^7.7.2:
- version "7.7.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
- integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
+semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1:
+ version "7.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
+ integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
-send@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/send/-/send-1.2.0.tgz#32a7554fb777b831dfa828370f773a3808d37212"
- integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==
+send@0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
+ integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
dependencies:
- debug "^4.3.5"
- encodeurl "^2.0.0"
- escape-html "^1.0.3"
- etag "^1.8.1"
- fresh "^2.0.0"
- http-errors "^2.0.0"
- mime-types "^3.0.1"
- ms "^2.1.3"
- on-finished "^2.4.1"
- range-parser "^1.2.1"
- statuses "^2.0.1"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
serialize-javascript@^6.0.1:
version "6.0.2"
@@ -8001,15 +6679,15 @@ serve-placeholder@^2.0.2:
dependencies:
defu "^6.1.4"
-serve-static@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.0.tgz#9c02564ee259bdd2251b82d659a2e7e1938d66f9"
- integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==
+serve-static@^1.16.2:
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
+ integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
dependencies:
- encodeurl "^2.0.0"
- escape-html "^1.0.3"
- parseurl "^1.3.3"
- send "^1.2.0"
+ encodeurl "~2.0.0"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.19.0"
setprototypeof@1.2.0:
version "1.2.0"
@@ -8030,6 +6708,35 @@ sharp@^0.32.6:
tar-fs "^3.0.4"
tunnel-agent "^0.6.0"
+sharp@^0.33.5:
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e"
+ integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==
+ dependencies:
+ color "^4.2.3"
+ detect-libc "^2.0.3"
+ semver "^7.6.3"
+ optionalDependencies:
+ "@img/sharp-darwin-arm64" "0.33.5"
+ "@img/sharp-darwin-x64" "0.33.5"
+ "@img/sharp-libvips-darwin-arm64" "1.0.4"
+ "@img/sharp-libvips-darwin-x64" "1.0.4"
+ "@img/sharp-libvips-linux-arm" "1.0.5"
+ "@img/sharp-libvips-linux-arm64" "1.0.4"
+ "@img/sharp-libvips-linux-s390x" "1.0.4"
+ "@img/sharp-libvips-linux-x64" "1.0.4"
+ "@img/sharp-libvips-linuxmusl-arm64" "1.0.4"
+ "@img/sharp-libvips-linuxmusl-x64" "1.0.4"
+ "@img/sharp-linux-arm" "0.33.5"
+ "@img/sharp-linux-arm64" "0.33.5"
+ "@img/sharp-linux-s390x" "0.33.5"
+ "@img/sharp-linux-x64" "0.33.5"
+ "@img/sharp-linuxmusl-arm64" "0.33.5"
+ "@img/sharp-linuxmusl-x64" "0.33.5"
+ "@img/sharp-wasm32" "0.33.5"
+ "@img/sharp-win32-ia32" "0.33.5"
+ "@img/sharp-win32-x64" "0.33.5"
+
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -8043,49 +6750,9 @@ shebang-regex@^3.0.0:
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
shell-quote@^1.8.1:
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b"
- integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==
-
-side-channel-list@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
- integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
- dependencies:
- es-errors "^1.3.0"
- object-inspect "^1.13.3"
-
-side-channel-map@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42"
- integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==
- dependencies:
- call-bound "^1.0.2"
- es-errors "^1.3.0"
- get-intrinsic "^1.2.5"
- object-inspect "^1.13.3"
-
-side-channel-weakmap@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea"
- integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==
- dependencies:
- call-bound "^1.0.2"
- es-errors "^1.3.0"
- get-intrinsic "^1.2.5"
- object-inspect "^1.13.3"
- side-channel-map "^1.0.1"
-
-side-channel@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
- integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
- dependencies:
- es-errors "^1.3.0"
- object-inspect "^1.13.3"
- side-channel-list "^1.0.0"
- side-channel-map "^1.0.1"
- side-channel-weakmap "^1.0.2"
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a"
+ integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==
signal-exit@^4.0.1, signal-exit@^4.1.0:
version "4.1.0"
@@ -8106,14 +6773,14 @@ simple-get@^4.0.0, simple-get@^4.0.1:
once "^1.3.1"
simple-concat "^1.0.0"
-simple-git@^3.28.0:
- version "3.28.0"
- resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.28.0.tgz#c6345b2e387880f8450788a1e388573366ae48ac"
- integrity sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==
+simple-git@^3.27.0:
+ version "3.27.0"
+ resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.27.0.tgz#f4b09e807bda56a4a3968f635c0e4888d3decbd5"
+ integrity sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==
dependencies:
"@kwsites/file-exists" "^1.1.1"
"@kwsites/promise-deferred" "^1.1.1"
- debug "^4.4.0"
+ debug "^4.3.5"
simple-swizzle@^0.2.2:
version "0.2.2"
@@ -8141,29 +6808,27 @@ slash@^5.1.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce"
integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==
+slashes@^3.0.12:
+ version "3.0.12"
+ resolved "https://registry.yarnpkg.com/slashes/-/slashes-3.0.12.tgz#3d664c877ad542dc1509eaf2c50f38d483a6435a"
+ integrity sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==
+
smob@^1.0.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/smob/-/smob-1.5.0.tgz#85d79a1403abf128d24d3ebc1cdc5e1a9548d3ab"
integrity sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==
-sonic-boom@^4.0.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d"
- integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==
- dependencies:
- atomic-sleep "^1.0.0"
-
sortablejs@1.14.0:
version "1.14.0"
resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.14.0.tgz#6d2e17ccbdb25f464734df621d4f35d4ab35b3d8"
integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==
-"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0, source-map-js@^1.2.1:
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.0, source-map-js@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
-source-map-support@^0.5.21, source-map-support@~0.5.20:
+source-map-support@~0.5.20:
version "0.5.21"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
@@ -8171,15 +6836,15 @@ source-map-support@^0.5.21, source-map-support@~0.5.20:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map@^0.6.0, source-map@~0.6.1:
+source-map@^0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
source-map@^0.7.4:
- version "0.7.6"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.6.tgz#a3658ab87e5b6429c8a1f3ba0083d4c61ca3ef02"
- integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
spdx-correct@^3.0.0:
version "3.2.0"
@@ -8220,20 +6885,10 @@ speakingurl@^14.0.1:
resolved "https://registry.yarnpkg.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53"
integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==
-split2@^4.0.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"
- integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
-
-stable-hash-x@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/stable-hash-x/-/stable-hash-x-0.2.0.tgz#dfd76bfa5d839a7470125c6a6b3c8b22061793e9"
- integrity sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==
-
-stack-trace@0.0.x:
- version "0.0.10"
- resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
- integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==
+stable-hash@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.5.tgz#94e8837aaeac5b4d0f631d2972adef2924b40269"
+ integrity sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==
standard-as-callback@^2.1.0:
version "2.1.0"
@@ -8245,15 +6900,10 @@ statuses@2.0.1:
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
-statuses@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382"
- integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==
-
-std-env@^3.7.0, std-env@^3.8.1, std-env@^3.9.0:
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1"
- integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==
+std-env@^3.7.0, std-env@^3.8.1:
+ version "3.8.1"
+ resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.1.tgz#2b81c631c62e3d0b964b87f099b8dcab6c9a5346"
+ integrity sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==
stream-head@^3.0.0:
version "3.0.0"
@@ -8272,9 +6922,9 @@ stream-mime-type@^2.0.0:
stream-head "^3.0.0"
streamx@^2.15.0, streamx@^2.21.0:
- version "2.22.1"
- resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.22.1.tgz#c97cbb0ce18da4f4db5a971dc9ab68ff5dc7f5a5"
- integrity sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==
+ version "2.22.0"
+ resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.22.0.tgz#cd7b5e57c95aaef0ff9b2aef7905afa62ec6e4a7"
+ integrity sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==
dependencies:
fast-fifo "^1.3.2"
text-decoder "^1.1.0"
@@ -8348,6 +6998,11 @@ strip-final-newline@^3.0.0:
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
+strip-final-newline@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz#35a369ec2ac43df356e3edd5dcebb6429aa1fa5c"
+ integrity sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==
+
strip-indent@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853"
@@ -8385,15 +7040,15 @@ structured-clone-es@^1.0.0:
resolved "https://registry.yarnpkg.com/structured-clone-es/-/structured-clone-es-1.0.0.tgz#cc37f73c519c0d9e5d8d8efd3a7a9250207e688d"
integrity sha512-FL8EeKFFyNQv5cMnXI31CIMCsFarSVI2bF0U0ImeNE3g/F1IvJQyqzOXxPBRXiwQfyBTlbNe88jh1jFW0O/jiQ==
-stylehacks@^7.0.5:
- version "7.0.6"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-7.0.6.tgz#b52653ec54b4d902268df4be5db5e16f18822b31"
- integrity sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==
+stylehacks@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-7.0.4.tgz#9c21f7374f4bccc0082412b859b3c89d77d3277c"
+ integrity sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==
dependencies:
- browserslist "^4.25.1"
- postcss-selector-parser "^7.1.0"
+ browserslist "^4.23.3"
+ postcss-selector-parser "^6.1.2"
-superjson@^2.2.2:
+superjson@^2.2.1:
version "2.2.2"
resolved "https://registry.yarnpkg.com/superjson/-/superjson-2.2.2.tgz#9d52bf0bf6b5751a3c3472f1292e714782ba3173"
integrity sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==
@@ -8417,7 +7072,7 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-svgo@^3.2.0:
+svgo@^3.2.0, svgo@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8"
integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==
@@ -8430,46 +7085,41 @@ svgo@^3.2.0:
csso "^5.0.5"
picocolors "^1.0.0"
-svgo@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-4.0.0.tgz#17e0fa2eaccf429e0ec0d2179169abde9ba8ad3d"
- integrity sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==
+synckit@^0.11.0:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.4.tgz#48972326b59723fc15b8d159803cf8302b545d59"
+ integrity sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==
dependencies:
- commander "^11.1.0"
- css-select "^5.1.0"
- css-tree "^3.0.1"
- css-what "^6.1.0"
- csso "^5.0.5"
- picocolors "^1.1.1"
- sax "^1.4.1"
-
-synckit@^0.10.0:
- version "0.10.4"
- resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.10.4.tgz#a8af59be664d324be5271e86146075f6e93d5fe9"
- integrity sha512-2SG1TnJGjMkD4+gblONMGYSrwAzYi+ymOitD+Jb/iMYm57nH20PlkVeMQRah3yDMKEa0QQYUF/QPWpdW7C6zNg==
- dependencies:
- "@pkgr/core" "^0.2.0"
+ "@pkgr/core" "^0.2.3"
tslib "^2.8.1"
+synckit@^0.9.1:
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62"
+ integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==
+ dependencies:
+ "@pkgr/core" "^0.1.0"
+ tslib "^2.6.2"
+
system-architecture@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d"
integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==
-tailwindcss@4.1.11, tailwindcss@^4.0.0:
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.1.11.tgz#799af3e98c19c5baaefafc6e0c16304a0e684854"
- integrity sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==
+tailwindcss@4.0.17, tailwindcss@^4.0.0:
+ version "4.0.17"
+ resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.0.17.tgz#44332e28d4213385727b6199e07ab296d8bdfa42"
+ integrity sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==
tapable@^2.2.0:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872"
- integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
tar-fs@^2.0.0:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.3.tgz#fb3b8843a26b6f13a08e606f7922875eb1fbbf92"
- integrity sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.2.tgz#425f154f3404cb16cb8ff6e671d45ab2ed9596c5"
+ integrity sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==
dependencies:
chownr "^1.1.1"
mkdirp-classic "^0.5.2"
@@ -8477,9 +7127,9 @@ tar-fs@^2.0.0:
tar-stream "^2.1.4"
tar-fs@^3.0.4:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.1.0.tgz#4675e2254d81410e609d91581a762608de999d25"
- integrity sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.8.tgz#8f62012537d5ff89252d01e48690dc4ebed33ab7"
+ integrity sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==
dependencies:
pump "^3.0.0"
tar-stream "^3.1.5"
@@ -8507,7 +7157,7 @@ tar-stream@^3.0.0, tar-stream@^3.1.5:
fast-fifo "^1.2.0"
streamx "^2.15.0"
-tar@^7.4.0, tar@^7.4.3:
+tar@^7.4.0:
version "7.4.3"
resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571"
integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==
@@ -8520,12 +7170,12 @@ tar@^7.4.0, tar@^7.4.3:
yallist "^5.0.0"
terser@^5.17.4:
- version "5.43.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d"
- integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==
+ version "5.39.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a"
+ integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==
dependencies:
"@jridgewell/source-map" "^0.3.3"
- acorn "^8.14.0"
+ acorn "^8.8.2"
commander "^2.20.0"
source-map-support "~0.5.20"
@@ -8536,18 +7186,6 @@ text-decoder@^1.1.0:
dependencies:
b4a "^1.6.4"
-text-hex@1.0.x:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
- integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
-
-thread-stream@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1"
- integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==
- dependencies:
- real-require "^0.2.0"
-
through2@4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764"
@@ -8575,26 +7213,14 @@ tinyexec@^1.0.1:
resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.0.1.tgz#70c31ab7abbb4aea0a24f55d120e5990bfa1e0b1"
integrity sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==
-tinyglobby@0.2.14, tinyglobby@^0.2.13, tinyglobby@^0.2.14:
- version "0.2.14"
- resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d"
- integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==
+tinyglobby@0.2.12, tinyglobby@^0.2.12:
+ version "0.2.12"
+ resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5"
+ integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==
dependencies:
- fdir "^6.4.4"
+ fdir "^6.4.3"
picomatch "^4.0.2"
-tmp-promise@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7"
- integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==
- dependencies:
- tmp "^0.2.0"
-
-tmp@^0.2.0:
- version "0.2.4"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.4.tgz#c6db987a2ccc97f812f17137b36af2b6521b0d13"
- integrity sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==
-
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -8615,16 +7241,6 @@ token-types@^5.0.1:
"@tokenizer/token" "^0.3.0"
ieee754 "^1.2.1"
-toml@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee"
- integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==
-
-tosource@^2.0.0-alpha.3:
- version "2.0.0-alpha.3"
- resolved "https://registry.yarnpkg.com/tosource/-/tosource-2.0.0-alpha.3.tgz#ef385dac9092e009bf25c018838ddaae436daeb6"
- integrity sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==
-
totalist@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8"
@@ -8635,24 +7251,12 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-triple-beam@^1.3.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984"
- integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==
-
-truncate-utf8-bytes@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
- integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==
- dependencies:
- utf8-byte-length "^1.0.1"
-
-ts-api-utils@^2.1.0:
+ts-api-utils@^2.0.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91"
integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==
-tslib@^2.4.0, tslib@^2.6.3, tslib@^2.8.0, tslib@^2.8.1:
+tslib@^2.4.0, tslib@^2.6.2, tslib@^2.8.0, tslib@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
@@ -8678,30 +7282,35 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
-type-fest@^4.18.2, type-fest@^4.39.1, type-fest@^4.6.0:
- version "4.41.0"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58"
- integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==
+type-fest@^4.18.2:
+ version "4.38.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.38.0.tgz#659fa14d1a71c2811400aa3b5272627e0c1e6b96"
+ integrity sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==
+
+type-fest@^4.37.0, type-fest@^4.6.0:
+ version "4.39.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.39.1.tgz#7521f6944e279abaf79cf60cfbc4823f4858083e"
+ integrity sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==
type-level-regexp@~0.1.17:
version "0.1.17"
resolved "https://registry.yarnpkg.com/type-level-regexp/-/type-level-regexp-0.1.17.tgz#ec1bf7dd65b85201f9863031d6f023bdefc2410f"
integrity sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==
-typescript@^5.6.2, typescript@^5.7.3, typescript@^5.8.3:
+typescript@^5.8.3:
version "5.8.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e"
integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==
-ufo@^1.1.2, ufo@^1.3.2, ufo@^1.5.4, ufo@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b"
- integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==
+ufo@^1.1.2, ufo@^1.3.2, ufo@^1.4.0, ufo@^1.5.4:
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
+ integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
-ultrahtml@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/ultrahtml/-/ultrahtml-1.6.0.tgz#0d1aad7bbfeae512438d30e799c11622127a1ac8"
- integrity sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==
+ultrahtml@^1.5.3:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/ultrahtml/-/ultrahtml-1.5.3.tgz#e7a903a4b28a0e49b71b0801b444050bb0a369c7"
+ integrity sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==
uncrypto@^0.1.3:
version "0.1.3"
@@ -8723,36 +7332,26 @@ unctx@^2.4.1:
magic-string "^0.30.17"
unplugin "^2.1.0"
-undici-types@~6.21.0:
- version "6.21.0"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb"
- integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
+undici-types@~6.20.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433"
+ integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==
-undici-types@~7.8.0:
- version "7.8.0"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294"
- integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==
-
-undici@^7.12.0:
- version "7.12.0"
- resolved "https://registry.yarnpkg.com/undici/-/undici-7.12.0.tgz#e93244fa49383e8a0e1a4295048fd454541c7ccb"
- integrity sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==
-
-unenv@^2.0.0-rc.18:
- version "2.0.0-rc.18"
- resolved "https://registry.yarnpkg.com/unenv/-/unenv-2.0.0-rc.18.tgz#967e9c797e2221a4b03879f48e3a15efaeb96c4b"
- integrity sha512-O0oVQVJ2X3Q8H4HITJr4e2cWxMYBeZ+p8S25yoKCxVCgDWtIJDcgwWNonYz12tI3ylVQCRyPV/Bdq0KJeXo7AA==
+unenv@^2.0.0-rc.15:
+ version "2.0.0-rc.15"
+ resolved "https://registry.yarnpkg.com/unenv/-/unenv-2.0.0-rc.15.tgz#7fe427b6634f00bda1ade4fecdbc6b2dd7af63be"
+ integrity sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==
dependencies:
defu "^6.1.4"
- exsolve "^1.0.7"
+ exsolve "^1.0.4"
ohash "^2.0.11"
pathe "^2.0.3"
- ufo "^1.6.1"
+ ufo "^1.5.4"
-unhead@2.0.12:
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/unhead/-/unhead-2.0.12.tgz#70ad5a098890c8de493994b3ee354bc84f173264"
- integrity sha512-5oo0lwz81XDXCmrHGzgmbaNOxM8R9MZ3FkEs2ROHeW8e16xsrv7qXykENlISrcxr3RLPHQEsD1b6js9P2Oj/Ow==
+unhead@2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/unhead/-/unhead-2.0.5.tgz#66ad4b3bddbcb19d90eff38bf680e1407c04075e"
+ integrity sha512-bG4wyp+KuW+ivQYtTQvnvtMM55ziIrQ9Yq1/VAm099buBgH0CoBWgu39jkSUoE4oZ4Qki8SsnMbq2gL0h3/sUA==
dependencies:
hookable "^5.5.3"
@@ -8782,51 +7381,39 @@ unicorn-magic@^0.3.0:
resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz#4efd45c85a69e0dd576d25532fbfa22aa5c8a104"
integrity sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==
-unifont@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/unifont/-/unifont-0.4.1.tgz#b434984e11c8490929daa6a70c84c95d5459a004"
- integrity sha512-zKSY9qO8svWYns+FGKjyVdLvpGPwqmsCjeJLN1xndMiqxHWBAhoWDMYMG960MxeV48clBmG+fDP59dHY1VoZvg==
+unifont@^0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/unifont/-/unifont-0.1.7.tgz#17b09cc6c98c10660a13b7d8fa582097ba2c20c7"
+ integrity sha512-UyN6r/TUyl69iW/jhXaCtuwA6bP9ZSLhVViwgP8LH9EHRGk5FyIMDxvClqD5z2BV6MI9GMATzd0dyLqFxKkUmQ==
dependencies:
css-tree "^3.0.0"
- ohash "^2.0.0"
+ ohash "^1.1.4"
-unimport@^5.1.0, unimport@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/unimport/-/unimport-5.2.0.tgz#bb0277d268e56b2a65655e8147f5998b4cb782cf"
- integrity sha512-bTuAMMOOqIAyjV4i4UH7P07pO+EsVxmhOzQ2YJ290J6mkLUdozNhb5I/YoOEheeNADC03ent3Qj07X0fWfUpmw==
+unimport@^4.1.2, unimport@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/unimport/-/unimport-4.1.3.tgz#938f37f90faa6f29dd156ded98f1990bd5acee50"
+ integrity sha512-H+IVJ7rAkE3b+oC8rSJ2FsPaVsweeMC8eKZc+C6Mz7+hxDF45AnrY/tVCNRBvzMwWNcJEV67WdAVcal27iMjOw==
dependencies:
- acorn "^8.15.0"
+ acorn "^8.14.1"
escape-string-regexp "^5.0.0"
estree-walker "^3.0.3"
local-pkg "^1.1.1"
magic-string "^0.30.17"
mlly "^1.7.4"
pathe "^2.0.3"
- picomatch "^4.0.3"
- pkg-types "^2.2.0"
+ picomatch "^4.0.2"
+ pkg-types "^2.1.0"
scule "^1.3.0"
strip-literal "^3.0.0"
- tinyglobby "^0.2.14"
- unplugin "^2.3.5"
+ tinyglobby "^0.2.12"
+ unplugin "^2.2.2"
unplugin-utils "^0.2.4"
-universalify@^0.1.0, universalify@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
universalify@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
-unixify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090"
- integrity sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==
- dependencies:
- normalize-path "^2.1.1"
-
unplugin-remove@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/unplugin-remove/-/unplugin-remove-1.0.3.tgz#daf24110c2a0f5f679bb72aed9418078b1008043"
@@ -8840,7 +7427,7 @@ unplugin-remove@^1.0.3:
magic-string "^0.30.11"
unplugin "^1.12.0"
-unplugin-utils@^0.2.3, unplugin-utils@^0.2.4:
+unplugin-utils@^0.2.0, unplugin-utils@^0.2.3, unplugin-utils@^0.2.4:
version "0.2.4"
resolved "https://registry.yarnpkg.com/unplugin-utils/-/unplugin-utils-0.2.4.tgz#56e4029a6906645a10644f8befc404b06d5d24d0"
integrity sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==
@@ -8869,27 +7456,7 @@ unplugin-vue-router@^0.12.0:
unplugin-utils "^0.2.3"
yaml "^2.7.0"
-unplugin-vue-router@^0.14.0:
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/unplugin-vue-router/-/unplugin-vue-router-0.14.0.tgz#84de65620741b3b76a5a7b049e2491b873e1fc93"
- integrity sha512-ipjunvS5e2aFHBAUFuLbHl2aHKbXXXBhTxGT9wZx66fNVPdEQzVVitF8nODr1plANhTTa3UZ+DQu9uyLngMzoQ==
- dependencies:
- "@vue-macros/common" "3.0.0-beta.15"
- ast-walker-scope "^0.8.1"
- chokidar "^4.0.3"
- fast-glob "^3.3.3"
- json5 "^2.2.3"
- local-pkg "^1.1.1"
- magic-string "^0.30.17"
- mlly "^1.7.4"
- pathe "^2.0.3"
- picomatch "^4.0.2"
- scule "^1.3.0"
- unplugin "^2.3.5"
- unplugin-utils "^0.2.4"
- yaml "^2.8.0"
-
-unplugin@^1.1.0, unplugin@^1.10.0, unplugin@^1.12.0:
+unplugin@^1.10.0, unplugin@^1.12.0, unplugin@^1.8.3:
version "1.16.1"
resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.16.1.tgz#a844d2e3c3b14a4ac2945c42be80409321b61199"
integrity sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==
@@ -8897,55 +7464,48 @@ unplugin@^1.1.0, unplugin@^1.10.0, unplugin@^1.12.0:
acorn "^8.14.0"
webpack-virtual-modules "^0.6.2"
-unplugin@^2.0.0, unplugin@^2.1.0, unplugin@^2.2.0, unplugin@^2.2.2, unplugin@^2.3.2, unplugin@^2.3.3, unplugin@^2.3.5:
- version "2.3.5"
- resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-2.3.5.tgz#c689d806e2a15c95aeb794f285356c6bcdea4a2e"
- integrity sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==
+unplugin@^2.1.0, unplugin@^2.2.0, unplugin@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-2.2.2.tgz#82f8c638ba944f6135e99ae5a8dc9eba9601b4a8"
+ integrity sha512-Qp+iiD+qCRnUek+nDoYvtWX7tfnYyXsrOnJ452FRTgOyKmTM7TUJ3l+PLPJOOWPTUyKISKp4isC5JJPSXUjGgw==
dependencies:
acorn "^8.14.1"
- picomatch "^4.0.2"
webpack-virtual-modules "^0.6.2"
-unrs-resolver@^1.9.2:
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz#be9cd8686c99ef53ecb96df2a473c64d304048a9"
- integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==
- dependencies:
- napi-postinstall "^0.3.0"
+unrs-resolver@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.4.1.tgz#da01a5ca745a431b109af6798a775d9c4ba4ae0d"
+ integrity sha512-MhPB3wBI5BR8TGieTb08XuYlE8oFVEXdSAgat3psdlRyejl8ojQ8iqPcjh094qCZ1r+TnkxzP6BeCd/umfHckQ==
optionalDependencies:
- "@unrs/resolver-binding-android-arm-eabi" "1.11.1"
- "@unrs/resolver-binding-android-arm64" "1.11.1"
- "@unrs/resolver-binding-darwin-arm64" "1.11.1"
- "@unrs/resolver-binding-darwin-x64" "1.11.1"
- "@unrs/resolver-binding-freebsd-x64" "1.11.1"
- "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1"
- "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1"
- "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-arm64-musl" "1.11.1"
- "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1"
- "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-x64-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-x64-musl" "1.11.1"
- "@unrs/resolver-binding-wasm32-wasi" "1.11.1"
- "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1"
- "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1"
- "@unrs/resolver-binding-win32-x64-msvc" "1.11.1"
+ "@unrs/resolver-binding-darwin-arm64" "1.4.1"
+ "@unrs/resolver-binding-darwin-x64" "1.4.1"
+ "@unrs/resolver-binding-freebsd-x64" "1.4.1"
+ "@unrs/resolver-binding-linux-arm-gnueabihf" "1.4.1"
+ "@unrs/resolver-binding-linux-arm-musleabihf" "1.4.1"
+ "@unrs/resolver-binding-linux-arm64-gnu" "1.4.1"
+ "@unrs/resolver-binding-linux-arm64-musl" "1.4.1"
+ "@unrs/resolver-binding-linux-ppc64-gnu" "1.4.1"
+ "@unrs/resolver-binding-linux-s390x-gnu" "1.4.1"
+ "@unrs/resolver-binding-linux-x64-gnu" "1.4.1"
+ "@unrs/resolver-binding-linux-x64-musl" "1.4.1"
+ "@unrs/resolver-binding-wasm32-wasi" "1.4.1"
+ "@unrs/resolver-binding-win32-arm64-msvc" "1.4.1"
+ "@unrs/resolver-binding-win32-ia32-msvc" "1.4.1"
+ "@unrs/resolver-binding-win32-x64-msvc" "1.4.1"
-unstorage@^1.10.1, unstorage@^1.15.0, unstorage@^1.16.0, unstorage@^1.16.1:
- version "1.16.1"
- resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.16.1.tgz#b2c25d05610a64de7be61e54f61ec79c5f9ba43c"
- integrity sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==
+unstorage@^1.10.1, unstorage@^1.15.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.15.0.tgz#d1f23cba0901c5317d15a751a299e50fbb637674"
+ integrity sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==
dependencies:
anymatch "^3.1.3"
chokidar "^4.0.3"
- destr "^2.0.5"
- h3 "^1.15.3"
+ destr "^2.0.3"
+ h3 "^1.15.0"
lru-cache "^10.4.3"
node-fetch-native "^1.6.6"
ofetch "^1.4.1"
- ufo "^1.6.1"
+ ufo "^1.5.4"
untun@^0.1.3:
version "0.1.3"
@@ -8979,7 +7539,7 @@ unwasm@^0.3.9:
pkg-types "^1.0.3"
unplugin "^1.10.0"
-update-browserslist-db@^1.1.3:
+update-browserslist-db@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420"
integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
@@ -8999,31 +7559,11 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
-urlpattern-polyfill@8.0.2:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5"
- integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==
-
-urlpattern-polyfill@^10.0.0:
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz#1b2517e614136c73ba32948d5e7a3a063cba8e74"
- integrity sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==
-
-utf8-byte-length@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz#f9f63910d15536ee2b2d5dd4665389715eac5c1e"
- integrity sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==
-
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-uuid@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912"
- integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==
-
validate-npm-package-license@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@@ -9032,107 +7572,95 @@ validate-npm-package-license@^3.0.4:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
-vite-dev-rpc@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/vite-dev-rpc/-/vite-dev-rpc-1.1.0.tgz#a54be63cc4dbb127bce1360e4b12d9038087c204"
- integrity sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==
+vite-dev-rpc@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/vite-dev-rpc/-/vite-dev-rpc-1.0.7.tgz#e81567c4e5b7e7d8074af56a2120bd0ea61cbdb7"
+ integrity sha512-FxSTEofDbUi2XXujCA+hdzCDkXFG1PXktMjSk1efq9Qb5lOYaaM9zNSvKvPPF7645Bak79kSp1PTooMW2wktcA==
dependencies:
- birpc "^2.4.0"
- vite-hot-client "^2.1.0"
+ birpc "^2.0.19"
+ vite-hot-client "^2.0.4"
-vite-hot-client@^2.0.4, vite-hot-client@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/vite-hot-client/-/vite-hot-client-2.1.0.tgz#88f8469875e0121eae2f460cbf35cb528c049961"
- integrity sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==
+vite-hot-client@^0.2.4:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/vite-hot-client/-/vite-hot-client-0.2.4.tgz#c88789f1615cf4e95690cd5fca98b2e449a29637"
+ integrity sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==
-vite-node@^3.2.4:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.2.4.tgz#f3676d94c4af1e76898c162c92728bca65f7bb07"
- integrity sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==
+vite-hot-client@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/vite-hot-client/-/vite-hot-client-2.0.4.tgz#db383e0337c758fbabf14dad26f9a1bcb9e9e175"
+ integrity sha512-W9LOGAyGMrbGArYJN4LBCdOC5+Zwh7dHvOHC0KmGKkJhsOzaKbpo/jEjpPKVHIW0/jBWj8RZG0NUxfgA8BxgAg==
+
+vite-node@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.1.1.tgz#ad186c07859a6e5fca7c7f563e55fb11b16557bc"
+ integrity sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==
dependencies:
cac "^6.7.14"
- debug "^4.4.1"
- es-module-lexer "^1.7.0"
+ debug "^4.4.0"
+ es-module-lexer "^1.6.0"
pathe "^2.0.3"
- vite "^5.0.0 || ^6.0.0 || ^7.0.0-0"
+ vite "^5.0.0 || ^6.0.0"
-vite-plugin-checker@^0.10.0:
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/vite-plugin-checker/-/vite-plugin-checker-0.10.1.tgz#03ea1a341e86d9ba750ed43d8a7296cf8de0d2ee"
- integrity sha512-imiBsmYTPdjQHIZiEi5BhJ7K8Z/kCjTFMn+Qa4+5ao/a4Yql4yWFcf81FDJqlMiM57iY4Q3Z7PdoEe4KydULYQ==
+vite-plugin-checker@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/vite-plugin-checker/-/vite-plugin-checker-0.9.1.tgz#9f2166047848cc9199ff05e61d12d0480b680604"
+ integrity sha512-neH3CSNWdkZ+zi+WPt/0y5+IO2I0UAI0NX6MaXqU/KxN1Lz6np/7IooRB6VVAMBa4nigqm1GRF6qNa4+EL5jDQ==
dependencies:
- "@babel/code-frame" "^7.27.1"
+ "@babel/code-frame" "^7.26.2"
chokidar "^4.0.3"
npm-run-path "^6.0.0"
picocolors "^1.1.1"
picomatch "^4.0.2"
strip-ansi "^7.1.0"
tiny-invariant "^1.3.3"
- tinyglobby "^0.2.14"
+ tinyglobby "^0.2.12"
vscode-uri "^3.1.0"
-vite-plugin-inspect@^11.3.0:
- version "11.3.0"
- resolved "https://registry.yarnpkg.com/vite-plugin-inspect/-/vite-plugin-inspect-11.3.0.tgz#7fbd961a382942e7af5be39da1acdc0f9360f8a6"
- integrity sha512-vmt7K1WVKQkuiwvsM6e5h3HDJ2pSWTnzoj+JP9Kvu3Sh2G+nFap1F1V7tqpyA4qFxM1GQ84ryffWFGQrwShERQ==
+vite-plugin-inspect@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/vite-plugin-inspect/-/vite-plugin-inspect-11.0.0.tgz#7417875e1e17e066847392e018031d47b48ca987"
+ integrity sha512-Q0RDNcMs1mbI2yGRwOzSapnnA6NFO0j88+Vb8pJX0iYMw34WczwKJi3JgheItDhbWRq/CLUR0cs+ajZpcUaIFQ==
dependencies:
- ansis "^4.1.0"
- debug "^4.4.1"
+ ansis "^3.16.0"
+ debug "^4.4.0"
error-stack-parser-es "^1.0.5"
- ohash "^2.0.11"
- open "^10.1.2"
+ ohash "^2.0.4"
+ open "^10.1.0"
perfect-debounce "^1.0.0"
sirv "^3.0.1"
- unplugin-utils "^0.2.4"
- vite-dev-rpc "^1.1.0"
+ unplugin-utils "^0.2.0"
+ vite-dev-rpc "^1.0.7"
-vite-plugin-static-copy@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/vite-plugin-static-copy/-/vite-plugin-static-copy-3.1.2.tgz#5d5e6ce965e5da6a326d47a5feb5033d52db43ca"
- integrity sha512-aVmYOzptLVOI2b1jL+cmkF7O6uhRv1u5fvOkQgbohWZp2CbR22kn9ZqkCUIt9umKF7UhdbsEpshn1rf4720QFg==
- dependencies:
- chokidar "^3.6.0"
- fs-extra "^11.3.0"
- p-map "^7.0.3"
- picocolors "^1.1.1"
- tinyglobby "^0.2.14"
-
-vite-plugin-vue-tracer@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/vite-plugin-vue-tracer/-/vite-plugin-vue-tracer-1.0.0.tgz#2b664b72bf0be2fd1cd37eec617f4ffb49ac1473"
- integrity sha512-a+UB9IwGx5uwS4uG/a9kM6fCMnxONDkOTbgCUbhFpiGhqfxrrC1+9BibV7sWwUnwj1Dg6MnRxG0trLgUZslDXA==
+vite-plugin-vue-tracer@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/vite-plugin-vue-tracer/-/vite-plugin-vue-tracer-0.1.3.tgz#6639050fd946aa911f89efd80120fea6e49fd830"
+ integrity sha512-+fN6oo0//dwZP9Ax9gRKeUroCqpQ43P57qlWgL0ljCIxAs+Rpqn/L4anIPZPgjDPga5dZH+ZJsshbF0PNJbm3Q==
dependencies:
estree-walker "^3.0.3"
- exsolve "^1.0.7"
+ exsolve "^1.0.4"
magic-string "^0.30.17"
pathe "^2.0.3"
source-map-js "^1.2.1"
-"vite@^5.0.0 || ^6.0.0 || ^7.0.0-0":
- version "7.0.6"
- resolved "https://registry.yarnpkg.com/vite/-/vite-7.0.6.tgz#7866ccb176db4bbeec0adfb3f907f077881591d0"
- integrity sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==
+"vite@^5.0.0 || ^6.0.0":
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.3.tgz#249e92d32886981ab46bc1f049ac72abc6fa81e2"
+ integrity sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==
dependencies:
esbuild "^0.25.0"
- fdir "^6.4.6"
- picomatch "^4.0.3"
- postcss "^8.5.6"
- rollup "^4.40.0"
- tinyglobby "^0.2.14"
+ postcss "^8.5.3"
+ rollup "^4.30.1"
optionalDependencies:
fsevents "~2.3.3"
-vite@^6.3.5:
- version "6.3.5"
- resolved "https://registry.yarnpkg.com/vite/-/vite-6.3.5.tgz#fec73879013c9c0128c8d284504c6d19410d12a3"
- integrity sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==
+vite@^6.2.4:
+ version "6.2.5"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.5.tgz#d093b5fe8eb96e594761584a966ab13f24457820"
+ integrity sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==
dependencies:
esbuild "^0.25.0"
- fdir "^6.4.4"
- picomatch "^4.0.2"
postcss "^8.5.3"
- rollup "^4.34.9"
- tinyglobby "^0.2.13"
+ rollup "^4.30.1"
optionalDependencies:
fsevents "~2.3.3"
@@ -9153,70 +7681,62 @@ vue-devtools-stub@^0.1.0:
resolved "https://registry.yarnpkg.com/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz#a65b9485edecd4273cedcb8102c739b83add2c81"
integrity sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==
-vue-eslint-parser@^10.2.0:
- version "10.2.0"
- resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz#cb53f89b14c7f5bf6a95c9532e3b2961ab619d61"
- integrity sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==
+vue-eslint-parser@^10.1.1:
+ version "10.1.3"
+ resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-10.1.3.tgz#96457823a5915a62001798cfd9cc15a89067bf81"
+ integrity sha512-dbCBnd2e02dYWsXoqX5yKUZlOt+ExIpq7hmHKPb5ZqKcjf++Eo0hMseFTZMLKThrUk61m+Uv6A2YSBve6ZvuDQ==
dependencies:
debug "^4.4.0"
eslint-scope "^8.2.0"
eslint-visitor-keys "^4.2.0"
espree "^10.3.0"
esquery "^1.6.0"
+ lodash "^4.17.21"
semver "^7.6.3"
-vue-i18n@^10.0.0, vue-i18n@^10.0.7:
- version "10.0.8"
- resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-10.0.8.tgz#adce21f875b29589c8bd602eb28b5c6ad2d85c97"
- integrity sha512-mIjy4utxMz9lMMo6G9vYePv7gUFt4ztOMhY9/4czDJxZ26xPeJ49MAGa9wBAE3XuXbYCrtVPmPxNjej7JJJkZQ==
- dependencies:
- "@intlify/core-base" "10.0.8"
- "@intlify/shared" "10.0.8"
- "@vue/devtools-api" "^6.5.0"
-
-vue-router@^4.5.1, vue-router@latest:
- version "4.5.1"
- resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.5.1.tgz#47bffe2d3a5479d2886a9a244547a853aa0abf69"
- integrity sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==
+vue-router@^4.5.0, vue-router@latest:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.5.0.tgz#58fc5fe374e10b6018f910328f756c3dae081f14"
+ integrity sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==
dependencies:
"@vue/devtools-api" "^6.6.4"
-vue-tsc@^3.0.1:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-3.0.4.tgz#f04f07a84046c923133ec588ef89ae1300e64e1a"
- integrity sha512-kZmSEjGtROApVBuaIcoprrXZsFNGon5ggkTJokmhQ/H1hMzCFRPQ0Ed8IHYFsmYJYvHBcdmEQVGVcRuxzPzNbw==
+vue-tsc@^2.2.8:
+ version "2.2.8"
+ resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-2.2.8.tgz#7c8e1bd9333d25241a7f9988eedf08c65483158c"
+ integrity sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==
dependencies:
- "@volar/typescript" "2.4.20"
- "@vue/language-core" "3.0.4"
+ "@volar/typescript" "~2.4.11"
+ "@vue/language-core" "2.2.8"
vue3-carousel-nuxt@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/vue3-carousel-nuxt/-/vue3-carousel-nuxt-1.1.6.tgz#71764a4833f4d865a02bd4236541ef70d3ab44b1"
- integrity sha512-y5CTJBj3HryL0l+8pzvXyWHTj/SUiBYChsces5GMyKQoad2yMXsdofzpKSrTquoCgrd1hWHUO2DBnN6ougA0Gg==
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/vue3-carousel-nuxt/-/vue3-carousel-nuxt-1.1.5.tgz#c12d521d2ab16da7cbe3778d097262cfca1117c0"
+ integrity sha512-Ee9gB1gA9WDPk+1Dxg5vb0N/xWkDwDmvAdwZJ2y+NV+yyBbKiyaZHTjpfWy57TuLeqKVWHyzv+RbDVn85l7mQw==
dependencies:
"@nuxt/kit" "^3.12.4"
- vue3-carousel "^0.15.0"
+ vue3-carousel "^0.13.0"
+
+vue3-carousel@^0.13.0:
+ version "0.13.0"
+ resolved "https://registry.yarnpkg.com/vue3-carousel/-/vue3-carousel-0.13.0.tgz#cfacf7eae610a41fad4c3aba56ddb49a7776f416"
+ integrity sha512-vio91KI4mVMlCDbVhGzW9nIyYqxu0moqroPR/OrJeaCvAK3SJYxqvH36a4/t1oEJYJsTgh+IuNiNi6c+7DVKZg==
vue3-carousel@^0.15.0:
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/vue3-carousel/-/vue3-carousel-0.15.1.tgz#df8ab7e8545730783555007e400a290497404ef2"
- integrity sha512-nV2ChLZtgAOikmls8WaVe37vO4Wagk4RYawePHIvXrFtduFnQODyzPx8MmXaAb6l+ka72yAi04ZeCyciiyJMyA==
+ version "0.15.0"
+ resolved "https://registry.yarnpkg.com/vue3-carousel/-/vue3-carousel-0.15.0.tgz#6a666566779dd30027a857ec0d92bfef97f15b27"
+ integrity sha512-yYBBEdmvsMNlgKivVHiFMKV7TlWDoMEiVLA+Vb31t1JEQILAQYADMDYYuE9mp6OSGEQpCBgt8e/EpO2MZlQhcw==
-vue3-carousel@^0.16.0:
- version "0.16.0"
- resolved "https://registry.yarnpkg.com/vue3-carousel/-/vue3-carousel-0.16.0.tgz#2b15a2ed83082eb3b91d3375d637c6d90d82d8d2"
- integrity sha512-IKRKtvHP8gNDRHSzINXwFbJ/Zy2HS+Gv2lXPnAEop6pxsvB17+fz2WQlNZ6ytilLkM5DOu/jXPoDQi/xy17bjg==
-
-vue@^3.4, vue@^3.5.17, vue@latest:
- version "3.5.18"
- resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.18.tgz#3d622425ad1391a2b0138323211ec784f4415686"
- integrity sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==
+vue@^3.5.13, vue@latest:
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.13.tgz#9f760a1a982b09c0c04a867903fc339c9f29ec0a"
+ integrity sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==
dependencies:
- "@vue/compiler-dom" "3.5.18"
- "@vue/compiler-sfc" "3.5.18"
- "@vue/runtime-dom" "3.5.18"
- "@vue/server-renderer" "3.5.18"
- "@vue/shared" "3.5.18"
+ "@vue/compiler-dom" "3.5.13"
+ "@vue/compiler-sfc" "3.5.13"
+ "@vue/runtime-dom" "3.5.13"
+ "@vue/server-renderer" "3.5.13"
+ "@vue/shared" "3.5.13"
vuedraggable@^4.1.0:
version "4.1.0"
@@ -9225,11 +7745,6 @@ vuedraggable@^4.1.0:
dependencies:
sortablejs "1.14.0"
-web-streams-polyfill@^3.0.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b"
- integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==
-
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
@@ -9240,18 +7755,6 @@ webpack-virtual-modules@^0.6.2:
resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8"
integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
-whatwg-encoding@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5"
- integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==
- dependencies:
- iconv-lite "0.6.3"
-
-whatwg-mimetype@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a"
- integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==
-
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
@@ -9274,32 +7777,6 @@ which@^5.0.0:
dependencies:
isexe "^3.1.1"
-winston-transport@^4.9.0:
- version "4.9.0"
- resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.9.0.tgz#3bba345de10297654ea6f33519424560003b3bf9"
- integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==
- dependencies:
- logform "^2.7.0"
- readable-stream "^3.6.2"
- triple-beam "^1.3.0"
-
-winston@^3.10.0:
- version "3.17.0"
- resolved "https://registry.yarnpkg.com/winston/-/winston-3.17.0.tgz#74b8665ce9b4ea7b29d0922cfccf852a08a11423"
- integrity sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==
- dependencies:
- "@colors/colors" "^1.6.0"
- "@dabh/diagnostics" "^2.0.2"
- async "^3.2.3"
- is-stream "^2.0.0"
- logform "^2.7.0"
- one-time "^1.0.0"
- readable-stream "^3.4.0"
- safe-stable-stringify "^2.3.1"
- stack-trace "0.0.x"
- triple-beam "^1.3.0"
- winston-transport "^4.9.0"
-
word-wrap@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
@@ -9337,25 +7814,10 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-write-file-atomic@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-6.0.0.tgz#e9c89c8191b3ef0606bc79fb92681aa1aa16fa93"
- integrity sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==
- dependencies:
- imurmurhash "^0.1.4"
- signal-exit "^4.0.1"
-
-ws@^8.18.2, ws@^8.18.3:
- version "8.18.3"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472"
- integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==
-
-wsl-utils@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab"
- integrity sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==
- dependencies:
- is-wsl "^3.1.0"
+ws@^8.18.1:
+ version "8.18.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb"
+ integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==
xml-name-validator@^4.0.0:
version "4.0.0"
@@ -9385,25 +7847,17 @@ yallist@^5.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533"
integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==
-yaml-eslint-parser@^1.2.2:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/yaml-eslint-parser/-/yaml-eslint-parser-1.3.0.tgz#975dd11f8349e18c15c88b0e41a6d0b0377969cd"
- integrity sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==
- dependencies:
- eslint-visitor-keys "^3.0.0"
- yaml "^2.0.0"
-
-yaml@^2.0.0, yaml@^2.7.0, yaml@^2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6"
- integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==
+yaml@^2.7.0:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.1.tgz#44a247d1b88523855679ac7fa7cda6ed7e135cf6"
+ integrity sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==
yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
-yargs@^17.0.0, yargs@^17.5.1:
+yargs@^17.5.1:
version "17.7.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
@@ -9416,14 +7870,6 @@ yargs@^17.0.0, yargs@^17.5.1:
y18n "^5.0.5"
yargs-parser "^21.1.1"
-yauzl@^2.10.0:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
- integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
- dependencies:
- buffer-crc32 "~0.2.3"
- fd-slicer "~1.1.0"
-
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
@@ -9434,36 +7880,29 @@ yocto-queue@^1.0.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.1.tgz#36d7c4739f775b3cbc28e6136e21aa057adec418"
integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==
-youch-core@^0.3.1, youch-core@^0.3.3:
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/youch-core/-/youch-core-0.3.3.tgz#c5d3d85aeea0d8bc7b36e9764ed3f14b7ceddc7d"
- integrity sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==
+yoctocolors@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/yoctocolors/-/yoctocolors-2.1.1.tgz#e0167474e9fbb9e8b3ecca738deaa61dd12e56fc"
+ integrity sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==
+
+youch-core@^0.3.1, youch-core@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/youch-core/-/youch-core-0.3.2.tgz#b8d473857cceb06f9ef5a9fd6c1038c80f132570"
+ integrity sha512-fusrlIMLeRvTFYLUjJ9KzlGC3N+6MOPJ68HNj/yJv2nz7zq8t4HEviLms2gkdRPUS7F5rZ5n+pYx9r88m6IE1g==
dependencies:
- "@poppinss/exception" "^1.2.2"
+ "@poppinss/exception" "^1.2.0"
error-stack-parser-es "^1.0.5"
-youch@4.1.0-beta.8:
- version "4.1.0-beta.8"
- resolved "https://registry.yarnpkg.com/youch/-/youch-4.1.0-beta.8.tgz#439124c40b9c5f42722b604ef071966cbbb18192"
- integrity sha512-rY2A2lSF7zC+l7HH9Mq+83D1dLlsPnEvy8jTouzaptDZM6geqZ3aJe/b7ULCwRURPtWV3vbDjA2DDMdoBol0HQ==
+youch@^4.1.0-beta.6:
+ version "4.1.0-beta.6"
+ resolved "https://registry.yarnpkg.com/youch/-/youch-4.1.0-beta.6.tgz#cdac0d912244c79a9f6c6e156e0caaba9904c958"
+ integrity sha512-y1aNsEeoLXnWb6pI9TvfNPIxySyo4Un3OGxKn7rsNj8+tgSquzXEWkzfA5y6gU0fvzmQgvx3JBn/p51qQ8Xg9A==
dependencies:
- "@poppinss/colors" "^4.1.4"
"@poppinss/dumper" "^0.6.3"
"@speed-highlight/core" "^1.2.7"
cookie "^1.0.2"
youch-core "^0.3.1"
-youch@^4.1.0-beta.10:
- version "4.1.0-beta.10"
- resolved "https://registry.yarnpkg.com/youch/-/youch-4.1.0-beta.10.tgz#94702059e0ba7668025f5cd1b5e5c0f3eb0e83c2"
- integrity sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==
- dependencies:
- "@poppinss/colors" "^4.1.5"
- "@poppinss/dumper" "^0.6.4"
- "@speed-highlight/core" "^1.2.7"
- cookie "^1.0.2"
- youch-core "^0.3.3"
-
zip-stream@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-6.0.1.tgz#e141b930ed60ccaf5d7fa9c8260e0d1748a2bbfb"
@@ -9472,8 +7911,3 @@ zip-stream@^6.0.1:
archiver-utils "^5.0.0"
compress-commons "^6.0.2"
readable-stream "^4.0.0"
-
-zod@^3.23.8:
- version "3.25.76"
- resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34"
- integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==