From 6507b1f94c6b90ea141873d52293f42f5ef13aef Mon Sep 17 00:00:00 2001 From: Jason Rasmussen Date: Fri, 26 Jun 2026 12:45:06 -0400 Subject: [PATCH] feat: pump doc references (#29331) --- .github/workflows/prepare-release.yml | 8 +- .github/workflows/test.yml | 12 +- docs/docs/developer/directories.md | 2 +- misc/release/archive-version.js | 46 -- misc/release/pump-version.sh | 80 --- misc/release/pump-wrapper.js | 7 - misc/release/pump.js | 105 --- misc/release/pump.spec.js | 87 --- mise.toml | 8 + package.json | 10 +- packages/scripts/.gitignore | 15 + packages/scripts/package.json | 36 + packages/scripts/src/cli.spec.ts | 31 + packages/scripts/src/cli.ts | 54 ++ packages/scripts/src/commands/release.spec.ts | 139 ++++ packages/scripts/src/commands/release.ts | 262 ++++++++ packages/scripts/src/main.ts | 3 + packages/scripts/src/types.ts | 55 ++ packages/scripts/tsconfig.json | 26 + packages/scripts/vite.config.ts | 25 + pnpm-lock.yaml | 623 +++++++++++------- vitest.config.js | 7 - 22 files changed, 1050 insertions(+), 591 deletions(-) delete mode 100755 misc/release/archive-version.js delete mode 100755 misc/release/pump-version.sh delete mode 100644 misc/release/pump-wrapper.js delete mode 100644 misc/release/pump.js delete mode 100644 misc/release/pump.spec.js create mode 100644 packages/scripts/.gitignore create mode 100644 packages/scripts/package.json create mode 100644 packages/scripts/src/cli.spec.ts create mode 100644 packages/scripts/src/cli.ts create mode 100644 packages/scripts/src/commands/release.spec.ts create mode 100644 packages/scripts/src/commands/release.ts create mode 100644 packages/scripts/src/main.ts create mode 100644 packages/scripts/src/types.ts create mode 100644 packages/scripts/tsconfig.json create mode 100644 packages/scripts/vite.config.ts delete mode 100644 vitest.config.js diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 6a26f23472..35b3249855 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -3,8 +3,8 @@ name: Prepare new release on: workflow_dispatch: inputs: - serverBump: - description: 'Bump server version' + releaseType: + description: 'Release type' required: true default: 'false' type: choice @@ -77,9 +77,9 @@ jobs: - name: Bump version env: - SERVER_BUMP: ${{ inputs.serverBump }} + RELEASE_TYPE: ${{ inputs.releaseType }} MOBILE_BUMP: ${{ inputs.mobileBump }} - run: pnpm --silent release -s "${SERVER_BUMP}" -m "${MOBILE_BUMP}" + run: mise //:release --type "${RELEASE_TYPE}" --mobile "${MOBILE_BUMP}" - id: output run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 222ac1d794..465f18ae8b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,8 +28,8 @@ jobs: with: github-token: ${{ steps.token.outputs.token }} filters: | - root: - - 'misc/**' + scripts: + - 'packages/scripts/**' - 'pnpm-lock.yaml' - 'mise.toml' i18n: @@ -68,10 +68,10 @@ jobs: - '.github/workflows/test.yml' force-events: 'workflow_dispatch' - root-unit-tests: - name: Test the root workspace + script-unit-tests: + name: Scripts unit tests needs: pre-job - if: ${{ fromJSON(needs.pre-job.outputs.should_run).root == true }} + if: ${{ fromJSON(needs.pre-job.outputs.should_run).scripts == true }} runs-on: ubuntu-latest permissions: contents: read @@ -94,7 +94,7 @@ jobs: github_token: ${{ steps.token.outputs.token }} - name: Run unit tests - run: pnpm test + run: pnpm --filter @immich/scripts test server-unit-tests: name: Test & Lint Server diff --git a/docs/docs/developer/directories.md b/docs/docs/developer/directories.md index 23381946bb..ef3d8d65a6 100644 --- a/docs/docs/developer/directories.md +++ b/docs/docs/developer/directories.md @@ -12,11 +12,11 @@ Our [GitHub Repository](https://github.com/immich-app/immich) is a [monorepo](ht | `.vscode/` | VSCode debug launch profiles | | `packages/cli` | Source code for the CLI | | `packages/sdk` | Source code for the generated OpenAPI SDK | +| `packages/scripts` | Scripts for version bumps and draft releases | | `docker/` | Docker compose resources for dev, test, production | | `design/` | Screenshots and logos for the README | | `docs/` | Source code for the [https://immich.app](https://immich.app) website | | `machine-learning/` | Source code for the `immich-machine-learning` docker image | -| `misc/release/` | Scripts for version bumps and draft releases | | `mobile/` | Source code for the mobile app, both Android and iOS | | `server/` | Source code for the `immich-server` docker image | | `web/` | Source code for the `web` | diff --git a/misc/release/archive-version.js b/misc/release/archive-version.js deleted file mode 100755 index eaf5d14107..0000000000 --- a/misc/release/archive-version.js +++ /dev/null @@ -1,46 +0,0 @@ -#! /usr/bin/env node -import { readFileSync, writeFileSync } from 'node:fs'; - -const asVersion = (item) => { - const { label, url } = item; - const [version] = label.substring(1).split('-'); - const [major, minor, patch] = version.split('.').map(Number); - return { major, minor, patch, label, url }; -}; - -const nextVersion = process.argv[2]; -if (!nextVersion) { - console.log('Usage: archive-version.js '); - process.exit(1); -} - -const filename = './docs/static/archived-versions.json'; -let versions = JSON.parse(readFileSync(filename)); -const newVersion = { - label: `v${nextVersion}`, - url: `https://docs.v${nextVersion}.archive.immich.app`, -}; - -let lastVersion = asVersion(newVersion); -for (const item of versions) { - const version = asVersion(item); - // only keep the latest patch version for each minor release - if ( - lastVersion.major === version.major && - lastVersion.minor === version.minor && - lastVersion.patch >= version.patch - ) { - versions = versions.filter((item) => item.label !== version.label); - console.log( - `Removed ${version.label} (replaced with ${lastVersion.label})`, - ); - continue; - } - - lastVersion = version; -} - -writeFileSync( - filename, - JSON.stringify([newVersion, ...versions], null, 2) + '\n', -); diff --git a/misc/release/pump-version.sh b/misc/release/pump-version.sh deleted file mode 100755 index 54ea961ea7..0000000000 --- a/misc/release/pump-version.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env bash - -# -# Pump one or both of the server/mobile versions in appropriate files -# -# usage: './scripts/pump-version.sh -s <-m> -# -# examples: -# ./scripts/pump-version.sh -s major # 1.0.0+50 => 2.0.0+50 -# ./scripts/pump-version.sh -s minor -m true # 1.0.0+50 => 1.1.0+51 -# ./scripts/pump-version.sh -s premajor # 1.0.0+50 => 2.0.0-rc.0+50 -# ./scripts/pump-version.sh -s prerelease # 2.0.0-rc.0+50 => 2.0.0-rc.1+50 -# ./scripts/pump-version.sh -m true # 1.0.0+50 => 1.0.0+51 -# - -SERVER_PUMP="false" -MOBILE_PUMP="false" - -while getopts 's:m:' flag; do - case "${flag}" in - s) SERVER_PUMP=${OPTARG} ;; - m) MOBILE_PUMP=${OPTARG} ;; - *) - echo "Invalid args" - exit 1 - ;; - esac -done - -CURRENT_SERVER=$(jq -r '.version' package.json) -if ! NEXT_SERVER=$(pnpm --silent pump "$CURRENT_SERVER" "$SERVER_PUMP"); then - echo "Fatal: failed to pump server version: $NEXT_SERVER" >&2 - exit 1 -fi - -CURRENT_MOBILE=$(grep "^version: .*+[0-9]\+$" mobile/pubspec.yaml | cut -d "+" -f2) -NEXT_MOBILE=$CURRENT_MOBILE - -if [[ $MOBILE_PUMP == "true" ]]; then - set $((NEXT_MOBILE++)) -elif [[ $MOBILE_PUMP == "false" ]]; then - echo 'Skipping Mobile Pump' -else - echo "Fatal: MOBILE_PUMP value $MOBILE_PUMP is invalid" - exit 1 -fi - - - -if [ "$CURRENT_SERVER" != "$NEXT_SERVER" ]; then - echo "Pumping Server: $CURRENT_SERVER => $NEXT_SERVER" - - pnpm version "$NEXT_SERVER" --no-git-tag-version --no-git-checks - pnpm version "$NEXT_SERVER" --no-git-tag-version --no-git-checks --prefix server - pnpm version "$NEXT_SERVER" --no-git-tag-version --no-git-checks --prefix packages/cli - pnpm version "$NEXT_SERVER" --no-git-tag-version --no-git-checks --prefix web - pnpm version "$NEXT_SERVER" --no-git-tag-version --no-git-checks --prefix e2e - pnpm version "$NEXT_SERVER" --no-git-tag-version --no-git-checks --prefix packages/sdk - - # copy version to open-api spec - mise run //:open-api - - uv version --directory machine-learning "$NEXT_SERVER" - - ./misc/release/archive-version.js "$NEXT_SERVER" -fi - -if [ "$CURRENT_MOBILE" != "$NEXT_MOBILE" ]; then - echo "Pumping Mobile: $CURRENT_MOBILE => $NEXT_MOBILE" -fi - -sed -i "s/\"android\.injected\.version\.name\" => \".*\",/\"android\.injected\.version\.name\" => \"$NEXT_SERVER\",/" mobile/android/fastlane/Fastfile -sed -i "s/\"android\.injected\.version\.code\" => [0-9]\+,/\"android\.injected\.version\.code\" => $NEXT_MOBILE,/" mobile/android/fastlane/Fastfile -sed -i "s/^version: .*+[0-9]\+$/version: $NEXT_SERVER+$NEXT_MOBILE/" mobile/pubspec.yaml -# strip prerelease from CFBundleShortVersionString (deploying to testflight _is_ the prerelease) -NEXT_SERVER_SHORT="${NEXT_SERVER%%-*}" -perl -i -p0e "s/(CFBundleShortVersionString<\/key>\s*).*?(<\/string>)/\${1}$NEXT_SERVER_SHORT\${2}/s" mobile/ios/Runner/Info.plist - - -echo "IMMICH_VERSION=v$NEXT_SERVER" >>"$GITHUB_ENV" diff --git a/misc/release/pump-wrapper.js b/misc/release/pump-wrapper.js deleted file mode 100644 index c78cb740d6..0000000000 --- a/misc/release/pump-wrapper.js +++ /dev/null @@ -1,7 +0,0 @@ -import { pump } from './pump.js'; - -const [versionRaw, type] = process.argv.slice(2); -const { message, exitCode } = pump(versionRaw, type); - -console.log(message); -process.exit(exitCode); diff --git a/misc/release/pump.js b/misc/release/pump.js deleted file mode 100644 index 5018d866c5..0000000000 --- a/misc/release/pump.js +++ /dev/null @@ -1,105 +0,0 @@ -import semver, { SemVer } from 'semver'; - -const printUsage = () => { - return { - message: - 'Usage: ./pump_cli.js ', - exitCode: 1, - }; -}; - -const isPrerelease = (version) => version.prerelease.length > 0; - -/** - * @param {SemVer} version - * @returns {boolean} - */ -const inc = (version, type) => `v${semver.inc(version, type, {}, 'rc')}`; - -/** @param {string} version */ -const normalize = (version) => { - if (version.startsWith('v')) { - version = version.slice(1); - } - - return version; -}; - -/** - * @param {string} versionRaw - * @param {string} type - */ -export const pump = (versionRaw, type) => { - if (!versionRaw) { - return printUsage(); - } - - versionRaw = normalize(versionRaw); - - const version = semver.parse(versionRaw); - if (!version) { - return printUsage(); - } - - let newVersionRaw; - let valid = true; - - switch (type) { - case 'patch': - case 'prepatch': - case 'minor': - case 'preminor': - case 'premajor': { - newVersionRaw = inc(version, type); - // can only use while not in a prerelease - valid = !isPrerelease(version); - break; - } - - case 'prerelease': { - newVersionRaw = inc(version, type); - // can only use while in a prerelease - valid = isPrerelease(version); - break; - } - - case 'release': { - // drop prerelease part - newVersionRaw = `${version.major}.${version.minor}.${version.patch}`; - // can only use to promote a prerelease to a release (no version change) - valid = isPrerelease(version); - break; - } - - default: { - return printUsage(); - } - } - - if (!newVersionRaw) { - return printUsage(); - } - - newVersionRaw = normalize(newVersionRaw); - - const newVersion = semver.parse(newVersionRaw); - if (!newVersion) { - return printUsage(); - } - - const invalidUpgrade = - isPrerelease(version) && - !isPrerelease(newVersion) && - (version.major !== newVersion.major || - version.minor !== newVersion.minor || - version.patch !== newVersion.patch); - - if (!valid || invalidUpgrade) { - return { - message: `Invalid pump: ${type}. Pumping from ${versionRaw} to ${newVersionRaw} is not allowed.`, - exitCode: 1, - }; - } - - return { message: newVersionRaw, exitCode: 0 }; -}; diff --git a/misc/release/pump.spec.js b/misc/release/pump.spec.js deleted file mode 100644 index 7432e473cc..0000000000 --- a/misc/release/pump.spec.js +++ /dev/null @@ -1,87 +0,0 @@ -import { describe, expect, it } from 'vitest'; -import { pump } from './pump'; - -describe(pump.name, () => { - describe('usage', () => { - it.each([ - [], - ['2.7.5'], - ['2.7.5', 'invalid'], - ['invalid', 'patch'], - ['2.7.5', 'major'], - ])('should not accept $0, $1 as inputs', (version, type) => { - expect(pump(version, type)).toEqual({ - message: expect.stringContaining('Usage: '), - exitCode: 1, - }); - }); - }); - - describe('transitions', () => { - const valid = [ - { - name: 'patch', - items: [['patch', '2.7.5', '2.7.6']], - }, - { - name: 'prepatch', - items: [ - ['prepatch', '2.7.5', '2.7.6-rc.0'], - ['prerelease', '2.7.6-rc.0', '2.7.6-rc.1'], - ['release', '2.7.6-rc.1', '2.7.6'], - ], - }, - { - name: 'minor', - items: [['minor', '2.7.5', '2.8.0']], - }, - { - name: 'preminor', - items: [ - ['preminor', '2.7.5', '2.8.0-rc.0'], - ['prerelease', '2.8.0-rc.0', '2.8.0-rc.1'], - ['release', '2.8.0-rc.1', '2.8.0'], - ], - }, - { - name: 'premajor', - items: [ - ['premajor', '2.7.5', '3.0.0-rc.0'], - ['prerelease', '3.0.0-rc.0', '3.0.0-rc.1'], - ['release', '3.0.0-rc.1', '3.0.0'], - ], - }, - ]; - - for (const group of valid) { - describe(group.name, () => { - it.each(group.items)( - 'should allow a $0 from $1 to $2', - (type, version, next) => { - expect(pump(version, type)).toEqual({ - message: next, - exitCode: 0, - }); - }, - ); - }); - } - - describe('invalid', () => { - it.each([ - ['patch', 'v3.0.0-rc.0'], - ['prepatch', 'v3.0.0-rc.0'], - ['minor', 'v3.0.0-rc.0'], - ['preminor', 'v3.0.0-rc.0'], - ['premajor', 'v3.0.0-rc.0'], - ['prerelease', 'v3.0.0'], - ['release', 'v3.0.0'], - ])('should not allow a $0 on $1', (type, version) => { - expect(pump(version, type)).toEqual({ - message: expect.stringContaining('Invalid pump'), - exitCode: 1, - }); - }); - }); - }); -}); diff --git a/mise.toml b/mise.toml index b3d97d95f0..38e413aef5 100644 --- a/mise.toml +++ b/mise.toml @@ -39,6 +39,14 @@ experimental = true pin = true lockfile = true +[tasks.release] +run = [ + "pnpm --filter @immich/scripts install --frozen-lockfile", + "pnpm --filter @immich/scripts build", + "pnpm --filter @immich/scripts cli release {{arg(name='args', var=true)}}", + { task = "//:open-api" }, +] + [tasks.plugins] run = [ "pnpm --filter @immich/sdk --filter @immich/plugin-sdk --filter @immich/plugin-core install --frozen-lockfile", diff --git a/package.json b/package.json index a5ce179e48..85180be1a6 100644 --- a/package.json +++ b/package.json @@ -6,20 +6,14 @@ "private": true, "scripts": { "format": "prettier --cache --check i18n/", - "format:fix": "prettier --cache --write --list-different i18n", - "test": "vitest", - "release": "./misc/release/pump-version.sh", - "pump": "node ./misc/release/pump-wrapper.js" + "format:fix": "prettier --cache --write --list-different i18n" }, "packageManager": "pnpm@11.6.0", "engines": { "pnpm": ">=10.0.0" }, "devDependencies": { - "@types/node": "^24.13.2", "prettier": "^3.8.3", - "prettier-plugin-sort-json": "^4.2.0", - "semver": "^7.8.1", - "vitest": "^4.1.8" + "prettier-plugin-sort-json": "^4.2.0" } } diff --git a/packages/scripts/.gitignore b/packages/scripts/.gitignore new file mode 100644 index 0000000000..57bf2fdc42 --- /dev/null +++ b/packages/scripts/.gitignore @@ -0,0 +1,15 @@ +*-debug.log +*-error.log +/.nyc_output +/dist +/lib +/tmp +/yarn.lock +node_modules +oclif.manifest.json + +.vscode +.idea +/coverage/ +.reverse-geocoding-dump/ +upload/ diff --git a/packages/scripts/package.json b/packages/scripts/package.json new file mode 100644 index 0000000000..c87dc8747a --- /dev/null +++ b/packages/scripts/package.json @@ -0,0 +1,36 @@ +{ + "name": "@immich/scripts", + "version": "3.0.0-rc.2", + "private": true, + "type": "module", + "main": "pump-wrapper.ts", + "license": "GNU Affero General Public License version 3", + "repository": { + "type": "git", + "url": "git+https://github.com/immich-app/immich.git", + "directory": "packages/scripts" + }, + "scripts": { + "cli": "node dist/main.js", + "build": "vite build", + "watch": "vite build --watch", + "lint": "eslint \"src/**/*.ts\" --max-warnings 0", + "lint:fix": "pnpm run lint --fix", + "test": "vitest", + "test:cov": "vitest --coverage", + "format": "prettier --cache --check .", + "format:fix": "prettier --cache --write --list-different .", + "check": "tsc --noEmit" + }, + "dependencies": { + "commander": "^15.0.0", + "semver": "^7.8.1" + }, + "devDependencies": { + "@types/node": "^24.13.2", + "@types/semver": "^7.7.1", + "vite": "^8.0.16", + "vitest": "^4.1.8" + }, + "packageManager": "pnpm@11.6.0" +} diff --git a/packages/scripts/src/cli.spec.ts b/packages/scripts/src/cli.spec.ts new file mode 100644 index 0000000000..5ac1d2670e --- /dev/null +++ b/packages/scripts/src/cli.spec.ts @@ -0,0 +1,31 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { cli } from './cli'; + +const run = (args: string[]) => cli(['node', 'pnpm cli', ...args]); + +describe('cli', () => { + let exitMock: ReturnType; + + beforeEach(() => { + exitMock = vi.spyOn(process, 'exit').mockImplementation((code) => { + throw new Error(`process.exit(${code})`); + }); + vi.spyOn(process.stderr, 'write').mockImplementation(() => true); + }); + + describe('release', () => { + afterEach(() => { + vi.restoreAllMocks(); + }); + + it.each([ + [[], '--type is required'], + [['--type'], '--type requires a value'], + [['--type', 'invalid'], 'invalid is not an allowed choice'], + [['--type', 'major'], 'major is invalid'], + ])('should not accept %j because %s', (args, _description) => { + expect(() => run(['release', ...args])).toThrow(); + expect(exitMock).toHaveBeenCalledWith(1); + }); + }); +}); diff --git a/packages/scripts/src/cli.ts b/packages/scripts/src/cli.ts new file mode 100644 index 0000000000..c89a0f142c --- /dev/null +++ b/packages/scripts/src/cli.ts @@ -0,0 +1,54 @@ +import { Command, Option } from 'commander'; +import { handleRelease } from './commands/release'; +import { + RELEASE_TYPES, + ReleaseError, + ReleaseInputError, + type ReleaseType, +} from './types'; + +export const cli = (argv: string[]) => { + const program = new Command(); + + program + .name('pnpm cli') + .description('Scripts for managing the repo, releases, etc.') + .version('0.1.0'); + + program + .command('release') + .description('pump release versions across relevant files') + .addOption( + new Option('-t, --type ', 'the type of version pump') + .choices(RELEASE_TYPES) + .makeOptionMandatory(), + ) + .addOption( + new Option('-m, --mobile ', 'pump mobile build number') + .choices(['true', 'false']) + .default('false'), + ) + .action( + ({ type, mobile }: { type: ReleaseType; mobile: 'true' | 'false' }) => { + try { + console.log(handleRelease({ type, mobile: mobile === 'true' })); + } catch (error) { + if (error instanceof ReleaseInputError) { + console.log(program.usage()); + process.exit(1); + } + + if (error instanceof ReleaseError) { + console.log( + `Invalid pump: ${type}. Pumping from ${error.version} to ${error.newVersion} is not allowed.`, + ); + process.exit(1); + } + + throw error; + } + }, + ); + + return program.parse(argv); +}; diff --git a/packages/scripts/src/commands/release.spec.ts b/packages/scripts/src/commands/release.spec.ts new file mode 100644 index 0000000000..de769ebdc6 --- /dev/null +++ b/packages/scripts/src/commands/release.spec.ts @@ -0,0 +1,139 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { + resolveArchivedVersions, + ArchivedVersion, + getNewVersion, + ReleaseError, +} from './release'; + +const archived = (label: string): ArchivedVersion => ({ + label, + url: `https://docs.${label}.archive.immich.app`, +}); + +const labels = (versions: ArchivedVersion[]) => versions.map((v) => v.label); + +describe(getNewVersion.name, () => { + describe('transitions', () => { + const valid = [ + { + name: 'patch', + items: [['patch', '2.7.5', '2.7.6']], + }, + { + name: 'prepatch', + items: [ + ['prepatch', '2.7.5', '2.7.6-rc.0'], + ['prerelease', '2.7.6-rc.0', '2.7.6-rc.1'], + ['release', '2.7.6-rc.1', '2.7.6'], + ], + }, + { + name: 'minor', + items: [['minor', '2.7.5', '2.8.0']], + }, + { + name: 'preminor', + items: [ + ['preminor', '2.7.5', '2.8.0-rc.0'], + ['prerelease', '2.8.0-rc.0', '2.8.0-rc.1'], + ['release', '2.8.0-rc.1', '2.8.0'], + ], + }, + { + name: 'premajor', + items: [ + ['premajor', '2.7.5', '3.0.0-rc.0'], + ['prerelease', '3.0.0-rc.0', '3.0.0-rc.1'], + ['release', '3.0.0-rc.1', '3.0.0'], + ], + }, + ]; + + for (const group of valid) { + describe(group.name, () => { + it.each(group.items)( + 'should allow a $0 from $1 to $2', + (type, version, next) => { + expect(getNewVersion(version, type)).toEqual(next); + }, + ); + }); + } + + describe('invalid', () => { + it.each([ + ['patch', 'v3.0.0-rc.0'], + ['prepatch', 'v3.0.0-rc.0'], + ['minor', 'v3.0.0-rc.0'], + ['preminor', 'v3.0.0-rc.0'], + ['premajor', 'v3.0.0-rc.0'], + ['prerelease', 'v3.0.0'], + ['release', 'v3.0.0'], + ])('should not allow a $0 on $1', (type, version) => { + expect(() => getNewVersion(version, type)).toThrow(ReleaseError); + }); + }); + }); +}); + +describe(resolveArchivedVersions.name, () => { + beforeEach(() => { + // silence the "Removed ..." progress logging + vi.spyOn(console, 'log').mockImplementation(() => {}); + }); + + it('should prepend the new version to the front', () => { + const result = resolveArchivedVersions([archived('v2.9.0')], '3.0.0'); + + expect(result[0]).toEqual({ + label: 'v3.0.0', + url: 'https://docs.v3.0.0.archive.immich.app', + }); + expect(labels(result)).toEqual(['v3.0.0', 'v2.9.0']); + }); + + it('should handle an empty list', () => { + expect(labels(resolveArchivedVersions([], '3.0.0'))).toEqual(['v3.0.0']); + }); + + it('should drop older patch releases of the new version minor', () => { + const versions = ['v3.0.4', 'v3.0.3', 'v3.0.2'].map(archived); + + expect(labels(resolveArchivedVersions(versions, '3.0.5'))).toEqual([ + 'v3.0.5', + ]); + }); + + it('should keep the latest patch of each older minor', () => { + const versions = ['v3.1.2', 'v3.1.1', 'v3.0.9', 'v2.0.0'].map(archived); + + expect(labels(resolveArchivedVersions(versions, '3.2.0'))).toEqual([ + 'v3.2.0', + 'v3.1.2', + 'v3.0.9', + 'v2.0.0', + ]); + }); + + it('should keep an older minor when bumping a patch', () => { + const versions = ['v3.0.4', 'v3.0.3', 'v2.9.1', 'v2.9.0', 'v1.5.0'].map( + archived, + ); + + expect(labels(resolveArchivedVersions(versions, '3.0.5'))).toEqual([ + 'v3.0.5', + 'v2.9.1', + 'v1.5.0', + ]); + }); + + it('should replace a prerelease with its release', () => { + const versions = ['v3.0.0-rc.2', 'v3.0.0-rc.1', 'v2.9.0'].map(archived); + + expect(labels(resolveArchivedVersions(versions, '3.0.0'))).toEqual([ + 'v3.0.0', + 'v2.9.0', + ]); + }); +}); diff --git a/packages/scripts/src/commands/release.ts b/packages/scripts/src/commands/release.ts new file mode 100644 index 0000000000..68ef1dbf0e --- /dev/null +++ b/packages/scripts/src/commands/release.ts @@ -0,0 +1,262 @@ +import { execSync } from 'node:child_process'; +import { appendFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import semver, { SemVer } from 'semver'; +import { + JsonFile, + RELEASE_TYPES, + ReleaseError, + ReleaseInputError, + ReleaseOptions, + ReleaseType, + TextFile, +} from 'src/types'; + +const root = join(dirname(fileURLToPath(import.meta.url)), '../../../'); + +const Files = { + PackageJson: { + Root: join(root, 'package.json'), + Rest: ['web', 'packages/cli', 'packages/sdk', 'e2e', 'server'].map( + (folder) => join(root, folder, `package.json`), + ), + }, + ExampleEnv: join(root, 'docker/example.env'), + Docs: { + Env: join(root, 'docs/docs/install/environment-variables.md'), + Upgrading: join(root, 'docs/docs/install/upgrading.md'), + ArchivedVersions: join(root, 'docs/static/archived-versions.json'), + }, + Mobile: { + Pubspec: join(root, 'mobile/pubspec.yaml'), + Fastfile: join(root, 'mobile/android/fastlane/Fastfile'), + InfoPlist: join(root, 'mobile/ios/Runner/Info.plist'), + }, +}; + +export const handleRelease = ({ type, mobile }: ReleaseOptions) => { + const versionRaw = getVersion(); + const newVersionRaw = getNewVersion(versionRaw, type); + const newVersion = semver.parse(normalize(newVersionRaw)); + if (!newVersion) { + throw new ReleaseInputError(); + } + const newVersionNoRc = `${newVersion.major}.${newVersion.minor}.${newVersion.patch}`; + const mobileBuild = getMobileBuild(); + const newMobileBuild = mobile ? mobileBuild + 1 : mobileBuild; + + // pump versions everywhere + + // package.json + for (const file of [Files.PackageJson.Root, ...Files.PackageJson.Rest]) { + pump(file, /^ "version": ".*"/m, ` "version": "${newVersionRaw}"`); + } + + // machine-learning + execSync(`uv version --directory machine-learning ${newVersionRaw}`, { + cwd: root, + stdio: 'inherit', + }); + + // mobile + pump( + Files.Mobile.Fastfile, + /"android\.injected\.version\.name" => ".*",/g, + `"android.injected.version.name" => "${newVersionRaw}",`, + ); + pump( + Files.Mobile.Fastfile, + /"android\.injected\.version\.code" => \d+,/g, + `"android.injected.version.code" => ${newMobileBuild},`, + ); + pump( + Files.Mobile.Pubspec, + /^version: .*\+\d+$/m, + `version: ${newVersionRaw}+${newMobileBuild}`, + ); + // strip prerelease from CFBundleShortVersionString + // (deploying to testflight _is_ the prerelease) + pump( + Files.Mobile.InfoPlist, + /(CFBundleShortVersionString<\/key>\s*).*?(<\/string>)/s, + `$1${newVersionNoRc}$2`, + ); + + if (type === 'release') { + // docker tag references (v2, :v2, etc) in docs + const major = `v${newVersion.major}`; + + // sync major tag references in docs and example env file + pump(Files.ExampleEnv, /^IMMICH_VERSION=v\d+$/m, `IMMICH_VERSION=${major}`); + pump(Files.Docs.Env, /(`IMMICH_VERSION`.*?)`v\d+`/, `$1\`${major}\``); + pump(Files.Docs.Upgrading, /:v\d+/, `:${major}`); + } + + // update archived versions list + const archivedFile = new JsonFile( + Files.Docs.ArchivedVersions, + ); + const versions = archivedFile.read(); + archivedFile.write(resolveArchivedVersions(versions, newVersionRaw)); + + if (process.env.GITHUB_ENV) { + // make available for following steps + appendFileSync( + process.env.GITHUB_ENV, + `IMMICH_VERSION=v${newVersionRaw}\n`, + ); + } + + return newVersionRaw; +}; + +const getVersion = () => + new JsonFile<{ version: string }>(Files.PackageJson.Root).read().version; + +export const getNewVersion = (versionRaw: string, type: string) => { + if (!versionRaw || !type || !RELEASE_TYPES.includes(type as ReleaseType)) { + throw new ReleaseInputError(); + } + + versionRaw = normalize(versionRaw); + + const version = semver.parse(versionRaw); + if (!version) { + throw new ReleaseInputError(); + } + + let newVersionRaw; + let valid = true; + + switch (type) { + case 'patch': + case 'prepatch': + case 'minor': + case 'preminor': + case 'premajor': { + newVersionRaw = inc(version, type); + // can only use while not in a prerelease + valid = !isPrerelease(version); + break; + } + + case 'prerelease': { + newVersionRaw = inc(version, type); + // can only use while in a prerelease + valid = isPrerelease(version); + break; + } + + case 'release': { + // drop prerelease part + newVersionRaw = `${version.major}.${version.minor}.${version.patch}`; + // can only use to promote a prerelease to a release (no version change) + valid = isPrerelease(version); + break; + } + + default: { + throw new ReleaseInputError(); + } + } + + if (!newVersionRaw) { + throw new ReleaseInputError(); + } + + newVersionRaw = normalize(newVersionRaw); + + const newVersion = semver.parse(newVersionRaw); + if (!newVersion) { + throw new ReleaseInputError(); + } + + const invalidUpgrade = + isPrerelease(version) && + !isPrerelease(newVersion) && + (version.major !== newVersion.major || + version.minor !== newVersion.minor || + version.patch !== newVersion.patch); + + if (!valid || invalidUpgrade) { + throw new ReleaseError({ + version: versionRaw, + newVersion: newVersionRaw, + }); + } + + return newVersionRaw; +}; + +const getMobileBuild = () => { + const pubspec = new TextFile(Files.Mobile.Pubspec).read(); + const match = pubspec.match(/^version: .*\+(\d+)$/m); + if (!match) { + throw new Error('Could not find mobile build number in pubspec.yaml'); + } + + return Number(match[1]); +}; + +const pump = (path: string, pattern: RegExp, replacement: string) => { + const file = new TextFile(path); + const update = file.read().replace(pattern, replacement); + file.write(update); +}; + +export interface ArchivedVersion { + label: string; + url: string; +} + +export const resolveArchivedVersions = ( + versions: ArchivedVersion[], + nextVersion: string, +): ArchivedVersion[] => { + const newVersion: ArchivedVersion = { + label: `v${nextVersion}`, + url: `https://docs.v${nextVersion}.archive.immich.app`, + }; + + let result = versions; + let lastVersion = asVersion(newVersion); + for (const item of versions) { + const version = asVersion(item); + // only keep the latest patch version for each minor release + if ( + lastVersion.major === version.major && + lastVersion.minor === version.minor && + lastVersion.patch >= version.patch + ) { + result = result.filter((item) => item.label !== version.label); + console.log( + `Removed ${version.label} (replaced with ${lastVersion.label})`, + ); + continue; + } + + lastVersion = version; + } + + return [newVersion, ...result]; +}; + +const asVersion = (item: ArchivedVersion) => { + const { label, url } = item; + const [version] = label.substring(1).split('-'); + const [major, minor, patch] = version.split('.').map(Number); + return { major, minor, patch, label, url }; +}; + +const isPrerelease = (version: SemVer) => version.prerelease.length > 0; + +/** + * @param {SemVer} version + * @returns {boolean} + */ +const inc = (version: SemVer, type: ReleaseType) => + `v${semver.inc(version, type, {}, 'rc')}`; + +const normalize = (version: string) => + version.startsWith('v') ? version.slice(1) : version; diff --git a/packages/scripts/src/main.ts b/packages/scripts/src/main.ts new file mode 100644 index 0000000000..8e616c1127 --- /dev/null +++ b/packages/scripts/src/main.ts @@ -0,0 +1,3 @@ +import { cli } from './cli'; + +cli(process.argv); diff --git a/packages/scripts/src/types.ts b/packages/scripts/src/types.ts new file mode 100644 index 0000000000..9bc23f87b5 --- /dev/null +++ b/packages/scripts/src/types.ts @@ -0,0 +1,55 @@ +import { readFileSync, writeFileSync } from 'node:fs'; + +export const RELEASE_TYPES = [ + 'minor', + 'patch', + 'premajor', + 'preminor', + 'prepatch', + 'prerelease', + 'release', +] as const; + +export type ReleaseType = (typeof RELEASE_TYPES)[number]; +export type ReleaseOptions = { type: string; mobile: boolean }; + +export class TextFile { + constructor(private file: string) {} + + read() { + return readFileSync(this.file, 'utf8'); + } + + write(contents: string) { + writeFileSync(this.file, contents); + } +} + +export class JsonFile { + private text: TextFile; + + constructor(private file: string) { + this.text = new TextFile(file); + } + + read() { + return JSON.parse(this.text.read()) as T; + } + + write(contents: T) { + return this.text.write(JSON.stringify(contents, null, 2) + '\n'); + } +} + +export class ReleaseInputError extends Error {} +export class ReleaseError extends Error { + version: string; + newVersion: string; + + constructor(options: { version: string; newVersion: string }) { + super(`Invalid pump`); + + this.version = options.version; + this.newVersion = options.newVersion; + } +} diff --git a/packages/scripts/tsconfig.json b/packages/scripts/tsconfig.json new file mode 100644 index 0000000000..64c9a2b043 --- /dev/null +++ b/packages/scripts/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "emitDecoratorMetadata": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "incremental": true, + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "./dist", + "paths": { + "src/*": ["./src/*"] + }, + "removeComments": true, + "resolveJsonModule": true, + "rootDir": "./src", + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "target": "es2023", + "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo", + "types": ["vitest/globals", "node"] + }, + "exclude": ["dist", "node_modules", "vite.config.ts"] +} diff --git a/packages/scripts/vite.config.ts b/packages/scripts/vite.config.ts new file mode 100644 index 0000000000..efe47941f7 --- /dev/null +++ b/packages/scripts/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig, UserConfig } from 'vite'; + +export default defineConfig({ + resolve: { + alias: { src: '/src' }, + tsconfigPaths: true, + }, + build: { + rolldownOptions: { + input: 'src/main.ts', + output: { + dir: 'dist', + }, + }, + ssr: true, + }, + ssr: { + // bundle everything except for Node built-ins + noExternal: /^(?!node:).*$/, + }, + test: { + name: 'scripts:unit', + globals: true, + }, +} as UserConfig); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4022416c2c..c6cebb0d5e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,21 +17,12 @@ importers: .: devDependencies: - '@types/node': - specifier: ^24.13.2 - version: 24.13.2 prettier: specifier: ^3.8.3 version: 3.8.4 prettier-plugin-sort-json: specifier: ^4.2.0 version: 4.2.0(prettier@3.8.4) - semver: - specifier: ^7.8.1 - version: 7.8.4 - vitest: - specifier: ^4.1.8 - version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@24.13.2)(@vitest/coverage-v8@4.1.9)(happy-dom@20.10.3)(jsdom@26.1.0(canvas@3.2.3))(vite@8.0.16(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) .github: devDependencies: @@ -46,13 +37,13 @@ importers: version: 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) '@docusaurus/preset-classic': specifier: ~3.10.0 - version: 3.10.1(@algolia/client-search@5.54.0)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3) + version: 3.10.1(@algolia/client-search@5.54.0)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@types/react@19.2.17)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3) '@docusaurus/theme-common': specifier: ~3.10.0 - version: 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@docusaurus/theme-mermaid': specifier: ~3.10.0 - version: 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + version: 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) '@mdi/js': specifier: ^7.3.67 version: 7.4.47 @@ -79,7 +70,7 @@ importers: version: 2.4.1(react@19.2.7) raw-loader: specifier: ^4.0.2 - version: 4.0.2(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + version: 4.0.2(webpack@5.107.2(postcss@8.5.15)) react: specifier: ^19.0.0 version: 19.2.7 @@ -95,13 +86,13 @@ importers: devDependencies: '@docusaurus/module-type-aliases': specifier: ~3.10.0 - version: 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@docusaurus/tsconfig': specifier: ^3.10.0 version: 3.10.1 '@docusaurus/types': specifier: ^3.10.0 - version: 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) prettier: specifier: ^3.7.4 version: 3.8.4 @@ -360,6 +351,28 @@ importers: specifier: ^6.0.0 version: 6.0.3 + packages/scripts: + dependencies: + commander: + specifier: ^15.0.0 + version: 15.0.0 + semver: + specifier: ^7.8.1 + version: 7.8.4 + devDependencies: + '@types/node': + specifier: ^24.13.2 + version: 24.13.2 + '@types/semver': + specifier: ^7.7.1 + version: 7.7.1 + vite: + specifier: ^8.0.16 + version: 8.0.16(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0) + vitest: + specifier: ^4.1.8 + version: 4.1.9(@opentelemetry/api@1.9.1)(@types/node@24.13.2)(@vitest/coverage-v8@4.1.9)(happy-dom@20.10.3)(jsdom@26.1.0(canvas@3.2.3))(vite@8.0.16(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)) + packages/sdk: dependencies: '@oazapfts/runtime': @@ -3641,8 +3654,8 @@ packages: resolution: {integrity: sha512-lichxSiagMEBBrqHF0trtMQH9RKh+9jUlIJl0qW0QHvt2H/tbvUWdE+ZzI2Jd0/pT7j/iavLonlPu7EQ/ixTOw==} hasBin: true - '@maplibre/mlt@1.1.11': - resolution: {integrity: sha512-dKvjKdITw9d0y3ndGkSqLUEpWCizMtdq8NB06cHohH/JZ2sJoM7dClR9wzJLUWykjbw9RXDFmhjjNBnNW27mzw==} + '@maplibre/mlt@1.1.12': + resolution: {integrity: sha512-ZeK5w2TTeHOajcLaEQs1KZXw2V9wIKo1PmThlxlsHoXsQsYlBqLJzPOd6tJHRtGTChUY3DPPmjXRArYVvAbmZw==} '@maplibre/vt-pbf@4.3.2': resolution: {integrity: sha512-j6p0AdjvAR19Z3XaCysle7A4ZSo08tYOzxD0Y9NQylwPAkwJJeYub5b2eVucdeDh7erhv69DahoLOevDRERRUw==} @@ -5216,8 +5229,8 @@ packages: '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - '@types/chrome@0.1.43': - resolution: {integrity: sha512-ukH/HhmR6ht+UTX3PLUWJxgJ/RQcK2Foj4lBzsF24SIWsXgqhGuXqjd8FFuwioPP7d/JUKLM4g8GZxw3F4HTcA==} + '@types/chrome@0.2.0': + resolution: {integrity: sha512-K/i7EKEVSpmyXXjE0ev5oASWBYMY6yM8LFSutG2PkM1DmxJUggZsoaTc0W1RsVwDDKrsZEjpHFAbqqxlRxGsSg==} '@types/chromecast-caf-sender@1.0.11': resolution: {integrity: sha512-Pv3xvNYtxD/cTM/tKfuZRlLasvpxAm+CFni0GJd6Cp8XgiZS9g9tMZkR1uymsi5fIFv057SZKKAWVFFgy7fJtw==} @@ -6022,10 +6035,6 @@ packages: resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} engines: {node: '>= 0.4'} - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -9681,8 +9690,8 @@ packages: nan@2.27.0: resolution: {integrity: sha512-hC+0LidcL3XE4rp1C4H54KujgXKzbfyTngZTwBByQxsOxCEKZT0MPQ4hOKUH2jU1OYstqdDH4onyHPDzcV0XdQ==} - nanoid@3.3.12: - resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + nanoid@3.3.15: + resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -14325,7 +14334,7 @@ snapshots: - '@algolia/client-search' - algoliasearch - '@docusaurus/babel@3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/babel@3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@babel/core': 7.29.7 '@babel/generator': 7.29.7 @@ -14337,7 +14346,7 @@ snapshots: '@babel/runtime': 7.29.7 '@babel/traverse': 7.29.7 '@docusaurus/logger': 3.10.1 - '@docusaurus/utils': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.3.5 tslib: 2.8.1 @@ -14359,7 +14368,7 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/babel@3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/babel@3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@babel/core': 7.29.7 '@babel/generator': 7.29.7 @@ -14371,7 +14380,7 @@ snapshots: '@babel/runtime': 7.29.7 '@babel/traverse': 7.29.7 '@docusaurus/logger': 3.10.1 - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.3.5 tslib: 2.8.1 @@ -14396,29 +14405,72 @@ snapshots: '@docusaurus/bundler@3.10.1(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: '@babel/core': 7.29.7 - '@docusaurus/babel': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/babel': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@docusaurus/cssnano-preset': 3.10.1 '@docusaurus/logger': 3.10.1 - '@docusaurus/types': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - babel-loader: 9.2.1(@babel/core@7.29.7)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + '@docusaurus/types': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + babel-loader: 9.2.1(@babel/core@7.29.7)(webpack@5.107.2(postcss@8.5.15)) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) - css-loader: 6.11.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + copy-webpack-plugin: 11.0.0(webpack@5.107.2(postcss@8.5.15)) + css-loader: 6.11.0(webpack@5.107.2(postcss@8.5.15)) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.107.2(postcss@8.5.15)) cssnano: 6.1.2(postcss@8.5.15) - file-loader: 6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + file-loader: 6.2.0(webpack@5.107.2(postcss@8.5.15)) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.10.2(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) - null-loader: 4.0.1(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + mini-css-extract-plugin: 2.10.2(webpack@5.107.2(postcss@8.5.15)) + null-loader: 4.0.1(webpack@5.107.2(postcss@8.5.15)) postcss: 8.5.15 - postcss-loader: 7.3.4(postcss@8.5.15)(typescript@6.0.3)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + postcss-loader: 7.3.4(postcss@8.5.15)(typescript@6.0.3)(webpack@5.107.2(postcss@8.5.15)) postcss-preset-env: 10.6.1(postcss@8.5.15) - terser-webpack-plugin: 5.6.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + terser-webpack-plugin: 5.6.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(webpack@5.107.2(postcss@8.5.15)) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)))(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) - webpack: 5.107.2(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15) - webpackbar: 7.0.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)) + webpack: 5.107.2(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15) + webpackbar: 7.0.0(webpack@5.107.2(postcss@8.5.15)) + transitivePeerDependencies: + - '@minify-html/node' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@swc/html' + - csso + - esbuild + - lightningcss + - react + - react-dom + - supports-color + - typescript + - uglify-js + - webpack-cli + + '@docusaurus/bundler@3.10.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + dependencies: + '@babel/core': 7.29.7 + '@docusaurus/babel': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/cssnano-preset': 3.10.1 + '@docusaurus/logger': 3.10.1 + '@docusaurus/types': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + babel-loader: 9.2.1(@babel/core@7.29.7)(webpack@5.107.2(postcss@8.5.15)) + clean-css: 5.3.3 + copy-webpack-plugin: 11.0.0(webpack@5.107.2(postcss@8.5.15)) + css-loader: 6.11.0(webpack@5.107.2(postcss@8.5.15)) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.107.2(postcss@8.5.15)) + cssnano: 6.1.2(postcss@8.5.15) + file-loader: 6.2.0(webpack@5.107.2(postcss@8.5.15)) + html-minifier-terser: 7.2.0 + mini-css-extract-plugin: 2.10.2(webpack@5.107.2(postcss@8.5.15)) + null-loader: 4.0.1(webpack@5.107.2(postcss@8.5.15)) + postcss: 8.5.15 + postcss-loader: 7.3.4(postcss@8.5.15)(typescript@6.0.3)(webpack@5.107.2(postcss@8.5.15)) + postcss-preset-env: 10.6.1(postcss@8.5.15) + terser-webpack-plugin: 5.6.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(webpack@5.107.2(postcss@8.5.15)) + tslib: 2.8.1 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)) + webpack: 5.107.2(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15) + webpackbar: 7.0.0(webpack@5.107.2(postcss@8.5.15)) transitivePeerDependencies: - '@minify-html/node' - '@parcel/css' @@ -14438,13 +14490,13 @@ snapshots: '@docusaurus/core@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/babel': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/babel': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@docusaurus/bundler': 3.10.1(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/mdx-loader': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.7) boxen: 6.2.1 chalk: 4.1.2 @@ -14460,7 +14512,7 @@ snapshots: execa: 5.1.1 fs-extra: 11.3.5 html-tags: 3.3.1 - html-webpack-plugin: 5.6.7(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + html-webpack-plugin: 5.6.7(webpack@5.107.2(postcss@8.5.15)) leven: 3.1.0 lodash: 4.18.1 open: 8.4.2 @@ -14470,7 +14522,7 @@ snapshots: react-dom: 19.2.7(react@19.2.7) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.7)' - react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.2(postcss@8.5.15)) react-router: 5.3.4(react@19.2.7) react-router-config: 5.1.1(react-router@5.3.4(react@19.2.7))(react@19.2.7) react-router-dom: 5.3.4(react@19.2.7) @@ -14479,9 +14531,78 @@ snapshots: tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 5.2.5(tslib@2.8.1)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + webpack-dev-server: 5.2.5(tslib@2.8.1)(webpack@5.107.2(postcss@8.5.15)) + webpack-merge: 6.0.1 + transitivePeerDependencies: + - '@minify-html/node' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - '@swc/html' + - bufferutil + - clean-css + - cssnano + - csso + - debug + - esbuild + - html-minifier-terser + - lightningcss + - postcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/core@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + dependencies: + '@docusaurus/babel': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/bundler': 3.10.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/logger': 3.10.1 + '@docusaurus/mdx-loader': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.7) + boxen: 6.2.1 + chalk: 4.1.2 + chokidar: 3.6.0 + cli-table3: 0.6.5 + combine-promises: 1.2.0 + commander: 5.1.0 + core-js: 3.49.0 + detect-port: 1.6.1 + escape-html: 1.0.3 + eta: 2.2.0 + eval: 0.1.8 + execa: 5.1.1 + fs-extra: 11.3.5 + html-tags: 3.3.1 + html-webpack-plugin: 5.6.7(webpack@5.107.2(postcss@8.5.15)) + leven: 3.1.0 + lodash: 4.18.1 + open: 8.4.2 + p-map: 4.0.0 + prompts: 2.4.2 + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)' + react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.7)' + react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.2(postcss@8.5.15)) + react-router: 5.3.4(react@19.2.7) + react-router-config: 5.1.1(react-router@5.3.4(react@19.2.7))(react@19.2.7) + react-router-dom: 5.3.4(react@19.2.7) + semver: 7.8.4 + serve-handler: 6.1.7 + tinypool: 1.1.1 + tslib: 2.8.1 + update-notifier: 6.0.2 + webpack: 5.107.2(postcss@8.5.15) + webpack-bundle-analyzer: 4.10.2 + webpack-dev-server: 5.2.5(tslib@2.8.1)(webpack@5.107.2(postcss@8.5.15)) webpack-merge: 6.0.1 transitivePeerDependencies: - '@minify-html/node' @@ -14517,16 +14638,16 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/mdx-loader@3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/mdx-loader@3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@docusaurus/logger': 3.10.1 - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@mdx-js/mdx': 3.1.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.5.0 - file-loader: 6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + file-loader: 6.2.0(webpack@5.107.2(postcss@8.5.15)) fs-extra: 11.3.5 image-size: 2.0.2 mdast-util-mdx: 3.0.0 @@ -14542,9 +14663,9 @@ snapshots: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.1.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)))(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)) vfile: 6.0.3 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -14561,9 +14682,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/module-type-aliases@3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/history': 4.7.11 '@types/react': 19.2.17 '@types/react-router-config': 5.0.11 @@ -14588,17 +14709,17 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-content-blog@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/mdx-loader': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) cheerio: 1.0.0-rc.12 combine-promises: 1.2.0 feed: 4.2.2 @@ -14611,7 +14732,7 @@ snapshots: tslib: 2.8.1 unist-util-visit: 5.1.0 utility-types: 3.11.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -14636,17 +14757,17 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/mdx-loader': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/module-type-aliases': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/module-type-aliases': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.3.5 @@ -14657,7 +14778,7 @@ snapshots: schema-dts: 1.1.5 tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -14682,18 +14803,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-pages@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-content-pages@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/mdx-loader': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/mdx-loader': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) fs-extra: 11.3.5 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) tslib: 2.8.1 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -14718,12 +14839,12 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-css-cascade-layers@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-css-cascade-layers@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -14751,11 +14872,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-debug@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-debug@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) fs-extra: 11.3.5 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -14785,11 +14906,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-analytics@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-google-analytics@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) tslib: 2.8.1 @@ -14817,11 +14938,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-gtag@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-google-gtag@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/gtag.js': 0.0.20 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -14850,11 +14971,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-google-tag-manager@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) tslib: 2.8.1 @@ -14882,14 +15003,14 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-sitemap@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-sitemap@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) fs-extra: 11.3.5 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -14919,18 +15040,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-svgr@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/plugin-svgr@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@svgr/core': 8.1.0(typescript@6.0.3) '@svgr/webpack': 8.1.0(typescript@6.0.3) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) tslib: 2.8.1 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -14955,23 +15076,23 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.10.1(@algolia/client-search@5.54.0)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3)': + '@docusaurus/preset-classic@3.10.1(@algolia/client-search@5.54.0)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@types/react@19.2.17)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-content-pages': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-css-cascade-layers': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-debug': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-google-analytics': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-google-gtag': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-google-tag-manager': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-sitemap': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-svgr': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/theme-classic': 3.10.1(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-search-algolia': 3.10.1(@algolia/client-search@5.54.0)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-content-pages': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-css-cascade-layers': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-debug': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-google-analytics': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-google-gtag': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-google-tag-manager': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-sitemap': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-svgr': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/theme-classic': 3.10.1(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/theme-search-algolia': 3.10.1(@algolia/client-search@5.54.0)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@types/react@19.2.17)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) transitivePeerDependencies: @@ -15006,21 +15127,21 @@ snapshots: '@types/react': 19.2.17 react: 19.2.7 - '@docusaurus/theme-classic@3.10.1(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/theme-classic@3.10.1(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/mdx-loader': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/module-type-aliases': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/plugin-content-pages': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/module-type-aliases': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/plugin-content-pages': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@docusaurus/theme-translations': 3.10.1 - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.7) clsx: 2.1.1 copy-text-to-clipboard: 3.2.2 @@ -15059,13 +15180,13 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-common@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/theme-common@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - '@docusaurus/mdx-loader': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/module-type-aliases': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/module-type-aliases': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/history': 4.7.11 '@types/react': 19.2.17 '@types/react-router-config': 5.0.11 @@ -15092,13 +15213,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-mermaid@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': + '@docusaurus/theme-mermaid@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)': dependencies: - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/module-type-aliases': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/module-type-aliases': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) mermaid: 11.15.0 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -15128,17 +15249,17 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-search-algolia@3.10.1(@algolia/client-search@5.54.0)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3)': + '@docusaurus/theme-search-algolia@3.10.1(@algolia/client-search@5.54.0)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@types/react@19.2.17)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3)': dependencies: '@algolia/autocomplete-core': 1.19.8(@algolia/client-search@5.54.0)(algoliasearch@5.54.0)(search-insights@2.17.3) '@docsearch/react': 4.6.3(@algolia/client-search@5.54.0)(@types/react@19.2.17)(algoliasearch@5.54.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3) - '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/core': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/plugin-content-docs': 3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@docusaurus/theme-translations': 3.10.1 - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-validation': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) algoliasearch: 5.54.0 algoliasearch-helper: 3.29.1(algoliasearch@5.54.0) clsx: 2.1.1 @@ -15183,7 +15304,7 @@ snapshots: '@docusaurus/tsconfig@3.10.1': {} - '@docusaurus/types@3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/types@3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@mdx-js/mdx': 3.1.1 '@types/history': 4.7.11 @@ -15195,7 +15316,7 @@ snapshots: react-dom: 19.2.7(react@19.2.7) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)' utility-types: 3.11.0 - webpack: 5.107.2(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15) + webpack: 5.107.2(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15) webpack-merge: 5.10.0 transitivePeerDependencies: - '@minify-html/node' @@ -15213,7 +15334,7 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/types@3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/types@3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@mdx-js/mdx': 3.1.1 '@types/history': 4.7.11 @@ -15225,7 +15346,7 @@ snapshots: react-dom: 19.2.7(react@19.2.7) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)' utility-types: 3.11.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) webpack-merge: 5.10.0 transitivePeerDependencies: - '@minify-html/node' @@ -15243,9 +15364,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/utils-common@3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - '@docusaurus/types': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) tslib: 2.8.1 transitivePeerDependencies: - '@minify-html/node' @@ -15265,9 +15386,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/utils-common@3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) tslib: 2.8.1 transitivePeerDependencies: - '@minify-html/node' @@ -15287,11 +15408,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/utils-validation@3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@docusaurus/logger': 3.10.1 - '@docusaurus/utils': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) fs-extra: 11.3.5 joi: 17.13.4 js-yaml: 4.2.0 @@ -15315,14 +15436,14 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/utils@3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@docusaurus/logger': 3.10.1 - '@docusaurus/types': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) escape-string-regexp: 4.0.0 execa: 5.1.1 - file-loader: 6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + file-loader: 6.2.0(webpack@5.107.2(postcss@8.5.15)) fs-extra: 11.3.5 github-slugger: 1.5.0 globby: 11.1.0 @@ -15335,9 +15456,9 @@ snapshots: prompts: 2.4.2 resolve-pathname: 3.0.0 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)))(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)) utility-types: 3.11.0 - webpack: 5.107.2(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15) + webpack: 5.107.2(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -15356,14 +15477,14 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/utils@3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@docusaurus/logger': 3.10.1 - '@docusaurus/types': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(esbuild@0.28.1)(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils-common': 3.10.1(postcss@8.5.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) escape-string-regexp: 4.0.0 execa: 5.1.1 - file-loader: 6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + file-loader: 6.2.0(webpack@5.107.2(postcss@8.5.15)) fs-extra: 11.3.5 github-slugger: 1.5.0 globby: 11.1.0 @@ -15376,9 +15497,9 @@ snapshots: prompts: 2.4.2 resolve-pathname: 3.0.0 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)))(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)) utility-types: 3.11.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -16440,7 +16561,7 @@ snapshots: quickselect: 3.0.0 tinyqueue: 3.0.0 - '@maplibre/mlt@1.1.11': + '@maplibre/mlt@1.1.12': dependencies: '@mapbox/point-geometry': 1.1.0 @@ -17866,7 +17987,7 @@ snapshots: '@testing-library/jest-dom@6.9.1': dependencies: '@adobe/css-tools': 4.5.0 - aria-query: 5.3.2 + aria-query: 5.3.1 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 picocolors: 1.1.1 @@ -17973,14 +18094,14 @@ snapshots: '@types/deep-eql': 4.0.2 assertion-error: 2.0.1 - '@types/chrome@0.1.43': + '@types/chrome@0.2.0': dependencies: '@types/filesystem': 0.0.36 '@types/har-format': 1.2.16 '@types/chromecast-caf-sender@1.0.11': dependencies: - '@types/chrome': 0.1.43 + '@types/chrome': 0.2.0 '@types/cli-progress@3.11.6': dependencies: @@ -19001,8 +19122,6 @@ snapshots: aria-query@5.3.1: {} - aria-query@5.3.2: {} - array-flatten@1.1.1: {} array-source@0.0.4: {} @@ -19067,12 +19186,12 @@ snapshots: b4a@1.8.1: {} - babel-loader@9.2.1(@babel/core@7.29.7)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + babel-loader@9.2.1(@babel/core@7.29.7)(webpack@5.107.2(postcss@8.5.15)): dependencies: '@babel/core': 7.29.7 find-cache-dir: 4.0.0 schema-utils: 4.3.3 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) babel-plugin-dynamic-import-node@2.3.3: dependencies: @@ -19741,7 +19860,7 @@ snapshots: copy-text-to-clipboard@3.2.2: {} - copy-webpack-plugin@11.0.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + copy-webpack-plugin@11.0.0(webpack@5.107.2(postcss@8.5.15)): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -19749,7 +19868,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) core-js-compat@3.49.0: dependencies: @@ -19845,7 +19964,7 @@ snapshots: postcss-selector-parser: 7.1.4 postcss-value-parser: 4.2.0 - css-loader@6.11.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + css-loader@6.11.0(webpack@5.107.2(postcss@8.5.15)): dependencies: icss-utils: 5.1.0(postcss@8.5.15) postcss: 8.5.15 @@ -19856,9 +19975,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.8.4 optionalDependencies: - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.107.2(postcss@8.5.15)): dependencies: '@jridgewell/trace-mapping': 0.3.31 cssnano: 6.1.2(postcss@8.5.15) @@ -19866,11 +19985,23 @@ snapshots: postcss: 8.5.15 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) optionalDependencies: clean-css: 5.3.3 esbuild: 0.28.1 + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.107.2(postcss@8.5.15)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + cssnano: 6.1.2(postcss@8.5.15) + jest-worker: 29.7.0 + postcss: 8.5.15 + schema-utils: 4.3.3 + serialize-javascript: 6.0.2 + webpack: 5.107.2(postcss@8.5.15) + optionalDependencies: + clean-css: 5.3.3 + css-prefers-color-scheme@10.0.0(postcss@8.5.15): dependencies: postcss: 8.5.15 @@ -21129,11 +21260,11 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + file-loader@6.2.0(webpack@5.107.2(postcss@8.5.15)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) file-source@0.6.1: dependencies: @@ -21737,7 +21868,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.7(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + html-webpack-plugin@5.6.7(webpack@5.107.2(postcss@8.5.15)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -21745,7 +21876,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.3 optionalDependencies: - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) htmlparser2@6.1.0: dependencies: @@ -22565,7 +22696,7 @@ snapshots: '@mapbox/whoots-js': 3.1.0 '@maplibre/geojson-vt': 6.1.0 '@maplibre/maplibre-gl-style-spec': 24.10.0 - '@maplibre/mlt': 1.1.11 + '@maplibre/mlt': 1.1.12 '@maplibre/vt-pbf': 4.3.2 '@types/geojson': 7946.0.16 earcut: 3.0.2 @@ -23195,11 +23326,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.10.2(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + mini-css-extract-plugin@2.10.2(webpack@5.107.2(postcss@8.5.15)): dependencies: schema-utils: 4.3.3 tapable: 2.3.3 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) minimalistic-assert@1.0.1: {} @@ -23316,7 +23447,7 @@ snapshots: nan@2.27.0: optional: true - nanoid@3.3.12: {} + nanoid@3.3.15: {} nanoid@5.1.11: {} @@ -23485,11 +23616,11 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + null-loader@4.0.1(webpack@5.107.2(postcss@8.5.15)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) nwsapi@2.2.24: optional: true @@ -24063,13 +24194,13 @@ snapshots: tsx: 4.22.4 yaml: 2.9.0 - postcss-loader@7.3.4(postcss@8.5.15)(typescript@6.0.3)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + postcss-loader@7.3.4(postcss@8.5.15)(typescript@6.0.3)(webpack@5.107.2(postcss@8.5.15)): dependencies: cosmiconfig: 8.3.6(typescript@6.0.3) jiti: 1.21.7 postcss: 8.5.15 semver: 7.8.4 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) transitivePeerDependencies: - typescript @@ -24371,7 +24502,7 @@ snapshots: postcss@8.5.15: dependencies: - nanoid: 3.3.12 + nanoid: 3.3.15 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -24577,11 +24708,11 @@ snapshots: iconv-lite: 0.7.2 unpipe: 1.0.0 - raw-loader@4.0.2(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + raw-loader@4.0.2(webpack@5.107.2(postcss@8.5.15)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) rc@1.2.8: dependencies: @@ -24629,11 +24760,11 @@ snapshots: dependencies: react: 19.2.7 - react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.2(postcss@8.5.15)): dependencies: '@babel/runtime': 7.29.7 react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.7)' - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) react-router-config@5.1.1(react-router@5.3.4(react@19.2.7))(react@19.2.7): dependencies: @@ -25937,13 +26068,13 @@ snapshots: esbuild: 0.28.1 lightningcss: 1.32.0 - terser-webpack-plugin@5.6.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + terser-webpack-plugin@5.6.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(webpack@5.107.2(postcss@8.5.15)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.48.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) optionalDependencies: clean-css: 5.3.3 cssnano: 6.1.2(postcss@8.5.15) @@ -25951,15 +26082,27 @@ snapshots: html-minifier-terser: 7.2.0 postcss: 8.5.15 - terser-webpack-plugin@5.6.1(esbuild@0.28.1)(postcss@8.5.15)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + terser-webpack-plugin@5.6.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(webpack@5.107.2(postcss@8.5.15)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.48.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) + optionalDependencies: + clean-css: 5.3.3 + cssnano: 6.1.2(postcss@8.5.15) + html-minifier-terser: 7.2.0 + postcss: 8.5.15 + + terser-webpack-plugin@5.6.1(postcss@8.5.15)(webpack@5.107.2(postcss@8.5.15)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + terser: 5.48.0 + webpack: 5.107.2(postcss@8.5.15) optionalDependencies: - esbuild: 0.28.1 postcss: 8.5.15 terser@5.48.0: @@ -26381,14 +26524,14 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)))(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.107.2(postcss@8.5.15)))(webpack@5.107.2(postcss@8.5.15)): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) optionalDependencies: - file-loader: 6.2.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + file-loader: 6.2.0(webpack@5.107.2(postcss@8.5.15)) url@0.11.4: dependencies: @@ -26665,7 +26808,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.107.2(postcss@8.5.15)): dependencies: colorette: 2.0.20 memfs: 4.57.7(tslib@2.8.1) @@ -26674,11 +26817,11 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) transitivePeerDependencies: - tslib - webpack-dev-server@5.2.5(tslib@2.8.1)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + webpack-dev-server@5.2.5(tslib@2.8.1)(webpack@5.107.2(postcss@8.5.15)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -26706,10 +26849,10 @@ snapshots: serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.107.2(postcss@8.5.15)) ws: 8.21.0 optionalDependencies: - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) transitivePeerDependencies: - bufferutil - debug @@ -26775,7 +26918,7 @@ snapshots: - postcss - uglify-js - webpack@5.107.2(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15): + webpack@5.107.2(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15): dependencies: '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 @@ -26797,7 +26940,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.15)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + terser-webpack-plugin: 5.6.1(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.15))(html-minifier-terser@7.2.0)(postcss@8.5.15)(webpack@5.107.2(postcss@8.5.15)) watchpack: 2.5.2 webpack-sources: 3.5.0 transitivePeerDependencies: @@ -26814,7 +26957,7 @@ snapshots: - postcss - uglify-js - webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15): + webpack@5.107.2(postcss@8.5.15): dependencies: '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 @@ -26836,7 +26979,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.1(esbuild@0.28.1)(postcss@8.5.15)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + terser-webpack-plugin: 5.6.1(postcss@8.5.15)(webpack@5.107.2(postcss@8.5.15)) watchpack: 2.5.2 webpack-sources: 3.5.0 transitivePeerDependencies: @@ -26853,14 +26996,14 @@ snapshots: - postcss - uglify-js - webpackbar@7.0.0(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + webpackbar@7.0.0(webpack@5.107.2(postcss@8.5.15)): dependencies: ansis: 3.17.0 consola: 3.4.2 pretty-time: 1.1.0 std-env: 3.10.0 optionalDependencies: - webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) + webpack: 5.107.2(postcss@8.5.15) websocket-driver@0.7.5: dependencies: diff --git a/vitest.config.js b/vitest.config.js deleted file mode 100644 index 512e1a623a..0000000000 --- a/vitest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - test: { - include: ['misc/**/*.spec.js'], - }, -});