From 4366e4e7894433d6c2becb58fdb8f33d1fed3a6e Mon Sep 17 00:00:00 2001 From: Eduardo Russo Date: Sat, 17 Oct 2026 17:16:45 +0100 Subject: [PATCH 1/4] chore: move the workspace from mnci (Nx) to MonoSmith `smith convert` (1.8.1) replaced Nx: projects, tasks and release tags continue in smith.toml and the manifests, rollup builds became esbuild plus tsc declarations, and ci.yml and the devcontainer are generated by smith. By hand, with the fixes smith 1.9.2 now makes itself: - declaration-specifiers.mjs gives the library declarations their .js specifiers, as mnci's rollup plugin did (monosmith #280) - studio-ui's tsconfigs use vite/client instead of @nx/react typings (#279) - studio-desktop gets a package:dir task for desktop-package.yml - core keeps its prepublishOnly guard Configuration: the vertical-slices and playwright conventions (the Python client excepted until its rewrite), Vitest for new Node projects, the devcontainer, and @monosmith/eslint-config instead of @mnci/eslint-config. The Playwright suites install their browsers first and studio's open windows under xvfb-run; the workflows install smith, and ci.yml pins npm 12. Docker stays off until its registry is configurable (monosmith #285). Refs #313 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap --- .devcontainer/devcontainer.json | 26 +- .github/workflows/ci.yml | 206 +- .github/workflows/desktop-package.yml | 7 + .github/workflows/e2e.yml | 15 +- .github/workflows/vscode-e2e.yml | 7 + .github/workflows/vscode-package.yml | 7 + .github/workflows/vscode-publish.yml | 7 + .gitignore | 4 + apps/azure-host/package.json | 143 +- apps/studio-desktop/package.json | 112 +- apps/studio-ui/jest.config.cts | 4 +- apps/studio-ui/package.json | 62 +- apps/studio-ui/tsconfig.app.json | 2 - apps/studio-ui/tsconfig.spec.json | 3 +- apps/vscode-extension/package.json | 97 +- declaration-specifiers.mjs | 28 + eslint.config.mjs | 33 +- eslint.config.mnci.mjs | 72 - examples/captcha-solver/package.json | 6 +- examples/dfe-college-accounts/package.json | 6 +- examples/fcc-regulatory-fees/package.json | 6 +- examples/filmography/package.json | 6 +- examples/gsa-per-diem/package.json | 6 +- examples/movies/package.json | 6 +- examples/shop/package.json | 6 +- examples/vehicles/package.json | 6 +- jest.asset-transform.cjs | 40 + jest.config.ts | 6 - jest.preset.js | 18 +- nx.json | 196 - package-lock.json | 7639 +++++++----------- package.json | 135 +- packages/agent/package.json | 20 +- packages/agent/rollup.config.cjs | 116 - packages/azure-durable/package.json | 40 +- packages/azure-durable/rollup.config.cjs | 116 - packages/captcha-tesseract/package.json | 33 +- packages/captcha-tesseract/rollup.config.cjs | 116 - packages/cli/package.json | 40 +- packages/cli/rollup.config.cjs | 116 - packages/core/package.json | 45 +- packages/core/rollup.config.cjs | 116 - packages/mcp/package.json | 71 +- packages/mcp/rollup.config.cjs | 116 - packages/ocr-tesseract/package.json | 8 +- packages/ocr-tesseract/rollup.config.cjs | 116 - packages/office-reader/package.json | 22 +- packages/office-reader/rollup.config.cjs | 129 - packages/probe/package.json | 18 +- packages/probe/rollup.config.cjs | 116 - packages/studio/package.json | 36 +- packages/studio/rollup.config.cjs | 116 - python-packages/opencraw/project.json | 45 - python-packages/opencraw/pyproject.toml | 3 + requirements-dev.txt | 1 + smith.toml | 203 + 56 files changed, 3393 insertions(+), 7282 deletions(-) create mode 100644 declaration-specifiers.mjs delete mode 100644 eslint.config.mnci.mjs create mode 100644 jest.asset-transform.cjs delete mode 100644 jest.config.ts delete mode 100644 nx.json delete mode 100644 packages/agent/rollup.config.cjs delete mode 100644 packages/azure-durable/rollup.config.cjs delete mode 100644 packages/captcha-tesseract/rollup.config.cjs delete mode 100644 packages/cli/rollup.config.cjs delete mode 100644 packages/core/rollup.config.cjs delete mode 100644 packages/mcp/rollup.config.cjs delete mode 100644 packages/ocr-tesseract/rollup.config.cjs delete mode 100644 packages/office-reader/rollup.config.cjs delete mode 100644 packages/probe/rollup.config.cjs delete mode 100644 packages/studio/rollup.config.cjs delete mode 100644 python-packages/opencraw/project.json create mode 100644 smith.toml diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1be89349..b4b58ecb 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,27 +1,15 @@ +// Generated by smith from the workspace's projects. `smith add` and `smith ci generate` +// rewrite this file: put your own steps between the smith:slot markers, which are kept. { "name": "opencraw", - "image": "mcr.microsoft.com/devcontainers/typescript-node:24-bookworm", + "image": "mcr.microsoft.com/devcontainers/base:bookworm", "features": { + "ghcr.io/devcontainers/features/node:1": { + "version": "24" + }, "ghcr.io/devcontainers/features/python:1": { "version": "3.12" - }, - "ghcr.io/devcontainers/features/go:1": { - "version": "1.27", - "golangciLintVersion": "2.14.0" - }, - "ghcr.io/devcontainers/features/dotnet:2": { - "version": "10.0" } }, - "postCreateCommand": "npm install -g npm@12 && npm ci && npx mnci ci setup", - "customizations": { - "vscode": { - "extensions": [ - "dbaeumer.vscode-eslint", - "nrwl.angular-console", - "firsttris.vscode-jest-runner" - ] - } - } + "postCreateCommand": "curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- \"1.9.2\" && \"$HOME/.local/bin/smith\" ci setup" } - diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3233e0c2..08aa4d7c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,10 +1,6 @@ -name: CI - -# Generated by MoNecromanCI. Deliberately thin: Nx builds, 'nx release' -# versions from conventional commits and pushes ONLY a tag to main, and each -# app is packed into dist/drop/-.zip by its own 'package' target. -# The GitHub Actions equivalent of azure-pipelines.yml — see there for the -# fuller rationale; both stay hand-kept in lockstep, there is no shared template. +# Generated by smith from the workspace's projects. `smith add` and `smith ci generate` +# rewrite this file: put your own steps between the smith:slot markers, which are kept. +name: ci on: push: @@ -12,172 +8,64 @@ on: pull_request: branches: [main] -concurrency: - # One run at a time per ref, but `cancel-in-progress` is an **expression** on - # purpose rather than a flat `true`. - # - # A superseded PR run is pure waste, so cancel it. A run on `main` must never - # be cancelled: it publishes packages and pushes release tags, and killing it - # part-way can leave a tag pushed with the publish only half done — a state no - # rerun repairs cleanly, because the version is then already tagged. Those runs - # queue instead, which also stops two `nx release` invocations racing to create - # the same tag when two commits land close together. - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} - permissions: - # Lets the release step push the version tag nx release creates back to main, - # and (github-only provider) create the GitHub Release itself. contents: write - # Lets azure/login exchange this job's OIDC token for a Microsoft Entra ID one, - # which is how a VS Code extension reaches the Marketplace with no stored secret. - # A token minted on a pull request cannot use it: the federated credential is - # pinned to refs/heads/main. - id-token: write + pull-requests: write + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: ci: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v7 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - # Version resolution needs the release tags. - - run: git fetch --all --prune --tags - name: Fetch branches and release tags - - - run: git config user.name "github-actions[bot]" && git config user.email "github-actions[bot]@users.noreply.github.com" - name: Set the git identity used for release tags - - - uses: actions/setup-node@v7 + - uses: actions/setup-node@v4 with: - node-version: 24 - # Caches ~/.npm keyed on package-lock.json, so `npm ci` restores from - # the local cache instead of re-downloading every tarball on every run. - # Nothing to invalidate by hand: the action keys on the lockfile, so a - # dependency change misses the cache and a no-op change hits it. - cache: npm - - # setup-node installs whatever npm the Node image bundles, and npm's major - # is part of the contract: npm 11 reuses an already-installed tree instead - # of re-resolving, so it applies `overrides` differently from npm 10. See - # NPM_VERSION's remarks for the measurement. - - run: npm install -g npm@12 - name: Pin npm to the major mnci verifies against - - - run: npm ci - name: Install dependencies - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - # mnci:slot after-install (your own steps go between these two lines; mnci upgrade keeps them) - # mnci:slot-end after-install - - # Everything from here to the release is a command of the mnci CLI, a - # devDependency of this workspace, so the version is the lockfile's and a - # developer reproduces CI by running the same line. The guards that used to be - # inline here are tested TypeScript in the CLI's ci-pipeline slice. Node, - # the checkout and 'npm ci' stay above: Node must exist before 'npx' can run. - - # The language toolchains the workspace needs: Python (ruff, pytest, build, - # twine, and every project installed into one shared environment), Go (the - # modules and a checksum-verified golangci-lint, put on PATH) and Flutter (the - # pinned SDK, put on PATH, and one pub get). Each is skipped cleanly when the - # workspace has no project in that language. - - run: npx mnci ci setup - name: Set up the language toolchains (Python, Go, Flutter) - - # Fails ONLY on an advisory that has a published fix, at moderate or above; - # anything upstream has not fixed is printed and passes. pip-audit only - # reports: its output has no "a fix exists" field to draw that line with. - - run: npx mnci ci audit - name: Audit dependencies (fails on an actionable npm advisory) - - # .NET, if the workspace has any. actions/setup-dotnet is the - # maintained, cached installer GitHub itself ships, so this uses it - # directly rather than a hand-rolled 'node -e' guard — see - # DOTNET_DETECT_AZURE's remarks for the full reasoning. hashFiles() - # gates it inline, so a JS-only workspace pays nothing. - - uses: actions/setup-dotnet@v6 - if: ${{ hashFiles('apps/*/*.csproj', 'packages/*/*.csproj', 'libs/*/*.csproj') != '' }} + node-version: '24' + - uses: actions/setup-python@v5 with: - dotnet-version: 10.0.x - - # Fails fast on a stale TypeScript project reference, then the one verify - # step, and deliberately the only one: affected projects on a pull request, - # EVERY project on anything else (a push to main included, so a release is - # always verified in full). Every fallback takes the full path, because a run - # that verifies too little still reports green. Apps that need a C toolchain - # are left to the native job. - - run: npx mnci ci verify - name: Verify (sync check, then affected on a PR, every project on main) - - # mnci:phase pack (delete or comment this block to switch it off; mnci upgrade keeps it off) - # Pack every app into dist/drop/-.zip via each app's 'package' - # target; skipped cleanly when the workspace has no apps yet. - - run: npx mnci ci pack - name: Pack all apps (one zip per app -> dist/drop) - if: ${{ github.event_name == 'push' && github.ref_name == 'main' }} - - - uses: actions/upload-artifact@v7 - if: ${{ github.event_name == 'push' && github.ref_name == 'main' }} + python-version: '3.12' + - name: Install smith + run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + env: + SMITH_VERSION: 1.9.2 + GITHUB_TOKEN: ${{ github.token }} + # smith:slot before-setup + # The lockfile is written by npm 12: npm 11 prunes the nested @emnapi entries of the + # wasm32-wasi bindings, and npm 12's npm ci then refuses it (AGENTS.md). + - name: Pin npm 12 + run: npm install -g npm@12 + # smith:slot-end before-setup + - name: Setup + run: smith ci setup + - name: Audit + run: smith ci audit + - name: Verify + run: smith ci verify + # smith:slot after-verify + # smith:slot-end after-verify + - name: Release preview + if: github.event_name == 'pull_request' + run: smith release --dry-run --comment + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Pack + if: github.event_name == 'push' && github.ref_name == 'main' + run: smith ci pack + - uses: actions/upload-artifact@v4 + if: github.event_name == 'push' && github.ref_name == 'main' with: name: drop path: dist/drop if-no-files-found: ignore - # mnci:phase-end pack - - # mnci:slot before-release (your own steps go between these two lines; mnci upgrade keeps them) - # mnci:slot-end before-release - - # mnci:phase release (delete or comment this block to switch it off; mnci upgrade keeps it off) - # Signs in to Microsoft Entra ID as the Marketplace publishing identity (an - # app registration with a federated credential for this repository's main - # branch), so the release step publishes VS Code extensions with - # 'vsce publish --azure-credential' and no token. Runs only when the - # AZURE_CLIENT_ID and AZURE_TENANT_ID repository variables exist and the - # workspace has an extension (every one ships a .vscodeignore). No Azure - # subscription is needed. Setup: README, 'VS Code extensions'. - - uses: azure/login@v3 - name: Sign in to Microsoft Entra ID (VS Code Marketplace) - if: ${{ github.event_name == 'push' && github.ref_name == 'main' && vars.AZURE_CLIENT_ID != '' && hashFiles('apps/*/.vscodeignore') != '' }} - with: - client-id: ${{ vars.AZURE_CLIENT_ID }} - tenant-id: ${{ vars.AZURE_TENANT_ID }} - allow-no-subscriptions: true - - # The release, in the order that keeps a failure safe: refuse a shallow - # clone, prove the npm token and name the PyPI projects it would create (all - # BEFORE anything is tagged), then version + tag + publish in one 'nx release' - # for npm, Python, C# and VS Code, then attach a releasable Go app's zips and - # push the tags. Which registry, and whether GitHub Releases are on, are read - # from the 'mnci' block of nx.json, not baked into this file. The secrets are - # mapped here, in the one place a command cannot reach. - # - # RELEASE_SPECIFIER (repository variable, Settings -> Secrets and - # variables -> Actions -> Variables) overrides the bump nx would compute - # from conventional commits for THIS run: 'major', 'minor', 'patch', or an - # exact version ('1.2.3'). With more than one releasable package a bare - # keyword is unreliable (nx versions interdependent packages in two passes, - # and the second computes from a version cached before the first), so the - # command fails the run rather than under-bumping silently: prefer an exact - # version, and clear the variable once the override is no longer needed. - - run: npx mnci ci release - name: Release — version, tag, publish and GitHub Release (npm + Python + C# + VS Code) - if: ${{ github.event_name == 'push' && github.ref_name == 'main' }} + - name: Release + if: github.event_name == 'push' && github.ref_name == 'main' + run: smith ci release env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} - RELEASE_SPECIFIER: ${{ vars.RELEASE_SPECIFIER }} - # A VS Code extension publishes with Entra ID when the sign-in step - # above ran (VSCE_AUTH=entra), else with the VSCE_PAT token; - # tools/vscode-extension.cjs skips the Marketplace with neither. - VSCE_AUTH: ${{ vars.AZURE_CLIENT_ID != '' && 'entra' || '' }} - VSCE_PAT: ${{ secrets.VSCE_PAT }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # mnci:phase-end release - - # mnci:slot after-release (your own steps go between these two lines; mnci upgrade keeps them) - # mnci:slot-end after-release + NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} + PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} diff --git a/.github/workflows/desktop-package.yml b/.github/workflows/desktop-package.yml index 418a267a..6d29c618 100644 --- a/.github/workflows/desktop-package.yml +++ b/.github/workflows/desktop-package.yml @@ -28,6 +28,13 @@ jobs: with: node-version: 24 cache: npm + # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. + - name: Install smith + shell: bash + run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + env: + SMITH_VERSION: 1.9.2 + GITHUB_TOKEN: ${{ github.token }} - run: npm ci - name: Installer run: npm run studio-desktop:package diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index a37d1b07..b34ed8f7 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -1,7 +1,8 @@ # Browser end-to-end tests for @opencraw/core, @opencraw/office-reader's # check that its published bundle runs in a browser, and # @opencraw/captcha-tesseract's reads of rendered captchas. Kept out of ci.yml on purpose: -# that file is owned and rewritten by `mnci upgrade`, this one is ours. +# that file is generated by `smith ci generate`, this one is ours. Each e2e task installs its browsers +# first (the playwright convention, e2e-browsers) and runs under xvfb-run itself when it opens windows. name: e2e on: @@ -18,13 +19,19 @@ jobs: with: node-version: 24 cache: npm + # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. + - name: Install smith + shell: bash + run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + env: + SMITH_VERSION: 1.9.2 + GITHUB_TOKEN: ${{ github.token }} - run: npm ci - - run: npx playwright install --with-deps chromium - run: npm run core:e2e # The recording flows open a headed window: a virtual display stands in for a screen. - - run: xvfb-run -a npm run studio:e2e + - run: npm run studio:e2e # The desktop app: a real Electron window against the built UI. - - run: xvfb-run -a npm run studio-desktop:e2e + - run: npm run studio-desktop:e2e - run: npm run office-reader:e2e - run: npm run captcha-tesseract:e2e # Every example's recipes load and bind; the examples that run offline run. diff --git a/.github/workflows/vscode-e2e.yml b/.github/workflows/vscode-e2e.yml index 14aae62d..6c7d791f 100644 --- a/.github/workflows/vscode-e2e.yml +++ b/.github/workflows/vscode-e2e.yml @@ -22,6 +22,13 @@ jobs: with: node-version: 24 cache: npm + # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. + - name: Install smith + shell: bash + run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + env: + SMITH_VERSION: 1.9.2 + GITHUB_TOKEN: ${{ github.token }} - run: npm ci # The libraries an Electron editor needs on a bare runner. - run: npx playwright install-deps chromium diff --git a/.github/workflows/vscode-package.yml b/.github/workflows/vscode-package.yml index ac9f6064..e08708c7 100644 --- a/.github/workflows/vscode-package.yml +++ b/.github/workflows/vscode-package.yml @@ -26,6 +26,13 @@ jobs: with: node-version: 24 cache: npm + # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. + - name: Install smith + shell: bash + run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + env: + SMITH_VERSION: 1.9.2 + GITHUB_TOKEN: ${{ github.token }} - run: npm ci - name: Package the extension run: npm run vscode:package diff --git a/.github/workflows/vscode-publish.yml b/.github/workflows/vscode-publish.yml index 58c8304d..e1bfb11e 100644 --- a/.github/workflows/vscode-publish.yml +++ b/.github/workflows/vscode-publish.yml @@ -85,6 +85,13 @@ jobs: with: node-version: 24 cache: npm + # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. + - name: Install smith + shell: bash + run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + env: + SMITH_VERSION: 1.9.2 + GITHUB_TOKEN: ${{ github.token }} - run: npm ci - name: Package the extension run: npm run vscode:package diff --git a/.gitignore b/.gitignore index fef2f16e..6edd77bd 100644 --- a/.gitignore +++ b/.gitignore @@ -81,3 +81,7 @@ apps/vscode-extension/*.vsix # The documentation an agent reads, copied in at build (packages/mcp/scripts/copy-docs.mjs) /packages/mcp/docs/ + +# smith +.smith/ +.venv/ diff --git a/apps/azure-host/package.json b/apps/azure-host/package.json index 4e625ed6..7fa18b4e 100644 --- a/apps/azure-host/package.json +++ b/apps/azure-host/package.json @@ -15,141 +15,12 @@ "overrides": { "uuid": "^11.1.1" }, - "nx": { - "targets": { - "typecheck": { - "dependsOn": [ - "^build" - ] - }, - "lint": { - "dependsOn": [ - "^build" - ] - }, - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "defaultConfiguration": "production", - "options": { - "platform": "node", - "outputPath": "apps/azure-host/dist", - "format": [ - "esm" - ], - "bundle": false, - "main": "apps/azure-host/src/main.ts", - "tsConfig": "apps/azure-host/tsconfig.app.json", - "assets": [ - { - "input": "apps/azure-host/src/assets", - "glob": "**/*", - "output": "assets" - } - ], - "esbuildOptions": { - "sourcemap": true, - "outExtension": { - ".js": ".js" - } - } - }, - "configurations": { - "development": {}, - "production": { - "esbuildOptions": { - "sourcemap": false, - "outExtension": { - ".js": ".js" - } - } - } - } - }, - "prune-lockfile": { - "dependsOn": [ - "build" - ], - "cache": true, - "executor": "@nx/js:prune-lockfile", - "outputs": [ - "{workspaceRoot}/apps/azure-host/dist/package.json", - "{workspaceRoot}/apps/azure-host/dist/package-lock.json" - ], - "options": { - "buildTarget": "build" - } - }, - "copy-workspace-modules": { - "dependsOn": [ - "build" - ], - "cache": true, - "outputs": [ - "{workspaceRoot}/apps/azure-host/dist/workspace_modules" - ], - "executor": "@nx/js:copy-workspace-modules", - "options": { - "buildTarget": "build" - } - }, - "prune": { - "dependsOn": [ - "prune-lockfile", - "copy-workspace-modules" - ], - "executor": "nx:noop" - }, - "serve": { - "continuous": true, - "executor": "@nx/js:node", - "defaultConfiguration": "development", - "dependsOn": [ - "build" - ], - "options": { - "buildTarget": "@opencraw/azure-host:build", - "runBuildTargetDependencies": false - }, - "configurations": { - "development": { - "buildTarget": "@opencraw/azure-host:build:development" - }, - "production": { - "buildTarget": "@opencraw/azure-host:build:production" - } - } - }, - "test": { - "options": { - "passWithNoTests": true - } - }, - "package": { - "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], - "outputs": [ - "{workspaceRoot}/dist/drop/node-function-app-azure-host.zip" - ], - "options": { - "command": "node -e \"const fs=require('node:fs');fs.mkdirSync('dist/drop',{recursive:true});const A=require('adm-zip');const z=new A();z.addLocalFolder('apps/azure-host/dist','dist');z.addLocalFile('apps/azure-host/host.json');z.addLocalFile('apps/azure-host/package.json');z.writeZip('dist/drop/node-function-app-azure-host.zip')\"" - } - }, - "start": { - "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], - "continuous": true, - "options": { - "command": "func start", - "cwd": "apps/azure-host" - } - } - } + "scripts": { + "build": "node -e \"const ts=require('typescript'),p=require('node:path'),c=ts.getParsedCommandLineOfConfigFile('tsconfig.app.json',{},{...ts.sys,onUnRecoverableConfigFileDiagnostic:d=>{throw new Error(ts.flattenDiagnosticMessageText(d.messageText,' '))}});require('esbuild').buildSync({entryPoints:[...new Set(['src/main.ts',...c.fileNames].map(f=>p.resolve(f)))],outdir:'dist',platform:'node',format:'esm',sourcemap:true,tsconfig:'tsconfig.app.json'})\" && node -e \"const fs=require('node:fs'),p=require('node:path');for(const[i,g,o,w]of[['src/assets','**/*','dist/assets',0]])for(const f of fs.globSync(g,{cwd:i})){const s=p.join(i,f),d=p.join(o,f);if(fs.statSync(s).isDirectory()){if(w)fs.cpSync(s,d,{recursive:true})}else{fs.mkdirSync(p.dirname(d),{recursive:true});fs.copyFileSync(s,d)}}\"", + "lint": "eslint .", + "serve": "node dist/main.js", + "start": "func start", + "test": "jest --passWithNoTests", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" } } diff --git a/apps/studio-desktop/package.json b/apps/studio-desktop/package.json index 740933e3..4ad8a6b8 100644 --- a/apps/studio-desktop/package.json +++ b/apps/studio-desktop/package.json @@ -2,102 +2,6 @@ "name": "@opencraw/studio-desktop", "version": "0.0.1", "private": true, - "nx": { - "targets": { - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "defaultConfiguration": "production", - "options": { - "platform": "node", - "outputPath": "apps/studio-desktop/dist", - "format": [ - "esm" - ], - "bundle": true, - "main": "apps/studio-desktop/src/main.ts", - "tsConfig": "apps/studio-desktop/tsconfig.app.json", - "esbuildOptions": { - "sourcemap": true, - "outExtension": { - ".js": ".js" - } - }, - "thirdParty": false, - "assets": [ - { - "input": "apps/studio-desktop/src/desktop-bridge", - "glob": "preload.cjs", - "output": "." - } - ], - "external": [ - "@opencraw/*" - ] - }, - "configurations": { - "development": {}, - "production": { - "esbuildOptions": { - "sourcemap": false, - "outExtension": { - ".js": ".js" - } - } - } - } - }, - "test": { - "options": { - "passWithNoTests": true - } - }, - "start": { - "executor": "nx:run-commands", - "continuous": true, - "dependsOn": [ - "build", - "@opencraw/cli:build", - "@opencraw/studio:build", - "@opencraw/studio-ui:build" - ], - "options": { - "command": "electron .", - "cwd": "apps/studio-desktop" - } - }, - "package": { - "executor": "nx:run-commands", - "dependsOn": [ - "build", - "@opencraw/cli:build", - "@opencraw/studio:build", - "@opencraw/studio-ui:build" - ], - "cache": false, - "options": { - "command": "node packaging/package-app.mjs", - "cwd": "apps/studio-desktop" - } - }, - "e2e": { - "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], - "inputs": [ - "default", - "^production" - ], - "options": { - "command": "vite build -c ../studio-ui/vite.config.mts && tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts --forceExit", - "cwd": "apps/studio-desktop" - } - } - } - }, "dependencies": { "@opencraw/cli": "^0.0.1", "@opencraw/studio": "^0.0.1" @@ -108,5 +12,21 @@ "devDependencies": { "electron": "^44.7.0", "electron-builder": "^26.15.3" + }, + "scripts": { + "build": "esbuild src/main.ts --bundle --packages=external --platform=node --format=esm --outdir=dist --sourcemap && node -e \"const fs=require('node:fs'),p=require('node:path');for(const[i,g,o,w]of[['src/desktop-bridge','preload.cjs','dist',0]])for(const f of fs.globSync(g,{cwd:i})){const s=p.join(i,f),d=p.join(o,f);if(fs.statSync(s).isDirectory()){if(w)fs.cpSync(s,d,{recursive:true})}else{fs.mkdirSync(p.dirname(d),{recursive:true});fs.copyFileSync(s,d)}}\"", + "e2e": "vite build -c ../studio-ui/vite.config.mts && tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts --forceExit", + "lint": "eslint .", + "package": "node packaging/package-app.mjs", + "package:dir": "node packaging/package-app.mjs --dir", + "start": "electron .", + "test": "jest --passWithNoTests", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" + }, + "smith": { + "playwright": { + "flavour": "library", + "display": true + } } } diff --git a/apps/studio-ui/jest.config.cts b/apps/studio-ui/jest.config.cts index 05d6d841..782c3ba8 100644 --- a/apps/studio-ui/jest.config.cts +++ b/apps/studio-ui/jest.config.cts @@ -3,8 +3,8 @@ module.exports = { preset: '../../jest.preset.js', testEnvironment: 'jsdom', transform: { - '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', - '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }], + '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '/../../jest.asset-transform.cjs', + '^.+\\.[tj]sx?$': ['babel-jest', { presets: [['@babel/preset-env', { targets: { node: 'current' }, loose: true }], ['@babel/preset-typescript', { allowDeclareFields: true }], ['@babel/preset-react', { runtime: 'automatic', development: true }]] }], }, moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], coverageDirectory: 'test-output/jest/coverage', diff --git a/apps/studio-ui/package.json b/apps/studio-ui/package.json index 062744ae..ef76235e 100644 --- a/apps/studio-ui/package.json +++ b/apps/studio-ui/package.json @@ -2,56 +2,6 @@ "name": "@opencraw/studio-ui", "version": "0.0.1", "private": true, - "nx": { - "targets": { - "build-dev": { - "executor": "nx:run-commands", - "outputs": [ - "{workspaceRoot}/apps/studio-ui/dist-dev" - ], - "options": { - "command": "vite build --mode dev --outDir dist-dev", - "cwd": "apps/studio-ui" - } - }, - "build-uat": { - "executor": "nx:run-commands", - "outputs": [ - "{workspaceRoot}/apps/studio-ui/dist-uat" - ], - "options": { - "command": "vite build --mode uat --outDir dist-uat", - "cwd": "apps/studio-ui" - } - }, - "build-prod": { - "executor": "nx:run-commands", - "outputs": [ - "{workspaceRoot}/apps/studio-ui/dist-prod" - ], - "options": { - "command": "vite build --mode prod --outDir dist-prod", - "cwd": "apps/studio-ui" - } - }, - "package": { - "executor": "nx:run-commands", - "dependsOn": [ - "build-dev", - "build-uat", - "build-prod" - ], - "outputs": [ - "{workspaceRoot}/dist/drop/react-app-studio-ui-dev.zip", - "{workspaceRoot}/dist/drop/react-app-studio-ui-uat.zip", - "{workspaceRoot}/dist/drop/react-app-studio-ui-prod.zip" - ], - "options": { - "command": "node -e \"const fs=require('node:fs');fs.mkdirSync('dist/drop',{recursive:true});const A=require('adm-zip');let z;z=new A();z.addLocalFolder('apps/studio-ui/dist-dev');z.writeZip('dist/drop/react-app-studio-ui-dev.zip');z=new A();z.addLocalFolder('apps/studio-ui/dist-uat');z.writeZip('dist/drop/react-app-studio-ui-uat.zip');z=new A();z.addLocalFolder('apps/studio-ui/dist-prod');z.writeZip('dist/drop/react-app-studio-ui-prod.zip')\"" - } - } - } - }, "dependencies": { "@chakra-ui/react": "3.37.0", "@codemirror/lang-json": "^6.0.2", @@ -65,5 +15,17 @@ "jsonc-parser": "^3.3.1", "pdfjs-dist": "^6.3.289", "zustand": "^5.0.15" + }, + "scripts": { + "build": "vite build", + "build-dev": "vite build --mode dev --outDir dist-dev", + "build-prod": "vite build --mode prod --outDir dist-prod", + "build-uat": "vite build --mode uat --outDir dist-uat", + "dev": "vite", + "lint": "eslint .", + "preview": "vite preview", + "serve": "vite", + "test": "jest", + "typecheck": "tsc --build --emitDeclarationOnly" } } diff --git a/apps/studio-ui/tsconfig.app.json b/apps/studio-ui/tsconfig.app.json index 7b1bfbf7..89f8f528 100644 --- a/apps/studio-ui/tsconfig.app.json +++ b/apps/studio-ui/tsconfig.app.json @@ -9,8 +9,6 @@ ], "types": [ "node", - "@nx/react/typings/cssmodule.d.ts", - "@nx/react/typings/image.d.ts", "vite/client" ], "rootDir": "src", diff --git a/apps/studio-ui/tsconfig.spec.json b/apps/studio-ui/tsconfig.spec.json index d6a46ed4..781d6089 100644 --- a/apps/studio-ui/tsconfig.spec.json +++ b/apps/studio-ui/tsconfig.spec.json @@ -10,8 +10,7 @@ "types": [ "jest", "node", - "@nx/react/typings/cssmodule.d.ts", - "@nx/react/typings/image.d.ts" + "vite/client" ], "module": "esnext", "moduleResolution": "bundler" diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index b9205ad2..c6a9f850 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -289,95 +289,6 @@ } ] }, - "nx": { - "targets": { - "build": { - "executor": "@nx/esbuild:esbuild", - "outputs": [ - "{options.outputPath}" - ], - "defaultConfiguration": "production", - "options": { - "platform": "node", - "outputPath": "apps/vscode-extension/dist", - "format": [ - "cjs" - ], - "bundle": true, - "main": "apps/vscode-extension/src/extension.ts", - "tsConfig": "apps/vscode-extension/tsconfig.app.json", - "esbuildOptions": { - "sourcemap": true, - "outExtension": { - ".js": ".cjs" - } - }, - "thirdParty": false, - "assets": [ - { - "input": "apps/vscode-extension/src/studio-host", - "glob": "studio-host.process.mjs", - "output": "." - } - ], - "external": [ - "vscode", - "@opencraw/*" - ] - }, - "configurations": { - "development": {}, - "production": { - "esbuildOptions": { - "sourcemap": false, - "outExtension": { - ".js": ".cjs" - } - } - } - } - }, - "test": { - "options": { - "passWithNoTests": true - } - }, - "e2e": { - "executor": "nx:run-commands", - "dependsOn": [ - "build", - "@opencraw/cli:build", - "@opencraw/mcp:build", - "@opencraw/ocr-tesseract:build", - "@opencraw/agent:build", - "@opencraw/studio:build", - "@opencraw/studio-ui:build" - ], - "cache": false, - "options": { - "command": "node packaging/package-vsix.mjs --stage-only && node e2e/run-editor-test.mjs", - "cwd": "apps/vscode-extension" - } - }, - "package": { - "executor": "nx:run-commands", - "dependsOn": [ - "build", - "@opencraw/cli:build", - "@opencraw/mcp:build", - "@opencraw/ocr-tesseract:build", - "@opencraw/agent:build", - "@opencraw/studio:build", - "@opencraw/studio-ui:build" - ], - "cache": false, - "options": { - "command": "node packaging/package-vsix.mjs", - "cwd": "apps/vscode-extension" - } - } - } - }, "dependencies": { "@opencraw/agent": "^0.0.1", "@opencraw/cli": "^0.0.1", @@ -386,5 +297,13 @@ "devDependencies": { "@types/vscode": "1.125.0", "@vscode/test-electron": "^3.1.0" + }, + "scripts": { + "build": "esbuild src/extension.ts --bundle --packages=external --platform=node --format=cjs --outdir=dist --sourcemap && node -e \"const fs=require('node:fs'),p=require('node:path');for(const[i,g,o,w]of[['src/studio-host','studio-host.process.mjs','dist',0]])for(const f of fs.globSync(g,{cwd:i})){const s=p.join(i,f),d=p.join(o,f);if(fs.statSync(s).isDirectory()){if(w)fs.cpSync(s,d,{recursive:true})}else{fs.mkdirSync(p.dirname(d),{recursive:true});fs.copyFileSync(s,d)}}\"", + "e2e": "node packaging/package-vsix.mjs --stage-only && node e2e/run-editor-test.mjs", + "lint": "eslint .", + "package": "node packaging/package-vsix.mjs", + "test": "jest --passWithNoTests", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" } } diff --git a/declaration-specifiers.mjs b/declaration-specifiers.mjs new file mode 100644 index 00000000..3ad35c4f --- /dev/null +++ b/declaration-specifiers.mjs @@ -0,0 +1,28 @@ +// Written by smith convert: what mnci's rollup plugin did to declarations. +// tsc writes relative specifiers as the sources spell them ('./hooks'); a +// node16 or nodenext consumer of an ES module package needs the file +// ('./hooks.js', or './hooks/index.js' for a folder). Run after tsc with the +// declaration directory: node declaration-specifiers.mjs dist/src +import fs from 'node:fs' +import path from 'node:path' + +const directory = process.argv[2] +const specifier = /((?:from|import)\s*\(?\s*)(['"])(\.{1,2}(?:\/[^'"]*)?)\2/g +const resolved = /\.(?:[cm]?js|json)$/ + +function withFile (from, quote, prefix, name) { + if (resolved.test(name)) return null + const bare = name.replace(/\/$/, '') + if (fs.existsSync(path.join(from, bare + '.d.ts'))) return prefix + quote + bare + '.js' + quote + if (fs.existsSync(path.join(from, bare, 'index.d.ts'))) return prefix + quote + bare + '/index.js' + quote + return null +} + +for (const entry of fs.readdirSync(directory, { recursive: true })) { + if (!String(entry).endsWith('.d.ts')) continue + const file = path.join(directory, String(entry)) + const from = path.dirname(file) + const text = fs.readFileSync(file, 'utf8') + const out = text.replace(specifier, (match, prefix, quote, name) => withFile(from, quote, prefix, name) ?? match) + if (out !== text) fs.writeFileSync(file, out) +} diff --git a/eslint.config.mjs b/eslint.config.mjs index a9db7ad4..fb3ce469 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,7 +1,7 @@ -import mnci from './eslint.config.mnci.mjs' +import monosmith from '@monosmith/eslint-config' export default [ - ...mnci({ verticalSlices: ['packages/*/src/**/*.ts'] }), + ...monosmith({ verticalSlices: ['packages/*/src/**/*.ts'] }), { name: 'local/test-fixtures-are-data', ignores: ['packages/*/src/**/fixtures/**/*.{html,json,txt}'] }, { name: 'local/contract-regexes-are-flag-free', @@ -14,27 +14,6 @@ export default [ }], }, }, - { - name: 'local/dependency-checks-never-remove', - files: ['packages/*/package.json', 'libs/*/package.json'], - // Rule options replace mnci's rather than merge, so its ignoredFiles are repeated here. - rules: { - '@nx/dependency-checks': ['error', { - checkObsoleteDependencies: false, - checkVersionMismatches: false, - ignoredFiles: [ - '{projectRoot}/eslint.config.{js,cjs,mjs,ts,cts,mts}', - '{projectRoot}/rollup.config.{js,ts,mjs,mts,cjs,cts}', - '{projectRoot}/jest.config.{js,ts,mjs,mts,cjs,cts}', - '{projectRoot}/jest.e2e.config.{js,ts,mjs,mts,cjs,cts}', - '{projectRoot}/e2e/**', - '{projectRoot}/tools/**', - '{projectRoot}/**/*.spec.{js,ts,jsx,tsx}', - '{projectRoot}/**/*.test.{js,ts,jsx,tsx}', - ], - }], - }, - }, { ignores: [ '**/vite.config.*.timestamp*', @@ -46,6 +25,14 @@ export default [ 'apps/vscode-extension/.vscode-test/**', // Runs once to make the tutorial's pictures and video: it drives a browser page (code that runs in the page is a string of the page's own globals). 'docs/studio/capture/**', + // Written by smith (convert, ci generate), which do not pass this config yet: monosmith-app/monosmith#286. + '.devcontainer/devcontainer.json', + 'declaration-specifiers.mjs', + 'jest.asset-transform.cjs', + 'jest.preset.js', + // Local only, never committed: field-test scratch (gitignored) and the browser tool's snapshots. + 'studio-field-tests/**', + '.playwright-mcp/**', ], }, ] diff --git a/eslint.config.mnci.mjs b/eslint.config.mnci.mjs deleted file mode 100644 index 4916bc3d..00000000 --- a/eslint.config.mnci.mjs +++ /dev/null @@ -1,72 +0,0 @@ -// GENERATED BY mnci. Every `mnci upgrade` overwrites this file. -// -// Do not edit it: put your own blocks in eslint.config.mjs next to it, which -// imports this one and which mnci never touches once it exists. -import mnci from '@mnci/eslint-config' - -// WHAT IS IN HERE. Each line is one config block, by the `name` it carries. -// -// mnci/ignores paths never linted (dist, coverage, .venv, …) -// mnci/base JS/TS correctness — @eslint/js, eslint-plugin-unicorn, -// -promise, -n, -unused-imports -// typescript-eslint/* typescript-eslint's own recommended blocks -// mnci/typescript* TS rules on top of them, no type information needed -// mnci/type-aware* the rules that DO read types (no-floating-promises and -// friends), scoped to {apps,libs,packages}/*/src -// mnci/import-graph import cycles — eslint-plugin-import-x -// mnci/react JSX/TSX — @eslint-react/eslint-plugin, -// eslint-plugin-react-hooks, -react-refresh, -jsx-a11y -// mnci/regexp* regex correctness — eslint-plugin-regexp -// mnci/json mnci/jsonc mnci/json5 -// eslint-plugin-jsonc — comments are allowed in .jsonc -// and tsconfig.json, forbidden in plain .json -// mnci/yaml* eslint-plugin-yml — your CI pipeline files -// mnci/toml/base* eslint-plugin-toml, PARSER ONLY: a malformed -// pyproject.toml is a syntax error, nothing is styled -// mnci/markdown @eslint/markdown -// mnci/css @eslint/css -// mnci/html @html-eslint/eslint-plugin -// mnci/tests *.spec/*.test relaxations — eslint-plugin-jest -// (Vitest's globals too; the two stacks share them) -// mnci/tests/mock-aware specs in a project: eslint-plugin-jest's unbound-method, -// which knows expect(mock.method) has no this to lose -// mnci/nx-dependency-checks @nx/eslint-plugin, on publishable packages' manifests -// mnci/standard JavaScript Standard Style as ESLint rules — the -// whole formatting opinion, a faithful port of -// neostandard -// mnci/house-style the deliberate departures from Standard: -// trailing commas, aligned object values, -// consistent-as-needed quote-props, a blank line -// before return. Composed LAST, on purpose: -// nothing may follow that disables it. -// -// To list them as ESLint actually resolves them: npx eslint --inspect-config -// -// FORMATTING IS LINTING HERE. There is no Prettier, no oxfmt and no -// `format:check` — `npm run lint` reports indentation, quotes and spacing as -// ordinary errors, and `npm run format` is `eslint . --fix`. So do not add a -// formatter: whichever one you pick will disagree with the `mnci/standard` -// block above, and because a formatter runs on save it wins silently, leaving -// `lint` to fail on files you never edited by hand. -// -// That also applies to the editor. Installing a Prettier or oxfmt extension is -// enough on its own — neither needs a config file, and with none present they -// format against their own defaults (semicolons, double quotes), which is the -// inverse of Standard. -// -// Exported as a FUNCTION, not as the resolved array. @mnci/eslint-config takes -// options — `verticalSlices` is the one a workspace is most likely to want — -// and an already-resolved array has nowhere to receive them. Calling it from -// eslint.config.mjs is what keeps every option reachable from the file you own. -// -// `workspaceRoot` is resolved HERE because both files sit at the root, and it -// is what enables the @nx/dependency-checks block. -// -// A named function declaration, exported inline. Both shapes matter and both -// are enforced by this very config: `unicorn/no-anonymous-default-export` -// rejects an anonymous arrow, and `unicorn/default-export-style` rejects -// declaring one above the export and referring to it. Either mistake fails a -// generated workspace's own lint on its first run. -export default function mnciConfig (options = {}) { - return mnci({ workspaceRoot: import.meta.dirname, ...options }) -} diff --git a/examples/captcha-solver/package.json b/examples/captcha-solver/package.json index 75e4a783..e2a5821f 100644 --- a/examples/captcha-solver/package.json +++ b/examples/captcha-solver/package.json @@ -7,7 +7,8 @@ "scripts": { "setup": "playwright install chromium", "start": "node run.mjs", - "test": "node --test" + "test": "node --test", + "lint": "eslint ." }, "dependencies": { "@opencraw/core": "^0.1.10", @@ -15,5 +16,8 @@ }, "engines": { "node": ">=22" + }, + "smith": { + "kind": "app" } } diff --git a/examples/dfe-college-accounts/package.json b/examples/dfe-college-accounts/package.json index 90b31afc..070b1ede 100644 --- a/examples/dfe-college-accounts/package.json +++ b/examples/dfe-college-accounts/package.json @@ -7,12 +7,16 @@ "scripts": { "start": "node run.mjs", "live": "node run.mjs --live", - "test": "node --test" + "test": "node --test", + "lint": "eslint ." }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" + }, + "smith": { + "kind": "app" } } diff --git a/examples/fcc-regulatory-fees/package.json b/examples/fcc-regulatory-fees/package.json index 9eb469b9..926f783b 100644 --- a/examples/fcc-regulatory-fees/package.json +++ b/examples/fcc-regulatory-fees/package.json @@ -7,12 +7,16 @@ "scripts": { "start": "node run.mjs", "live": "node run.mjs --live", - "test": "node --test" + "test": "node --test", + "lint": "eslint ." }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" + }, + "smith": { + "kind": "app" } } diff --git a/examples/filmography/package.json b/examples/filmography/package.json index d8e67056..e515f041 100644 --- a/examples/filmography/package.json +++ b/examples/filmography/package.json @@ -5,12 +5,16 @@ "description": "OpenCraw example: from one movie to its lead actor to that actor's films, on TMDB and Letterboxd.", "type": "module", "scripts": { - "start": "node run.mjs" + "start": "node run.mjs", + "lint": "eslint ." }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" + }, + "smith": { + "kind": "app" } } diff --git a/examples/gsa-per-diem/package.json b/examples/gsa-per-diem/package.json index fb8d0d04..c43a2d5d 100644 --- a/examples/gsa-per-diem/package.json +++ b/examples/gsa-per-diem/package.json @@ -7,12 +7,16 @@ "scripts": { "start": "node run.mjs", "live": "node run.mjs --live", - "test": "node --test" + "test": "node --test", + "lint": "eslint ." }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" + }, + "smith": { + "kind": "app" } } diff --git a/examples/movies/package.json b/examples/movies/package.json index aaa70236..dd0f8700 100644 --- a/examples/movies/package.json +++ b/examples/movies/package.json @@ -6,7 +6,8 @@ "type": "module", "scripts": { "setup": "playwright install chromium", - "start": "node run.mjs" + "start": "node run.mjs", + "lint": "eslint ." }, "dependencies": { "@opencraw/core": "^0.1.10", @@ -14,5 +15,8 @@ }, "engines": { "node": ">=22" + }, + "smith": { + "kind": "app" } } diff --git a/examples/shop/package.json b/examples/shop/package.json index 29365069..e75136f2 100644 --- a/examples/shop/package.json +++ b/examples/shop/package.json @@ -8,7 +8,8 @@ "setup": "playwright install chromium", "start": "node run.mjs", "site": "node site.mjs", - "test": "node --test" + "test": "node --test", + "lint": "eslint ." }, "dependencies": { "@opencraw/core": "^0.1.10", @@ -16,5 +17,8 @@ }, "engines": { "node": ">=22" + }, + "smith": { + "kind": "app" } } diff --git a/examples/vehicles/package.json b/examples/vehicles/package.json index 23ab9a7c..0534c4d0 100644 --- a/examples/vehicles/package.json +++ b/examples/vehicles/package.json @@ -5,12 +5,16 @@ "description": "OpenCraw example: every version and priced configuration of one model on BYD UK and Kia UK.", "type": "module", "scripts": { - "start": "node run.mjs" + "start": "node run.mjs", + "lint": "eslint ." }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" + }, + "smith": { + "kind": "app" } } diff --git a/jest.asset-transform.cjs b/jest.asset-transform.cjs new file mode 100644 index 00000000..2513926f --- /dev/null +++ b/jest.asset-transform.cjs @@ -0,0 +1,40 @@ +// Written by smith convert: what @nx/react/plugins/jest did, without Nx. +// An imported SVG becomes a React component (named as SVGR names it), a JS or +// TS file goes to @swc/jest or babel-jest, and any other file is its name. +const path = require('node:path') + +function className(name) { + const camel = name + .replace(/([^a-zA-Z0-9])+(.)?/g, (_, __, chr) => (chr ? chr.toUpperCase() : '')) + .replace(/[^a-zA-Z\d]/g, '') + return camel.charAt(0).toUpperCase() + camel.slice(1) +} + +function jsTransformer(transforms) { + const swc = (transforms ?? []).some((t) => Array.isArray(t) && t.some((v) => typeof v === 'string' && v.includes('@swc/jest'))) + if (swc) return require('@swc/jest').createTransformer() + return require('babel-jest').default.createTransformer() +} + +module.exports = { + process(src, filename, options) { + const assetFilename = JSON.stringify(path.basename(filename)) + if (filename.endsWith('.svg')) { + const componentName = 'Svg' + className(path.parse(filename).name) + return { + code: `const React = require('react'); +module.exports = { + __esModule: true, + default: ${assetFilename}, + ReactComponent: function ${componentName}(props) { + return React.createElement('svg', Object.assign({}, props, { children: ${assetFilename} })); + }, +};`, + } + } + if (['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'].includes(path.extname(filename))) { + return jsTransformer(options.config?.transform).process(src, filename, options) + } + return { code: `module.exports = ${assetFilename};` } + }, +} diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index 3a5809fb..00000000 --- a/jest.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { Config } from 'jest' -import { getJestProjectsAsync } from '@nx/jest' - -export default async (): Promise => ({ - projects: await getJestProjectsAsync(), -}) diff --git a/jest.preset.js b/jest.preset.js index 8cd53f8e..12b0f6f7 100644 --- a/jest.preset.js +++ b/jest.preset.js @@ -1,3 +1,15 @@ -const nxPreset = require('@nx/jest/preset').default - -module.exports = { ...nxPreset } +// Written by smith convert: the values @nx/jest/preset provided, without Nx. +module.exports = { + testMatch: ['**/?(*.)+(spec|test).?([mc])[jt]s?(x)'], + moduleFileExtensions: ['ts', 'js', 'mts', 'mjs', 'cts', 'cjs', 'html'], + coverageReporters: ['html'], + moduleNameMapper: { '^(\\.{1,2}/.*)\\.js$': '$1' }, + transform: { + '^.+\\.(ts|js|mts|mjs|cts|cjs|html)$': ['ts-jest', { tsconfig: '/tsconfig.spec.json' }], + }, + testEnvironment: 'jsdom', + modulePathIgnorePatterns: ['/dist/', '/out-tsc/'], + testEnvironmentOptions: { + customExportConditions: ['node', 'require', 'default'], + }, +} diff --git a/nx.json b/nx.json deleted file mode 100644 index 94049677..00000000 --- a/nx.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "$schema": "./node_modules/nx/schemas/nx-schema.json", - "namedInputs": { - "default": [ - "{projectRoot}/**/*", - "sharedGlobals" - ], - "production": [ - "default", - "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", - "!{projectRoot}/tsconfig.spec.json", - "!{projectRoot}/jest.config.[jt]s", - "!{projectRoot}/src/test-setup.[jt]s", - "!{projectRoot}/test-setup.[jt]s" - ], - "sharedGlobals": [ - "{workspaceRoot}/eslint.config.mjs", - "{workspaceRoot}/tsconfig.base.json", - "{workspaceRoot}/package.json", - "{workspaceRoot}/eslint.config.mnci.mjs" - ] - }, - "plugins": [ - { - "plugin": "@nx/js/typescript", - "options": { - "typecheck": { - "targetName": "typecheck" - }, - "build": { - "targetName": "build", - "configName": "tsconfig.lib.json", - "buildDepsName": "build-deps", - "watchDepsName": "watch-deps" - } - } - }, - { - "plugin": "@nx/eslint/plugin", - "options": { - "targetName": "lint" - } - }, - { - "plugin": "@nx/rollup/plugin", - "options": { - "buildTargetName": "build", - "buildDepsTargetName": "build-deps", - "watchDepsTargetName": "watch-deps" - } - }, - { - "plugin": "@nx/jest/plugin", - "options": { - "targetName": "test" - } - }, - { - "plugin": "@nx/vite/plugin", - "options": { - "buildTargetName": "build", - "serveTargetName": "serve", - "devTargetName": "dev", - "previewTargetName": "preview", - "serveStaticTargetName": "serve-static", - "typecheckTargetName": "typecheck", - "buildDepsTargetName": "build-deps", - "watchDepsTargetName": "watch-deps" - } - }, - "@mnci/nx-python-pip/graph" - ], - "analytics": false, - "defaultBase": "main", - "release": { - "projectsRelationship": "independent", - "projects": [ - "packages/*", - "python-packages/*", - "tag:type:vscode-extension", - "tag:release:go", - "!tag:type:go-lib" - ], - "releaseTag": { - "pattern": "{projectName}@{version}" - }, - "git": { - "commit": false, - "tag": true, - "push": true - }, - "version": { - "preVersionCommand": "npx nx run-many -t build --projects=packages/*,python-packages/*,tag:type:vscode-extension", - "conventionalCommits": true, - "preserveMatchingDependencyRanges": false, - "fallbackCurrentVersionResolver": "disk", - "versionActionsOptions": { - "skipLockFileUpdate": true - } - }, - "changelog": { - "automaticFromRef": true, - "workspaceChangelog": false, - "projectChangelogs": { - "createRelease": "github", - "file": false - } - } - }, - "generators": { - "@nx/react:application": { - "linter": "none", - "unitTestRunner": "jest" - }, - "@nx/react:library": { - "linter": "none", - "unitTestRunner": "jest" - }, - "@nx/js:library": { - "linter": "none", - "unitTestRunner": "jest" - }, - "@nx/react": { - "application": { - "babel": true, - "style": "css", - "linter": "none", - "bundler": "vite" - }, - "component": { - "style": "css" - }, - "library": { - "style": "css", - "linter": "none" - } - } - }, - "sync": { - "applyChanges": true - }, - "mnci": { - "workspaceName": "opencraw", - "scope": "@opencraw", - "registry": { - "kind": "npm" - }, - "agent": "ubuntu-latest", - "variableGroup": "Build", - "ci": "github", - "stack": { - "testRunner": "jest" - } - }, - "targetDefaults": { - "build": { - "dependsOn": [ - "^build", - "typecheck" - ] - }, - "lint": { - "dependsOn": [ - "^build" - ] - }, - "typecheck": { - "dependsOn": [ - "^build" - ] - }, - "test": { - "dependsOn": [ - "^build" - ] - }, - "@nx/esbuild:esbuild": { - "cache": true, - "dependsOn": [ - "^build" - ], - "inputs": [ - "production", - "^production", - { - "json": "{workspaceRoot}/tsconfig.json", - "fields": [ - "extends", - "files", - "include" - ] - } - ] - } - } -} diff --git a/package-lock.json b/package-lock.json index 65dd4d10..1d257ffb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,22 +12,16 @@ "packages/*", "apps/*" ], + "dependencies": { + "motion": "^14.3.0" + }, "devDependencies": { + "@babel/preset-env": "^7.29.7", + "@babel/preset-react": "^7.29.7", + "@babel/preset-typescript": "^7.29.7", "@commitlint/cli": "^21.2.3", "@commitlint/config-conventional": "^21.2.3", - "@mnci/cli": ">=4.0.0 <5.0.0", - "@mnci/eslint-config": ">=0.1.0 <1.0.0", - "@mnci/nx-python-pip": "^0.2.23", - "@nx/esbuild": "23.3.0", - "@nx/eslint": "23.3.0", - "@nx/eslint-plugin": "23.3.0", - "@nx/jest": "23.3.0", - "@nx/js": "23.3.0", - "@nx/node": "^23.3.0", - "@nx/react": "^23.3.0", - "@nx/rollup": "23.3.0", - "@nx/vite": "23.3.0", - "@nx/web": "23.3.0", + "@monosmith/eslint-config": "^1.0.0", "@swc-node/register": "1.11.1", "@swc/cli": "~0.8.1", "@swc/core": "1.15.8", @@ -53,7 +47,6 @@ "jest-environment-node": "~30.3.0", "jest-util": "~30.3.0", "jiti": "2.4.2", - "nx": "23.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", "rollup": "^4.14.0", @@ -63,9 +56,6 @@ "tslib": "^2.3.0", "typescript": "npm:@typescript/typescript6@^6.0.2", "vite": "^8.0.0" - }, - "dependencies": { - "motion": "^14.3.0" } }, "apps/azure-host": { @@ -111,8 +101,9 @@ }, "apps/vscode-extension": { "name": "@opencraw/vscode", - "version": "0.0.1", + "version": "0.8.0", "dependencies": { + "@opencraw/agent": "^0.0.1", "@opencraw/cli": "^0.0.1", "@opencraw/studio": "^0.0.1" }, @@ -121,7 +112,7 @@ "@vscode/test-electron": "^3.1.0" }, "engines": { - "vscode": "^1.90.0" + "vscode": "^1.127.0" } }, "node_modules/@ark-ui/react": { @@ -226,6 +217,13 @@ "dev": true, "license": "ISC" }, + "node_modules/@astrojs/compiler": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-3.0.1.tgz", + "integrity": "sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA==", + "dev": true, + "license": "MIT" + }, "node_modules/@azure-rest/core-client": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.9.0.tgz", @@ -275,7 +273,6 @@ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.11.1.tgz", "integrity": "sha512-2QygG2F76ZpMP2eMztiJvAiFMu71M9rDeU7vO/QKg5Css7MgM4frUOslFjhVjRhbGaCNPtz/S8M6y46/fFKVuQ==", "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", @@ -347,7 +344,6 @@ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.25.0.tgz", "integrity": "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA==", "license": "MIT", - "peer": true, "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", @@ -405,7 +401,6 @@ "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-4.16.5.tgz", "integrity": "sha512-h0lVUeI/Q36SyE2xGQOXZqBbmSgQHNLk8pvMxhq3Dw1TaT3eGWs2X25dceGJ153aXXkjcTEdkxg3D2Gcz1uJ0w==", "license": "MIT", - "peer": true, "dependencies": { "@azure/functions-extensions-base": "0.3.0", "cookie": "^0.7.0" @@ -999,7 +994,6 @@ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", @@ -1468,24 +1462,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.7.tgz", - "integrity": "sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "@babel/plugin-syntax-decorators": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", @@ -1554,22 +1530,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.29.7.tgz", - "integrity": "sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", @@ -2564,37 +2524,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz", - "integrity": "sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.29.7", - "@babel/helper-plugin-utils": "^7.29.7", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", @@ -3045,36 +2974,6 @@ "react-dom": ">=18" } }, - "node_modules/@clack/core": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.4.3.tgz", - "integrity": "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-wrap-ansi": "^0.2.0", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 20.12.0" - } - }, - "node_modules/@clack/prompts": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.7.0.tgz", - "integrity": "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@clack/core": "1.4.3", - "fast-string-width": "^3.0.2", - "fast-wrap-ansi": "^0.2.0", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 20.12.0" - } - }, "node_modules/@codemirror/autocomplete": { "version": "6.20.3", "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.3.tgz", @@ -3171,7 +3070,6 @@ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.13.tgz", "integrity": "sha512-sihaFrUzAsYBQsL9J2t69y8nfMQGwcYmggAZsk+kjPbjYZMyuf2hU8tUNTZ+P+isb6XRr8JE22TZlJxBoVdH1A==", "license": "MIT", - "peer": true, "dependencies": { "@codemirror/state": "^6.7.0", "crelt": "^1.0.6", @@ -3589,7 +3487,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -3613,7 +3510,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -3947,6 +3843,7 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, + "peer": true, "dependencies": { "cross-dirname": "^0.1.0", "debug": "^4.3.4", @@ -3962,32 +3859,35 @@ } }, "node_modules/@emnapi/core": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", - "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.2.tgz", + "integrity": "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.0.4", + "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", - "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz", + "integrity": "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", - "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "tslib": "^2.4.0" } @@ -4065,7 +3965,6 @@ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -4616,152 +4515,185 @@ } }, "node_modules/@eslint-react/ast": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-5.20.8.tgz", - "integrity": "sha512-p2LpsgLAbSpn6/TboNRpasnOAMLsSxtPamX9QevRrtbxs1K3aLKWyjuM+mO2D1VJhagknjeyC1x+d4v6yoWf5w==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-5.28.1.tgz", + "integrity": "sha512-b4EK1eFIYwCuNSRPwVMu+qVcNChn73pyynlUM7tu+/23dG2oPPE5Yjec3uREKUNiH3Naj82NUH39uWFgWmweHQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/typescript-estree": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0", - "string-ts": "^2.3.1" + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/typescript-estree": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint-react/core": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-5.20.8.tgz", - "integrity": "sha512-EreVZ4/IQlHv2TwlNuDwvG92S0vWhuYnunnl5HMZOegKUWI59ypGMZkg+/4vec0fbJE56Ux9pFfZQVnpNGuROw==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-5.28.1.tgz", + "integrity": "sha512-IczZyXsUk/rJBZ6kHjTAq8Pily5aVp7eHN6v0d9BIz5IkgJAqItzIs75CZ9MljGiNXNyKU51ojZguRbOZy5trg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.20.8", - "@eslint-react/eslint": "5.20.8", - "@eslint-react/shared": "5.20.8", - "@eslint-react/var": "5.20.8", - "@typescript-eslint/scope-manager": "^8.70.0", - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0", - "ts-pattern": "^5.9.0" + "@eslint-react/ast": "5.28.1", + "@eslint-react/eslint": "5.28.1", + "@eslint-react/shared": "5.28.1", + "@eslint-react/var": "5.28.1", + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2", + "ts-pattern": "^5.9.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint-react/eslint": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/@eslint-react/eslint/-/eslint-5.20.8.tgz", - "integrity": "sha512-d3Vbp5IWcBGlvxNCDPwy6WFyo0r1EONNKGAA7KAnOZVqFvoZ7fuYCAHrFclPeUjgVpP/KJ57uuJbymlrq/oawQ==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@eslint-react/eslint/-/eslint-5.28.1.tgz", + "integrity": "sha512-Qa+4qe7mpw5VJW5czgeKm5i86wM7lCPzID0UjR2CpkY/aSLgJC1kfDDh7SQge03ZycHCSgZrJf3tY+/MEMymxA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.70.0" + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint-react/eslint-plugin": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/@eslint-react/eslint-plugin/-/eslint-plugin-5.20.8.tgz", - "integrity": "sha512-mcpE/HcgcaiPOuhdmnbpcoEclRjw5L+W0SMj71UDz0+pamXP66nJhQbc0hydeR8lI4Ac90QD9yP2ktruDJaGVA==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@eslint-react/eslint-plugin/-/eslint-plugin-5.28.1.tgz", + "integrity": "sha512-fF7ASyBe5V+SQZ6iRaGv2Z13qMJgcmlKYX7EyCEgeYKn4M9fyLVRHNV37pckeKbWcQnbmWHNYpZMSlBhSN9n9w==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/shared": "5.20.8", - "eslint-plugin-react-dom": "5.20.8", - "eslint-plugin-react-jsx": "5.20.8", - "eslint-plugin-react-naming-convention": "5.20.8", - "eslint-plugin-react-rsc": "5.20.8", - "eslint-plugin-react-web-api": "5.20.8", - "eslint-plugin-react-x": "5.20.8" + "@eslint-react/shared": "5.28.1", + "eslint-plugin-react-dom": "5.28.1", + "eslint-plugin-react-jsx": "5.28.1", + "eslint-plugin-react-naming-convention": "5.28.1", + "eslint-plugin-react-rsc": "5.28.1", + "eslint-plugin-react-web-api": "5.28.1", + "eslint-plugin-react-x": "5.28.1" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint-react/jsx": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/@eslint-react/jsx/-/jsx-5.20.8.tgz", - "integrity": "sha512-eWIPY/j+c5OESPdp8FB+r+EHauRynYRk2MTBKgHoWFz9rduqGY7V0+I6JoL29LU5c/s48O+ZkaRLYVeBB/V+Dg==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@eslint-react/jsx/-/jsx-5.28.1.tgz", + "integrity": "sha512-2AahTM2dUXvXftI4oyjKFwh1a6an/KI+MHt6qj0WHQzuS5v5jP1youKVFE/h7ZkFAS6woToqZ0Fu56H5Bnbvmw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.20.8", - "@eslint-react/eslint": "5.20.8", - "@eslint-react/shared": "5.20.8", - "@eslint-react/var": "5.20.8", - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0", - "ts-pattern": "^5.9.0" + "@eslint-react/ast": "5.28.1", + "@eslint-react/eslint": "5.28.1", + "@eslint-react/var": "5.28.1", + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2", + "ts-pattern": "^5.9.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint-react/shared": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-5.20.8.tgz", - "integrity": "sha512-U32IV1q31lmo7S1zX0HmbUioK3EeW9jpf2t/NKEBRr/C4IfDxNV/Tv2SoqTcxZWcqCnKeEgABrHzH64idlS9Gw==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-5.28.1.tgz", + "integrity": "sha512-Z1TjJGsGBbZ7bms1AQLSELH0hIYY6t8kO6NPmWQsYD3B2+mf6eS8Lz6K7kxVMg40H3NdeGd9vEDd1a4yBeFA0w==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/eslint": "5.20.8", - "@typescript-eslint/utils": "^8.70.0", - "ts-pattern": "^5.9.0", + "@eslint-react/eslint": "5.28.1", + "@typescript-eslint/utils": "^8.71.2", + "ts-pattern": "^5.9.2", "zod": "^3.25.0 || ^4.0.0" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint-react/var": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-5.20.8.tgz", - "integrity": "sha512-uGAquJMp3TCaIZZywc2VHuGM2qCDE/Xta1DYvCyyk3qVinR/X9uIXFoHh/SBHeqky5v5Fx8C8nVj40MGa3yRhA==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-5.28.1.tgz", + "integrity": "sha512-6LPh/CdPMPJM/5PP6571YdiuCSi/OCUErhIBWq+CT9QxU43S8Wnq245aaU0/lWE7NGWDM623Gd80ZWa9NdvxHQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.20.8", - "@eslint-react/eslint": "5.20.8", - "@typescript-eslint/scope-manager": "^8.70.0", - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0", - "ts-pattern": "^5.9.0" + "@eslint-react/ast": "5.28.1", + "@eslint-react/eslint": "5.28.1", + "@typescript-eslint/scope-manager": "^8.71.2", + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2", + "ts-pattern": "^5.9.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint/config-array": { @@ -4821,13 +4753,13 @@ } }, "node_modules/@eslint/css-tree": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@eslint/css-tree/-/css-tree-4.1.1.tgz", - "integrity": "sha512-A+s89eP+yDAPkKjnIOfjlkGifg5J7GPn01nWx14UjBVWktfkxOU4975F9ZZ13xNxkGiblNcBaAqgKhnQrW6SWA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@eslint/css-tree/-/css-tree-4.1.2.tgz", + "integrity": "sha512-rVcxLmwSkEL3aWS3vAgsTRrQHoYE1b0XcgDtKHDJ92XOkyUpcbS/g0tUJKhvCtlEhYzgKBWsgDd+Z/aPhd166w==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.35.0", + "mdn-data": "2.37.2", "source-map-js": "^1.2.1" }, "engines": { @@ -5170,386 +5102,11 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@inquirer/ansi": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.9.tgz", - "integrity": "sha512-0Ywt3S8tqM6TWUcsRlBFQ1x+X3/o8kktX0ZiKAnByYb9GFDknnOhse1PVtfiD2BXPI8ar+BWx9PV9R0lQIcygw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - } - }, - "node_modules/@inquirer/checkbox": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.2.6.tgz", - "integrity": "sha512-XkOardciF3tow2NUlY6/Qjk1QqYa+6WpmVLTpxXl97Uv4erczDEZ+xg1j6LqBf0ekcRSUiICQA4nQXHHkVKQ9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.9", - "@inquirer/core": "^12.0.4", - "@inquirer/figures": "^2.0.9", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/confirm": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.3.3.tgz", - "integrity": "sha512-ImOBgpl/sJTFp8naeSkNu4S0Sf8F8pxv3/CUx+LoBAdQvCVqFz6rSB2A/oZYsJge3+yphbEDxEkfaRNYq1OU0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^12.0.4", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-12.0.4.tgz", - "integrity": "sha512-M5fB67y7jPObI45vhD82RskWwCSm0scOvenV/I6K8tIi2gfr9DXqQqJ+iw+Wi6SgapikdOiJibYzz1gW47fsDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.9", - "@inquirer/figures": "^2.0.9", - "@inquirer/type": "4.2.0", - "cli-width": "^4.1.0", - "fast-wrap-ansi": "^0.2.0", - "mute-stream": "^3.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/editor": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.3.4.tgz", - "integrity": "sha512-imzxQDfw26NpcJAubMj/dE5RjU9Mp80IcT+FzsD6YoxXmL8L1QYnAFdCNv7ccGWh//73+0YP+1kfhwnExdl2VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^12.0.4", - "@inquirer/external-editor": "^3.0.6", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.1.6.tgz", - "integrity": "sha512-JfiLKi7qGuHmcQO/DqR10UFEp054Y1FXZaszP5ZEfHhgHeuFoT5nNFQIXFhed/5/p07SbsV2tIJFwG/dg5+NmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^12.0.4", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.6.tgz", - "integrity": "sha512-rWmw6WG8JZ7LMn/srXEylYGhL6EXXJeROE7/4x4GREh6NgzqJBDbIgpNGsYoLPfobeb4VZtEYzPGnT5EFNYhiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.2" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", - "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@inquirer/figures": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.9.tgz", - "integrity": "sha512-EAWgUTGQ/Umgga51dE3B2PUHbufuXarDfg86uVgoSgNHNNQnyFKcOrQLWVqYMghuSyHh8+2HUH0Js9cTC1WAdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - } - }, - "node_modules/@inquirer/input": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.7.tgz", - "integrity": "sha512-Icrs9tuMBCxGI+lFYNO71VFOnqGO8IIrLIGqnTGh07X8jZ2la9QLAYxXcikHZQjjVhIZUtU2xyH89DVN/pPhVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^12.0.4", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.2.4.tgz", - "integrity": "sha512-C6g80U4U2+w2Vxa1CB0MN3a2WnQIfzLSUG0lduO3Au9GsirJsKATZkOwZPK+vZ1BlAlz+/Z5ParfQCS9E0svmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^12.0.4", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.2.3.tgz", - "integrity": "sha512-1Uo2qfI2K3wXbfunMpvwAzoZPIUf5iEETwDGqRVbswoorXGqYQJ/bfIJFeLj+pxjq+e2UFPNOmx+fsIl4Urigw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.9", - "@inquirer/core": "^12.0.4", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.7.3.tgz", - "integrity": "sha512-DHK20kO+H5k/XcJQpHQUpVQbMYHHhZchlGWhZVMUV4WIuRuBW5744hipOtriE1vMqPLgnIyXFMHWKkIbTepa4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^5.2.6", - "@inquirer/confirm": "^6.3.3", - "@inquirer/editor": "^5.3.4", - "@inquirer/expand": "^5.1.6", - "@inquirer/input": "^5.1.7", - "@inquirer/number": "^4.2.4", - "@inquirer/password": "^5.2.3", - "@inquirer/rawlist": "^5.3.6", - "@inquirer/search": "^4.3.4", - "@inquirer/select": "^5.2.6" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.3.6.tgz", - "integrity": "sha512-2exExhQ5xTBqfN/rRlZkvM1Gm3b0eiLcWe2NqxWxe7qYmnU4M3j/n9TwzfPUb+Q7dAAz9TmBtDWWdF3jbp4ZLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^12.0.4", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.3.4.tgz", - "integrity": "sha512-xsk0UeFP04jsbEeFMzghjUaH2aHXyt+WykSajQzq/8qyBNHsgGYHea/sFwv5T08kW7Sp+KDX8aF124zPUIs1Ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^12.0.4", - "@inquirer/figures": "^2.0.9", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/select": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.6.tgz", - "integrity": "sha512-jFu7CFghlr0vpi/326a4wz6BGkJH9X3H/iIu+ahyV2Ja52ktqQE3fC9BYP47JKeSPQYGUv5xquE2Vp9PbepZ3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^2.0.9", - "@inquirer/core": "^12.0.4", - "@inquirer/figures": "^2.0.9", - "@inquirer/type": "4.2.0" - }, - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/type": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.2.0.tgz", - "integrity": "sha512-2rnHX8RPo4glJYqnFc/v3nQeIhDcjyRRyaT7MGcfL/8xv/8K03SXYoA2tX06WVSKywWOE/ncbG3dtuzLjR5TCQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, "node_modules/@internationalized/date": { "version": "3.12.3", "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.12.3.tgz", "integrity": "sha512-fuLX+3ZKLsxI73y8b01EG/WjHb6gE6weCqlfawPO27kBWGMh9G1yH6Csv1uU7/cac9H2GHmOMt6CjmuQ1aia4Q==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@swc/helpers": "^0.5.0" } @@ -5755,42 +5312,6 @@ "node": ">=8" } }, - "node_modules/@jest/console": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.5.2.tgz", - "integrity": "sha512-e8sQC4pCMHPBrPX7Hk8TJr+DM5dkUnImSTNag8SEWFAFAF6xIz4AJvCKapnrdHnZxep4bxw4PhG+ZbimYBMyKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.5.1", - "jest-util": "30.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/core": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", @@ -6124,16 +5645,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@jest/core/node_modules/brace-expansion": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", - "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@jest/core/node_modules/expect": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", @@ -6152,28 +5663,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/core/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@jest/core/node_modules/jest-circus": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", @@ -6427,46 +5916,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/core/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@jest/core/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/core/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", @@ -6572,32 +6021,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.5.2.tgz", - "integrity": "sha512-nwFPOUMbmsjNNRCpnJpB9HbSZu4C07wDDds++5j+j1MezzPLxMPDdbdUVjr2o4RULDOValnDd70taPFI1EtxAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.5.2", - "@jest/types": "30.5.1", - "@types/node": "*", - "jest-mock": "30.5.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/environment-jsdom-abstract": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.3.0.tgz", @@ -6780,20 +6203,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/expect": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.5.2.tgz", - "integrity": "sha512-2E+1Pg6jJxbRjLNLpciC71iri/3qsKJL222/aXJEFwC0VdUSvfS+JZQQLEVjUYYc8t8pQu2MGE3cF2+bNTYRsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "30.5.2", - "jest-snapshot": "30.5.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/expect-utils": { "version": "30.5.2", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.5.2.tgz", @@ -6807,109 +6216,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/expect/node_modules/@jest/snapshot-utils": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.5.1.tgz", - "integrity": "sha512-V3wnxNtiVmw5PPVg433Cn3VdXnsOeu/ofLw3KC04Bn2y1wIlU5kozXQn48rhrgj/02LrCVtntTEF1yBha0XSUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect/node_modules/jest-snapshot": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.5.2.tgz", - "integrity": "sha512-jKIdes25AnAH73dOCi2qE6J6vHJ6L2vyBS11M89kT50DVJcLTf2AOjvcc+2vVaN8lUbY5v2R83aqXo3Ro9fqYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.5.2", - "@jest/get-type": "30.5.0", - "@jest/snapshot-utils": "30.5.1", - "@jest/transform": "30.5.2", - "@jest/types": "30.5.1", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.5.2", - "graceful-fs": "^4.2.11", - "jest-diff": "30.5.2", - "jest-matcher-utils": "30.5.2", - "jest-message-util": "30.5.1", - "jest-util": "30.5.1", - "pretty-format": "30.5.1", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.5.2.tgz", - "integrity": "sha512-GKk0h0tKT5SpDPxDhPg3r9mm5s8/YCBzVNMOGdRiQXwUiMsjU10mVPlMaQstH6/cu50vOb8N9oQUMETHuwwxKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@sinonjs/fake-timers": "^15.4.0", - "@types/node": "*", - "jest-message-util": "30.5.1", - "jest-mock": "30.5.2", - "jest-util": "30.5.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/get-type": { "version": "30.5.0", "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.5.0.tgz", @@ -7217,67 +6523,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@jest/reporters": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.5.2.tgz", - "integrity": "sha512-ev6E9iG73twQcfAfoTnviuYkr3yOrYbzAtMFCimv2fxHXPIp9PBt2u1wNMt0aYWgl8FPwIcS8oqRJg6alnht4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.5.2", - "@jest/test-result": "30.5.2", - "@jest/transform": "30.5.2", - "@jest/types": "30.5.1", - "@jridgewell/trace-mapping": "^0.3.31", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^13.0.6", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.5.1", - "jest-util": "30.5.1", - "jest-worker": "30.5.1", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/schemas": { "version": "30.5.0", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.5.0.tgz", @@ -7378,82 +6623,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/test-result": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.5.2.tgz", - "integrity": "sha512-eO6YU5rsLfs60ne694e0IAmRgeBnoA8mu0nlxXDbl/1j5km0o2vO9/VbbUIKIH+WRKKEI+ELgwraRGn2Lhep8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.5.2", - "@jest/types": "30.5.1", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.5.2.tgz", - "integrity": "sha512-bmij8jZyYAC47ExT2GeP7PcrlwSNS+Bp3KeRuBH88gpcxqDv6fljN8PemS4J/lLZ79xb6mpaennQTTq0zUAVVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.5.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.5.2.tgz", - "integrity": "sha512-LBGwmaE886C41jDZ65eqR1YbXM7642MK3ZhTowZd5+xDlrDLuf4ePuDdDmVSvcr8NTVJ3MqxLkMbUCzuigUaoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.5.1", - "@jridgewell/trace-mapping": "^0.3.31", - "babel-plugin-istanbul": "^8.0.0", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.5.1", - "jest-regex-util": "30.5.0", - "jest-util": "30.5.1", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/types": { "version": "30.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.5.1.tgz", @@ -7509,6 +6678,7 @@ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -7711,92 +6881,16 @@ "durable-functions": ">=3.0.0 <4" } }, - "node_modules/@mnci/cli": { - "version": "4.63.0", - "resolved": "https://registry.npmjs.org/@mnci/cli/-/cli-4.63.0.tgz", - "integrity": "sha512-GpIrIgaOwIuG/W4qXHO9Pk3P9wvFB4mU81Mlro11obYQ+30bCux6NKM2pzQmcdiXVpYIu5kUhgWZwQ0z0I4rdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/prompts": "^8.7.0", - "commander": "^15.0.0", - "cross-spawn": "^7.0.6" - }, - "bin": { - "mnci": "dist/cli.js" - }, - "engines": { - "node": "^22.13.0 || >=24" - } - }, "node_modules/@mnci/cli/node_modules/commander": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz", "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==", - "dev": true, + "extraneous": true, "license": "MIT", "engines": { "node": ">=22.12.0" } }, - "node_modules/@mnci/eslint-config": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/@mnci/eslint-config/-/eslint-config-0.3.23.tgz", - "integrity": "sha512-0vMz1iBVZ41uyDnvsUYNldxXfhk828rHLzhJwE/sL0jWtxIeEqZUJNpo/QfuJf+teyk2/Z5Xw155iGUvO2Kf0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-react/eslint-plugin": "^5.20.5", - "@eslint/css": "^1.4.0", - "@eslint/js": "^10.0.0", - "@eslint/markdown": "^8.0.2", - "@html-eslint/eslint-plugin": "^0.65.0", - "@html-eslint/parser": "^0.65.0", - "@stylistic/eslint-plugin": "^5.10.0", - "@typescript-eslint/parser": "^8.68.0", - "eslint-import-resolver-node": "^0.4.0", - "eslint-import-resolver-typescript": "^4.4.5", - "eslint-plugin-import-x": "^4.17.1", - "eslint-plugin-jest": "^29.16.6", - "eslint-plugin-jsonc": "^3.4.0", - "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-n": "^18.2.1", - "eslint-plugin-promise": "^7.3.0", - "eslint-plugin-react-hooks": "^7.1.1", - "eslint-plugin-react-refresh": "^0.5.3", - "eslint-plugin-regexp": "^3.1.1", - "eslint-plugin-toml": "^1.5.0", - "eslint-plugin-unicorn": "^72.0.0", - "eslint-plugin-unused-imports": "^4.4.1", - "eslint-plugin-yml": "^3.5.0", - "globals": "^17.9.0", - "jsonc-eslint-parser": "^3.3.0", - "toml-eslint-parser": "^1.0.3", - "typescript-eslint": "^8.69.0" - }, - "peerDependencies": { - "@nx/eslint-plugin": ">=21", - "eslint": "^10.8.1" - }, - "peerDependenciesMeta": { - "@nx/eslint-plugin": { - "optional": true - } - } - }, - "node_modules/@mnci/nx-python-pip": { - "version": "0.2.23", - "resolved": "https://registry.npmjs.org/@mnci/nx-python-pip/-/nx-python-pip-0.2.23.tgz", - "integrity": "sha512-zj7zCeMAwQN78Ux2KqgxyspzPiMSrXPwC0Xh+wPRfHfpClTCbvUuS2+bz+c5t52/lnDoZYUlqNI31Q2v9l1cCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nx/devkit": ">=21.0.0" - }, - "peerDependencies": { - "nx": ">=21.0.0" - } - }, "node_modules/@modelcontextprotocol/sdk": { "version": "1.32.1", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.1.tgz", @@ -7914,7 +7008,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -8188,12 +7281,58 @@ "url": "https://opencollective.com/express" } }, + "node_modules/@monosmith/eslint-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@monosmith/eslint-config/-/eslint-config-1.0.0.tgz", + "integrity": "sha512-ns6BmiCkngFe5SXZyjYoaY89wFDGn9qL/iIozMXo+FhZg8UebTYnuHRDHWU15U7/fZeNS0lDZGBqzA3fBNmXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-react/eslint-plugin": "^5.20.5", + "@eslint/css": "^1.4.0", + "@eslint/js": "^10.0.0", + "@eslint/markdown": "^8.0.2", + "@html-eslint/eslint-plugin": "^0.65.0", + "@html-eslint/parser": "^0.65.0", + "@stylistic/eslint-plugin": "^5.10.0", + "@typescript-eslint/parser": "^8.68.0", + "eslint-import-resolver-node": "^0.4.0", + "eslint-import-resolver-typescript": "^4.4.5", + "eslint-plugin-astro": "^1.7.0", + "eslint-plugin-import-x": "^4.17.1", + "eslint-plugin-jest": "^29.16.6", + "eslint-plugin-jsonc": "^3.4.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-mdx": "^3.8.1", + "eslint-plugin-n": "^18.2.1", + "eslint-plugin-promise": "^7.3.0", + "eslint-plugin-react-hooks": "^7.1.1", + "eslint-plugin-react-refresh": "^0.5.3", + "eslint-plugin-regexp": "^3.3.1", + "eslint-plugin-svelte": "^3.23.1", + "eslint-plugin-toml": "^1.5.0", + "eslint-plugin-unicorn": "^72.0.0", + "eslint-plugin-unused-imports": "^4.4.1", + "eslint-plugin-yml": "^3.5.0", + "globals": "^17.9.0", + "jsonc-eslint-parser": "^3.3.0", + "toml-eslint-parser": "^1.0.3", + "typescript-eslint": "^8.69.0" + }, + "peerDependencies": { + "eslint": "^10.8.1" + }, + "peerDependenciesMeta": { + "@nx/eslint-plugin": { + "optional": true + } + } + }, "node_modules/@napi-rs/canvas": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-1.0.9.tgz", "integrity": "sha512-QviPdJImDi/jMAvBfqaw+19BndMd/sizXVW3NnpMd3VJGz++QXkOHcP9kWR/smHG0hNjHeyuHFyrx/5lD0oNcQ==", "license": "MIT", - "optional": true, "workspaces": [ "e2e/*" ], @@ -8778,18 +7917,6 @@ "node": ">= 10" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", - "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" - } - }, "node_modules/@noble/hashes": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.4.0.tgz", @@ -8815,122 +7942,346 @@ ], "license": "MIT" }, - "node_modules/@nx/devkit": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-23.3.0.tgz", - "integrity": "sha512-xGSV4gCwQsVdt49VRcfxd2L31dAO/9t9Isv2bM5O89vyEzwd/tkW/IQwUzWn3OdhCnHayd37S1tDyJ5DilCv7w==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { - "ejs": "5.0.1", - "minimatch": "10.2.5", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, - "peerDependencies": { - "nx": ">= 22 <= 24 || ^23.0.0-0" + "engines": { + "node": ">= 8" } }, - "node_modules/@nx/docker": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/docker/-/docker-23.3.0.tgz", - "integrity": "sha512-UxG1UIeBhzU09HMeg9ltbgukYAWGnrMc2flS0pA3RIDKtNGQVLk8G/hLKtwDFM1D/W5jn17bDFzKtKKHv4U2cw==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", - "dependencies": { - "@nx/devkit": "23.3.0", - "tslib": "^2.3.0" + "engines": { + "node": ">= 8" } }, - "node_modules/@nx/esbuild": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/esbuild/-/esbuild-23.3.0.tgz", - "integrity": "sha512-dBZurg/JUlmW9NsOohKOUo9wxm/7zRYVr7Ps1AyPorgX2TF7MwueICg817WtFVg1Mat8EwGZPmtzJVuWr3Rs7Q==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "23.3.0", - "@nx/js": "23.3.0", - "picocolors": "^1.1.0", - "tinyglobby": "^0.2.12", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "peerDependencies": { - "esbuild": ">=0.19.2 <1.0.0" + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/config": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-8.3.4.tgz", + "integrity": "sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^5.1.1", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" }, - "peerDependenciesMeta": { - "esbuild": { - "optional": true - } + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/config/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/config/node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/config/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/config/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", + "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/git/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/map-workspaces": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz", + "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@nx/eslint": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-23.3.0.tgz", - "integrity": "sha512-gYfB57vBDIFfu+QxZpoKThR9VRgUSgvSm+wheOom6wuPgqPIvAcsg17JklRVGd52j7AAyH5RlaFvjhEo6IsY6w==", + "node_modules/@npmcli/map-workspaces/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "23.3.0", - "@nx/js": "23.3.0", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "typescript": "~6.0.3" + "balanced-match": "^1.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" }, - "peerDependencies": { - "@nx/jest": "23.3.0", - "@zkochan/js-yaml": "0.0.7", - "eslint": "^9.0.0 || ^10.0.0" + "engines": { + "node": ">=16 || 14 >=14.17" }, - "peerDependenciesMeta": { - "@nx/jest": { - "optional": true - }, - "@zkochan/js-yaml": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", + "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@nx/eslint-plugin": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-23.3.0.tgz", - "integrity": "sha512-BlB1A//ysBUN0C/f/zZ7f8xT1eWqux6DGoJBqLa+z94PpWIsEViRnD7ftdCx//EeTi83nsaDN4Wsb2cspZhfdw==", + "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", - "peer": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/package-json/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "dev": true, + "license": "ISC", "dependencies": { - "@nx/devkit": "23.3.0", - "@nx/js": "23.3.0", - "@phenomnomnominal/tsquery": "~6.2.0", - "@typescript-eslint/type-utils": "^8.0.0", - "@typescript-eslint/utils": "^8.0.0", - "confusing-browser-globals": "^1.0.9", - "globals": "^17.0.0", - "jsonc-eslint-parser": "^2.1.0", - "picocolors": "^1.1.0", - "semver": "^7.6.3", - "tslib": "^2.3.0" + "which": "^4.0.0" }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0", - "eslint-config-prettier": "^10.0.0" + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" }, - "peerDependenciesMeta": { - "@typescript-eslint/parser": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, "node_modules/@nx/eslint-plugin/node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, + "extraneous": true, "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8943,7 +8294,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, + "extraneous": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", @@ -8961,7 +8312,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.2.tgz", "integrity": "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==", - "dev": true, + "extraneous": true, "license": "MIT", "dependencies": { "acorn": "^8.5.0", @@ -8980,7 +8331,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, + "extraneous": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -8990,556 +8341,107 @@ "node": ">=14.17" } }, - "node_modules/@nx/jest": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-23.3.0.tgz", - "integrity": "sha512-Fw9k2F6XFLUGmu61Undgl9AbqjGwhuZTUXAQssVF1CTawp6vgYdZqje9i9HpN1sos01JHAfVsOIp3U+BbRfklA==", + "node_modules/@opencraw/agent": { + "resolved": "packages/agent", + "link": true + }, + "node_modules/@opencraw/azure-durable": { + "resolved": "packages/azure-durable", + "link": true + }, + "node_modules/@opencraw/azure-host": { + "resolved": "apps/azure-host", + "link": true + }, + "node_modules/@opencraw/captcha-tesseract": { + "resolved": "packages/captcha-tesseract", + "link": true + }, + "node_modules/@opencraw/cli": { + "resolved": "packages/cli", + "link": true + }, + "node_modules/@opencraw/core": { + "resolved": "packages/core", + "link": true + }, + "node_modules/@opencraw/mcp": { + "resolved": "packages/mcp", + "link": true + }, + "node_modules/@opencraw/ocr-tesseract": { + "resolved": "packages/ocr-tesseract", + "link": true + }, + "node_modules/@opencraw/office-reader": { + "resolved": "packages/office-reader", + "link": true + }, + "node_modules/@opencraw/probe": { + "resolved": "packages/probe", + "link": true + }, + "node_modules/@opencraw/studio": { + "resolved": "packages/studio", + "link": true + }, + "node_modules/@opencraw/studio-desktop": { + "resolved": "apps/studio-desktop", + "link": true + }, + "node_modules/@opencraw/studio-ui": { + "resolved": "apps/studio-ui", + "link": true + }, + "node_modules/@opencraw/vscode": { + "resolved": "apps/vscode-extension", + "link": true + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.220.0.tgz", + "integrity": "sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jest/reporters": "^30.0.2", - "@jest/test-result": "^30.0.2", - "@nx/devkit": "23.3.0", - "@nx/js": "23.3.0", - "@phenomnomnominal/tsquery": "~6.2.0", - "identity-obj-proxy": "3.0.0", - "jest-config": "^30.0.2", - "jest-resolve": "^30.0.2", - "jest-util": "^30.0.2", - "jsonc-parser": "^3.2.0", - "minimatch": "10.2.5", - "picocolors": "^1.1.0", - "resolve.exports": "2.0.3", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" - }, - "peerDependencies": { - "jest": "^29.0.0 || ^30.0.0", - "ts-jest": "^29.0.0" + "@opentelemetry/api": "^1.3.0" }, - "peerDependenciesMeta": { - "jest": { - "optional": true - }, - "ts-jest": { - "optional": true - } + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@nx/js": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-23.3.0.tgz", - "integrity": "sha512-J0XWLwFK405uusy4SPDFyHN2e9LpiQmxqItaqaHSQzcXNUs7fWW/pEeoJ6ZQkwn84yWS+hIzT317T98JaoCZhA==", + "node_modules/@opentelemetry/configuration": { + "version": "0.221.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/configuration/-/configuration-0.221.0.tgz", + "integrity": "sha512-uE9y56Zdi9Gt/RdxYnVOo3YmFZkKJJMA0gqtBe8wh8gdtF5Asqe+Oh/TWiDtFb1s+31jNY4CWgnfIB1KOITfFA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/core": "^7.29.6", - "@babel/plugin-proposal-decorators": "^7.22.7", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-runtime": "^7.23.2", - "@babel/preset-env": "^7.23.2", - "@babel/preset-typescript": "^7.22.5", - "@babel/runtime": "^7.22.6", - "@nx/devkit": "23.3.0", - "@nx/workspace": "23.3.0", - "@zkochan/js-yaml": "0.0.7", - "babel-plugin-const-enum": "^1.0.1", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-typescript-metadata": "^0.3.1", - "chalk": "^4.1.0", - "columnify": "^1.6.0", - "detect-port": "^2.1.0", - "ignore": "^7.0.5", - "js-tokens": "^4.0.0", - "jsonc-parser": "^3.2.0", - "npm-run-path": "^4.0.1", - "picocolors": "^1.1.0", - "picomatch": "4.0.4", - "semver": "^7.6.3", - "source-map-support": "0.5.19", - "tinyglobby": "^0.2.12", - "tslib": "^2.3.0" + "@opentelemetry/core": "2.10.0", + "yaml": "^2.8.3" }, - "peerDependencies": { - "@swc/cli": ">=0.6.0 <0.9.0", - "verdaccio": "^6.0.5" + "engines": { + "node": "^18.19.0 || >=20.6.0" }, - "peerDependenciesMeta": { - "@swc/cli": { - "optional": true - }, - "verdaccio": { - "optional": true - } + "peerDependencies": { + "@opentelemetry/api": "^1.9.0" } }, - "node_modules/@nx/node": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/node/-/node-23.3.0.tgz", - "integrity": "sha512-T4taAV1wojWvku9uKfEMJ2EvoJJmfXBwGF8Xt0e7MfGst/imKOfsvvMC1m6isNnKa3x5uFdNjfDznPsgYbO/Sg==", + "node_modules/@opentelemetry/configuration/node_modules/@opentelemetry/core": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.10.0.tgz", + "integrity": "sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@nx/devkit": "23.3.0", - "@nx/docker": "23.3.0", - "@nx/eslint": "23.3.0", - "@nx/jest": "23.3.0", - "@nx/js": "23.3.0", - "kill-port": "^1.6.1", - "semver": "^7.6.3", - "tcp-port-used": "^1.0.2", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "express": ">=4.0.0 <6.0.0", - "fastify": ">=4.0.0 <6.0.0", - "koa": ">=2.0.0 <4.0.0" - }, - "peerDependenciesMeta": { - "express": { - "optional": true - }, - "fastify": { - "optional": true - }, - "koa": { - "optional": true - } - } - }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-23.3.0.tgz", - "integrity": "sha512-g06RId2Tn99ICwDFisZfDZ2vpM2bXvoCZeNtTWgwLm5mpJ4A7+akI7iXCe50CbzgE4waVRQCOAYpD1zPsKoUVQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@nx/nx-darwin-x64": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-23.3.0.tgz", - "integrity": "sha512-6t9P5ZQ3LPuCf+HBDMTGtpKHjVvINL9/blpY4PucKjdC+vnNSL7uTZwng1ePenlNF0WFtLHqxUx/H1XgohRq0w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@nx/nx-freebsd-x64": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-23.3.0.tgz", - "integrity": "sha512-B8Xuh36ZdMJ2SxpFfUITUvCZQTKoGOFHpSactxCx3ymFBUc24Z0B/hQRIYPv43icugcnp71dIwu6IvI66/aqtQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-23.3.0.tgz", - "integrity": "sha512-piMlCEI0tbHt1+QSgL8J1szlqBSGKV27nax8uvhTxleR2Evl3Kxa80BDIEObrUU3lz+AS4oKrcUHUeyJGPdCsQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-23.3.0.tgz", - "integrity": "sha512-SljVcZYwD4qpwseAUsEQmrXxE0vcPdDMEtvKlpkTProofAMeQFNEh4imw458TylOq7YeFVnNQdZcBnTO+1FeIw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-arm64-musl": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-23.3.0.tgz", - "integrity": "sha512-UwzWPtcWxkAE8IOZl4M1eiqsa1yci+zlZ7Vv5ogozhm9jD9EHZVsgeWLrftW22OtU2u+ude/fzBeacuqUDOMtg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-23.3.0.tgz", - "integrity": "sha512-PJerI1Ag/wkPh8XMBKO4Cx6Ao01QJsSk/ycFNmM7vzW19Db3OvsTSKqiql/z96zINI69MqLDZH2iwHMZXbJupQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-23.3.0.tgz", - "integrity": "sha512-CGete35FhqkdlBZM/Oq6Ddu+yQ7UHMRV/ZYCoKeNU4/YIDIWze8VblF7PGKLU4k5JN4bRY1MmDmryHqVIMXMBA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-23.3.0.tgz", - "integrity": "sha512-T/ChrK9uzt9/29TQzc8FGkRGDJC130ltM77eKI3Z67OjyD4SKHhsiTu5GameH1BU72jcF4QEKFf74PoI9JzbuA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@nx/nx-win32-x64-msvc": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-23.3.0.tgz", - "integrity": "sha512-ermx8Qy8qf0ZIEDiGPqIXxQ0OPEL8VVUOyvAsxDec8aft3pCFjX8LrFhlfnAfM6MBFs5Bnc9Xl9D8TMzFBgo9w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@nx/react": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/react/-/react-23.3.0.tgz", - "integrity": "sha512-+EI0dTva2og7bIiI+tC0EWjf+I9g2ZrFMPQbN82rGuEHa4LyItMI2Zql6dupEwBvXD+4TdOEeC+E6Pby+bsJvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/preset-react": "^7.22.5", - "@nx/devkit": "23.3.0", - "@nx/eslint": "23.3.0", - "@nx/js": "23.3.0", - "@nx/web": "23.3.0", - "@phenomnomnominal/tsquery": "~6.2.0", - "minimatch": "10.2.5", - "semver": "^7.6.3", - "tslib": "^2.3.0" - }, - "optionalDependencies": { - "@nx/vite": "23.3.0" - }, - "peerDependencies": { - "@nx/module-federation": "23.3.0", - "babel-plugin-react-compiler": "^1.0.0", - "express": "^4.21.2", - "http-proxy-middleware": "^3.0.7", - "react": ">=18.0.0 <20.0.0", - "react-dom": ">=18.0.0 <20.0.0" - }, - "peerDependenciesMeta": { - "@nx/module-federation": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "express": { - "optional": true - }, - "http-proxy-middleware": { - "optional": true - } - } - }, - "node_modules/@nx/rollup": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/rollup/-/rollup-23.3.0.tgz", - "integrity": "sha512-f1IUA1kHDeiXyc9aI+WJMaze2ueO+eCPSB36k1UtOgaQ5+vP6VeoWY3TJ/iA3/BNrEt70ejG4XqiLSd7+spNwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nx/devkit": "23.3.0", - "@nx/js": "23.3.0", - "@phenomnomnominal/tsquery": "~6.2.0", - "@rollup/plugin-babel": "^6.0.4", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-image": "^3.0.3", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-typescript": "^12.1.0", - "autoprefixer": "^10.4.9", - "concat-with-sourcemaps": "^1.1.0", - "picocolors": "^1.1.0", - "picomatch": "4.0.4", - "postcss": "^8.4.38", - "postcss-modules": "^6.0.1", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "rollup": "^3.0.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@nx/vite": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/vite/-/vite-23.3.0.tgz", - "integrity": "sha512-2Ci/InGiT8sRFyVBt+FKXqpDMQikHWZtTIHa6GtcAanQDtgYcN7BkVO4K4kAQU8y/lWUNm+omwEQBsOMB6srvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nx/devkit": "23.3.0", - "@nx/js": "23.3.0", - "@nx/vitest": "23.3.0", - "@phenomnomnominal/tsquery": "~6.2.0", - "ajv": "^8.0.0", - "picomatch": "4.0.4", - "semver": "^7.6.3", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@nx/vitest": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/vitest/-/vitest-23.3.0.tgz", - "integrity": "sha512-cswEU+CbKR+a4Of6mWdDAHZP3utTM+Qx+PagW8Ed7FlxxAQ2nJq7PCoesvdObIomK90MBpIsqYzG/JXCZbU/vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nx/devkit": "23.3.0", - "@nx/js": "23.3.0", - "@phenomnomnominal/tsquery": "~6.2.0", - "semver": "^7.6.3", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@nx/eslint": "23.3.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "vitest": "^3.0.0 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "@nx/eslint": { - "optional": true - }, - "vite": { - "optional": true - }, - "vitest": { - "optional": true - } - } - }, - "node_modules/@nx/web": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-23.3.0.tgz", - "integrity": "sha512-1c8wiQ8EzgAwEeOMB0TOLrGtWfmGY+YnxZdDgXHUC+cP6Vr/+j4FcM1vc3WnobiZX6VzBjSmy1faHD1P5+dTVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nx/devkit": "23.3.0", - "@nx/js": "23.3.0", - "detect-port": "^2.1.0", - "http-server": "^14.1.0", - "picocolors": "^1.1.0", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@nx/cypress": "23.3.0", - "@nx/eslint": "23.3.0", - "@nx/jest": "23.3.0", - "@nx/playwright": "23.3.0", - "@nx/vite": "23.3.0", - "@nx/webpack": "23.3.0" - }, - "peerDependenciesMeta": { - "@nx/cypress": { - "optional": true - }, - "@nx/eslint": { - "optional": true - }, - "@nx/jest": { - "optional": true - }, - "@nx/playwright": { - "optional": true - }, - "@nx/vite": { - "optional": true - }, - "@nx/webpack": { - "optional": true - } - } - }, - "node_modules/@nx/workspace": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-23.3.0.tgz", - "integrity": "sha512-tAGzqqjk+qtCeJTp+bBEANR9aGkmzo4WxWUBQCZHE4A7quWlCDRkpcAg8OG/cDMX8Kwa6/yw+NSYeH1JuE0eCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nx/devkit": "23.3.0", - "@zkochan/js-yaml": "0.0.7", - "chalk": "^4.1.0", - "nx": "23.3.0", - "picomatch": "4.0.4", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" - } - }, - "node_modules/@opencraw/agent": { - "resolved": "packages/agent", - "link": true - }, - "node_modules/@opencraw/azure-durable": { - "resolved": "packages/azure-durable", - "link": true - }, - "node_modules/@opencraw/azure-host": { - "resolved": "apps/azure-host", - "link": true - }, - "node_modules/@opencraw/captcha-tesseract": { - "resolved": "packages/captcha-tesseract", - "link": true - }, - "node_modules/@opencraw/cli": { - "resolved": "packages/cli", - "link": true - }, - "node_modules/@opencraw/core": { - "resolved": "packages/core", - "link": true - }, - "node_modules/@opencraw/mcp": { - "resolved": "packages/mcp", - "link": true - }, - "node_modules/@opencraw/office-reader": { - "resolved": "packages/office-reader", - "link": true - }, - "node_modules/@opencraw/ocr-tesseract": { - "resolved": "packages/ocr-tesseract", - "link": true - }, - "node_modules/@opencraw/probe": { - "resolved": "packages/probe", - "link": true - }, - "node_modules/@opencraw/studio": { - "resolved": "packages/studio", - "link": true - }, - "node_modules/@opencraw/studio-desktop": { - "resolved": "apps/studio-desktop", - "link": true - }, - "node_modules/@opencraw/studio-ui": { - "resolved": "apps/studio-ui", - "link": true - }, - "node_modules/@opencraw/vscode": { - "resolved": "apps/vscode-extension", - "link": true - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", - "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.220.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.220.0.tgz", - "integrity": "sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/configuration": { - "version": "0.221.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/configuration/-/configuration-0.221.0.tgz", - "integrity": "sha512-uE9y56Zdi9Gt/RdxYnVOo3YmFZkKJJMA0gqtBe8wh8gdtF5Asqe+Oh/TWiDtFb1s+31jNY4CWgnfIB1KOITfFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.10.0", - "yaml": "^2.8.3" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0" - } - }, - "node_modules/@opentelemetry/configuration/node_modules/@opentelemetry/core": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.10.0.tgz", - "integrity": "sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==", - "dev": true, - "license": "Apache-2.0", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -12168,40 +11070,6 @@ "node": ">=14.0.0" } }, - "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/core": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.2.tgz", - "integrity": "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0", - "@emnapi/wasi-threads": "1.2.2" - } - }, - "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/runtime": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz", - "integrity": "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz", @@ -12272,293 +11140,6 @@ "node": ">=20" } }, - "node_modules/@parcel/watcher": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", - "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.3", - "is-glob": "^4.0.3", - "node-addon-api": "^7.0.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.6.0", - "@parcel/watcher-darwin-arm64": "2.6.0", - "@parcel/watcher-darwin-x64": "2.6.0", - "@parcel/watcher-freebsd-x64": "2.6.0", - "@parcel/watcher-linux-arm-glibc": "2.6.0", - "@parcel/watcher-linux-arm-musl": "2.6.0", - "@parcel/watcher-linux-arm64-glibc": "2.6.0", - "@parcel/watcher-linux-arm64-musl": "2.6.0", - "@parcel/watcher-linux-x64-glibc": "2.6.0", - "@parcel/watcher-linux-x64-musl": "2.6.0", - "@parcel/watcher-win32-arm64": "2.6.0", - "@parcel/watcher-win32-x64": "2.6.0" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", - "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", - "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", - "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", - "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", - "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", - "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", - "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", - "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", - "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", - "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", - "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", - "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@peculiar/asn1-schema": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.10.0.tgz", @@ -12614,20 +11195,6 @@ "node": ">=14.18.0" } }, - "node_modules/@phenomnomnominal/tsquery": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.2.0.tgz", - "integrity": "sha512-Vo9nkhfZxDB/sBiqIY3pjDC4mOSyure+AFlEW5hcy/tRE82MqCXjRN4InnVNMldinRt0dLYqg4HAU2XPq5e1LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/esquery": "^1.5.4", - "esquery": "^1.7.0" - }, - "peerDependencies": { - "typescript": ">3.0.0" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -12980,228 +11547,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@rollup/plugin-babel": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.1.0.tgz", - "integrity": "sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@rollup/pluginutils": "^5.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - }, - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.8", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz", - "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", - "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rollup/plugin-image": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-image/-/plugin-image-3.0.3.tgz", - "integrity": "sha512-qXWQwsXpvD4trSb8PeFPFajp8JLpRtqqOeNYRUKnEQNHm7e5UP7fuSRcbjQAJ7wDZBbnJvSdY5ujNBQd9B1iFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "mini-svg-data-uri": "^1.4.4" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-json": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", - "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", - "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-typescript": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.3.0.tgz", - "integrity": "sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0||^3.0.0||^4.0.0", - "tslib": "*", - "typescript": ">=3.7.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - }, - "tslib": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", - "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.63.5", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.5.tgz", @@ -13704,7 +12049,6 @@ "integrity": "sha512-VQ0hJ5jX31TVv/fhZx4xJRzd8pwn6VvzYd2tGOHHr2TfXGCBixZoqdPDXTiEoJLCTS2MmvBf6zyQZZ0M8aGQCQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@swc-node/core": "^1.14.1", "@swc-node/sourcemap-support": "^0.6.1", @@ -13751,7 +12095,6 @@ "integrity": "sha512-L+ACCGHCiS0VqHVep/INLVnvRvJ2XooQFLZq4L8snhxw1jsqz+XRcY313UsyPVturPPE1shW3jic7rt3qEQTSQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@swc/counter": "^0.1.3", "@xhmikosr/bin-wrapper": "^14.0.0", @@ -13781,6 +12124,23 @@ } } }, + "node_modules/@swc/cli/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/cli/node_modules/brace-expansion": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@swc/cli/node_modules/minimatch": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", @@ -13814,7 +12174,6 @@ "dev": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.25" @@ -14057,7 +12416,6 @@ "integrity": "sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@swc/counter": "^0.1.3" } @@ -14374,16 +12732,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -14397,7 +12745,6 @@ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -14460,6 +12807,16 @@ "@types/responselike": "^1.0.0" } }, + "node_modules/@types/concat-stream": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-2.0.3.tgz", + "integrity": "sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/css-tree": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/@types/css-tree/-/css-tree-2.3.11.tgz", @@ -14477,16 +12834,6 @@ "@types/ms": "*" } }, - "node_modules/@types/esquery": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/esquery/-/esquery-1.5.4.tgz", - "integrity": "sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/@types/esrecurse": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", @@ -14501,6 +12848,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/fs-extra": { "version": "9.0.13", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", @@ -14528,6 +12885,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/is-empty": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", + "integrity": "sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -14635,7 +12999,6 @@ "integrity": "sha512-SGrw/h3KPFshy3OE6ZL53LMBG5vGQQ8/gIpiqz/kRZhPJ7HgwCEs8LBuNtWLa8dvGZVpSF7+Bf+c11HUrCb/yg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.18.0" } @@ -14684,7 +13047,6 @@ "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -14695,7 +13057,6 @@ "integrity": "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.3.0" } @@ -14710,13 +13071,6 @@ "@types/node": "*" } }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", @@ -14734,6 +13088,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/supports-color": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", + "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -14787,18 +13148,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.70.1.tgz", - "integrity": "sha512-nDNrUQ/4ruSNYbu749TRY7cfrzPtoLHEXSNBI8aaNY32LlZCajixqRf3FqcKC4p5Cam4VOHYx/t+i5+nKXvrqA==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.2.tgz", + "integrity": "sha512-K72/pvT7qpm8q3k8G5u93NCSN1RcLxX5h7Gw0bQpbMXviBHeY6Nx1WEwmk9wP+eKTSQ8ecxvcgt/ZX/rB938xQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.70.1", - "@typescript-eslint/type-utils": "8.70.1", - "@typescript-eslint/utils": "8.70.1", - "@typescript-eslint/visitor-keys": "8.70.1", + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/type-utils": "8.71.2", + "@typescript-eslint/utils": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -14811,23 +13171,32 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.70.1", + "@typescript-eslint/parser": "^8.71.2", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.12.tgz", + "integrity": "sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.70.1.tgz", - "integrity": "sha512-nO974WLllwhSFWQXnMLj6nDGa8f0khKEz1JzpPJ1u7Vm/4X1X6ZHajpoknU4bb41vJyMB0HHVyS2GqdhWfIXZw==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.71.2.tgz", + "integrity": "sha512-aTtmZjp/x3gsGHkDs04/1I8kNogBJkpQaeGaN0PfiG43NzDEmW2n+OP5im9wfsvyX0yP1UZWBrAGtDBfH9jEVw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.70.1", - "@typescript-eslint/types": "8.70.1", - "@typescript-eslint/typescript-estree": "8.70.1", - "@typescript-eslint/visitor-keys": "8.70.1", + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", "debug": "^4.4.3" }, "engines": { @@ -14843,14 +13212,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.70.1.tgz", - "integrity": "sha512-62xOgboPfwc3/IgPSX/W6oQR3ZbF04194FPGUGH8HL8iLFHbt/456/8Ph1wLNUgVF+s94FlHoipBsz+v7+LMnA==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.71.2.tgz", + "integrity": "sha512-Pd68GsLVh5ZXlcEccFPdhSOvtHZ/2WU0XsA8zmXOS3F158lVlcTLhfQ6qvtL1RzbMie0Kp8xtbVwAg4nejKPHw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.70.1", - "@typescript-eslint/types": "^8.70.1", + "@typescript-eslint/tsconfig-utils": "^8.71.2", + "@typescript-eslint/types": "^8.71.2", "debug": "^4.4.3" }, "engines": { @@ -14865,14 +13234,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.70.1.tgz", - "integrity": "sha512-Pa0EeSeAusQc1WbjQMac+YfenewYTBu0KjgYvkUKwhXaHUKbFog23Dm/rp0DX/6tyYOQ3Xl1a+3EcFNZynGHCw==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.71.2.tgz", + "integrity": "sha512-YF4wgg5iUX5Obywoac27B56FhozMNFhdJSbh11H5GBAwmBtfyRhmgTQqW9tRNNmHDvsZ2CX6UGzoz+YfYn2Leg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.70.1", - "@typescript-eslint/visitor-keys": "8.70.1" + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -14883,9 +13252,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.70.1.tgz", - "integrity": "sha512-jumze1fPI+sDOaM2TWGQdn39PDxTr7TZGeuyLkAbNyx2vtMT3uRnVKChN0hfht5V2TugphJzF6bYXvBcE09qqg==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.2.tgz", + "integrity": "sha512-jz49TAWokm/7yWD9/o837nYax9DyALxIPOImdImvVzo6canBCZYzin8zJyqNR5k1j9K1DE0bVvr0XYB+99uAdg==", "dev": true, "license": "MIT", "engines": { @@ -14900,15 +13269,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.70.1.tgz", - "integrity": "sha512-7zKTnyvaVWqzLZHPFQtX1hVHqgkMC+WebPWakNCSyrQVbIP1AM0L0TlBZtACldIRb6PptI8Odk+jyZ5kP3B1VA==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.71.2.tgz", + "integrity": "sha512-cC8UaalCViJkb3rH/xLIvidEwoFRtMZMUqDjjJMGEKaTFwYRHYBcoczlEGHuvkHEO8svRDrgZ0yQgOArFmwang==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.70.1", - "@typescript-eslint/typescript-estree": "8.70.1", - "@typescript-eslint/utils": "8.70.1", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/utils": "8.71.2", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -14925,9 +13294,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.70.1.tgz", - "integrity": "sha512-Dm1ypdhhrGCTyyehxElhgJ6kgk8MVCv5qXdoOVqPr1uqk42jX8KjrZqhROvdShczA8qrDoYiOWn1ykWlx2k81Q==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.71.2.tgz", + "integrity": "sha512-y5Ukl3oVp7e/VGxqIoEXoeb/Roj71PAJ4WG/N/RGj+eeDvKRLM15kGr9MijLbN0i03S52zxu31Z98E5gWChJKw==", "dev": true, "license": "MIT", "engines": { @@ -14939,16 +13308,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.70.1.tgz", - "integrity": "sha512-TU8PwyGN0PQJUcE96mw8eCQ44SmxGdQlJmlWakHaHQ15eIuuvye5yNtmh/i6oS88jzXVQB71xdNkbkB/fMwL0g==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.2.tgz", + "integrity": "sha512-DgNOEsl4pdYzwSL+N/Cl33tX1Hlw3FvId73LnKXfq7jnrF2viOEn7X+P7RBkkSWCVm92gnWd28GIC5vJuLREeA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.70.1", - "@typescript-eslint/tsconfig-utils": "8.70.1", - "@typescript-eslint/types": "8.70.1", - "@typescript-eslint/visitor-keys": "8.70.1", + "@typescript-eslint/project-service": "8.71.2", + "@typescript-eslint/tsconfig-utils": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -14967,16 +13336,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.70.1.tgz", - "integrity": "sha512-Esgul8MsnKnRLdYU2Eb2cRV9bS5HJYtKj1ByJnOzzG2M58DGdSUQ1jUuILxipqcpB2h9WLrbD5GijIWUjX/Tqw==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.71.2.tgz", + "integrity": "sha512-RyKa1G1M9rKHDhrk+HJtiF1MvLD5Ux2JW3TSkzw+02pRALdpJb+QzG1Y5em+LvCgzGwgg8H7mBRFKljNz7ImPw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.70.1", - "@typescript-eslint/types": "8.70.1", - "@typescript-eslint/typescript-estree": "8.70.1" + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -14991,13 +13360,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.70.1.tgz", - "integrity": "sha512-Vwj9lUIW5Xq3wQ9w6gv3R86g1hMK8f2zNOdGTAgeXUMMXFK78G9ruCjjqutHMNJc0+CH7LYRnHeUB9IT8wFmcw==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.71.2.tgz", + "integrity": "sha512-zozlN0UA32bSG2zkKAgQyRYSbEISVoyU6vvkKYo2aSny74D8Jh4e+POkJ6Lk0dlezZi5x7TtD+88Xb06IB8nhg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.70.1", + "@typescript-eslint/types": "8.71.2", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -15787,8 +14156,8 @@ "license": "MIT", "optional": true, "dependencies": { - "tslib": "^2.4.0", - "@emnapi/wasi-threads": "1.2.1" + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" } }, "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@emnapi/runtime": { @@ -16194,6 +14563,7 @@ "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -16204,21 +14574,24 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", @@ -16226,6 +14599,7 @@ "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -16237,7 +14611,8 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", @@ -16245,6 +14620,7 @@ "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -16258,6 +14634,7 @@ "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -16268,6 +14645,7 @@ "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -16277,7 +14655,8 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", @@ -16285,6 +14664,7 @@ "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -16302,6 +14682,7 @@ "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -16316,6 +14697,7 @@ "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -16329,6 +14711,7 @@ "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -16344,6 +14727,7 @@ "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -16540,21 +14924,16 @@ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true, - "license": "BSD-2-Clause" + "license": "Apache-2.0", + "peer": true }, "node_modules/@zag-js/accordion": { "version": "1.43.3", @@ -17518,20 +15897,6 @@ "integrity": "sha512-9P9fvFFxuiDcLqX0BYgGNkf0/a/id32nHvQpwgv/Xv3b9n5yeyw2U8nKefpWr+1VfFsrpf2XMXiA2CDSWZgt2g==", "license": "MIT" }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", - "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/abbrev": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", @@ -17561,7 +15926,6 @@ "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -17602,16 +15966,6 @@ "node": ">=0.4.0" } }, - "node_modules/address": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/address/-/address-2.0.3.tgz", - "integrity": "sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16.0.0" - } - }, "node_modules/adm-zip": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.6.1.tgz", @@ -17639,7 +15993,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -17674,6 +16027,7 @@ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -18519,6 +16873,82 @@ "dev": true, "license": "MIT" }, + "node_modules/astro-eslint-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/astro-eslint-parser/-/astro-eslint-parser-1.4.0.tgz", + "integrity": "sha512-+QDcgc7e+au6EZ0YjMmRRjNoQo5bDMlaR45aWDoFsuxQTCM9qmCHRoiKJPELgckJ8Wmr7vcfpa9eCDHBFh6G4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.0.0 || ^3.0.0", + "@typescript-eslint/scope-manager": "^7.0.0 || ^8.0.0", + "@typescript-eslint/types": "^7.0.0 || ^8.0.0", + "astrojs-compiler-sync": "^1.0.0", + "debug": "^4.3.4", + "entities": "^7.0.0", + "eslint-scope": "^8.0.1", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.0", + "fast-glob": "^3.3.3", + "is-glob": "^4.0.3", + "semver": "^7.3.8" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/astro-eslint-parser/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/astro-eslint-parser/node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/astrojs-compiler-sync": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/astrojs-compiler-sync/-/astrojs-compiler-sync-1.1.1.tgz", + "integrity": "sha512-0mKvB9sDQRIZPsEJadw6OaFbGJ92cJPPR++ICca9XEyiUAZqgVuk25jNmzHPT0KF80rI94trSZrUR5iHFXGGOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "synckit": "^0.11.0" + }, + "engines": { + "node": "^18.18.0 || >=20.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "@astrojs/compiler": ">=0.27.0" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -18562,43 +16992,6 @@ "node": ">= 4.0.0" } }, - "node_modules/autoprefixer": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.6.1.tgz", - "integrity": "sha512-cL1Qz6ADZhcEbny/8HPfe99J6HhNoYtpX2LFLIbhgGE7Q1hlQVkYFdetDN7Id3KiQxhDrHwzlHr/YQCnZ8+xSA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.9", - "caniuse-lite": "^1.0.30001810", - "fraction.js": "^5.3.4", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -18633,9 +17026,9 @@ "license": "MIT" }, "node_modules/axe-core": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.13.0.tgz", - "integrity": "sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.14.0.tgz", + "integrity": "sha512-9WTZxEjsZ7b13TH8JPmbV2z8CHbl80/2hm3XPEG4JgNdQLK81IBRXmSxHfMAOkSqQeRxT/0dwNDz2GOm3zzpcQ==", "dev": true, "license": "MPL-2.0", "engines": { @@ -19319,41 +17712,6 @@ "node": ">=8" } }, - "node_modules/babel-plugin-const-enum": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", - "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-typescript": "^7.3.3", - "@babel/traverse": "^7.16.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-8.0.0.tgz", - "integrity": "sha512-18wCskrN3DgbuBmp1gr7LBGT8xdz5xhQQqFvFhVxbkl8VBCrMKQ2YtqBWtUal1Zrc1HTuX0011+Brjw78TCFkg==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^7.0.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/babel-plugin-jest-hoist": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", @@ -19432,20 +17790,6 @@ "semver": "bin/semver.js" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.6.8", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", @@ -19459,16 +17803,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-plugin-transform-typescript-metadata": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", - "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, "node_modules/babel-preset-current-node-syntax": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", @@ -19513,6 +17847,17 @@ "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", @@ -19781,18 +18126,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -19834,6 +18167,19 @@ "node": "20 || >=22" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/browserslist": { "version": "4.29.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.1.tgz", @@ -19854,7 +18200,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.11.25", "caniuse-lite": "^1.0.30001810", @@ -20258,12 +18603,38 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chardet": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.2.0.tgz", - "integrity": "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==", + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "dev": true, - "license": "MIT" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, "node_modules/cheerio": { "version": "1.2.0", @@ -20353,6 +18724,7 @@ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6.0" } @@ -20387,42 +18759,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -20438,16 +18774,6 @@ "node": ">=12" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", @@ -20591,20 +18917,6 @@ "dev": true, "license": "MIT" }, - "node_modules/columnify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -20637,13 +18949,6 @@ "node": ">= 12.0.0" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true, - "license": "MIT" - }, "node_modules/compare-version": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", @@ -20668,23 +18973,22 @@ "dev": true, "license": "MIT" }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, - "license": "ISC", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", "dependencies": { - "source-map": "^0.6.1" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true, - "license": "MIT" - }, "node_modules/content-disposition": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-2.0.1.tgz", @@ -20821,23 +19125,12 @@ "url": "https://opencollective.com/express" } }, - "node_modules/corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/cosmiconfig": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.2.tgz", "integrity": "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -20906,7 +19199,8 @@ "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/cross-spawn": { "version": "7.0.6", @@ -21247,19 +19541,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -21388,23 +19669,6 @@ "license": "MIT", "optional": true }, - "node_modules/detect-port": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-2.1.0.tgz", - "integrity": "sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "address": "^2.0.1" - }, - "bin": { - "detect": "dist/commonjs/bin/detect-port.js", - "detect-port": "dist/commonjs/bin/detect-port.js" - }, - "engines": { - "node": ">= 16.0.0" - } - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -21487,7 +19751,6 @@ "integrity": "sha512-O3zJUFUYHJKgzPqioHxfxzBzlSC1eXCSr79gMSBKBP5AgjjpmrydMsMLotEg9fAJF36vdUncb+4ndRNxoPdlSQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "app-builder-lib": "26.15.3", "builder-util": "26.15.3", @@ -21631,22 +19894,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/dotenv-expand": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz", - "integrity": "sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/dottie": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.7.tgz", @@ -21724,7 +19971,6 @@ "resolved": "https://registry.npmjs.org/durable-functions/-/durable-functions-3.5.0.tgz", "integrity": "sha512-FgdiAEQQURCrzpjKV1Ue41dGDFWsQKDp9FJh00fcRXqbnLbJ98jrn/4y8vxCGTKHitmrXTBxdeV5v/y4xDVxiA==", "license": "MIT", - "peer": true, "dependencies": { "@azure/functions": "^4.14.0", "@opentelemetry/api": "^1.9.0", @@ -21777,19 +20023,6 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, - "node_modules/ejs": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-5.0.1.tgz", - "integrity": "sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.12.18" - } - }, "node_modules/electron": { "version": "44.7.0", "resolved": "https://registry.npmjs.org/electron/-/electron-44.7.0.tgz", @@ -21929,6 +20162,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "@electron/asar": "^3.2.1", "debug": "^4.1.1", @@ -21949,6 +20183,7 @@ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -21964,6 +20199,7 @@ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "license": "MIT", + "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -21974,6 +20210,7 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4.0.0" } @@ -22229,7 +20466,8 @@ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/es-object-atoms": { "version": "1.1.2", @@ -22320,7 +20558,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -22390,7 +20627,6 @@ "integrity": "sha512-P7a6UEEqb9G95MYAtqkmsTbVXIYyzIfl6NGOIJk162PaahFxFyeGcrlXYFSiagECg4sEm8IseJdZBKR3rx6MsQ==", "dev": true, "license": "MIT", - "peer": true, "workspaces": [ "packages/*" ], @@ -22445,9 +20681,9 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz", + "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22588,6 +20824,82 @@ } } }, + "node_modules/eslint-mdx": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.8.1.tgz", + "integrity": "sha512-hnsqWwMOHqUANwxWEGt8XbwABPEr5sTOolAzqyUDFdlERpqjFE/icylb+mJl60VICL+kLbbvXWbnFLWZdTqJ2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "espree": "^9.6.1 || ^10.4.0 || ^11.2.0", + "estree-util-visit": "^2.0.0", + "remark-mdx": "^3.1.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "synckit": "^0.11.8", + "unified": "^11.0.5", + "unified-engine": "^11.2.2", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "eslint": ">=8.0.0", + "remark-lint-file-extension": "*" + }, + "peerDependenciesMeta": { + "remark-lint-file-extension": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-astro": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-astro/-/eslint-plugin-astro-1.7.0.tgz", + "integrity": "sha512-89xpAn528UKCdmyysbg0AHHqi6sqcK89wXnJIpu4F0mFBN03zATEBNK7pRtMfl6gwtMOm5ECXs+Wz5qDHhwTFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@jridgewell/sourcemap-codec": "^1.4.14", + "@typescript-eslint/types": "^7.7.1 || ^8", + "astro-eslint-parser": "^1.3.0", + "eslint-compat-utils": "^0.6.0", + "globals": "^16.0.0", + "postcss": "^8.4.14", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=8.57.0" + } + }, + "node_modules/eslint-plugin-astro/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-es-x": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", @@ -22610,13 +20922,28 @@ "eslint": ">=8" } }, + "node_modules/eslint-plugin-es-x/node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-plugin-import-x": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.17.1.tgz", "integrity": "sha512-4cdstYkKCyjumM2Q9NSI03K8D2a9F4Ssz33K2lv2hQa4KmR9jPLwk3uWGtNvclfqBrPGfGuMBwsGMbe6dMRbfg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/types": "^8.56.0", "comment-parser": "^1.4.1", @@ -22649,9 +20976,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "29.16.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.16.6.tgz", - "integrity": "sha512-q8TVr0rlNvUD0XnafGWkwtPeX+tTl2llP86EDl3sJtwWrQA/JT9SIu2hLLZbhhX6fT5SDE4O0gIKyZUujKnkYA==", + "version": "29.17.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.17.0.tgz", + "integrity": "sha512-6jtpU6MhYKbagkES02TupWAUUooJpZtKg94Ax0b8HhUorv3InSTBU8RRtlSBe0LocOcShXOpyec3PHzPDkJCSg==", "dev": true, "license": "MIT", "dependencies": { @@ -22766,10 +21093,39 @@ "node": "*" } }, + "node_modules/eslint-plugin-mdx": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.8.1.tgz", + "integrity": "sha512-4OLgotfBxUDc1f6ihXSagT/1+JCCUABA/2r6Kzl6gqFftg4dCV0wBfdwFo6X6UO/FzTHr3g6mVt+6prRXffc/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-mdx": "^3.8.1", + "mdast-util-from-markdown": "^2.0.2", + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0", + "remark-mdx": "^3.1.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "synckit": "^0.11.8", + "unified": "^11.0.5", + "vfile": "^6.0.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "eslint": ">=8.0.0" + } + }, "node_modules/eslint-plugin-n": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-18.3.0.tgz", - "integrity": "sha512-cPVguuDe6DrIPb/qUXHf8P89MaVTUmiYWwpt5gX5AILsvRIiZAxMFXcFR6QHYBksqKJpjfUBlL/RleCJUWcD7w==", + "version": "18.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-18.4.1.tgz", + "integrity": "sha512-2sBReWOvCbzgkPri9M5SFmD5EbIwZLa1xz6B5RZsrI19WSFKpyx1sOMr+pdk8puCiXuEgCbErEHy1PuaUrc/4w==", "dev": true, "license": "MIT", "dependencies": { @@ -22780,6 +21136,7 @@ "globals": "^15.11.0", "globrex": "^0.1.2", "ignore": "^5.3.2", + "js-yaml": "^5.4.1", "semver": "^7.6.3" }, "engines": { @@ -22802,6 +21159,23 @@ } } }, + "node_modules/eslint-plugin-n/node_modules/argparse": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.3.tgz", + "integrity": "sha512-Sn98ftV3KfsO8xfLPHG6oT8y+b0yvbrLgZjgPDXsharNY15tTAjqIsIju4S32nl6/iEUNNE4v+yL2Zhm8ooP3w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "PSF-2.0" + }, "node_modules/eslint-plugin-n/node_modules/globals": { "version": "15.15.0", "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", @@ -22815,14 +21189,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-n/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/eslint-plugin-n/node_modules/js-yaml": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.5.0.tgz", + "integrity": "sha512-paNr4LFIFPjeeSmwNYdrb8FafLLG/Cr2Af3GjbsHJ5CxIjH4r0c2emlmRdAtpPAieP1gRVzk6buBbVP5gBMGAg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", - "engines": { - "node": ">= 4" + "dependencies": { + "argparse": "^3.0.3" + }, + "bin": { + "js-yaml": "bin/js-yaml.mjs" } }, "node_modules/eslint-plugin-promise": { @@ -22845,28 +21232,33 @@ } }, "node_modules/eslint-plugin-react-dom": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-dom/-/eslint-plugin-react-dom-5.20.8.tgz", - "integrity": "sha512-IQYQbC0v+F8FlxAabLrQCXxxD6kDy8YHylQLZ1/E2iO2ufUnjOyAsVhhX9VEGVHvUpHck4CDoHCZr47msQ4pow==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-dom/-/eslint-plugin-react-dom-5.28.1.tgz", + "integrity": "sha512-pCxNfncwqffujtFRVNCsGdHUll4vUMrOPMc6oyfAtDTuOSyylpvrNszEemvwzhyKqK2u+chgy0zSoCYZNKfQVg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.20.8", - "@eslint-react/core": "5.20.8", - "@eslint-react/eslint": "5.20.8", - "@eslint-react/jsx": "5.20.8", - "@eslint-react/shared": "5.20.8", - "@eslint-react/var": "5.20.8", - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0", - "compare-versions": "^6.1.1" + "@eslint-react/ast": "5.28.1", + "@eslint-react/eslint": "5.28.1", + "@eslint-react/jsx": "5.28.1", + "@eslint-react/shared": "5.28.1", + "@eslint-react/var": "5.28.1", + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2", + "compare-versions": "^6.1.1", + "ts-pattern": "^5.9.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-plugin-react-hooks": { @@ -22890,50 +21282,60 @@ } }, "node_modules/eslint-plugin-react-jsx": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-jsx/-/eslint-plugin-react-jsx-5.20.8.tgz", - "integrity": "sha512-PHRxUYaezGl6E74TvnR4HP+SfIHoKPOUsfaB8gNiFxVmnMmAsEowZlErmHUciorUEQsD582qXTkkMKMBU2qhJA==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-jsx/-/eslint-plugin-react-jsx-5.28.1.tgz", + "integrity": "sha512-+pQ95B6areodxaQlY9uvbWX78ousi0Q8VZhGr/buu3zIX6myiPq7zjylML5tmSsURIPSv8LHM7BPNx1bb9gkJQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.20.8", - "@eslint-react/core": "5.20.8", - "@eslint-react/eslint": "5.20.8", - "@eslint-react/jsx": "5.20.8", - "@eslint-react/shared": "5.20.8", - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0" + "@eslint-react/ast": "5.28.1", + "@eslint-react/core": "5.28.1", + "@eslint-react/eslint": "5.28.1", + "@eslint-react/jsx": "5.28.1", + "@eslint-react/shared": "5.28.1", + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-plugin-react-naming-convention": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-naming-convention/-/eslint-plugin-react-naming-convention-5.20.8.tgz", - "integrity": "sha512-ECodOVXG7Xp8xVSZeNaFdEPmletWQ49JzIbeAtzDjg54Yn2cnpoxnAuy3eMFJhs8waDc409QoxTrKIX+PSBwnw==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-naming-convention/-/eslint-plugin-react-naming-convention-5.28.1.tgz", + "integrity": "sha512-8joiY9su/kpsoKHGpaqmep2ksIHoBW7pjFEHIkzFQLdHx2zB+/KWKyGyYttbX+vbR+Vph9nlwKx/JUlyEgmeJA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.20.8", - "@eslint-react/core": "5.20.8", - "@eslint-react/eslint": "5.20.8", - "@eslint-react/shared": "5.20.8", - "@eslint-react/var": "5.20.8", - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0", - "ts-pattern": "^5.9.0" + "@eslint-react/ast": "5.28.1", + "@eslint-react/core": "5.28.1", + "@eslint-react/eslint": "5.28.1", + "@eslint-react/shared": "5.28.1", + "@eslint-react/var": "5.28.1", + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2", + "ts-pattern": "^5.9.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-plugin-react-refresh": { @@ -22947,81 +21349,95 @@ } }, "node_modules/eslint-plugin-react-rsc": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-rsc/-/eslint-plugin-react-rsc-5.20.8.tgz", - "integrity": "sha512-6G6YLzjsB76jZwy9ifYGf7hcE434+xPF8WSilXJ9EZSBpyrfuT6OUktWXTSYLSqVbHTVceZW82DKs/SYfmRa6Q==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-rsc/-/eslint-plugin-react-rsc-5.28.1.tgz", + "integrity": "sha512-gJiSqPFX7g8SjyuSVlHEiso/0ns2Q/EOIJuphZbEflbvEdu/9PkQBrnAGbrvZvUtLP5KK5FN7DAlpjpAMrt06g==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.20.8", - "@eslint-react/core": "5.20.8", - "@eslint-react/eslint": "5.20.8", - "@eslint-react/shared": "5.20.8", - "@eslint-react/var": "5.20.8", - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0" + "@eslint-react/ast": "5.28.1", + "@eslint-react/core": "5.28.1", + "@eslint-react/eslint": "5.28.1", + "@eslint-react/shared": "5.28.1", + "@eslint-react/var": "5.28.1", + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-plugin-react-web-api": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-web-api/-/eslint-plugin-react-web-api-5.20.8.tgz", - "integrity": "sha512-iTmDL57D3xH2MGFMNyVMYFbaj6d/obAa/2WAN1P0hvOwNfADHw0DYKjV+IcXg0Mke5wWNExNgWsq3ksXfD4ZOw==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-web-api/-/eslint-plugin-react-web-api-5.28.1.tgz", + "integrity": "sha512-zJWPexMn+uSjjy0bMMpAAMVMTKXIpT64T69LjnbJH1LrU35YJDymYkLYiv5h1udS3QpCGzH+DKSVX6zJ8fJeqw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "5.20.8", - "@eslint-react/core": "5.20.8", - "@eslint-react/eslint": "5.20.8", - "@eslint-react/shared": "5.20.8", - "@eslint-react/var": "5.20.8", - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0", - "ts-pattern": "^5.9.0" + "@eslint-react/ast": "5.28.1", + "@eslint-react/core": "5.28.1", + "@eslint-react/eslint": "5.28.1", + "@eslint-react/shared": "5.28.1", + "@eslint-react/var": "5.28.1", + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2", + "ts-pattern": "^5.9.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-plugin-react-x": { - "version": "5.20.8", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-5.20.8.tgz", - "integrity": "sha512-G86Iu4K3cDjFTVwQ+24aZ+fu3+2U6zrIFcJ0xCdMVD3OcAPdreLidwDtHB9NLLWTK3dQ4DeM0H/q0d3jar5Rwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-react/ast": "5.20.8", - "@eslint-react/core": "5.20.8", - "@eslint-react/eslint": "5.20.8", - "@eslint-react/jsx": "5.20.8", - "@eslint-react/shared": "5.20.8", - "@eslint-react/var": "5.20.8", - "@typescript-eslint/scope-manager": "^8.70.0", - "@typescript-eslint/type-utils": "^8.70.0", - "@typescript-eslint/types": "^8.70.0", - "@typescript-eslint/typescript-estree": "^8.70.0", - "@typescript-eslint/utils": "^8.70.0", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-5.28.1.tgz", + "integrity": "sha512-6DkQbbUWjGmURcr9lr5t+fwhmMp5qijqx8l9z1zJhNx3QcNWn37DpK23Vjfxw4CegFRObkl1qita/q+5jNLBxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-react/ast": "5.28.1", + "@eslint-react/core": "5.28.1", + "@eslint-react/eslint": "5.28.1", + "@eslint-react/jsx": "5.28.1", + "@eslint-react/shared": "5.28.1", + "@eslint-react/var": "5.28.1", + "@typescript-eslint/scope-manager": "^8.71.2", + "@typescript-eslint/types": "^8.71.2", + "@typescript-eslint/typescript-estree": "^8.71.2", + "@typescript-eslint/utils": "^8.71.2", "compare-versions": "^6.1.1", "string-ts": "^2.3.1", "ts-api-utils": "^2.5.0", - "ts-pattern": "^5.9.0" + "ts-pattern": "^5.9.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.19.0" }, "peerDependencies": { "eslint": "*", "typescript": "*" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-plugin-regexp": { @@ -23046,6 +21462,53 @@ "eslint": ">=9.38.0" } }, + "node_modules/eslint-plugin-svelte": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.23.1.tgz", + "integrity": "sha512-+w86Jlx4IRUuuvtqD6j4njql+akx+81JnpvbN5de3AV5iq2SexvST/Jr51CiTlKeY0i+vhoKjPO/ywFKIP75sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.6.1", + "@jridgewell/sourcemap-codec": "^1.5.0", + "esutils": "^2.0.3", + "globals": "^16.0.0", + "known-css-properties": "^0.37.0", + "postcss": "^8.4.49", + "postcss-load-config": "^3.1.4", + "postcss-safe-parser": "^7.0.0", + "semver": "^7.6.3", + "svelte-eslint-parser": "^1.7.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": "^8.57.1 || ^9.0.0 || ^10.0.0", + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-svelte/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-toml": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/eslint-plugin-toml/-/eslint-plugin-toml-1.5.0.tgz", @@ -23124,9 +21587,9 @@ } }, "node_modules/eslint-plugin-yml": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-3.8.1.tgz", - "integrity": "sha512-E/70psRwxz5EJ8dBtzrFfqSiiInuSytbdtFCjueb/GcKjsWzPBfxfhtQePImMAPjHwMA/VDurO7DJwStDJ4wWg==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-3.9.0.tgz", + "integrity": "sha512-o4ByMVFd/mGc0Q/vJmbG9pz7Kyg/BiKAGnWCzvMLqzpa2KMdpUrLgF5a6yYeL2mf1Br/9dckd0ADl3vw7uF+jA==", "dev": true, "license": "MIT", "dependencies": { @@ -23241,16 +21704,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -23312,12 +21765,31 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", "dev": true, - "license": "MIT" + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/esutils": { "version": "2.0.3", @@ -23348,13 +21820,6 @@ "node": ">=6" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true, - "license": "MIT" - }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -23574,6 +22039,13 @@ "node": ">=4" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -23587,6 +22059,36 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -23601,23 +22103,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-string-truncated-width": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", - "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-string-width": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", - "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-string-truncated-width": "^3.0.2" - } - }, "node_modules/fast-uri": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz", @@ -23634,16 +22119,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/fast-wrap-ansi": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz", - "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-string-width": "^3.0.2" - } - }, "node_modules/fast-xml-builder": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.3.1.tgz", @@ -23683,6 +22158,16 @@ "fxparser": "src/cli/cli.js" } }, + "node_modules/fastq": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz", + "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fault": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", @@ -23738,32 +22223,6 @@ "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", "license": "MIT" }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/file-entry-cache": { "version": "11.1.5", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.5.tgz", @@ -23862,6 +22321,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", @@ -24064,27 +22536,29 @@ "dev": true, "license": "MIT" }, - "node_modules/fraction.js": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", - "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", - "dev": true, + "node_modules/framer-motion": { + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-14.3.0.tgz", + "integrity": "sha512-d8WCrU0ZQn7ukKMykCsDyIOwb/taZeDqqrDBK0du5GO0AO/ynz8fdR/LIIz9Pyy3n3tGwrneR+n0egyrrLa3fw==", "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "motion-dom": "14.3.0", + "motion-utils": "14.1.1", + "tslib": "^2.4.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true, - "license": "MIT" - }, "node_modules/fs-extra": { "version": "11.4.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.1.tgz", @@ -24198,16 +22672,6 @@ "node": ">= 0.4" } }, - "node_modules/generic-names": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", - "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^3.2.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -24323,13 +22787,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-them-args": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/get-them-args/-/get-them-args-1.3.2.tgz", - "integrity": "sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw==", - "dev": true, - "license": "MIT" - }, "node_modules/get-tsconfig": { "version": "4.14.3", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.3.tgz", @@ -24351,18 +22808,22 @@ "license": "ISC" }, "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "18 || 20 || >=22" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -24388,6 +22849,39 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/global-agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", @@ -24424,9 +22918,9 @@ } }, "node_modules/globals": { - "version": "17.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.12.0.tgz", - "integrity": "sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA==", + "version": "17.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.13.0.tgz", + "integrity": "sha512-RwMTC61u7hrG3ZJMkZQOK4JLJrKS8QtoTii63EmWvFXHqycY9FObBJQCbsLxSO8kjKhWE5kV1GC+Vb1g3RI0Zg==", "dev": true, "license": "MIT", "engines": { @@ -24528,13 +23022,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "dev": true, - "license": "(Apache-2.0 OR MPL-1.1)" - }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -24639,16 +23126,6 @@ "node": ">= 0.4" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, "node_modules/hermes-estree": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", @@ -24686,7 +23163,6 @@ "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.9.tgz", "integrity": "sha512-7dMkQmZoC4E6F7AtaQSPhlWAdnBti+j7rreMZl8QB4jFiEhP9TWbGWUMi8WYzBCgmgulxuvLQupKqo+Co6Omyg==", "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -24731,46 +23207,6 @@ "dev": true, "license": "ISC" }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-encoding-sniffer/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/html-encoding-sniffer/node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -24862,21 +23298,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -24899,47 +23320,6 @@ "node": ">= 14" } }, - "node_modules/http-server": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", - "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - }, - "bin": { - "http-server": "bin/http-server" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/http-server/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/http2-wrapper": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", @@ -24993,19 +23373,6 @@ "url": "https://github.com/sponsors/typicode" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/idb-keyval": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.3.0.tgz", @@ -25028,19 +23395,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", - "dev": true, - "license": "MIT", - "dependencies": { - "harmony-reflect": "^1.4.6" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -25063,9 +23417,9 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.10.tgz", - "integrity": "sha512-HpbUakT7xp5miBUywCHf36ZEuAJNklBJDDsGpUIjMzOSmM8ELSfA9Sa/QDPeNeqeoN31u+UTCkL4klCOVvRm4Q==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -25146,6 +23500,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -25241,16 +23606,6 @@ "node": ">= 12" } }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -25260,6 +23615,32 @@ "node": ">= 0.10" } }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -25426,6 +23807,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-docker": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", @@ -25458,6 +23850,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-empty": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", + "integrity": "sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==", + "dev": true, + "license": "MIT" + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -25537,6 +23936,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-identifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-identifier/-/is-identifier-1.1.0.tgz", @@ -25573,16 +23983,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -25596,13 +23996,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true, - "license": "MIT" - }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -25616,6 +24009,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-number-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", @@ -25660,16 +24063,6 @@ "dev": true, "license": "MIT" }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -25782,19 +24175,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-unsafe": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-2.0.2.tgz", @@ -25875,21 +24255,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.1.tgz", - "integrity": "sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "ip-regex": "^2.1.0", - "is-url": "^1.2.2" - }, - "engines": { - "node": ">=v0.10.0" - } - }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -26027,7 +24392,6 @@ "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "30.3.0", "@jest/types": "30.3.0", @@ -26134,182 +24498,6 @@ "node": ">=6" } }, - "node_modules/jest-circus": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.5.2.tgz", - "integrity": "sha512-vffFgjs5JSJ9q4ds1vNW3klKYPJfYfIY61LT/zaZgvTeASJOWZUt8LBfHgIcV4rwxlPBLl/ePBGccHEclS4PlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.5.2", - "@jest/expect": "30.5.2", - "@jest/test-result": "30.5.2", - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.5.2", - "jest-matcher-utils": "30.5.2", - "jest-message-util": "30.5.1", - "jest-runtime": "30.5.2", - "jest-snapshot": "30.5.2", - "jest-util": "30.5.1", - "p-limit": "^3.1.0", - "pretty-format": "30.5.1", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/globals": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.5.2.tgz", - "integrity": "sha512-62zfS+dL+M5aTNHXCNLyqD+j4oqxTIzDYrZbpqMP8Yn+gvlAGyzC6BSPNb1ZmFOakV1RtFYX/O3FCQXSWmQdgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.5.2", - "@jest/expect": "30.5.2", - "@jest/types": "30.5.1", - "jest-mock": "30.5.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/snapshot-utils": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.5.1.tgz", - "integrity": "sha512-V3wnxNtiVmw5PPVg433Cn3VdXnsOeu/ofLw3KC04Bn2y1wIlU5kozXQn48rhrgj/02LrCVtntTEF1yBha0XSUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/source-map": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.5.2.tgz", - "integrity": "sha512-c5CehvkbfHX6yyNg7bMn2ylqlp9AHXuZ/3hPH/Lh5bxD/vefd/lV9HBjMqXef9yQNqkdwyZvkLSVSwB38hy8Qw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.31", - "callsites": "^3.1.0", - "convert-source-map": "^2.0.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-runtime": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.5.2.tgz", - "integrity": "sha512-0paUAHBlheai10A3XSy9Xh+YBG0IROy+/qzcDPzQ/nbbXrznQzeWy5qniICWK6d3W3scaRQCVAbXdcK0ibBq4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.5.2", - "@jest/fake-timers": "30.5.2", - "@jest/globals": "30.5.2", - "@jest/source-map": "30.5.2", - "@jest/test-result": "30.5.2", - "@jest/transform": "30.5.2", - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.2.0", - "collect-v8-coverage": "^1.0.2", - "es-module-lexer": "^2.1.0", - "glob": "^13.0.6", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.5.1", - "jest-message-util": "30.5.1", - "jest-mock": "30.5.2", - "jest-regex-util": "30.5.0", - "jest-resolve": "30.5.1", - "jest-snapshot": "30.5.2", - "jest-util": "30.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-snapshot": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.5.2.tgz", - "integrity": "sha512-jKIdes25AnAH73dOCi2qE6J6vHJ6L2vyBS11M89kT50DVJcLTf2AOjvcc+2vVaN8lUbY5v2R83aqXo3Ro9fqYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.5.2", - "@jest/get-type": "30.5.0", - "@jest/snapshot-utils": "30.5.1", - "@jest/transform": "30.5.2", - "@jest/types": "30.5.1", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.5.2", - "graceful-fs": "^4.2.11", - "jest-diff": "30.5.2", - "jest-matcher-utils": "30.5.2", - "jest-message-util": "30.5.1", - "jest-util": "30.5.1", - "pretty-format": "30.5.1", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-cli": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", @@ -26533,23 +24721,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-cli/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-cli/node_modules/brace-expansion": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", - "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/jest-cli/node_modules/expect": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", @@ -26568,28 +24739,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-cli/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/jest-cli/node_modules/jest-circus": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", @@ -26673,629 +24822,224 @@ } } }, - "node_modules/jest-cli/node_modules/jest-diff": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", - "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.3.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/jest-each": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", - "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "jest-util": "30.3.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/jest-haste-map": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", - "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "picomatch": "^4.0.3", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/jest-cli/node_modules/jest-matcher-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", - "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.3.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/jest-message-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", - "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.3.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/jest-mock": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", - "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/jest-resolve": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", - "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/jest-worker": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", - "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.3.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-cli/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-cli/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-cli/node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/yargs": { - "version": "17.7.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", - "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-config": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.5.2.tgz", - "integrity": "sha512-U6221OZekabePvGcGPf4raIBKMvYQWFHvhobDJRojOYaFMj2HaGytAdknjDhYc6JTz2fdHW9+6k0wWUDaNeOFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.5.0", - "@jest/pattern": "30.5.0", - "@jest/test-sequencer": "30.5.2", - "@jest/types": "30.5.1", - "babel-jest": "30.5.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^13.0.6", - "graceful-fs": "^4.2.11", - "jest-circus": "30.5.2", - "jest-docblock": "30.5.0", - "jest-environment-node": "30.5.2", - "jest-regex-util": "30.5.0", - "jest-resolve": "30.5.1", - "jest-runner": "30.5.2", - "jest-util": "30.5.1", - "jest-validate": "30.5.1", - "parse-json": "^5.2.0", - "pretty-format": "30.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/@jest/globals": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.5.2.tgz", - "integrity": "sha512-62zfS+dL+M5aTNHXCNLyqD+j4oqxTIzDYrZbpqMP8Yn+gvlAGyzC6BSPNb1ZmFOakV1RtFYX/O3FCQXSWmQdgg==", + "node_modules/jest-cli/node_modules/jest-diff": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", + "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.5.2", - "@jest/expect": "30.5.2", - "@jest/types": "30.5.1", - "jest-mock": "30.5.2" + "@jest/diff-sequences": "30.3.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/@jest/snapshot-utils": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.5.1.tgz", - "integrity": "sha512-V3wnxNtiVmw5PPVg433Cn3VdXnsOeu/ofLw3KC04Bn2y1wIlU5kozXQn48rhrgj/02LrCVtntTEF1yBha0XSUw==", + "node_modules/jest-cli/node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.5.1", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" + "detect-newline": "^3.1.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/@jest/source-map": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.5.2.tgz", - "integrity": "sha512-c5CehvkbfHX6yyNg7bMn2ylqlp9AHXuZ/3hPH/Lh5bxD/vefd/lV9HBjMqXef9yQNqkdwyZvkLSVSwB38hy8Qw==", + "node_modules/jest-cli/node_modules/jest-each": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", + "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.31", - "callsites": "^3.1.0", - "convert-source-map": "^2.0.0", - "graceful-fs": "^4.2.11" + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "jest-util": "30.3.0", + "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/babel-jest": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.5.2.tgz", - "integrity": "sha512-ES8WeJ2fNWPEDunyAtUfJ12nHyaWUloCHdkfK2oW5uSoQSUmjNKdWiGaXJITJwvFEWoD/evHEg/QoCXAvLaQqQ==", + "node_modules/jest-cli/node_modules/jest-haste-map": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", + "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "30.5.2", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^8.0.0", - "babel-preset-jest": "30.5.0", - "chalk": "^4.1.2", + "@jest/types": "30.3.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", "graceful-fs": "^4.2.11", - "slash": "^3.0.0" + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "picomatch": "^4.0.3", + "walker": "^1.0.8" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/jest-config/node_modules/babel-jest/node_modules/babel-preset-jest": { - "version": "30.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.5.0.tgz", - "integrity": "sha512-ZGPn5ClP4lBDpuOK8W1yQIOy359HmbnZv3suucAlIe+SEE9yDsxV4S2PjSbH2Vc97U+WmzYD7vw3kr8NsQ/i6w==", + "node_modules/jest-cli/node_modules/jest-matcher-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", + "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "30.5.0", - "babel-preset-current-node-syntax": "^1.2.0" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.3.0", + "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1 || ^8.0.0" } }, - "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { - "version": "30.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.5.0.tgz", - "integrity": "sha512-gtGo1B+u14jrZQv6TdSWIWkTqclboo7Qn+dFAGUOIuXLFuJKAdg3U5MIWzZnW4vfUb4dX9skmAMiby86e/SF4A==", + "node_modules/jest-cli/node_modules/jest-message-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", "dev": true, "license": "MIT", "dependencies": { - "@types/babel__core": "^7.20.5" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.3.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-config/node_modules/jest-environment-node": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.5.2.tgz", - "integrity": "sha512-Ciz4KgTGIbojxSKpuFImgWJj5EyqfE8xMq9NxWmOXnQywHHS03H9Mv+vaCB29J5pr3JBrY27WbRV18rBdjh8Dg==", + "node_modules/jest-cli/node_modules/jest-mock": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.5.2", - "@jest/fake-timers": "30.5.2", - "@jest/types": "30.5.1", + "@jest/types": "30.3.0", "@types/node": "*", - "jest-mock": "30.5.2", - "jest-util": "30.5.1", - "jest-validate": "30.5.1" + "jest-util": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/jest-leak-detector": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.5.1.tgz", - "integrity": "sha512-gt4GT2aWgEoCNTcBe4rqS74xTIUJxi+UD9SNSu9aOk5LmTEd6fS5KSTmAKAfitCCktQHNN+upUuL6EkBfFbMDQ==", + "node_modules/jest-cli/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/get-type": "30.5.0", - "pretty-format": "30.5.1" - }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/jest-runner": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.5.2.tgz", - "integrity": "sha512-/B6px7hiiNhVSRwuv9AGn0nawYvwsHeQZ3ItTd5Gp2diFd0EOKaWVeWqcbw3L88vx1GfpCKjQkxWItZCTl11Rw==", + "node_modules/jest-cli/node_modules/jest-resolve": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", + "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.5.2", - "@jest/environment": "30.5.2", - "@jest/source-map": "30.5.2", - "@jest/test-result": "30.5.2", - "@jest/transform": "30.5.2", - "@jest/types": "30.5.1", - "@types/node": "*", "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", "graceful-fs": "^4.2.11", - "jest-docblock": "30.5.0", - "jest-environment-node": "30.5.2", - "jest-haste-map": "30.5.1", - "jest-leak-detector": "30.5.1", - "jest-message-util": "30.5.1", - "jest-resolve": "30.5.1", - "jest-runtime": "30.5.2", - "jest-util": "30.5.1", - "jest-watcher": "30.5.2", - "jest-worker": "30.5.1", - "p-limit": "^3.1.0" + "jest-haste-map": "30.3.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/jest-runtime": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.5.2.tgz", - "integrity": "sha512-0paUAHBlheai10A3XSy9Xh+YBG0IROy+/qzcDPzQ/nbbXrznQzeWy5qniICWK6d3W3scaRQCVAbXdcK0ibBq4w==", + "node_modules/jest-cli/node_modules/jest-worker": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", + "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.5.2", - "@jest/fake-timers": "30.5.2", - "@jest/globals": "30.5.2", - "@jest/source-map": "30.5.2", - "@jest/test-result": "30.5.2", - "@jest/transform": "30.5.2", - "@jest/types": "30.5.1", "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.2.0", - "collect-v8-coverage": "^1.0.2", - "es-module-lexer": "^2.1.0", - "glob": "^13.0.6", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.5.1", - "jest-message-util": "30.5.1", - "jest-mock": "30.5.2", - "jest-regex-util": "30.5.0", - "jest-resolve": "30.5.1", - "jest-snapshot": "30.5.2", - "jest-util": "30.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.3.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/jest-snapshot": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.5.2.tgz", - "integrity": "sha512-jKIdes25AnAH73dOCi2qE6J6vHJ6L2vyBS11M89kT50DVJcLTf2AOjvcc+2vVaN8lUbY5v2R83aqXo3Ro9fqYA==", + "node_modules/jest-cli/node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.5.2", - "@jest/get-type": "30.5.0", - "@jest/snapshot-utils": "30.5.1", - "@jest/transform": "30.5.2", - "@jest/types": "30.5.1", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.5.2", - "graceful-fs": "^4.2.11", - "jest-diff": "30.5.2", - "jest-matcher-utils": "30.5.2", - "jest-message-util": "30.5.1", - "jest-util": "30.5.1", - "pretty-format": "30.5.1", - "semver": "^7.7.2", - "synckit": "^0.11.8" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", + "node_modules/jest-cli/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" + "has-flag": "^4.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-validate": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.5.1.tgz", - "integrity": "sha512-i/buJ56wTpxihE93hQYNMfdOThS87+HGvLZzZJmU4xggPcdTYQq051iwALLCHp3q+SkCGH+EFejQZz5EbBSkkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.5.0", - "@jest/types": "30.5.1", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.5.1" + "node": ">=10" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-config/node_modules/jest-watcher": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.5.2.tgz", - "integrity": "sha512-rqRgg4R11GA9m1UsEZwQeixHsgZReCn6TOHAHtIH33yXrIvoX0OGPA20Yzzjkz7X40fZvcRSxEpQppYPcWzmcQ==", + "node_modules/jest-cli/node_modules/yargs": { + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.5.2", - "@jest/types": "30.5.1", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.5.1", - "string-length": "^4.0.2" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-config/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/jest-diff": { @@ -27324,55 +25068,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-docblock": { - "version": "30.5.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.5.0.tgz", - "integrity": "sha512-NwDqcxtoZi33RhuW+zJS/RVA3rmheQ8BnwpYZuc/Eruaz6seQb7+aoCeDZu/3X7W2XmD8DbSo9Pn72DbKsBFYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-each": { - "version": "30.5.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.5.2.tgz", - "integrity": "sha512-GRrW+7fmmgmkvyfEBqc1QFdWnF1Ex5yG6Y6AWL4TTxnkWlKIT98dsKh3P3UuWm6v4XsQwVE6DEzXIPMzWJ3ZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.5.0", - "@jest/types": "30.5.1", - "chalk": "^4.1.2", - "jest-regex-util": "30.5.0", - "jest-util": "30.5.1", - "pretty-format": "30.5.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-each/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/jest-environment-jsdom": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.3.0.tgz", @@ -27723,47 +25418,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-haste-map": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.5.1.tgz", - "integrity": "sha512-VIFgt67jW480YDxKfEv9IYQKrFpYt7bOCMn3VsnjK7AK9qo7p6acpnA1DHwsVOULE3dTaYew/6JaTD/d0VDHoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@parcel/watcher": "^2.6.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "fdir": "^6.5.0", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.5.0", - "jest-util": "30.5.1", - "jest-worker": "30.5.1", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/jest-leak-detector": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", @@ -27947,25 +25601,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-resolve": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.5.1.tgz", - "integrity": "sha512-wprhLejRtwN6h8ZgaqC0eYjGJ1uMdGPT/+b3eFncbG4NWuuP9QL+vWwRinu9waw7hkOLcpMJGVJAMgBwsPssMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.5.1", - "jest-util": "30.5.1", - "jest-validate": "30.5.1", - "slash": "^3.0.0", - "unrs-resolver": "^1.12.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/jest-resolve-dependencies": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", @@ -27990,55 +25625,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-resolve/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve/node_modules/jest-validate": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.5.1.tgz", - "integrity": "sha512-i/buJ56wTpxihE93hQYNMfdOThS87+HGvLZzZJmU4xggPcdTYQq051iwALLCHp3q+SkCGH+EFejQZz5EbBSkkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.5.0", - "@jest/types": "30.5.1", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.5.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/jest-runner": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", @@ -28691,38 +26277,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", - "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/jest-runtime/node_modules/jest-haste-map": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", @@ -28831,46 +26385,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runtime/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-runtime/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runtime/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/jest-runtime/node_modules/pretty-format": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", @@ -29739,57 +27253,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-worker": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.5.1.tgz", - "integrity": "sha512-Cbxh5v7AoLuFRmFJSM4/aHdQ68rjXvUWr716EE0Dh3I7T+T/3FgFKhOERGXHcU2Meftq9+9zxPM3TSNyI9D+HA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.5.1", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker/node_modules/jest-util": { - "version": "30.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.5.1.tgz", - "integrity": "sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.5.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/jest/node_modules/@jest/pattern": { "version": "30.0.1", "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", @@ -29902,43 +27365,24 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-9.2.2.tgz", - "integrity": "sha512-eFY7Rlscvv/BpY6UsVsjKwMhu1tJO/F4U/vC9g3yeRy/JqszuO1UP6Vdq+85G+3FP6fEw/sWR8a5ftPFY86csw==", + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-9.2.3.tgz", + "integrity": "sha512-xsCb5EbmLWNlQ8v5zQIgSYSyf1rSyVPjh8p9G2xviOl1weHm8a611fHWUOGn7ISquCL6LoBKZvh0tcKmpVGgzw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.9", - "@types/node": "^26.4.0" + "@types/estree": "^1.0.9" }, "engines": { "node": "^22.22.2 || >=24.15.0" } }, - "node_modules/jsdoc-type-pratt-parser/node_modules/@types/node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz", - "integrity": "sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~8.9.0" - } - }, - "node_modules/jsdoc-type-pratt-parser/node_modules/undici-types": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", - "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", - "dev": true, - "license": "MIT" - }, "node_modules/jsdom": { "version": "26.1.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssstyle": "^4.2.1", "data-urls": "^5.0.0", @@ -30052,7 +27496,6 @@ "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "license": "MIT", - "peer": true, "engines": { "node": ">= 10.16.0" } @@ -30134,7 +27577,6 @@ "integrity": "sha512-hYTGkHGNRZnXOFZ1urhINADoqDrGfpy53cjw+dxk84QE0pUDujQzeUeamNs6Mz44/TKD49z2x6/GVSu4ZrtA+Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "acorn": "^8.5.0", "eslint-visitor-keys": "^5.0.0", @@ -30335,25 +27777,10 @@ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } }, - "node_modules/kill-port": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/kill-port/-/kill-port-1.6.1.tgz", - "integrity": "sha512-un0Y55cOM7JKGaLnGja28T38tDDop0AQ8N0KlAdyh+B1nmMoX8AnNmqPNZbS3mUMgiST51DCVqmbFT1gNJpVNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-them-args": "1.3.2", - "shell-exec": "1.0.2" - }, - "bin": { - "kill-port": "cli.js" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -30364,6 +27791,13 @@ "node": ">=0.10.0" } }, + "node_modules/known-css-properties": { + "version": "0.37.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", + "dev": true, + "license": "MIT" + }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", @@ -30693,24 +28127,39 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/loader-utils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", - "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "node_modules/load-plugin": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-6.0.3.tgz", + "integrity": "sha512-kc0X2FEUZr145odl68frm+lMJuQ23+rTXYmR6TImqPtbpmXC4vVXbWKDQ9IzndA0HfyQamWfKLhzsqGSTxE63w==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 12.13.0" + "dependencies": { + "@npmcli/config": "^8.0.0", + "import-meta-resolve": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/locate-path": { @@ -30805,23 +28254,6 @@ "dev": true, "license": "MIT" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/logform": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", @@ -30924,16 +28356,6 @@ "lz-string": "bin/bin.js" } }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, "node_modules/make-asynchronous": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/make-asynchronous/-/make-asynchronous-1.1.0.tgz", @@ -31032,9 +28454,9 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", - "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.3.tgz", + "integrity": "sha512-xPgpDNl0/OXHsI7TlaIs22lWnH3KlpvZdXG1ET/m/YT2Hhdkx8lJV4kLphE6l9simyM4KPDFBwas08BgEob6Jw==", "dev": true, "license": "MIT", "dependencies": { @@ -31062,9 +28484,9 @@ } }, "node_modules/mdast-util-from-markdown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", - "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.1.0.tgz", + "integrity": "sha512-KRLgmPaP2H1ul2bpoJkOS+9pAcDAAj9Nu1mqLnh8NLeJG5tlvj42TH80PIGBpROWlRXLk0lDrWNuZCFy/tsB4A==", "dev": true, "license": "MIT", "dependencies": { @@ -31175,9 +28597,9 @@ } }, "node_modules/mdast-util-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.1.tgz", + "integrity": "sha512-OuJHqvr455pwu2OaOrir7dbzqs4jlWKOtlu9L6GjcIjjQwNyw02VntQsr/Ek6/A13vgnXfUhBekWRUP1OkNivw==", "dev": true, "license": "MIT", "dependencies": { @@ -31245,6 +28667,87 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-phrasing": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", @@ -31261,9 +28764,9 @@ } }, "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.2.0.tgz", + "integrity": "sha512-2Jn/ADrHFFyyniBMi0bncTbJqU78K3/TEYvzvwrWWzD9MYPUa/Gm4r3nOeKFQg/PDM5BsbDYdc8ackW4NTY6NA==", "dev": true, "license": "MIT", "dependencies": { @@ -31272,8 +28775,10 @@ "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", + "micromark-util-character": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" }, @@ -31297,9 +28802,9 @@ } }, "node_modules/mdn-data": { - "version": "2.35.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.35.0.tgz", - "integrity": "sha512-k+1+dEIm2z/BEfdvYzT/fIyAGeDBo/1AJNJI4ilFXJRYoxP/3Ds+GP8shAOIq8jYXY9N5nGB3Ag104NsagmLAA==", + "version": "2.37.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.37.2.tgz", + "integrity": "sha512-rz9YOBGItdSbe7HcSArUbhiAv4SB/4DKRYg96CSFS2CcIYMbUvBtZlzA1NCbk2AdgbmYwMqwNblLpR441lLeiQ==", "dev": true, "license": "CC0-1.0" }, @@ -31310,10 +28815,20 @@ "dev": true, "license": "MIT" }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.3.tgz", + "integrity": "sha512-oGYfQzHSG5dOMovQcJ3fyTmZlWAWpi0XA0sJwJs+i6OT88o1+Jtw/8z0CmdowSLxGhhFK89rQ/oXph/wN02PNw==", "dev": true, "funding": [ { @@ -31337,6 +28852,7 @@ "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-edit-map": "^1.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", @@ -31347,9 +28863,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.4.tgz", + "integrity": "sha512-wxEeE8v8XVvOrxn1TZj74qYhAtTQsSqufHVS3uNVyT1MupXxhyaHk8/9xDNPh9BmL77QNDgWTkZ3RsYHB2ry7w==", "dev": true, "funding": [ { @@ -31367,18 +28883,19 @@ "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", + "micromark-factory-space": "^2.1.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", + "micromark-util-edit-map": "^1.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-types": "^2.0.3" } }, "node_modules/micromark-extension-frontmatter": { @@ -31546,6 +29063,113 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-factory-destination": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", @@ -31591,10 +29215,38 @@ "micromark-util-types": "^2.0.0" } }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.1.0.tgz", + "integrity": "sha512-fS8hnLIjnjvdQIj39Geug8wWsR0HrYZ43KShKxNfwT7t2LOHo/LbWZEzEaSOjwtjdCsjoE6syHhonEzW0zv0+Q==", "dev": true, "funding": [ { @@ -31785,6 +29437,26 @@ "micromark-util-symbol": "^2.0.0" } }, + "node_modules/micromark-util-edit-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-edit-map/-/micromark-util-edit-map-1.0.0.tgz", + "integrity": "sha512-Pa2ljlsEL6sVwFaYeyrOLSYbQt73JvGbPOYFq+9AElXiSnfI5Q4465RRZ1sHv7lDjDOnGRDDaqPXqClqWK/q1Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, "node_modules/micromark-util-encode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", @@ -31802,6 +29474,32 @@ ], "license": "MIT" }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "node_modules/micromark-util-html-tag-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", @@ -31922,9 +29620,9 @@ "license": "MIT" }, "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.3.tgz", + "integrity": "sha512-oxB2Ik03hI0gv+VNn9tnh1t1YEe9MDPptViAEgfdf3YQHsn0pzGTgCdlSCJXcwhqm8phaEuM7zeEu3QQzVBrPg==", "dev": true, "funding": [ { @@ -31938,6 +29636,33 @@ ], "license": "MIT" }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -32008,16 +29733,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mini-svg-data-uri": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", - "dev": true, - "license": "MIT", - "bin": { - "mini-svg-data-uri": "cli.js" - } - }, "node_modules/minimatch": { "version": "10.2.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", @@ -32050,6 +29765,7 @@ "integrity": "sha512-PCN1x1OzFeFB2GlP91s46q7Gz8Jf16Z7M45bzpoqrYZlh12QeY6tYVM5h299wbwy1DxnQ69VFmmh8Hb2Ff8mbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "jest-worker": "^27.4.5", @@ -32123,6 +29839,7 @@ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -32138,6 +29855,7 @@ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -32177,6 +29895,7 @@ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "minimist": "^1.2.6" }, @@ -32251,6 +29970,43 @@ "dev": true, "license": "MIT" }, + "node_modules/motion": { + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/motion/-/motion-14.3.0.tgz", + "integrity": "sha512-yh/nHYjikl68+FTxAMywFYzzj21/oGY7RGCfkqN5zpuT1rk3rp0lKfVU8EUq0A64qQeGnxuKUJWP85MipqdLBw==", + "license": "MIT", + "dependencies": { + "framer-motion": "14.3.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/motion-dom": { + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-14.3.0.tgz", + "integrity": "sha512-rcKO4aEJzAqDEsrH6qFzhLZxs7bNqZpiUEuEATz9LaRwt6dG7hZEbcFUSHNR8NECaKYM0Iuw6Iv6NpWEGXDI+w==", + "license": "MIT", + "dependencies": { + "motion-utils": "14.1.1" + } + }, + "node_modules/motion-utils": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-14.1.1.tgz", + "integrity": "sha512-3VvN5Uvf8B6qG+OfOui6Nht5EWp+vLuU3IqcAj7ItZGKqtmTjCebl5sGZF7/08gEHRnEl1AP/fIwbcEyVrcQGQ==", + "license": "MIT" + }, "node_modules/mri": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", @@ -32292,16 +30048,6 @@ "readable-stream": "^3.6.0" } }, - "node_modules/mute-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", - "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, "node_modules/mysql2": { "version": "3.24.4", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.24.4.tgz", @@ -32423,13 +30169,6 @@ "node": ">=22.12.0" } }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT" - }, "node_modules/node-api-version": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz", @@ -32583,6 +30322,41 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -32606,6 +30380,91 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/npm-package-arg/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz", + "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -32638,147 +30497,11 @@ "dev": true, "license": "MIT" }, - "node_modules/nx": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/nx/-/nx-23.3.0.tgz", - "integrity": "sha512-R7Kl+hURSGiG9uEjc19Cg3o+vGCDHqCVp6mioiBMEsOSol/LgzP+K8TVF06TnnSC8uzxMeB0ymu+LGMJGXnbbw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@clack/core": "1.4.3", - "@clack/prompts": "1.7.0", - "@emnapi/core": "1.4.5", - "@emnapi/runtime": "1.4.5", - "@emnapi/wasi-threads": "1.0.4", - "@jest/diff-sequences": "30.0.1", - "@napi-rs/wasm-runtime": "0.2.4", - "@tybys/wasm-util": "0.9.0", - "@yarnpkg/lockfile": "1.1.0", - "@zkochan/js-yaml": "0.0.7", - "ansi-regex": "5.0.1", - "ansi-styles": "4.3.0", - "argparse": "2.0.1", - "balanced-match": "4.0.3", - "base64-js": "1.5.1", - "bl": "4.1.0", - "brace-expansion": "5.0.12", - "buffer": "5.7.1", - "bundle-name": "4.1.0", - "chalk": "4.1.2", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "8.0.1", - "clone": "1.0.4", - "color-convert": "2.0.1", - "color-name": "1.1.4", - "default-browser": "5.2.1", - "default-browser-id": "5.0.0", - "defaults": "1.0.4", - "define-lazy-prop": "3.0.0", - "dotenv": "16.4.7", - "dotenv-expand": "12.0.3", - "ejs": "5.0.1", - "emoji-regex": "8.0.0", - "end-of-stream": "1.4.5", - "escalade": "3.2.0", - "escape-string-regexp": "1.0.5", - "fast-string-truncated-width": "3.0.3", - "fast-string-width": "3.0.2", - "fast-wrap-ansi": "0.2.0", - "figures": "3.2.0", - "fs-constants": "1.0.0", - "get-caller-file": "2.0.5", - "has-flag": "4.0.0", - "ieee754": "1.2.1", - "ignore": "7.0.6", - "inherits": "2.0.4", - "is-docker": "3.0.0", - "is-fullwidth-code-point": "3.0.0", - "is-inside-container": "1.0.0", - "is-interactive": "1.0.0", - "is-unicode-supported": "0.1.0", - "is-wsl": "3.1.0", - "isexe": "2.0.0", - "json5": "2.2.3", - "jsonc-parser": "3.3.1", - "lines-and-columns": "2.0.3", - "log-symbols": "4.1.0", - "mimic-fn": "2.1.0", - "minimatch": "10.2.5", - "minimist": "1.2.8", - "npm-run-path": "4.0.1", - "once": "1.4.0", - "onetime": "5.1.2", - "open": "10.1.0", - "ora": "5.4.1", - "path-key": "3.1.1", - "picocolors": "1.1.1", - "readable-stream": "3.6.2", - "require-directory": "2.1.1", - "resolve.exports": "2.0.3", - "restore-cursor": "3.1.0", - "run-applescript": "7.0.0", - "safe-buffer": "5.2.1", - "semver": "7.8.5", - "signal-exit": "3.0.7", - "sisteransi": "1.0.5", - "smol-toml": "1.9.0", - "string_decoder": "1.3.0", - "string-width": "4.2.3", - "strip-ansi": "6.0.1", - "strip-bom": "3.0.0", - "supports-color": "7.2.0", - "tar-stream": "2.2.0", - "tmp": "0.2.7", - "tsconfig-paths": "4.2.0", - "tslib": "2.8.1", - "undici": "7.29.0", - "util-deprecate": "1.0.2", - "wcwidth": "1.0.1", - "which": "3.0.1", - "wrap-ansi": "7.0.0", - "wrappy": "1.0.2", - "y18n": "5.0.8", - "yaml": "2.9.0", - "yargs": "17.7.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "dist/bin/nx.js", - "nx-cloud": "dist/bin/nx-cloud.js" - }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "23.3.0", - "@nx/nx-darwin-x64": "23.3.0", - "@nx/nx-freebsd-x64": "23.3.0", - "@nx/nx-linux-arm-gnueabihf": "23.3.0", - "@nx/nx-linux-arm64-gnu": "23.3.0", - "@nx/nx-linux-arm64-musl": "23.3.0", - "@nx/nx-linux-x64-gnu": "23.3.0", - "@nx/nx-linux-x64-musl": "23.3.0", - "@nx/nx-win32-arm64-msvc": "23.3.0", - "@nx/nx-win32-x64-msvc": "23.3.0" - }, - "peerDependencies": { - "@swc-node/register": "^1.11.1", - "@swc/core": "^1.15.8" - }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } - } - }, "node_modules/nx/node_modules/balanced-match": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz", "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==", - "dev": true, + "extraneous": true, "license": "MIT", "engines": { "node": "20 || >=22" @@ -32788,14 +30511,14 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, + "extraneous": true, "license": "MIT" }, "node_modules/nx/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, + "extraneous": true, "license": "MIT", "engines": { "node": ">=0.8.0" @@ -32805,7 +30528,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", - "dev": true, + "extraneous": true, "license": "MIT", "engines": { "node": ">= 4" @@ -32815,7 +30538,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, + "extraneous": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -32831,7 +30554,7 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", - "dev": true, + "extraneous": true, "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -32847,7 +30570,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, + "extraneous": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -33053,16 +30776,6 @@ "opencollective-postinstall": "index.js" } }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -33081,30 +30794,6 @@ "node": ">= 0.8.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/own-keys": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz", @@ -33262,6 +30951,33 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -33423,31 +31139,28 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.5.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", - "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } + "license": "ISC" }, "node_modules/path-type": { "version": "4.0.0", @@ -33771,20 +31484,6 @@ "node": ">=14.19.0" } }, - "node_modules/portfinder": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz", - "integrity": "sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^3.2.6", - "debug": "^4.3.6" - }, - "engines": { - "node": ">= 10.12" - } - }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -33815,7 +31514,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.18", "picocolors": "^1.1.1", @@ -33825,87 +31523,98 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-modules": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-6.0.1.tgz", - "integrity": "sha512-zyo2sAkVvuZFFy0gc2+4O+xar5dYlaVy/ebO24KT0ftk/iJevSNyPyQellsBLlnccwh7f6V6Y4GvuKRYToNgpQ==", + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", "dev": true, "license": "MIT", "dependencies": { - "generic-names": "^4.0.0", - "icss-utils": "^5.1.0", - "lodash.camelcase": "^4.3.0", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "string-hash": "^1.1.3" + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "dev": true, - "license": "ISC", "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, "peerDependencies": { - "postcss": "^8.1.0" + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", - "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.1.0" - }, + "license": "ISC", "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 6" } }, - "node_modules/postcss-modules-scope": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", - "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "node_modules/postcss-safe-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.1.0.tgz", + "integrity": "sha512-1WzZxRLaAFwEh6Do+zyGpjWV3nGJNxxhuh7Ubu/q1ICImMgZJnLwhoaEpRbG4pJppp2Y1ncL9ffA2f+LhrefQg==", "dev": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^7.0.0" - }, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=18.0" }, "peerDependencies": { - "postcss": "^8.1.0" + "postcss": "^8.4.31" } }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=12.0" }, "peerDependencies": { - "postcss": "^8.1.0" + "postcss": "^8.4.29" } }, "node_modules/postcss-selector-parser": { @@ -33922,13 +31631,6 @@ "node": ">=4" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, "node_modules/postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -33979,6 +31681,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "commander": "^9.4.0" }, @@ -33996,6 +31699,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": "^12.20.0 || >=14" } @@ -34092,6 +31796,13 @@ "node": ">=0.4.0" } }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true, + "license": "ISC" + }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -34277,6 +31988,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -34317,7 +32049,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -34327,7 +32058,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.28.0" }, @@ -34355,6 +32085,30 @@ "read-binary-file-arch": "cli.js" } }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -34505,6 +32259,54 @@ "regjsparser": "bin/parser" } }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -34538,13 +32340,6 @@ "node": ">=9.3.0 || >=8.10.0 <9.0.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "license": "MIT" - }, "node_modules/resedit": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz", @@ -34637,16 +32432,6 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/responselike": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-4.0.2.tgz", @@ -34663,20 +32448,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -34694,6 +32465,17 @@ "dev": true, "license": "MIT" }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -34701,6 +32483,7 @@ "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -34713,7 +32496,8 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.21", @@ -34721,6 +32505,7 @@ "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -34733,6 +32518,7 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -34754,6 +32540,7 @@ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -34820,7 +32607,6 @@ "integrity": "sha512-KRWwmNLlPw5M7HcdYfm15oBv9n9LPtjzpzCIxS/phwqvPyxHSoKX6Y2YU3pxSPfy0CLquVgsx/j/hBi6OvH1Nw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.9" }, @@ -34913,6 +32699,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-array-concat": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", @@ -35050,6 +32860,7 @@ "integrity": "sha512-zJlMCZ0cAR5p/Y4oVpRoqioDMJcGxaXRrQ/4rP4WyR84vc5z/DolXdbvXeDpTwbtocDFr2rhPqHPErDCUtz2kA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/json-schema": "^7.0.15", "ajv": "^8.20.0", @@ -35079,13 +32890,6 @@ "node": "^14.0.0 || >=16.0.0" } }, - "node_modules/secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", - "dev": true, - "license": "MIT" - }, "node_modules/seek-bzip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-2.0.0.tgz", @@ -35347,13 +33151,6 @@ "node": ">=8" } }, - "node_modules/shell-exec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shell-exec/-/shell-exec-1.0.2.tgz", - "integrity": "sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg==", - "dev": true, - "license": "MIT" - }, "node_modules/side-channel": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", @@ -35446,13 +33243,6 @@ "node": ">=10" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -35463,19 +33253,6 @@ "node": ">=8" } }, - "node_modules/smol-toml": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.9.0.tgz", - "integrity": "sha512-hpd+HLON7HdZXqYchMM/+LaTTbdK0AU3NngIJ4KVyWbY9bfQqdL9cD+4yf6dUoU2Ap4VsU0JkQi6FxAI1B2mXQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 18" - }, - "funding": { - "url": "https://github.com/sponsors/cyyynthia" - } - }, "node_modules/sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -35543,6 +33320,42 @@ "source-map": "^0.6.0" } }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.24.tgz", + "integrity": "sha512-cLS9TtWkIQFyLkJ3/5aFQAOHOSKTlOs/7WDut/XPSdjom1fJhUdkepeJAKXa9Y05+FabHd0sti+Et559vDtkpQ==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", @@ -35688,13 +33501,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", - "dev": true, - "license": "CC0-1.0" - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -35836,6 +33642,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -35863,16 +33684,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/strip-dirs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-3.0.0.tgz", @@ -36033,6 +33844,54 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svelte-eslint-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.9.0.tgz", + "integrity": "sha512-aKdKQAZP7MobfVcQNyy5Yk0QjlC9m5T1lTS0qA7+0EIsFzFX3WgbGHfb8267QK+4hI8Az9+2f+hk5sp39op8sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.0", + "postcss": "^8.4.49", + "postcss-scss": "^4.0.9", + "postcss-selector-parser": "^7.0.0", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0", + "pnpm": "10.34.6" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/swc-loader": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.1.15.tgz", @@ -36129,23 +33988,6 @@ "node": ">=18" } }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tar/node_modules/yallist": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", @@ -36156,42 +33998,6 @@ "node": ">=18" } }, - "node_modules/tcp-port-used": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.3.tgz", - "integrity": "sha512-4CEQ3qRJYo+mtEbJ+OoQu3dF4TDkwaO3RDVC4UzP5cpAOIUWwuwPjD7sdxDFFqsMUjsXVVYBMlg/boAaloThMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4.3.1", - "is2": "2.0.1" - } - }, - "node_modules/tcp-port-used/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/tcp-port-used/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, "node_modules/tedious": { "version": "20.0.0", "resolved": "https://registry.npmjs.org/tedious/-/tedious-20.0.0.tgz", @@ -36292,6 +34098,7 @@ "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "mkdirp": "^0.5.1", "rimraf": "~2.6.2" @@ -36332,6 +34139,7 @@ "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -36350,7 +34158,8 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/terser/node_modules/source-map-support": { "version": "0.5.21", @@ -36358,6 +34167,7 @@ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -36387,100 +34197,6 @@ "integrity": "sha512-WnNH518NzmbSq9zgTPeoF8c+xmilS8rFIl1YKbk/ptuuc7p6cLNELNuPAzcmsYw450ca6bLa8j3t0VAtq435Vw==", "license": "Apache-2.0" }, - "node_modules/test-exclude": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz", - "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^10.2.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/test-exclude/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", - "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/glob/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/test-exclude/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/text-decoder": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", @@ -36615,6 +34331,19 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -36708,6 +34437,17 @@ "node": ">= 14.0.0" } }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -36737,7 +34477,6 @@ "integrity": "sha512-rUQG+Ar95cNQf//KvsSjvabLpCTbwk+vKGWkAgiKFugqVwmOpGR7n7xa3S68/AB21Wn0KNhIAVxmxrUsz0L1AQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "bs-logger": "^0.2.6", "fast-json-stable-stringify": "^2.1.0", @@ -36791,7 +34530,6 @@ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -36831,27 +34569,12 @@ } }, "node_modules/ts-pattern": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.9.0.tgz", - "integrity": "sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.9.2.tgz", + "integrity": "sha512-qAf+7M7Jjk7uebZeIo9uEzyintfuRtgHdzM9dqxRKcMi2dt76Ec+FH2wW3bnU9TuGLkZIJLoLs7cCQnU7Tu8ig==", "dev": true, "license": "MIT" }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -36981,6 +34704,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" + }, "node_modules/typescript": { "name": "@typescript/typescript6", "version": "6.0.2", @@ -36988,7 +34718,6 @@ "integrity": "sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@typescript/old": "npm:typescript@^6" }, @@ -36997,16 +34726,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.70.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.70.1.tgz", - "integrity": "sha512-AcWG7KDjZ2THNXsgwttMaGmzVi0VFRlFYfqFHYQRbDpF3owuYbuiL8c7UUrd2k8s3PoSfIQrWfrGXfcElrWLYA==", + "version": "8.71.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.71.2.tgz", + "integrity": "sha512-Rz4effbMy2g9wnvOJZG6SbVavX313Lap1vNEbk1RUochzickvzP8P4HB+bkNg5e50eVz1hQGjh9K1omI1xB4Bw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.70.1", - "@typescript-eslint/parser": "8.70.1", - "@typescript-eslint/typescript-estree": "8.70.1", - "@typescript-eslint/utils": "8.70.1" + "@typescript-eslint/eslint-plugin": "8.71.2", + "@typescript-eslint/parser": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/utils": "8.71.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -37150,16 +34879,142 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "dev": true, + "license": "MIT", "dependencies": { - "qs": "^6.4.0" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-11.2.2.tgz", + "integrity": "sha512-15g/gWE7qQl9tQ3nAEbMd5h9HV1EACtFs6N9xaRBZICoCwnNGbal1kOs++ICf4aiTdItZxU2s/kYWhW7htlqJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/concat-stream": "^2.0.0", + "@types/debug": "^4.0.0", + "@types/is-empty": "^1.0.0", + "@types/node": "^22.0.0", + "@types/unist": "^3.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.0.0", + "extend": "^3.0.0", + "glob": "^10.0.0", + "ignore": "^6.0.0", + "is-empty": "^1.0.0", + "is-plain-obj": "^4.0.0", + "load-plugin": "^6.0.0", + "parse-json": "^7.0.0", + "trough": "^2.0.0", + "unist-util-inspect": "^8.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0", + "vfile-reporter": "^8.0.0", + "vfile-statistics": "^3.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine/node_modules/@types/node": { + "version": "22.20.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.5.tgz", + "integrity": "sha512-U2+DNr+wSjpsTS/wZGYHq7GcwfuSmKiKvoPvK22zwTlRhU91yOniN4qRR5KhIjvif7ysw/dz/hKmfDH0Ris4aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/unified-engine/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">= 4" + } + }, + "node_modules/unified-engine/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unified-engine/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unified-engine/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unified-engine/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-inspect": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.1.0.tgz", + "integrity": "sha512-mOlg8Mp33pR0eeFpo5d2902ojqFFOKMMG2hF8bmH7ZlhnmjFgh0NI3/ZDwdaBJNbvrS7LZFVrBVtIE9KZ9s7vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-is": { @@ -37176,6 +35031,20 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-remove-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", @@ -37376,13 +35245,6 @@ "dev": true, "license": "http://geraintluff.github.io/tv4/LICENSE.txt" }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true, - "license": "MIT" - }, "node_modules/use-sync-external-store": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.7.0.tgz", @@ -37441,6 +35303,27 @@ "node": ">=10.12.0" } }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/validator": { "version": "13.15.26", "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz", @@ -37482,6 +35365,154 @@ "url": "https://github.com/sponsors/sxzz" } }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-8.1.1.tgz", + "integrity": "sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/supports-color": "^8.0.0", + "string-width": "^6.0.0", + "supports-color": "^9.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0", + "vfile-sort": "^4.0.0", + "vfile-statistics": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter/node_modules/ansi-regex": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz", + "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/vfile-reporter/node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vfile-reporter/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/vfile-sort": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-4.0.0.tgz", + "integrity": "sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-statistics": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-3.0.0.tgz", + "integrity": "sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.1.tgz", @@ -37587,9 +35618,9 @@ } }, "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.14.tgz", - "integrity": "sha512-EQyqJMi552E4ZTf46izQ4Fj6XquqxCySR3J5ZSD1SisMf6RfpeOWHxGBE8Gr6V0/3GHIGdAzDn8F8+1nTGCnoQ==", + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.15.tgz", + "integrity": "sha512-Gsfr9S8LU3S6885cS+NaleasJ0n3V5y/SOTqHCifQiXWFw3G9w9/YItDfwHrlCz+dSZWWZ8ilYVMcJe7Sz7Sxw==", "dev": true, "license": "MIT" }, @@ -37626,6 +35657,13 @@ "node": ">=18" } }, + "node_modules/walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true, + "license": "ISC" + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -37648,6 +35686,7 @@ "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "graceful-fs": "^4.1.2" }, @@ -37655,16 +35694,6 @@ "node": ">=10.13.0" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/web-worker": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz", @@ -37698,6 +35727,7 @@ "integrity": "sha512-cNypaz0RP+S4cvQVi1M/3bRUkvNP0xZpL0TjFx+c6jg64VbxD+2weWDgY9UnjRI6dhZgtaj8DU76GGFcJ79xPQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", @@ -37739,6 +35769,7 @@ "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10.13.0" } @@ -37749,6 +35780,7 @@ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.6" } @@ -38444,7 +36476,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.5.tgz", "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -38632,11 +36663,11 @@ "pngjs": "^7.0.0", "tesseract.js": "^7.0.0" }, - "peerDependencies": { - "@opencraw/core": "^0.0.1" - }, "engines": { "node": ">=22" + }, + "peerDependencies": { + "@opencraw/core": "^0.0.1" } }, "packages/office-reader": { @@ -38680,66 +36711,6 @@ "engines": { "node": ">=22" } - }, - "node_modules/framer-motion": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-14.3.0.tgz", - "integrity": "sha512-d8WCrU0ZQn7ukKMykCsDyIOwb/taZeDqqrDBK0du5GO0AO/ynz8fdR/LIIz9Pyy3n3tGwrneR+n0egyrrLa3fw==", - "license": "MIT", - "dependencies": { - "motion-dom": "14.3.0", - "motion-utils": "14.1.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/motion": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/motion/-/motion-14.3.0.tgz", - "integrity": "sha512-yh/nHYjikl68+FTxAMywFYzzj21/oGY7RGCfkqN5zpuT1rk3rp0lKfVU8EUq0A64qQeGnxuKUJWP85MipqdLBw==", - "license": "MIT", - "dependencies": { - "framer-motion": "14.3.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/motion-dom": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-14.3.0.tgz", - "integrity": "sha512-rcKO4aEJzAqDEsrH6qFzhLZxs7bNqZpiUEuEATz9LaRwt6dG7hZEbcFUSHNR8NECaKYM0Iuw6Iv6NpWEGXDI+w==", - "license": "MIT", - "dependencies": { - "motion-utils": "14.1.1" - } - }, - "node_modules/motion-utils": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-14.1.1.tgz", - "integrity": "sha512-3VvN5Uvf8B6qG+OfOui6Nht5EWp+vLuU3IqcAj7ItZGKqtmTjCebl5sGZF7/08gEHRnEl1AP/fIwbcEyVrcQGQ==", - "license": "MIT" } } } diff --git a/package.json b/package.json index be78e4eb..2ba1adfc 100644 --- a/package.json +++ b/package.json @@ -3,82 +3,44 @@ "version": "0.0.0", "license": "MIT", "scripts": { - "build": "nx run-many -t build", - "lint": "nx run-many -t lint", - "test": "nx run-many -t test", - "typecheck": "nx run-many -t typecheck", - "affected": "nx affected -t lint,typecheck,test,build", - "graph": "nx graph", - "release:preview": "nx release --dry-run", + "build": "smith run build", + "lint": "smith run lint", + "test": "smith run test", + "typecheck": "smith run typecheck", + "affected": "smith run lint typecheck test build --affected", + "graph": "smith graph", + "release:preview": "smith release --dry-run", "prepare": "husky", "format": "eslint . --fix --cache", - "python:install": "node -e \"if(!require('node:fs').existsSync('requirements-dev.txt')){console.log('No Python projects - skipping.');process.exit(0)}const py=process.platform==='win32'?'python':'python3';process.exit(require('node:child_process').spawnSync(py+' -m pip install -r requirements-dev.txt',{stdio:'inherit',shell:true}).status ?? 1)\" && node -e \"const fs=require('node:fs'),path=require('node:path');const editableDirs=[...fs.globSync('apps/*/pyproject.toml'),...fs.globSync('python-packages/*/pyproject.toml'),...fs.globSync('libs/*/pyproject.toml')].map((p)=>path.dirname(p));const requirementsFiles=fs.globSync('apps/*/requirements.txt');if(editableDirs.length===0&&requirementsFiles.length===0){console.log('No Python projects - skipping.');process.exit(0)}const args=['-m','pip','install','--quiet',...editableDirs.flatMap((d)=>['-e',d]),...requirementsFiles.flatMap((f)=>['-r',f])];const py=process.platform==='win32'?'python':'python3';process.exit(require('node:child_process').spawnSync(py,args,{stdio:'inherit'}).status ?? 1)\"", - "core:qa": "nx run core:lint && nx run core:test", - "core:build": "nx run core:build", - "core:e2e": "nx run core:e2e", - "core:schemas": "nx run core:schemas", + "core:e2e": "smith run e2e -p core", + "core:schemas": "smith run schemas -p core", "playwright:install": "playwright install chromium", - "examples:check": "nx run core:build && node examples/check.mjs", - "examples:test": "nx run-many -t build -p core cli && node --test \"examples/*/*.test.mjs\"", - "docs:capture": "nx run core:build && node docs/how-it-works/capture/capture.mjs", - "docs:check": "nx run core:build && node docs/how-it-works/capture/capture.mjs --check", - "cli:qa": "nx run cli:lint && nx run cli:test", - "cli:build": "nx run cli:build", - "cli:e2e": "nx run cli:e2e", - "mcp:qa": "nx run mcp:lint && nx run mcp:test", - "mcp:build": "nx run mcp:build", - "office-reader:qa": "nx run office-reader:lint && nx run office-reader:test", - "office-reader:build": "nx run office-reader:build", - "office-reader:e2e": "nx run office-reader:e2e", - "captcha-tesseract:qa": "nx run captcha-tesseract:lint && nx run captcha-tesseract:test", - "captcha-tesseract:build": "nx run captcha-tesseract:build", - "captcha-tesseract:e2e": "nx run captcha-tesseract:e2e", - "ocr-tesseract:qa": "nx run ocr-tesseract:lint && nx run ocr-tesseract:test", - "ocr-tesseract:build": "nx run ocr-tesseract:build", - "azure-durable:qa": "nx run azure-durable:lint && nx run azure-durable:test", - "azure-durable:build": "nx run azure-durable:build", - "azure-durable:e2e": "nx run azure-durable:e2e", - "azure-host:qa": "nx run azure-host:lint && nx run azure-host:test", - "azure-host:build": "nx run azure-host:build", - "azure-host:start": "nx run azure-host:start", - "studio:qa": "nx run studio:lint && nx run studio:test", - "studio:build": "nx run studio:build", - "studio:e2e": "nx run studio:e2e", - "studio-ui:qa": "nx run studio-ui:lint && nx run studio-ui:test", - "studio-ui:build": "nx run studio-ui:build", - "studio-ui:start": "nx run studio-ui:serve", - "probe:qa": "nx run probe:lint && nx run probe:test", - "probe:build": "nx run probe:build", - "opencraw:qa": "nx run opencraw:lint && nx run opencraw:test", - "opencraw:build": "nx run opencraw:build", - "studio-desktop:qa": "nx run studio-desktop:lint && nx run studio-desktop:test", - "studio-desktop:build": "nx run studio-desktop:build", - "studio-desktop:start": "nx run studio-desktop:start", - "studio-desktop:e2e": "nx run studio-desktop:e2e", - "studio-desktop:package": "nx run studio-desktop:package", - "studio-desktop:package:dir": "nx run studio-desktop:package -- --dir", - "vscode:qa": "nx run @opencraw/vscode:lint && nx run @opencraw/vscode:test", - "vscode:build": "nx run @opencraw/vscode:build", - "vscode:package": "nx run @opencraw/vscode:package", - "vscode:e2e": "nx run @opencraw/vscode:e2e" + "examples:check": "smith run build -p core && node examples/check.mjs", + "examples:test": "smith run build -p core,cli && node --test \"examples/*/*.test.mjs\"", + "docs:capture": "smith run build -p core && node docs/how-it-works/capture/capture.mjs", + "docs:check": "smith run build -p core && node docs/how-it-works/capture/capture.mjs --check", + "cli:e2e": "smith run e2e -p cli", + "office-reader:e2e": "smith run e2e -p office-reader", + "captcha-tesseract:e2e": "smith run e2e -p captcha-tesseract", + "azure-durable:e2e": "smith run e2e -p azure-durable", + "studio:e2e": "smith run e2e -p studio", + "studio-desktop:e2e": "smith run e2e -p studio-desktop", + "studio-desktop:package": "smith run package -p studio-desktop", + "studio-desktop:package:dir": "smith run package:dir -p studio-desktop", + "vscode:qa": "smith run lint -p vscode-extension && smith run test -p vscode-extension", + "vscode:build": "smith run build -p vscode-extension", + "vscode:package": "smith run package -p vscode-extension", + "vscode:e2e": "smith run e2e -p vscode-extension", + "lint:workspace": "eslint . --cache --ignore-pattern \"apps/**\" --ignore-pattern \"libs/**\" --ignore-pattern \"packages/**\" --ignore-pattern \"python-packages/**\" --ignore-pattern package-lock.json" }, "private": true, "devDependencies": { + "@babel/preset-env": "^7.29.7", + "@babel/preset-react": "^7.29.7", + "@babel/preset-typescript": "^7.29.7", "@commitlint/cli": "^21.2.3", "@commitlint/config-conventional": "^21.2.3", - "@mnci/cli": ">=4.0.0 <5.0.0", - "@mnci/eslint-config": ">=0.1.0 <1.0.0", - "@mnci/nx-python-pip": "^0.2.23", - "@nx/esbuild": "23.3.0", - "@nx/eslint": "23.3.0", - "@nx/eslint-plugin": "23.3.0", - "@nx/jest": "23.3.0", - "@nx/js": "23.3.0", - "@nx/node": "^23.3.0", - "@nx/react": "^23.3.0", - "@nx/rollup": "23.3.0", - "@nx/vite": "23.3.0", - "@nx/web": "23.3.0", + "@monosmith/eslint-config": "^1.0.0", "@swc-node/register": "1.11.1", "@swc/cli": "~0.8.1", "@swc/core": "1.15.8", @@ -104,7 +66,6 @@ "jest-environment-node": "~30.3.0", "jest-util": "~30.3.0", "jiti": "2.4.2", - "nx": "23.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", "rollup": "^4.14.0", @@ -130,24 +91,6 @@ "eslint-plugin-jsx-a11y": { "eslint": "$eslint" }, - "nx": { - "brace-expansion": "^5.0.9", - "smol-toml": "^1.7.1", - "axios": "^1.20.0", - "undici": "^7.29.1" - }, - "@nx/js": { - "brace-expansion": "^5.0.9" - }, - "@nx/eslint": { - "brace-expansion": "^5.0.9" - }, - "@nx/eslint-plugin": { - "brace-expansion": "^5.0.9" - }, - "@nx/workspace": { - "brace-expansion": "^5.0.9" - }, "postcss": { "nanoid": "^3.3.18" }, @@ -155,23 +98,7 @@ "uuid": "^11.1.1", "compression": "^1.8.2", "http-cache-semantics": "^4.3.0", - "source-map-js": "^1.2.2", - "@nx/react": { - "express": ">=4.0.0 <6.0.0" - } - }, - "nx": { - "includedScripts": [], - "targets": { - "lint": { - "executor": "nx:run-commands", - "cache": true, - "options": { - "command": "eslint . --cache --ignore-pattern \"apps/**\" --ignore-pattern \"libs/**\" --ignore-pattern \"packages/**\" --ignore-pattern \"python-packages/**\" --ignore-pattern package-lock.json", - "cwd": "." - } - } - } + "source-map-js": "^1.2.2" }, "dependencies": { "motion": "^14.3.0" diff --git a/packages/agent/package.json b/packages/agent/package.json index ccfd5619..9d43045c 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -41,21 +41,13 @@ "node": ">=22" }, "sideEffects": false, - "nx": { - "targets": { - "typecheck": { - "dependsOn": [ - "^build" - ] - }, - "lint": { - "dependsOn": [ - "^build" - ] - } - } - }, "devDependencies": { "yaml": "^2.9.1" + }, + "scripts": { + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "lint": "eslint .", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" } } diff --git a/packages/agent/rollup.config.cjs b/packages/agent/rollup.config.cjs deleted file mode 100644 index 3596d961..00000000 --- a/packages/agent/rollup.config.cjs +++ /dev/null @@ -1,116 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/packages/azure-durable/package.json b/packages/azure-durable/package.json index e5667758..c050bb9d 100644 --- a/packages/azure-durable/package.json +++ b/packages/azure-durable/package.json @@ -55,39 +55,11 @@ "node": ">=22" }, "sideEffects": false, - "nx": { - "targets": { - "typecheck": { - "dependsOn": [ - "^build" - ] - }, - "lint": { - "dependsOn": [ - "^build" - ] - }, - "e2e": { - "executor": "nx:run-commands", - "dependsOn": [ - "build", - { - "projects": [ - "@opencraw/core" - ], - "target": "build" - } - ], - "inputs": [ - "default", - "^production", - "{workspaceRoot}/packages/core/e2e/**" - ], - "options": { - "command": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", - "cwd": "packages/azure-durable" - } - } - } + "scripts": { + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "e2e": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", + "lint": "eslint .", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" } } diff --git a/packages/azure-durable/rollup.config.cjs b/packages/azure-durable/rollup.config.cjs deleted file mode 100644 index 3596d961..00000000 --- a/packages/azure-durable/rollup.config.cjs +++ /dev/null @@ -1,116 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/packages/captcha-tesseract/package.json b/packages/captcha-tesseract/package.json index fc9c1c7e..6fe6f445 100644 --- a/packages/captcha-tesseract/package.json +++ b/packages/captcha-tesseract/package.json @@ -46,29 +46,16 @@ "node": ">=20" }, "sideEffects": false, - "nx": { - "targets": { - "e2e": { - "executor": "nx:run-commands", - "dependsOn": [ - "build", - { - "projects": [ - "@opencraw/core" - ], - "target": "build" - } - ], - "inputs": [ - "default", - "^production", - "{workspaceRoot}/packages/core/e2e/**" - ], - "options": { - "command": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", - "cwd": "packages/captcha-tesseract" - } - } + "scripts": { + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "e2e": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", + "lint": "eslint .", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" + }, + "smith": { + "playwright": { + "flavour": "library" } } } diff --git a/packages/captcha-tesseract/rollup.config.cjs b/packages/captcha-tesseract/rollup.config.cjs deleted file mode 100644 index 3596d961..00000000 --- a/packages/captcha-tesseract/rollup.config.cjs +++ /dev/null @@ -1,116 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/packages/cli/package.json b/packages/cli/package.json index fc7f58e6..85f288dc 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -56,39 +56,11 @@ "node": ">=22" }, "sideEffects": false, - "nx": { - "targets": { - "typecheck": { - "dependsOn": [ - "^build" - ] - }, - "lint": { - "dependsOn": [ - "^build" - ] - }, - "e2e": { - "executor": "nx:run-commands", - "dependsOn": [ - "build", - { - "projects": [ - "@opencraw/core" - ], - "target": "e2e" - } - ], - "inputs": [ - "default", - "^production", - "{workspaceRoot}/packages/core/e2e/**" - ], - "options": { - "command": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", - "cwd": "packages/cli" - } - } - } + "scripts": { + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "e2e": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", + "lint": "eslint .", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" } } diff --git a/packages/cli/rollup.config.cjs b/packages/cli/rollup.config.cjs deleted file mode 100644 index 3596d961..00000000 --- a/packages/cli/rollup.config.cjs +++ /dev/null @@ -1,116 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/packages/core/package.json b/packages/core/package.json index 29296d03..4e9a0819 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -20,7 +20,13 @@ "!**/*.js.map" ], "scripts": { - "prepublishOnly": "node -e \"for (const f of ['dist/index.esm.js', 'dist/src/index.d.ts']) if (!require('node:fs').existsSync(f)) { console.error('@opencraw/core: ' + f + ' is missing, so this publish would ship no code: build first (0.1.47 went out like that)'); process.exit(1) }\"" + "prepublishOnly": "node -e \"for (const f of ['dist/index.esm.js', 'dist/src/index.d.ts']) if (!require('node:fs').existsSync(f)) { console.error('@opencraw/core: ' + f + ' is missing, so this publish would ship no code: build first (0.1.47 went out like that)'); process.exit(1) }\"", + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "e2e": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", + "lint": "eslint .", + "schemas": "node tools/emit-json-schemas.mjs", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" }, "dependencies": { "@napi-rs/canvas": "^1.0.0", @@ -58,40 +64,5 @@ "engines": { "node": ">=22" }, - "sideEffects": false, - "nx": { - "targets": { - "e2e": { - "executor": "nx:run-commands", - "dependsOn": [ - "build", - "^build" - ], - "options": { - "command": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", - "cwd": "packages/core" - } - }, - "schemas": { - "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], - "options": { - "command": "node tools/emit-json-schemas.mjs", - "cwd": "packages/core" - } - }, - "typecheck": { - "dependsOn": [ - "^build" - ] - }, - "lint": { - "dependsOn": [ - "^build" - ] - } - } - } + "sideEffects": false } diff --git a/packages/core/rollup.config.cjs b/packages/core/rollup.config.cjs deleted file mode 100644 index 3596d961..00000000 --- a/packages/core/rollup.config.cjs +++ /dev/null @@ -1,116 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/packages/mcp/package.json b/packages/mcp/package.json index c645da51..5bb34dbf 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -52,69 +52,12 @@ "node": ">=22" }, "sideEffects": false, - "nx": { - "targets": { - "typecheck": { - "dependsOn": [ - "^build" - ] - }, - "lint": { - "dependsOn": [ - "^build" - ] - }, - "e2e": { - "executor": "nx:run-commands", - "dependsOn": [ - "build", - { - "projects": [ - "@opencraw/core" - ], - "target": "e2e" - }, - { - "projects": [ - "@opencraw/cli" - ], - "target": "e2e" - }, - "copy-docs" - ], - "inputs": [ - "default", - "^production", - "{workspaceRoot}/packages/core/e2e/**" - ], - "options": { - "command": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", - "cwd": "packages/mcp" - } - }, - "copy-docs": { - "executor": "nx:run-commands", - "cache": true, - "inputs": [ - "{workspaceRoot}/docs/recipes/*.md", - "{workspaceRoot}/docs/how-it-works/*.md", - "{workspaceRoot}/docs/studio/*.md", - "{projectRoot}/scripts/copy-docs.mjs" - ], - "outputs": [ - "{projectRoot}/docs" - ], - "options": { - "command": "node scripts/copy-docs.mjs", - "cwd": "packages/mcp" - } - }, - "build": { - "dependsOn": [ - "^build", - "copy-docs" - ] - } - } + "scripts": { + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "copy-docs": "node scripts/copy-docs.mjs", + "e2e": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", + "lint": "eslint .", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" } } diff --git a/packages/mcp/rollup.config.cjs b/packages/mcp/rollup.config.cjs deleted file mode 100644 index 3596d961..00000000 --- a/packages/mcp/rollup.config.cjs +++ /dev/null @@ -1,116 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/packages/ocr-tesseract/package.json b/packages/ocr-tesseract/package.json index 3b87c785..3201cdc2 100644 --- a/packages/ocr-tesseract/package.json +++ b/packages/ocr-tesseract/package.json @@ -48,5 +48,11 @@ "engines": { "node": ">=22" }, - "sideEffects": false + "sideEffects": false, + "scripts": { + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "lint": "eslint .", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" + } } diff --git a/packages/ocr-tesseract/rollup.config.cjs b/packages/ocr-tesseract/rollup.config.cjs deleted file mode 100644 index 3596d961..00000000 --- a/packages/ocr-tesseract/rollup.config.cjs +++ /dev/null @@ -1,116 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/packages/office-reader/package.json b/packages/office-reader/package.json index fc5e4e7d..fcb5f7aa 100644 --- a/packages/office-reader/package.json +++ b/packages/office-reader/package.json @@ -82,18 +82,16 @@ "node": ">=20" }, "sideEffects": false, - "nx": { - "targets": { - "e2e": { - "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], - "options": { - "command": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", - "cwd": "packages/office-reader" - } - } + "scripts": { + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "e2e": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", + "lint": "eslint .", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" + }, + "smith": { + "playwright": { + "flavour": "library" } } } diff --git a/packages/office-reader/rollup.config.cjs b/packages/office-reader/rollup.config.cjs deleted file mode 100644 index 20a20fdb..00000000 --- a/packages/office-reader/rollup.config.cjs +++ /dev/null @@ -1,129 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // One entry per format, so `@opencraw/office-reader/xlsx` loads the - // spreadsheet reader alone (and `/pptx` the presentation reader, `/docx` the Word one). Set here rather than as `additionalEntryPoints`, - // which names an entry after its file and so collides every slice's - // index.ts with the main one. - input: { - index: `${__dirname}/src/index.ts`, - xlsx: `${__dirname}/src/spreadsheet/index.ts`, - pptx: `${__dirname}/src/presentation/index.ts`, - docx: `${__dirname}/src/document/index.ts`, - ods: `${__dirname}/src/opendocument-spreadsheet/index.ts`, - odt: `${__dirname}/src/opendocument-text/index.ts`, - odp: `${__dirname}/src/opendocument-presentation/index.ts`, - }, - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/packages/probe/package.json b/packages/probe/package.json index d668aae7..a898015f 100644 --- a/packages/probe/package.json +++ b/packages/probe/package.json @@ -43,18 +43,10 @@ "node": ">=22" }, "sideEffects": false, - "nx": { - "targets": { - "typecheck": { - "dependsOn": [ - "^build" - ] - }, - "lint": { - "dependsOn": [ - "^build" - ] - } - } + "scripts": { + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "lint": "eslint .", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" } } diff --git a/packages/probe/rollup.config.cjs b/packages/probe/rollup.config.cjs deleted file mode 100644 index 3596d961..00000000 --- a/packages/probe/rollup.config.cjs +++ /dev/null @@ -1,116 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/packages/studio/package.json b/packages/studio/package.json index dc9fdd1e..e3e148ad 100644 --- a/packages/studio/package.json +++ b/packages/studio/package.json @@ -53,34 +53,16 @@ }, "sideEffects": false, "scripts": { - "prepack": "node -e \"const {execFileSync}=require('node:child_process');const {existsSync}=require('node:fs');const built=()=>existsSync('dist/ui/index.html');if(!built()){console.log('@opencraw/studio: building @opencraw/studio-ui (apps/studio-ui/vite.config.mts writes straight into dist/ui) before packing...');execFileSync('npx',['nx','run','@opencraw/studio-ui:build','--skip-nx-cache'],{cwd:'../..',stdio:'inherit'})}if(!built())throw new Error('dist/ui/index.html is still missing after building @opencraw/studio-ui: this package would ship a server with nothing to serve. See docs/research/recipe-studio.md.')\"" + "prepack": "node -e \"const {execFileSync}=require('node:child_process');const {existsSync}=require('node:fs');const built=()=>existsSync('dist/ui/index.html');if(!built()){console.log('@opencraw/studio: building @opencraw/studio-ui (apps/studio-ui/vite.config.mts writes straight into dist/ui) before packing...');execFileSync('npx',['nx','run','@opencraw/studio-ui:build','--skip-nx-cache'],{cwd:'../..',stdio:'inherit'})}if(!built())throw new Error('dist/ui/index.html is still missing after building @opencraw/studio-ui: this package would ship a server with nothing to serve. See docs/research/recipe-studio.md.')\"", + "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "e2e": "vite build -c ../../apps/studio-ui/vite.config.mts && tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", + "lint": "eslint .", + "test": "jest", + "typecheck": "tsc --build tsconfig.json --emitDeclarationOnly" }, - "nx": { - "targets": { - "typecheck": { - "dependsOn": [ - "^build" - ] - }, - "lint": { - "dependsOn": [ - "^build" - ] - }, - "e2e": { - "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], - "inputs": [ - "default", - "^production" - ], - "options": { - "command": "vite build -c ../../apps/studio-ui/vite.config.mts && tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", - "cwd": "packages/studio" - } - } + "smith": { + "playwright": { + "display": true } } } diff --git a/packages/studio/rollup.config.cjs b/packages/studio/rollup.config.cjs deleted file mode 100644 index 3596d961..00000000 --- a/packages/studio/rollup.config.cjs +++ /dev/null @@ -1,116 +0,0 @@ -const { withNx } = require('@nx/rollup/with-nx') - -module.exports = withNx( - { - main: './src/index.ts', - outputPath: './dist', - tsConfig: './tsconfig.lib.json', - // Swapped from swc by MoNecromanCI. @nx/rollup runs swc without - // sourceMaps, so it returns no map and the bundle's map comes out empty - - // valid-looking, and useless for debugging. See ROADMAP. - compiler: 'babel', - format: ['esm'], - // Added by MoNecromanCI: without this rollup emits no .js.map at all, so - // a breakpoint in a .ts file can never bind. Not published - see `files`. - sourceMap: true, - }, - { - // Added by MoNecromanCI. rollup hands sourcemapPathTransform an OS-NATIVE - // path with one parent segment too many, so `sources` resolve to nothing - // and no breakpoint can bind. Separators are normalised too: a sources - // entry is URL-style, so a backslash is wrong on every platform. - output: { - sourcemapPathTransform: relativeSourcePath => - relativeSourcePath - .replaceAll(String.fromCodePoint(92), '/') - .replace(/^(\.\.\/)+/, '../'), - }, - // Added by MoNecromanCI. @nx/rollup's dts-bundle plugin writes dist/index.d.ts - // as a stub re-exporting the real declarations, and builds that specifier with - // path.relative() - an OS-NATIVE path. On Windows it emits - // export * from "./src\\index"; - // which is not a valid module specifier on ANY platform: a specifier is - // URL-style, so / is correct everywhere and a backslash nowhere. It resolves on - // Windows only because the resolver normalises separators there, leaving the - // package untyped on Linux and macOS. - // - // mnci also points `types` past this stub, so nothing depends on it being - // correct; this makes the emitted file correct too. Remove once Nx fixes the - // plugin - its own devkit already exports normalizePath for exactly this. - // - // The second half fixes a separate defect in the REAL declarations `types` - // points at: tsconfig.lib.json declares under moduleResolution "bundler", - // where a bare relative specifier ("./lib/align") is valid, so every emitted - // .d.ts keeps the source's own extensionless imports verbatim. A consumer on - // "moduleResolution": "nodenext" - the workspace root default - requires an - // explicit extension on every relative specifier and gets TS2834 (or, - // combined with skipLibCheck, a silent zero-export module) instead. Declared - // extensions are left untouched; only a bare relative specifier gets .js - // appended, matching what tsc itself emits under node16/nodenext. - plugins: [ - { - name: 'mnci-normalise-declaration-specifiers', - writeBundle (outputOptions) { - const { existsSync, readdirSync, readFileSync, writeFileSync } = require('node:fs') - const { join } = require('node:path') - const dir = outputOptions.dir ?? './dist' - const stub = join(dir, 'index.d.ts') - let source - try { - source = readFileSync(stub, 'utf8') - } catch { - return - } - // The stub carries a TWO-character escape (JSON.stringify escaped one - // backslash), so this must not match a single one - that would turn - // "./src\index" into "./src//index". Built from char codes so there is - // no escaping in this file to get wrong. - const separator = String.fromCodePoint(92, 92) - const normalised = source.replaceAll(separator, '/') - if (normalised !== source) writeFileSync(stub, normalised) - - const bareRelativeSpecifier = /from(\s+)(['"])(\.[^'"]+)\2/g - const hasExtension = /\.(?:mjs|cjs|jsx?|json)$/ - let entries - try { - entries = readdirSync(dir, { recursive: true, withFileTypes: true }) - } catch { - return - } - for (const entry of entries) { - if (!entry.name.endsWith('.d.ts')) continue - const from = entry.parentPath ?? entry.path - const filePath = join(from, entry.name) - let declaration - try { - declaration = readFileSync(filePath, 'utf8') - } catch { - continue - } - // A bare specifier may name a FILE or a DIRECTORY BARREL - resolved - // against what rollup actually emitted next to this file, never - // guessed. A directory needs /index.js, not .js (a file that was - // never written); anything neither form matches is left alone rather - // than rewritten to a specifier that cannot resolve. - const resolveSpecifierSuffix = (specifier) => { - if (hasExtension.test(specifier)) return null - if (existsSync(join(from, specifier + '.d.ts'))) return specifier + '.js' - if (existsSync(join(from, specifier, 'index.d.ts'))) return specifier + '/index.js' - - return null - } - const withExtensions = declaration.replaceAll( - bareRelativeSpecifier, - (match, space, quote, specifier) => { - const resolved = resolveSpecifierSuffix(specifier) - - return resolved === null ? match : `from${space}${quote}${resolved}${quote}` - }, - ) - if (withExtensions !== declaration) writeFileSync(filePath, withExtensions) - } - }, - }, - ], - }, -) diff --git a/python-packages/opencraw/project.json b/python-packages/opencraw/project.json deleted file mode 100644 index 9afc4542..00000000 --- a/python-packages/opencraw/project.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "opencraw", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "python-packages/opencraw", - "targets": { - "lint": { - "executor": "@mnci/nx-python-pip:lint", - "options": {} - }, - "test": { - "executor": "@mnci/nx-python-pip:test", - "options": {}, - "dependsOn": [ - "^build" - ] - }, - "typecheck": { - "executor": "@mnci/nx-python-pip:typecheck", - "options": {} - }, - "build": { - "executor": "@mnci/nx-python-pip:build", - "outputs": [ - "{projectRoot}/dist" - ], - "options": {} - }, - "nx-release-publish": { - "executor": "@mnci/nx-python-pip:publish", - "dependsOn": [ - "build" - ], - "options": {} - } - }, - "implicitDependencies": [ - "@opencraw/cli" - ], - "release": { - "version": { - "versionActions": "@mnci/nx-python-pip/release/version-actions" - } - } -} diff --git a/python-packages/opencraw/pyproject.toml b/python-packages/opencraw/pyproject.toml index b5e4d3bf..deb37b9e 100644 --- a/python-packages/opencraw/pyproject.toml +++ b/python-packages/opencraw/pyproject.toml @@ -32,3 +32,6 @@ strict = true # that one code keeps every other strict check on your own code, and a module # that genuinely cannot be found still fails, as import-not-found. disable_error_code = ["import-untyped"] + +[tool.smith] +kind = "package" diff --git a/requirements-dev.txt b/requirements-dev.txt index cd678ddf..dac32d3a 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,3 +4,4 @@ ruff mypy pytest pip-audit +setuptools==84.0.0 diff --git a/smith.toml b/smith.toml new file mode 100644 index 00000000..30738906 --- /dev/null +++ b/smith.toml @@ -0,0 +1,203 @@ +#:schema https://raw.githubusercontent.com/monosmith-app/monosmith/main/apps/smith/workspace/smith.schema.json +# smith workspace configuration. Written by `smith convert`; edit it freely or with the TUI. +# Every setting is optional except [workspace] name; see docs/configuration.md. +schema = 1 + +[workspace] +name = "opencraw" +scope = "@opencraw" + +[ci] +providers = ["github"] +# A dev container with the toolchains CI installs, at the same versions. +devcontainer = true + +# New Node projects: TypeScript, ESLint and Vitest. Existing projects keep Jest. +[default_stacks] +node = "node-vitest" + +[release] +github_releases = true + +# Files named for their role, one folder per outcome: Node is checked by the ESLint +# config, the other languages by a slice-check task that runs before lint. +[conventions.vertical-slices] +# python-packages/opencraw is flat (seven modules at the package top) and is rewritten as +# the driver client in phase 3 of docs/research/driver-and-language-packages.md, laid out +# in slices then. Remove the exclusion with that rewrite. +exclude = ["opencraw"] + +# The e2e task of every project with a Playwright suite, with its browsers installed first. +[conventions.playwright] + +[projects.agent] +tag_prefix = "@opencraw/agent@" + +[projects.agent.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.agent.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.azure-durable] +tag_prefix = "@opencraw/azure-durable@" + +[projects.azure-durable.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.azure-durable.tasks.e2e] +depends_on = ["build", "core:build"] + +[projects.azure-durable.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.azure-host.tasks.package] +command = ["node", "-e", "const fs=require('node:fs');fs.mkdirSync('dist/drop',{recursive:true});const A=require('adm-zip');const z=new A();z.addLocalFolder('apps/azure-host/dist','dist');z.addLocalFile('apps/azure-host/host.json');z.addLocalFile('apps/azure-host/package.json');z.writeZip('dist/drop/node-function-app-azure-host.zip')"] +cwd = "." +depends_on = ["build"] +outputs = ["../../dist/drop"] + +[projects.azure-host.tasks.serve] +depends_on = ["build"] + +[projects.azure-host.tasks.start] +depends_on = ["build"] + +[projects.azure-host.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.captcha-tesseract] +tag_prefix = "@opencraw/captcha-tesseract@" + +[projects.captcha-tesseract.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.captcha-tesseract.tasks.e2e] +depends_on = ["e2e-browsers", "build", "core:build"] + +[projects.captcha-tesseract.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.cli] +tag_prefix = "@opencraw/cli@" + +[projects.cli.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.cli.tasks.e2e] +depends_on = ["e2e-browsers", "build", "core:e2e"] + +[projects.cli.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.core] +tag_prefix = "@opencraw/core@" + +[projects.core.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.core.tasks.e2e] +depends_on = ["e2e-browsers", "build", "^build"] + +[projects.core.tasks.schemas] +depends_on = ["build"] + +[projects.core.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.mcp] +tag_prefix = "@opencraw/mcp@" + +[projects.mcp.tasks.build] +depends_on = ["^build", "copy-docs"] + +[projects.mcp.tasks.e2e] +depends_on = ["e2e-browsers", "build", "core:e2e", "cli:e2e", "copy-docs"] + +[projects.mcp.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.ocr-tesseract] +tag_prefix = "@opencraw/ocr-tesseract@" + +[projects.ocr-tesseract.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.ocr-tesseract.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.office-reader] +tag_prefix = "@opencraw/office-reader@" + +[projects.office-reader.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.office-reader.tasks.e2e] +depends_on = ["e2e-browsers", "build"] + +[projects.office-reader.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.opencraw.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.probe] +tag_prefix = "@opencraw/probe@" + +[projects.probe.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.probe.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.studio] +tag_prefix = "@opencraw/studio@" + +[projects.studio.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.studio.tasks.e2e] +depends_on = ["e2e-browsers", "build"] + +[projects.studio.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.studio-desktop.tasks.e2e] +depends_on = ["e2e-browsers", "build"] + +[projects.studio-desktop.tasks.package] +depends_on = ["build", "cli:build", "studio:build", "studio-ui:build"] + +[projects.studio-desktop.tasks.start] +depends_on = ["build", "cli:build", "studio:build", "studio-ui:build"] + +[projects.studio-desktop.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.studio-ui.tasks.build] +depends_on = ["^build", "typecheck"] + +[projects.studio-ui.tasks.package] +command = ["node", "-e", "const fs=require('node:fs');fs.mkdirSync('dist/drop',{recursive:true});const A=require('adm-zip');let z;z=new A();z.addLocalFolder('apps/studio-ui/dist-dev');z.writeZip('dist/drop/react-app-studio-ui-dev.zip');z=new A();z.addLocalFolder('apps/studio-ui/dist-uat');z.writeZip('dist/drop/react-app-studio-ui-uat.zip');z=new A();z.addLocalFolder('apps/studio-ui/dist-prod');z.writeZip('dist/drop/react-app-studio-ui-prod.zip')"] +cwd = "." +depends_on = ["build-dev", "build-uat", "build-prod"] +outputs = ["../../dist/drop"] + +[projects.studio-ui.tasks.preview] +depends_on = ["build"] + +[projects.studio-ui.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +[projects.vscode-extension.tasks.e2e] +depends_on = ["build", "cli:build", "mcp:build", "ocr-tesseract:build", "agent:build", "studio:build", "studio-ui:build"] + +[projects.vscode-extension.tasks.package] +depends_on = ["build", "cli:build", "mcp:build", "ocr-tesseract:build", "agent:build", "studio:build", "studio-ui:build"] + +[projects.vscode-extension.tasks.test] +env = { TS_NODE_COMPILER_OPTIONS = "{\"moduleResolution\":\"node10\",\"module\":\"commonjs\",\"customConditions\":null}" } + +# The unpacked app only, for a quick try (desktop-package.yml): same inputs as package. +[projects.studio-desktop.tasks."package:dir"] +depends_on = ["build", "cli:build", "studio:build", "studio-ui:build"] From 679e661d6b9b0879fd89ab8ebb8afe9a9ae42351 Mon Sep 17 00:00:00 2001 From: Eduardo Russo Date: Sat, 17 Oct 2026 17:16:51 +0100 Subject: [PATCH 2/4] docs: work in the repository with smith AGENTS.md's commands are smith's, the slice rules are enforced by @monosmith/eslint-config and smith's vertical-slices convention, and the Python client records why it is exempt from that convention until its rewrite over the driver. Refs #313 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap --- AGENTS.md | 26 +++++++++++--------- docs/architecture/vertical-feature-slices.md | 4 +-- python-packages/opencraw/README.md | 9 +++++-- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 8716c02a..02dfc2f5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,14 +2,15 @@ ## What it is -OpenCraw is an Nx monorepo (generated and maintained with `@mnci/cli`) holding `@opencraw/core`, a -recipe-driven crawler engine. Read `README.md`, then `docs/requirements.md` (the specification) and +OpenCraw is a [MonoSmith](https://github.com/monosmith-app/monosmith) monorepo (`smith`, configured in +`smith.toml`) holding `@opencraw/core`, a recipe-driven crawler engine. Read `README.md`, then `docs/requirements.md` (the specification) and `docs/recipes/authoring.md` (the recipe guide) before changing behaviour. ## Rules that lint enforces The architecture is vertical feature slices, recorded in `docs/architecture/vertical-feature-slices.md` -and enforced by `@mnci/eslint-config`'s `verticalSlices` rules: +and enforced by `@monosmith/eslint-config`'s `verticalSlices` rules (and, for Python, smith's +`vertical-slices` convention): - `packages/*/src//` is flat; only `fixtures/` may sit inside a slice, holding data. - Every production file is `..ts` with a role from: `handler use-case algorithm policy model @@ -17,8 +18,9 @@ and enforced by `@mnci/eslint-config`'s `verticalSlices` rules: - A sibling slice is imported only as `'../'` (its `index.ts`); tests too. No cycles, type imports included: a leaf slice declares its own structural types instead of importing from above. - Only `index.ts` lives at the root of `src/`. Non-library code (`e2e/`, `tools/`) sits outside `src/`. -- Runtime dependencies go in `packages/core/package.json`, never the root (rollup externalises what the - package declares; `@nx/dependency-checks` fails either drift). +- Runtime dependencies go in `packages/core/package.json`, never the root: the build (esbuild with + `--packages=external`) leaves every import to the installed package, so an undeclared one breaks for + whoever installs it. Nothing checks this since the move off Nx; review it. Style is JavaScript Standard as ESLint rules (no semicolons, single quotes, space before function parens, aligned object values, blank line before `return`). `npm run format` fixes most of it; there is no Prettier. @@ -26,16 +28,17 @@ aligned object values, blank line before `return`). `npm run format` fixes most ## Commands ```sh -npm run format && npm run affected # what CI runs: lint, typecheck, test, build -npx nx run core:lint --skip-nx-cache # dependency-checks needs the Nx graph; bare eslint skips it -npm run core:e2e # browser suite; needs `npm run playwright:install` once +npm run format && npm run affected # what CI runs: smith run lint typecheck test build --affected +smith run lint -p core # one task of one project (smith explain core:lint says where it came from) +smith run e2e -p core --parallel 1 # a browser suite; installs its browsers first (e2e-browsers) OPENCRAW_CHROMIUM=/path/to/chrome npm run core:e2e # ...or a preinstalled browser npm run core:schemas # regenerate packages/core/schemas after a contract change -npx --yes @mnci/cli add npm-lib # a new publishable package; never scaffold by hand +smith add package --lang node # a new publishable package; never scaffold by hand +smith doctor # is the workspace healthy? ``` -Commit messages are Conventional Commits (husky + commitlint reject others); `nx release` derives -versions from them. +Commit messages are Conventional Commits (husky + commitlint reject others); `smith release` derives +versions from them. Before 1.0 a `feat:` releases a minor version. ## Things that bit before @@ -44,7 +47,6 @@ versions from them. `package-lock.json`, and npm 12's `npm ci` then fails with "Missing: @emnapi/core ... from lock file". Check with `npm ci --dry-run` before committing a lockfile. - Jest buffers output: a hanging test prints nothing. Suspect an endless `paginate` first. -- `create-nx-workspace` writes AI-agent folders whose scripts fail lint; they were deleted on purpose. - `unicorn/max-nested-calls` is 3: build zod schemas from named sub-schemas. - In-page functions for Playwright must not reference `window`/`document` as variables (lint's isolated-functions rule); pass a string script instead. diff --git a/docs/architecture/vertical-feature-slices.md b/docs/architecture/vertical-feature-slices.md index 9d96bb20..40fc7bd2 100644 --- a/docs/architecture/vertical-feature-slices.md +++ b/docs/architecture/vertical-feature-slices.md @@ -11,8 +11,8 @@ no flat-folder limit, no barrel-only-import rule — but its `.tsx` files and hooks *do* follow the file-role naming convention in [UI file naming](#ui-file-naming-appstsx-and-hooks), so a file's role is legible from its name everywhere in the repo, not just under `packages/`. -- **Enforced by:** `@mnci/eslint-config`'s `verticalSlices` rules, switched on in the root `eslint.config.mjs`, for - `packages/**`. The `apps/**` UI naming convention below is not yet lint-enforced — it's a PR-review convention. +- **Enforced by:** `@monosmith/eslint-config`'s `verticalSlices` rules, switched on in the root `eslint.config.mjs`, for + `packages/**`, and smith's `vertical-slices` convention (`smith.toml`) for the other languages. The `apps/**` UI naming convention below is not yet lint-enforced — it's a PR-review convention. ## Decision diff --git a/python-packages/opencraw/README.md b/python-packages/opencraw/README.md index ca037d2a..7edfb219 100644 --- a/python-packages/opencraw/README.md +++ b/python-packages/opencraw/README.md @@ -82,5 +82,10 @@ under `python-packages/`. ## Development -`nx test opencraw` (pytest; the CLI integration tests use this repository's built CLI and skip without it), -`nx lint opencraw` (Ruff), `nx typecheck opencraw` (mypy strict). +`smith run test -p opencraw` (pytest; the CLI integration tests use this repository's built CLI and skip +without it), `smith run lint -p opencraw` (Ruff), `smith run typecheck -p opencraw` (mypy strict). + +**Layout exception.** The package's seven modules sit at its top level rather than in slice packages, which +the vertical-slices convention forbids, so `smith.toml` excludes `opencraw` from it. The constraint is that +this client is replaced, not refactored: phase 3 of `docs/research/driver-and-language-packages.md` rewrites +it over the driver, in slices. Temporary: the exclusion goes with that rewrite. From b0ca7533dbc468c9538507996edf76634091bb48 Mon Sep 17 00:00:00 2001 From: Eduardo Russo Date: Sat, 17 Oct 2026 17:28:48 +0100 Subject: [PATCH 3/4] fix: build every entry and file the conversion missed, run smith on Windows CI found what the local tree hid, its old rollup and Nx outputs still in place: - office-reader builds all seven entries (index, xlsx, pptx, docx, ods, odt, odp) in one esbuild run with shared chunks, as its rollup input map did; convert built index only (monosmith #291) - the VS Code extension bundles to dist/extension.cjs again, the outExtension convert dropped (#291) - the workflows add install.sh's folder to PATH in its Windows form, so cmd and PowerShell steps find smith (#290) - the examples are excluded from smith's workspace ([workspace] exclude, smith 1.10.0): standalone folders, as they were before the move; the manifests convert marked are restored The workflows and ci.yml move to smith 1.10.0. From a clean tree, every task passes, and the extension packages. Refs #313 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap --- .devcontainer/devcontainer.json | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/desktop-package.yml | 8 ++++++-- .github/workflows/e2e.yml | 8 ++++++-- .github/workflows/vscode-e2e.yml | 8 ++++++-- .github/workflows/vscode-package.yml | 8 ++++++-- .github/workflows/vscode-publish.yml | 8 ++++++-- apps/vscode-extension/package.json | 2 +- examples/captcha-solver/package.json | 6 +----- examples/dfe-college-accounts/package.json | 6 +----- examples/fcc-regulatory-fees/package.json | 6 +----- examples/filmography/package.json | 6 +----- examples/gsa-per-diem/package.json | 6 +----- examples/movies/package.json | 6 +----- examples/shop/package.json | 6 +----- examples/vehicles/package.json | 6 +----- packages/office-reader/package.json | 2 +- smith.toml | 3 +++ 18 files changed, 45 insertions(+), 54 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b4b58ecb..16a3a94b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -11,5 +11,5 @@ "version": "3.12" } }, - "postCreateCommand": "curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- \"1.9.2\" && \"$HOME/.local/bin/smith\" ci setup" + "postCreateCommand": "curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- \"1.10.0\" && \"$HOME/.local/bin/smith\" ci setup" } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 08aa4d7c..98d7f3ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: - name: Install smith run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" env: - SMITH_VERSION: 1.9.2 + SMITH_VERSION: 1.10.0 GITHUB_TOKEN: ${{ github.token }} # smith:slot before-setup # The lockfile is written by npm 12: npm 11 prunes the nested @emnapi entries of the diff --git a/.github/workflows/desktop-package.yml b/.github/workflows/desktop-package.yml index 6d29c618..949692d5 100644 --- a/.github/workflows/desktop-package.yml +++ b/.github/workflows/desktop-package.yml @@ -31,9 +31,13 @@ jobs: # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. - name: Install smith shell: bash - run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + run: | + curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + # install.sh adds its folder to PATH in Git Bash form, which cmd and PowerShell cannot use + # (monosmith-app/monosmith#290): add the Windows form too. + if [ "$RUNNER_OS" = Windows ]; then cygpath -w "$HOME/.local/bin" >> "$GITHUB_PATH"; fi env: - SMITH_VERSION: 1.9.2 + SMITH_VERSION: 1.10.0 GITHUB_TOKEN: ${{ github.token }} - run: npm ci - name: Installer diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index b34ed8f7..65e10cf0 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -22,9 +22,13 @@ jobs: # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. - name: Install smith shell: bash - run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + run: | + curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + # install.sh adds its folder to PATH in Git Bash form, which cmd and PowerShell cannot use + # (monosmith-app/monosmith#290): add the Windows form too. + if [ "$RUNNER_OS" = Windows ]; then cygpath -w "$HOME/.local/bin" >> "$GITHUB_PATH"; fi env: - SMITH_VERSION: 1.9.2 + SMITH_VERSION: 1.10.0 GITHUB_TOKEN: ${{ github.token }} - run: npm ci - run: npm run core:e2e diff --git a/.github/workflows/vscode-e2e.yml b/.github/workflows/vscode-e2e.yml index 6c7d791f..a6ff5f60 100644 --- a/.github/workflows/vscode-e2e.yml +++ b/.github/workflows/vscode-e2e.yml @@ -25,9 +25,13 @@ jobs: # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. - name: Install smith shell: bash - run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + run: | + curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + # install.sh adds its folder to PATH in Git Bash form, which cmd and PowerShell cannot use + # (monosmith-app/monosmith#290): add the Windows form too. + if [ "$RUNNER_OS" = Windows ]; then cygpath -w "$HOME/.local/bin" >> "$GITHUB_PATH"; fi env: - SMITH_VERSION: 1.9.2 + SMITH_VERSION: 1.10.0 GITHUB_TOKEN: ${{ github.token }} - run: npm ci # The libraries an Electron editor needs on a bare runner. diff --git a/.github/workflows/vscode-package.yml b/.github/workflows/vscode-package.yml index e08708c7..cb7010d9 100644 --- a/.github/workflows/vscode-package.yml +++ b/.github/workflows/vscode-package.yml @@ -29,9 +29,13 @@ jobs: # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. - name: Install smith shell: bash - run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + run: | + curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + # install.sh adds its folder to PATH in Git Bash form, which cmd and PowerShell cannot use + # (monosmith-app/monosmith#290): add the Windows form too. + if [ "$RUNNER_OS" = Windows ]; then cygpath -w "$HOME/.local/bin" >> "$GITHUB_PATH"; fi env: - SMITH_VERSION: 1.9.2 + SMITH_VERSION: 1.10.0 GITHUB_TOKEN: ${{ github.token }} - run: npm ci - name: Package the extension diff --git a/.github/workflows/vscode-publish.yml b/.github/workflows/vscode-publish.yml index e1bfb11e..9c19823c 100644 --- a/.github/workflows/vscode-publish.yml +++ b/.github/workflows/vscode-publish.yml @@ -88,9 +88,13 @@ jobs: # The npm scripts run smith (MonoSmith); the same installer the generated ci.yml uses. - name: Install smith shell: bash - run: curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + run: | + curl -fsSL https://raw.githubusercontent.com/monosmith-app/monosmith/main/install.sh | sh -s -- "$SMITH_VERSION" + # install.sh adds its folder to PATH in Git Bash form, which cmd and PowerShell cannot use + # (monosmith-app/monosmith#290): add the Windows form too. + if [ "$RUNNER_OS" = Windows ]; then cygpath -w "$HOME/.local/bin" >> "$GITHUB_PATH"; fi env: - SMITH_VERSION: 1.9.2 + SMITH_VERSION: 1.10.0 GITHUB_TOKEN: ${{ github.token }} - run: npm ci - name: Package the extension diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index c6a9f850..1f149372 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -299,7 +299,7 @@ "@vscode/test-electron": "^3.1.0" }, "scripts": { - "build": "esbuild src/extension.ts --bundle --packages=external --platform=node --format=cjs --outdir=dist --sourcemap && node -e \"const fs=require('node:fs'),p=require('node:path');for(const[i,g,o,w]of[['src/studio-host','studio-host.process.mjs','dist',0]])for(const f of fs.globSync(g,{cwd:i})){const s=p.join(i,f),d=p.join(o,f);if(fs.statSync(s).isDirectory()){if(w)fs.cpSync(s,d,{recursive:true})}else{fs.mkdirSync(p.dirname(d),{recursive:true});fs.copyFileSync(s,d)}}\"", + "build": "esbuild src/extension.ts --bundle --packages=external --platform=node --format=cjs --outdir=dist --out-extension:.js=.cjs --sourcemap && node -e \"const fs=require('node:fs'),p=require('node:path');for(const[i,g,o,w]of[['src/studio-host','studio-host.process.mjs','dist',0]])for(const f of fs.globSync(g,{cwd:i})){const s=p.join(i,f),d=p.join(o,f);if(fs.statSync(s).isDirectory()){if(w)fs.cpSync(s,d,{recursive:true})}else{fs.mkdirSync(p.dirname(d),{recursive:true});fs.copyFileSync(s,d)}}\"", "e2e": "node packaging/package-vsix.mjs --stage-only && node e2e/run-editor-test.mjs", "lint": "eslint .", "package": "node packaging/package-vsix.mjs", diff --git a/examples/captcha-solver/package.json b/examples/captcha-solver/package.json index e2a5821f..75e4a783 100644 --- a/examples/captcha-solver/package.json +++ b/examples/captcha-solver/package.json @@ -7,8 +7,7 @@ "scripts": { "setup": "playwright install chromium", "start": "node run.mjs", - "test": "node --test", - "lint": "eslint ." + "test": "node --test" }, "dependencies": { "@opencraw/core": "^0.1.10", @@ -16,8 +15,5 @@ }, "engines": { "node": ">=22" - }, - "smith": { - "kind": "app" } } diff --git a/examples/dfe-college-accounts/package.json b/examples/dfe-college-accounts/package.json index 070b1ede..90b31afc 100644 --- a/examples/dfe-college-accounts/package.json +++ b/examples/dfe-college-accounts/package.json @@ -7,16 +7,12 @@ "scripts": { "start": "node run.mjs", "live": "node run.mjs --live", - "test": "node --test", - "lint": "eslint ." + "test": "node --test" }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" - }, - "smith": { - "kind": "app" } } diff --git a/examples/fcc-regulatory-fees/package.json b/examples/fcc-regulatory-fees/package.json index 926f783b..9eb469b9 100644 --- a/examples/fcc-regulatory-fees/package.json +++ b/examples/fcc-regulatory-fees/package.json @@ -7,16 +7,12 @@ "scripts": { "start": "node run.mjs", "live": "node run.mjs --live", - "test": "node --test", - "lint": "eslint ." + "test": "node --test" }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" - }, - "smith": { - "kind": "app" } } diff --git a/examples/filmography/package.json b/examples/filmography/package.json index e515f041..d8e67056 100644 --- a/examples/filmography/package.json +++ b/examples/filmography/package.json @@ -5,16 +5,12 @@ "description": "OpenCraw example: from one movie to its lead actor to that actor's films, on TMDB and Letterboxd.", "type": "module", "scripts": { - "start": "node run.mjs", - "lint": "eslint ." + "start": "node run.mjs" }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" - }, - "smith": { - "kind": "app" } } diff --git a/examples/gsa-per-diem/package.json b/examples/gsa-per-diem/package.json index c43a2d5d..fb8d0d04 100644 --- a/examples/gsa-per-diem/package.json +++ b/examples/gsa-per-diem/package.json @@ -7,16 +7,12 @@ "scripts": { "start": "node run.mjs", "live": "node run.mjs --live", - "test": "node --test", - "lint": "eslint ." + "test": "node --test" }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" - }, - "smith": { - "kind": "app" } } diff --git a/examples/movies/package.json b/examples/movies/package.json index dd0f8700..aaa70236 100644 --- a/examples/movies/package.json +++ b/examples/movies/package.json @@ -6,8 +6,7 @@ "type": "module", "scripts": { "setup": "playwright install chromium", - "start": "node run.mjs", - "lint": "eslint ." + "start": "node run.mjs" }, "dependencies": { "@opencraw/core": "^0.1.10", @@ -15,8 +14,5 @@ }, "engines": { "node": ">=22" - }, - "smith": { - "kind": "app" } } diff --git a/examples/shop/package.json b/examples/shop/package.json index e75136f2..29365069 100644 --- a/examples/shop/package.json +++ b/examples/shop/package.json @@ -8,8 +8,7 @@ "setup": "playwright install chromium", "start": "node run.mjs", "site": "node site.mjs", - "test": "node --test", - "lint": "eslint ." + "test": "node --test" }, "dependencies": { "@opencraw/core": "^0.1.10", @@ -17,8 +16,5 @@ }, "engines": { "node": ">=22" - }, - "smith": { - "kind": "app" } } diff --git a/examples/vehicles/package.json b/examples/vehicles/package.json index 0534c4d0..23ab9a7c 100644 --- a/examples/vehicles/package.json +++ b/examples/vehicles/package.json @@ -5,16 +5,12 @@ "description": "OpenCraw example: every version and priced configuration of one model on BYD UK and Kia UK.", "type": "module", "scripts": { - "start": "node run.mjs", - "lint": "eslint ." + "start": "node run.mjs" }, "dependencies": { "@opencraw/core": "^0.1.10" }, "engines": { "node": ">=22" - }, - "smith": { - "kind": "app" } } diff --git a/packages/office-reader/package.json b/packages/office-reader/package.json index fcb5f7aa..c9335d86 100644 --- a/packages/office-reader/package.json +++ b/packages/office-reader/package.json @@ -83,7 +83,7 @@ }, "sideEffects": false, "scripts": { - "build": "esbuild src/index.ts --bundle --packages=external --format=esm --outfile=dist/index.esm.js --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", + "build": "esbuild index=src/index.ts xlsx=src/spreadsheet/index.ts pptx=src/presentation/index.ts docx=src/document/index.ts ods=src/opendocument-spreadsheet/index.ts odt=src/opendocument-text/index.ts odp=src/opendocument-presentation/index.ts --bundle --splitting --packages=external --format=esm --outdir=dist --out-extension:.js=.esm.js --chunk-names=chunks/[name]-[hash] --sourcemap && tsc -p tsconfig.lib.json --emitDeclarationOnly --declaration --declarationDir dist/src --tsBuildInfoFile dist/src/tsconfig.lib.tsbuildinfo && node ../../declaration-specifiers.mjs dist/src", "e2e": "tsc -p tsconfig.e2e.json && jest --config jest.e2e.config.cts", "lint": "eslint .", "test": "jest", diff --git a/smith.toml b/smith.toml index 30738906..a1a25593 100644 --- a/smith.toml +++ b/smith.toml @@ -6,6 +6,9 @@ schema = 1 [workspace] name = "opencraw" scope = "@opencraw" +# The examples are standalone folders a reader copies and installs on their own +# (examples/README.md), not workspace projects: smith leaves them alone. +exclude = ["examples/*"] [ci] providers = ["github"] From e9ea4b844ebe816c4a1364b3c3808172713b20a0 Mon Sep 17 00:00:00 2001 From: Eduardo Russo Date: Sat, 17 Oct 2026 17:38:11 +0100 Subject: [PATCH 4/4] fix: declare the rollup packages office-reader's browser e2e bundles with The test bundles the built package for Chromium with rollup and @rollup/plugin-node-resolve; both came through @nx/rollup, which the move removed. They are root devDependencies now, at the versions main had. Refs #313 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap --- package-lock.json | 317 +++++++++++++++++++++++++++++++--------------- package.json | 3 +- 2 files changed, 215 insertions(+), 105 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d257ffb..6a4c6e7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "@commitlint/cli": "^21.2.3", "@commitlint/config-conventional": "^21.2.3", "@monosmith/eslint-config": "^1.0.0", + "@rollup/plugin-node-resolve": "^15.3.1", "@swc-node/register": "1.11.1", "@swc/cli": "~0.8.1", "@swc/core": "1.15.8", @@ -49,7 +50,7 @@ "jiti": "2.4.2", "react": "^19.0.0", "react-dom": "^19.0.0", - "rollup": "^4.14.0", + "rollup": "^4.64.8", "swc-loader": "0.1.15", "ts-jest": "^29.4.7", "ts-node": "10.9.1", @@ -11547,10 +11548,58 @@ "dev": true, "license": "MIT" }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", + "integrity": "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.5.tgz", - "integrity": "sha512-J25QJU+B78T4FhhBsNpLJyVWOi31mwtpcMwywHmOKH65Q9IWGA81gPj+dnwlhU8wktVriYE+tFAaQgrnJRzAZg==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.8.tgz", + "integrity": "sha512-BnnMHi3QjYFCXHXRbBusdUCBqjsTKjAyeCURsWeIatIQOMClg5j/s0j12jnVZgxqd6QghdPW/tvCx3kx2Sk78w==", "cpu": [ "arm" ], @@ -11562,9 +11611,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.63.5.tgz", - "integrity": "sha512-LDopB3zuZM5Ux9TT2luNEBJW/tYbGU2g1d+VpKk6I+gSKDb+/7sYE6M225gRQt4RbMX6MSwMsVR/phdjVUgRLg==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.8.tgz", + "integrity": "sha512-AQb3awz9qixSgcWabdvGMXIzT0OiwEvTy13Q1kT49spQWCQZP5VgUfGAVr4Ud2Lw/Je1X9OVyCWuCk/NfCioOw==", "cpu": [ "arm64" ], @@ -11576,9 +11625,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.63.5.tgz", - "integrity": "sha512-wlJEERGfeuHeBavCL2qVnNacOK43NDoZM4sjkeRPymd04OAE9T1zBqDJgmZ+CIsPTYKwdzpUC8vmOw84dwY4Tg==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.8.tgz", + "integrity": "sha512-sTcQVv/Ce385AN7sc0D+iluzlgJi/1849h2Thrn0MFgYVJPAv5qEM6OIXtulim/FQq1UARjyotvQld6wWnnD5A==", "cpu": [ "arm64" ], @@ -11590,9 +11639,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.63.5.tgz", - "integrity": "sha512-4nJJGg5jbo2wwPP4JP+LfEBA3bvP8rU9CLuhp7jWvq9sxEyhjQFTFdrqi+/dHEin/pd8jpT0vcehIpnZtmEdcQ==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.8.tgz", + "integrity": "sha512-yI98+GscKUk3FnQWh05aEDNxkKZepvpiwyZuDglSJjY2nIvM4wdfzOLYvehi7VHVvGrVG6QmfG3G/TNjq4S9Ng==", "cpu": [ "x64" ], @@ -11604,9 +11653,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.63.5.tgz", - "integrity": "sha512-DrZbyCDF1hneuO6jRbvZ2D7+PIBM6yIwYnJpg2vIk58T+wuFpiaGZrfUr59lDWw45bg+IrpTGLPiNi/Fk4w3Cg==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.8.tgz", + "integrity": "sha512-w+qZWfP/VUs2JJSP21pYXcF/aIcOpMfAKHb3t1Zs5mYgFA6SlU8YrsOLJlv1NMczLgNO596nfcgG8lJfTorYJQ==", "cpu": [ "arm64" ], @@ -11618,9 +11667,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.63.5.tgz", - "integrity": "sha512-gqfUVMJMB3mehqywxp6hTBFfgtMQykZY19+cfiaYP0toIJLb/1DZRJHVkQQGP13W4TAwfZDWeg1qBcheTRioXQ==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.8.tgz", + "integrity": "sha512-xSJuvHlcJCVys2av7TCotzdU7Srfp8IEZRxVGfm8JBmO8BGigiiFYYUkHzBlddF3K3XqomEsI2BkV2leDDEUXA==", "cpu": [ "x64" ], @@ -11632,13 +11681,16 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.63.5.tgz", - "integrity": "sha512-CFmhpvAwzSaWMlN3VN7UtmoTihlZNzoP0juQib5TQRnYUyDV8dXeWOp29sobWAT6gXl/hQgAClLlEiYozQG3OQ==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.8.tgz", + "integrity": "sha512-J+Rog4vrVeEN0ZGwbUqUiMFQ/6TmiuhBZ0NzSbDh64gb1weFZsKyKZrCj5jZ0NENoYmaq4CFMSvEU97IXILheA==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -11646,13 +11698,16 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.63.5.tgz", - "integrity": "sha512-Uc9H8eXCOayV6JLTH5bXKMId6qbhNHa818/BgYjm4jrlq3vZquC9cqyvHBw17xy5Mnj5f+I3gFK5JcEf3hSqrw==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.8.tgz", + "integrity": "sha512-sBav+JhTKyOww+UTCSLumc0rP8IKqiWaj9eqkSf71EkbYI5lmjDVrn/gWEkkx8EZ8SQltk57O1bY88BvCQlbbA==", "cpu": [ "arm" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -11660,13 +11715,16 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.63.5.tgz", - "integrity": "sha512-VcPr/szv/1BFw112Kt//fxulXt/JPqzzidU84iW68L2DdjnOO8QFUv2zTSYBEPHD6movBD4z+bbr5y60GYM7Jw==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.8.tgz", + "integrity": "sha512-KBNMmyw4lPdL+2KtvE5vqODZRJgv7Y0Qg/v8uBL+i2KYLtAnfrvW6ukxZPO2lt6mfCOmvKJ1IcKAp3Smi3JpBQ==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -11674,13 +11732,16 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.63.5.tgz", - "integrity": "sha512-BnxtJ5/91BrIHYIkGrmjz/lbMhqEHt1dPFqIxIFR+jPn0xVc/oUSCtIT089zfp5ufwGDlYz2UC+Fe1SRBpYFbQ==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.8.tgz", + "integrity": "sha512-9nHlIQ4tPRGXtagihrZ18goMlEqUgMGABif4tR5xekhoSlDbJ7A/bX5M56ahnEoar2PQ4ATV9XAO/yb8QmFjJg==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -11688,13 +11749,16 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.63.5.tgz", - "integrity": "sha512-LrYcHZwF+fAMNKHYTOQ5osWM4AZF7YF6D+XtsjDyEvljtt11twc+zHVXBLNEjxVSUnKYsOhvVz4Z213eW02COQ==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.8.tgz", + "integrity": "sha512-l49DA3ag8LvxOmNK/dWoHGwR76wDhm7PPuvEYbYsOvawJesFHx3OAB2l7q/9NQV/YAVxJcwsRKuuYXaTNaqUlQ==", "cpu": [ "loong64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -11702,13 +11766,16 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.63.5.tgz", - "integrity": "sha512-nj7QKQePAAUpCpJHtg0pR0W/b92A9NO17JS3BAQmHDn/yhmkir2p8llrKY9TOhleKIaSzy1JhxS3T9FVld6coA==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.8.tgz", + "integrity": "sha512-zVfhNtrhP6EChtPZiN4nDe7i8/w5ZcZD0FcQK6/2iMh6HONK/h3TIp3esiTwNtM5NJe2oK5Ne4XRQ2sS5PIygw==", "cpu": [ "loong64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -11716,13 +11783,16 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.63.5.tgz", - "integrity": "sha512-5ylkX6dWMeBKge9nTU+Rxfb+ZfaCIJ9lRqIFaK0eAMcWp7OJbYnLveLgXmm0VrvuLKb8qIK+mHyH0qu88RM+iA==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.8.tgz", + "integrity": "sha512-0hIKbTlXTW7+lFBT7cvioWtkqyk66mGsF39Cq7h6oQ1RcZKie+6IV3ibFJwkTpx8/vjJUu9x3YUOxLv1k2okYA==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -11730,13 +11800,16 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.63.5.tgz", - "integrity": "sha512-oHK4ZHYFDKjZviK34I+NwgfbGxgI7ztrNxj2hPTSSNFgeq1a/lEd7dHV2fdGAuTH4Iym3RHJg+vAbWaWG4B7Zg==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.8.tgz", + "integrity": "sha512-zFi1Y+oFvUJVYEK3L8p9cnW7c0D4w6SgmYmtI4HXAPTrWWR2oFWVPiYl4z6SIUGvmd6VLkAwu3Xp9wEBAcyAqw==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -11744,13 +11817,16 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.63.5.tgz", - "integrity": "sha512-UcetmHZ6XOXuUByiKZyQmb55ZPr0LABr3Ec/HB9wKZn6CEAFWZkE+hsJErJ9hbPBC7nI0dKuELx7CoV6IM7TMg==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.8.tgz", + "integrity": "sha512-D+F/Rd3bgE025QWOtDTo7XMWJtI+14kci6Ycm+rtJKqii3sEOtU73x14jCzD9ERa15ULAjHjEg87azzm9E3zwQ==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -11758,13 +11834,16 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.63.5.tgz", - "integrity": "sha512-C5CmDPQBtvjVo8cgQsBs+w6WB0JLkiixhgi6hVLV11hERWdn/p0XcPU2OUcZzac9BPOFq7SbaHFa8r3SWEysCQ==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.8.tgz", + "integrity": "sha512-AxJlslhrRboB4d0+aersly2stJ6T3LjcMfoWGLZDQ0LQOgInphCcnnf4y5CHJtJgG+KVIMcaewaO3cKJzRF/jg==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -11772,13 +11851,16 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.63.5.tgz", - "integrity": "sha512-lHVQHJFKsuuxLMi3MQO9XVL8Tje3JR82CzB+QDKC5NWBcsIWuwsn9uIM5e3lBhI+fF1/s63qnyYqsg65+8rV/w==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.8.tgz", + "integrity": "sha512-my+8+NBmsKYrWK/SaE0Xt88hFvz56QY0yjX9eb08wf5IBAZeOBk6jAAAJ9dccw4Y84UHY/d7IwxCH54T2zkcsg==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -11786,13 +11868,16 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.63.5.tgz", - "integrity": "sha512-3W9bTFcQNJn71cSJVM9RKIiZOy8DO/XLDii8Uv/Pm6WKqDRj7JV3ZfuXIEfyuy5LXpIzAbB/1M4Ukp9GKNa7nA==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.8.tgz", + "integrity": "sha512-Bwp7WxFHzzLMuP9u4xuBe1grnUWvue509m/K/x+54MMTvVnl+w2DCRcDr+19GNuCXds0TGjiUA3vEbvGxXunWg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -11800,13 +11885,16 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.63.5.tgz", - "integrity": "sha512-VDC7rRJlee/scpki96GZ27Omf6yU87s1YXwVTpjE5841faVlDYYT565rgfmoR1U0sqL7z5ivQSDjcsF6VRXyBA==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.8.tgz", + "integrity": "sha512-TJyG67S76khvAB9yR2rpVyk4ih5ZXXYbQJ6bcALMWh7B6skZNXHpjoW31edQxle8lffxMsRxEA1s7GymRGE9HA==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -11814,9 +11902,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.63.5.tgz", - "integrity": "sha512-z86Ok2p4pTdv5xqCKZsTooO7yBEiaJR/HzU3Wx8RmWsPoLppnMKROhJusQob8B3IE1ghC343kUW9rC2r+Wf3ig==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.8.tgz", + "integrity": "sha512-3++uCBoEi20nAttqubxh17baikJIg1ZRpVe/e8RtcFIcj1XFNLczGu+ovyfP2RRmVtUHL01SokWRPLS/3d6BNQ==", "cpu": [ "x64" ], @@ -11828,9 +11916,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.63.5.tgz", - "integrity": "sha512-IzQmj+xXwQFGhMAMKMQVXkMwMZN3TqkJgAE0nSsqvVwWWciP4AIPMmWRqOQ2GfX7TUDZr+xqGFcBS36CRPGw0g==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.8.tgz", + "integrity": "sha512-PCzS1Wd+SlZUBcdxZ8OZm68i0nhWMmIbIyVrykRJ8vbcK7aV/dyMEOTD9ZanbPryCjA8tQyA0YyvD3c3s/5zsQ==", "cpu": [ "arm64" ], @@ -11842,9 +11930,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.63.5.tgz", - "integrity": "sha512-F6qpTaPc9bwBH85kjy0/BLmLSW1uv7AoOXCoRIkg2arlgCYlWYcAbiMkvZuAcaWk9TpCRG//okznLAqLGshkMw==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.8.tgz", + "integrity": "sha512-7QasVWH7Lzd9svwZCW2NYGkwGnduYpdcVxtpiORvM5ZjjlCQG8MOEPnsioa3glzy6tuXp8TSQ7iMJH6tERcxEQ==", "cpu": [ "arm64" ], @@ -11856,9 +11944,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.63.5.tgz", - "integrity": "sha512-igoDsTFhhwECBeGbUuLeIk7t8Y1apa+cs6mDWpx2EZ0ch7oEQgzHbFUXN9euoHekCAQzXdXApAGkV6jznS7tWw==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.8.tgz", + "integrity": "sha512-YGDgHfzvWMgp1kHAkWCZ6EqNv+0ULd7kG+6Q6BNElmCvGJFe6t46eSoWObxtt18GaluKrmaVNgk8IpOoUWQA2Q==", "cpu": [ "ia32" ], @@ -11870,9 +11958,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.63.5.tgz", - "integrity": "sha512-U3teMeMbXFmaM5D+OTJpsOXd+wV/qftIeYF9kBKL4v73641qyJmoXFtA28DQLsnmlyayEsTe72xpLHrArq6vHw==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.8.tgz", + "integrity": "sha512-RFZJ8vTWnfPhWzn3yOsJpXr8DVwwrslhbXpr0sLhd+bzzjwBguYVuTg55tAHeO9KDKEPlp6mQ8g15/vGT2kmlQ==", "cpu": [ "x64" ], @@ -11884,9 +11972,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.63.5.tgz", - "integrity": "sha512-ypfC34F3RKXvCXBglGqGMsUSMKlgwd1HX9AOAlx9RoZZ6GaI42YHVeKpzg3JG+wpBUJYTG+NNZhqbDWL8tBZkw==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.8.tgz", + "integrity": "sha512-X7fMFfqN0w465q/DRFlSQGcjUwjk5xB5CFjF6W+dhIfyJrfpUhcKzdDWjPQae2iDL6guBEssV1S1g0Kb0Ku/bA==", "cpu": [ "x64" ], @@ -13071,6 +13159,13 @@ "@types/node": "*" } }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", @@ -21791,6 +21886,13 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -23996,6 +24098,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -32602,9 +32711,9 @@ } }, "node_modules/rollup": { - "version": "4.63.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.5.tgz", - "integrity": "sha512-KRWwmNLlPw5M7HcdYfm15oBv9n9LPtjzpzCIxS/phwqvPyxHSoKX6Y2YU3pxSPfy0CLquVgsx/j/hBi6OvH1Nw==", + "version": "4.64.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.64.8.tgz", + "integrity": "sha512-84drzDkIe/HXnPOc9ghGtvlYCL66EY7iULmGl6s65DwzduZMYNgQ0Y77TOWfpd0tGNL44G+2j0EiGCEosuNXPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -32619,31 +32728,31 @@ }, "optionalDependencies": { "@napi-rs/lzma-linux-x64-gnu": "1.5.1", - "@rollup/rollup-android-arm-eabi": "4.63.5", - "@rollup/rollup-android-arm64": "4.63.5", - "@rollup/rollup-darwin-arm64": "4.63.5", - "@rollup/rollup-darwin-x64": "4.63.5", - "@rollup/rollup-freebsd-arm64": "4.63.5", - "@rollup/rollup-freebsd-x64": "4.63.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.63.5", - "@rollup/rollup-linux-arm-musleabihf": "4.63.5", - "@rollup/rollup-linux-arm64-gnu": "4.63.5", - "@rollup/rollup-linux-arm64-musl": "4.63.5", - "@rollup/rollup-linux-loong64-gnu": "4.63.5", - "@rollup/rollup-linux-loong64-musl": "4.63.5", - "@rollup/rollup-linux-ppc64-gnu": "4.63.5", - "@rollup/rollup-linux-ppc64-musl": "4.63.5", - "@rollup/rollup-linux-riscv64-gnu": "4.63.5", - "@rollup/rollup-linux-riscv64-musl": "4.63.5", - "@rollup/rollup-linux-s390x-gnu": "4.63.5", - "@rollup/rollup-linux-x64-gnu": "4.63.5", - "@rollup/rollup-linux-x64-musl": "4.63.5", - "@rollup/rollup-openbsd-x64": "4.63.5", - "@rollup/rollup-openharmony-arm64": "4.63.5", - "@rollup/rollup-win32-arm64-msvc": "4.63.5", - "@rollup/rollup-win32-ia32-msvc": "4.63.5", - "@rollup/rollup-win32-x64-gnu": "4.63.5", - "@rollup/rollup-win32-x64-msvc": "4.63.5", + "@rollup/rollup-android-arm-eabi": "4.64.8", + "@rollup/rollup-android-arm64": "4.64.8", + "@rollup/rollup-darwin-arm64": "4.64.8", + "@rollup/rollup-darwin-x64": "4.64.8", + "@rollup/rollup-freebsd-arm64": "4.64.8", + "@rollup/rollup-freebsd-x64": "4.64.8", + "@rollup/rollup-linux-arm-gnueabihf": "4.64.8", + "@rollup/rollup-linux-arm-musleabihf": "4.64.8", + "@rollup/rollup-linux-arm64-gnu": "4.64.8", + "@rollup/rollup-linux-arm64-musl": "4.64.8", + "@rollup/rollup-linux-loong64-gnu": "4.64.8", + "@rollup/rollup-linux-loong64-musl": "4.64.8", + "@rollup/rollup-linux-ppc64-gnu": "4.64.8", + "@rollup/rollup-linux-ppc64-musl": "4.64.8", + "@rollup/rollup-linux-riscv64-gnu": "4.64.8", + "@rollup/rollup-linux-riscv64-musl": "4.64.8", + "@rollup/rollup-linux-s390x-gnu": "4.64.8", + "@rollup/rollup-linux-x64-gnu": "4.64.8", + "@rollup/rollup-linux-x64-musl": "4.64.8", + "@rollup/rollup-openbsd-x64": "4.64.8", + "@rollup/rollup-openharmony-arm64": "4.64.8", + "@rollup/rollup-win32-arm64-msvc": "4.64.8", + "@rollup/rollup-win32-ia32-msvc": "4.64.8", + "@rollup/rollup-win32-x64-gnu": "4.64.8", + "@rollup/rollup-win32-x64-msvc": "4.64.8", "fsevents": "~2.3.2" } }, diff --git a/package.json b/package.json index 2ba1adfc..01225e56 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@commitlint/cli": "^21.2.3", "@commitlint/config-conventional": "^21.2.3", "@monosmith/eslint-config": "^1.0.0", + "@rollup/plugin-node-resolve": "^15.3.1", "@swc-node/register": "1.11.1", "@swc/cli": "~0.8.1", "@swc/core": "1.15.8", @@ -68,7 +69,7 @@ "jiti": "2.4.2", "react": "^19.0.0", "react-dom": "^19.0.0", - "rollup": "^4.14.0", + "rollup": "^4.64.8", "swc-loader": "0.1.15", "ts-jest": "^29.4.7", "ts-node": "10.9.1",