From 958f8d5ff1076604cba977b94d8ea4210afd2b82 Mon Sep 17 00:00:00 2001 From: Tom Ruff Date: Mon, 7 Sep 2026 19:34:48 +0300 Subject: [PATCH] Extract the operational Model Delivery PWA --- .env.example | 2 + .gitattributes | 2 + .gitignore | 13 + .npmrc | 2 + AGENTS.md | 23 + README.md | 22 + docs/repositories.md | 14 + index.html | 15 + package.json | 42 + playwright.config.ts | 18 + pnpm-lock.yaml | 4346 +++++++++++++++++++++++++++ pnpm-workspace.yaml | 3 + public/apple-touch-icon.png | Bin 0 -> 6584 bytes public/brand-logo.png | Bin 0 -> 5919 bytes public/brand-logo.webp | Bin 0 -> 5828 bytes public/favicon-32.png | Bin 0 -> 1112 bytes public/favicon-48.png | Bin 0 -> 1722 bytes public/favicon.ico | Bin 0 -> 3732 bytes public/icon-192.png | Bin 0 -> 8188 bytes public/icon-512.png | Bin 0 -> 25393 bytes public/icon-maskable-512.png | Bin 0 -> 20701 bytes src/App.tsx | 211 ++ src/AuthGate.tsx | 113 + src/BrandLogo.tsx | 6 + src/CostsView.tsx | 37 + src/CustomersView.tsx | 101 + src/DashboardView.tsx | 75 + src/DeliveryActions.tsx | 73 + src/DirectorySettingsForm.tsx | 60 + src/LocalAdmin.tsx | 141 + src/analytics.ts | 46 + src/db.ts | 192 ++ src/deliveryTiming.ts | 34 + src/main.tsx | 13 + src/styles.css | 66 + src/sync.ts | 121 + tests/e2e/auth.spec.ts | 86 + tests/e2e/delivery.spec.ts | 266 ++ tests/helpers/account.ts | 2 + tests/helpers/mock-oidc.mjs | 55 + tests/unit/analytics.test.ts | 28 + tests/unit/delivery-changes.test.ts | 64 + tests/unit/local-sync.test.ts | 102 + tsconfig.json | 28 + vite.config.ts | 22 + vitest.config.ts | 2 + 46 files changed, 6446 insertions(+) create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 AGENTS.md create mode 100644 README.md create mode 100644 docs/repositories.md create mode 100644 index.html create mode 100644 package.json create mode 100644 playwright.config.ts create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 public/apple-touch-icon.png create mode 100644 public/brand-logo.png create mode 100644 public/brand-logo.webp create mode 100644 public/favicon-32.png create mode 100644 public/favicon-48.png create mode 100644 public/favicon.ico create mode 100644 public/icon-192.png create mode 100644 public/icon-512.png create mode 100644 public/icon-maskable-512.png create mode 100644 src/App.tsx create mode 100644 src/AuthGate.tsx create mode 100644 src/BrandLogo.tsx create mode 100644 src/CostsView.tsx create mode 100644 src/CustomersView.tsx create mode 100644 src/DashboardView.tsx create mode 100644 src/DeliveryActions.tsx create mode 100644 src/DirectorySettingsForm.tsx create mode 100644 src/LocalAdmin.tsx create mode 100644 src/analytics.ts create mode 100644 src/db.ts create mode 100644 src/deliveryTiming.ts create mode 100644 src/main.tsx create mode 100644 src/styles.css create mode 100644 src/sync.ts create mode 100644 tests/e2e/auth.spec.ts create mode 100644 tests/e2e/delivery.spec.ts create mode 100644 tests/helpers/account.ts create mode 100644 tests/helpers/mock-oidc.mjs create mode 100644 tests/unit/analytics.test.ts create mode 100644 tests/unit/delivery-changes.test.ts create mode 100644 tests/unit/local-sync.test.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts create mode 100644 vitest.config.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..72c0e2b --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +# Development / preview proxy only. Never put secrets in VITE_ variables. +API_PORT=3001 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..d0d6371 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +* text=auto eol=lf +*.png binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..967d838 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +node_modules/ +dist/ +.env +.env.* +!.env.example +!infra/synology/.env.production.example +coverage/ +playwright-report/ +test-results/ +work/ +*.log +*.tsbuildinfo +.image/ diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..16d6d69 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +save-exact=true +strict-peer-dependencies=true diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..7e2bd5c --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,23 @@ +# Model Delivery engineering rules + +- Current authorized scope also includes planned delivery dates, a local dashboard/calendar with common-action shortcuts and operational stored-price summaries, delivery editing/cancellation, explicit conflict resolution, editable/archiveable customer profiles with contact details, structured addresses, delivery windows/comments/related records, Synology OIDC sign-in with a configurable group allowlist, a personal greeting, and one local recovery account with guarded SSO settings at /local-admin. Keep dispatch, courier, approval, accounting reports and WhatsApp work out of this slice. +- Hebrew UI and RTL; English source, comments and technical documentation. +- Use pnpm and strict TypeScript. This repository has a flat src/ layout. Repository ownership and shared package release rules are in docs/repositories.md. +- All operational writes commit to IndexedDB with their outbox entry atomically before any network request. Authentication and SSO administration require an online server. Never perform network I/O inside an IndexedDB transaction. +- Never expose MariaDB to browsers. Require server sessions for sync; the authentication foundation remains local/loopback until deployment hardening is completed. Keep each user's device cache separate and pause sync on 401 without losing queued writes. +- Normal authentication uses OIDC Authorization Code + PKCE, state, nonce and signature/issuer/audience checks through openid-client. Provider tokens and client secrets stay encrypted on the API server. Never put them in browser storage or logs. offline_access is optional and does not enable offline API access. +- OIDC group access uses the verified configured claim, exact normalized case-insensitive allowlist matching and a stored last-login snapshot. Reject unmatched users before provisioning or session creation. Keep restriction disabled until an allowlist is configured, keep the local recovery account exempt, and require a fresh SSO login to learn changed provider membership. +- /local-admin is unlisted, authenticated and restricted to loopback requests. Never replace these controls with a secret URL or an unauthenticated bypass. Exactly one password-based account may be bootstrapped using LOCAL_ADMIN_SETUP_TOKEN; no shipped/default credentials. Deny the admin routes at a future public reverse proxy. +- Optional AD lookup enriches display names only after verified OIDC; never use it to bypass sign-in or infer roles. Require configured issuer/domain matching, exact escaped user filters, verified LDAPS, bounded operations and encrypted read credentials. Keep directory settings/tests behind the same local-admin controls. Preserve manual names and use cached names during directory outages. +- Apply DB changes only through checked-in migrations. Do not modify an already applied migration. MariaDB DDL implicitly commits; keep migrations restart-safe. +- Idempotency receipts, entity writes, business-number allocation and change log entries share one server transaction. Hold the sync_state lock until commit so the delta feed cannot miss late commits. +- UUIDs are entity identities. Delivery numbers are server-controlled, monotonically allocated and never reused after commit, even after future cancellation. +- No weight field. Shipment-unit multipliers live in reference data, not hardcoded business logic. Store immutable fixed-point shipment-unit and pricing snapshots on deliveries. +- Require each delivery address to belong to the selected customer, validated locally, by the API and by a composite foreign key. +- No silent conflict resolution. Preserve the local draft and server conflict details. Use version checks for future edits. Synchronized deletions must use tombstones and change-log entries. +- Pull cursors are opaque decimal strings. Never advance them from push receipts. Keep outbox entries until a valid server acknowledgment is durably applied. +- Sync on launch, reconnect, foreground, manual request, and periodically while visible. Do not depend on background sync support. +- Responsive layouts support phones and tablets in both orientations. Use logical CSS properties, 44px touch targets, safe areas and 100dvh. +- Never commit .env, database files or secrets. Avoid logging request bodies and customer data. +- Before delivery: pnpm typecheck, pnpm test, pnpm build; for sync changes also run the isolated MariaDB integration and Playwright offline/reconnect tests (README has setup). +- Do not reset, drop, or truncate working databases to fix tests. Use model_delivery_test. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ea65f6b --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# Model Delivery web + +Hebrew RTL React/Vite PWA with Dexie offline data and a durable outbox. All existing screens and branding are retained. + +```sh +corepack enable +pnpm install --frozen-lockfile +# Copy .env.example to .env; start delivery-app-api separately. +pnpm dev +``` + +Open http://localhost:5173. API calls remain same-origin /api; Vite proxies locally to port 3001. Production must proxy /api to the API and block public /local-admin and /api/local-admin. Never serve this frontend on an unrelated origin without designing authentication accordingly. + +```sh +pnpm typecheck +pnpm test +pnpm build +``` + +Output: dist/. For browser regression tests, clone delivery-app-api alongside this repo, install/build it, configure its local .env and run its pnpm db:test:prepare (isolated model_delivery_test only). Then run pnpm exec playwright install chromium and pnpm test:e2e here. MODEL_API_DIR can override the API checkout path. Do not run two suites against the same test database concurrently. + +The API repo can bundle this dist into the existing single-container NAS deployment; see its README. [Repository map](docs/repositories.md). diff --git a/docs/repositories.md b/docs/repositories.md new file mode 100644 index 0000000..0397a13 --- /dev/null +++ b/docs/repositories.md @@ -0,0 +1,14 @@ +# Model Delivery repositories + +| Repository | Responsibility | +| --- | --- | +| delivery-app-web | React/Vite/Dexie PWA, browser tests | +| delivery-app-api | Fastify, Synology SSO, MariaDB migrations, deployment | +| delivery-app-mobile | React Native/Expo for iOS and Android | +| delivery-app-shared | Versioned TypeScript/Zod contracts and pricing rules | + +Clone from https://git.ruff.co.il/model-dlab/ using your own Git credential helper. Never put credentials in URLs or package manifests. Sibling checkouts are convenient, but ordinary installs/builds need no sibling source. Browser E2E and the combined NAS image explicitly use the web and API checkouts. + +The shared dependency is pinned to an immutable Git commit, including its compiled dist files. There is no public npm publication or requirement for a private npm registry. Build, test and commit shared source AND dist together, tag releases, then explicitly update the Git SHA and pnpm lockfile in each consumer. TypeScript code can be reused on mobile; DOM, IndexedDB and Node-specific code cannot. + +All clients use one API and the same operational data. SQLite on mobile will implement the existing sync protocol. Do not change deployed database identities, credentials, encryption keys, or OIDC configuration during this source split. The original model-app checkout remains available. diff --git a/index.html b/index.html new file mode 100644 index 0000000..9b9eeed --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + מודל משלוחים + +
+ diff --git a/package.json b/package.json new file mode 100644 index 0000000..9f0d702 --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "@model/web", + "version": "0.1.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --host 127.0.0.1", + "build": "tsc --noEmit && vite build", + "preview": "vite preview --host 127.0.0.1", + "typecheck": "tsc --noEmit", + "test": "vitest run", + "test:e2e": "pnpm build && playwright test" + }, + "dependencies": { + "@fontsource/heebo": "5.3.0", + "@model/shared": "git+https://git.ruff.co.il/model-dlab/delivery-app-shared.git#9133b921a713b35c46a138f9e83d1ccfbf56417e", + "dexie": "4.4.5", + "dexie-react-hooks": "4.4.0", + "react": "19.2.8", + "react-dom": "19.2.8" + }, + "devDependencies": { + "@types/react": "19.2.18", + "@types/react-dom": "19.2.7", + "@vitejs/plugin-react": "6.1.1", + "vite": "8.2.2", + "vite-plugin-pwa": "1.3.0", + "workbox-build": "^7.4.1", + "workbox-window": "^7.4.1", + "typescript": "5.9.3", + "@types/node": "^22.19.0", + "vitest": "^4.1.0", + "fake-indexeddb": "^6.2.4", + "@playwright/test": "1.62.1", + "jose": "^6.2.11" + }, + "packageManager": "pnpm@10.10.0", + "engines": { + "node": ">=22.12 <23", + "pnpm": ">=10 <11" + } +} diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..e3fa536 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,18 @@ +import { defineConfig, devices } from '@playwright/test'; +import { resolve } from 'node:path'; +const apiDirectory = resolve(process.env.MODEL_API_DIR ?? '../delivery-app-api'); +export default defineConfig({ + testDir: './tests/e2e', + timeout: 45000, + expect: { timeout: 15000 }, + fullyParallel: false, + workers: 1, + reporter: 'list', + use: { baseURL: 'http://localhost:4174', trace: 'retain-on-failure', screenshot: 'only-on-failure', serviceWorkers: 'allow' }, + projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }], + webServer: [ + { command: `pnpm --dir "${apiDirectory}" start`, url: 'http://127.0.0.1:3002/ready', env: { API_PORT: '3002', DB_NAME: 'model_delivery_test', APP_ORIGINS: 'http://localhost:4174', LOCAL_ADMIN_SETUP_TOKEN: 'isolated-test-bootstrap', OIDC_ALLOW_HTTP: 'true' }, reuseExistingServer: false, timeout: 30000 }, + { command: 'pnpm preview --port 4174', url: 'http://localhost:4174', env: { API_PORT: '3002' }, reuseExistingServer: false, timeout: 30000 }, + { command: 'node tests/helpers/mock-oidc.mjs', url: 'http://localhost:4005/.well-known/openid-configuration', reuseExistingServer: false, timeout: 30000 }, + ], +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..7890bb9 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4346 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@fontsource/heebo': + specifier: 5.3.0 + version: 5.3.0 + '@model/shared': + specifier: git+https://git.ruff.co.il/model-dlab/delivery-app-shared.git#9133b921a713b35c46a138f9e83d1ccfbf56417e + version: git+https://git.ruff.co.il/model-dlab/delivery-app-shared.git#9133b921a713b35c46a138f9e83d1ccfbf56417e + dexie: + specifier: 4.4.5 + version: 4.4.5 + dexie-react-hooks: + specifier: 4.4.0 + version: 4.4.0(dexie@4.4.5)(react@19.2.8) + react: + specifier: 19.2.8 + version: 19.2.8 + react-dom: + specifier: 19.2.8 + version: 19.2.8(react@19.2.8) + devDependencies: + '@playwright/test': + specifier: 1.62.1 + version: 1.62.1 + '@types/node': + specifier: ^22.19.0 + version: 22.20.1 + '@types/react': + specifier: 19.2.18 + version: 19.2.18 + '@types/react-dom': + specifier: 19.2.7 + version: 19.2.7(@types/react@19.2.18) + '@vitejs/plugin-react': + specifier: 6.1.1 + version: 6.1.1(vite@8.2.2(@types/node@22.20.1)(terser@5.51.2)) + fake-indexeddb: + specifier: ^6.2.4 + version: 6.2.5 + jose: + specifier: ^6.2.11 + version: 6.2.12 + typescript: + specifier: 5.9.3 + version: 5.9.3 + vite: + specifier: 8.2.2 + version: 8.2.2(@types/node@22.20.1)(terser@5.51.2) + vite-plugin-pwa: + specifier: 1.3.0 + version: 1.3.0(vite@8.2.2(@types/node@22.20.1)(terser@5.51.2))(workbox-build@7.4.1)(workbox-window@7.4.1) + vitest: + specifier: ^4.1.0 + version: 4.1.11(@types/node@22.20.1)(vite@8.2.2(@types/node@22.20.1)(terser@5.51.2)) + workbox-build: + specifier: ^7.4.1 + version: 7.4.1 + workbox-window: + specifier: ^7.4.1 + version: 7.4.1 + +packages: + + '@apideck/better-ajv-errors@0.3.7': + resolution: {integrity: sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.29.7': + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.7': + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.29.7': + resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.29.7': + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.29.7': + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.29.7': + resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.29.7': + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.29.7': + resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7': + resolution: {integrity: sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7': + resolution: {integrity: sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7': + resolution: {integrity: sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7': + resolution: {integrity: sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7': + resolution: {integrity: sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7': + resolution: {integrity: sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.29.7': + resolution: {integrity: sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.29.7': + resolution: {integrity: sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.29.7': + resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.29.7': + resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.29.7': + resolution: {integrity: sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.29.7': + resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.29.7': + resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.29.7': + resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.29.7': + resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.29.7': + resolution: {integrity: sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.29.7': + resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.29.7': + resolution: {integrity: sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.29.7': + resolution: {integrity: sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.29.7': + resolution: {integrity: sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.29.7': + resolution: {integrity: sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.29.7': + resolution: {integrity: sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.29.7': + resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.29.7': + resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.29.7': + resolution: {integrity: sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.29.7': + resolution: {integrity: sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.29.7': + resolution: {integrity: sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.29.7': + resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.29.7': + resolution: {integrity: sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.29.7': + resolution: {integrity: sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.29.7': + resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.29.8': + resolution: {integrity: sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.29.7': + resolution: {integrity: sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.29.7': + resolution: {integrity: sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': + resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.29.7': + resolution: {integrity: sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.29.7': + resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.29.7': + resolution: {integrity: sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.29.7': + resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.29.7': + resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.29.7': + resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.29.7': + resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.29.7': + resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.29.7': + resolution: {integrity: sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.29.8': + resolution: {integrity: sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.29.7': + resolution: {integrity: sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.29.7': + resolution: {integrity: sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.29.7': + resolution: {integrity: sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.29.8': + resolution: {integrity: sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.29.7': + resolution: {integrity: sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.29.7': + resolution: {integrity: sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.29.7': + resolution: {integrity: sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.29.7': + resolution: {integrity: sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.29.7': + resolution: {integrity: sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.29.7': + resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.29.7': + resolution: {integrity: sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.29.7': + resolution: {integrity: sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + + '@fontsource/heebo@5.3.0': + resolution: {integrity: sha512-Z01U2fWWrfJnSE6SmDYtZJ1uCnKs8V3WSdip/lVDfKnsC1ASumb7IZmOrXjaYK+PVm7qGD3+4cwTAFOxG5uMaw==} + + '@isaacs/cliui@9.0.0': + resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} + engines: {node: '>=18'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@model/shared@git+https://git.ruff.co.il/model-dlab/delivery-app-shared.git#9133b921a713b35c46a138f9e83d1ccfbf56417e': + resolution: {commit: 9133b921a713b35c46a138f9e83d1ccfbf56417e, repo: https://git.ruff.co.il/model-dlab/delivery-app-shared.git, type: git} + version: 0.1.0 + engines: {node: '>=22.12 <23', pnpm: '>=10 <11'} + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + + '@oxc-project/types@0.148.0': + resolution: {integrity: sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A==} + + '@playwright/test@1.62.1': + resolution: {integrity: sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==} + engines: {node: '>=20'} + hasBin: true + + '@rolldown/binding-android-arm-eabi@1.2.7': + resolution: {integrity: sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@rolldown/binding-android-arm64@1.2.7': + resolution: {integrity: sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.2.7': + resolution: {integrity: sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.2.7': + resolution: {integrity: sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.2.7': + resolution: {integrity: sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.2.7': + resolution: {integrity: sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.2.7': + resolution: {integrity: sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.2.7': + resolution: {integrity: sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.2.7': + resolution: {integrity: sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.2.7': + resolution: {integrity: sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.2.7': + resolution: {integrity: sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.2.7': + resolution: {integrity: sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.2.7': + resolution: {integrity: sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-win32-arm64-msvc@1.2.7': + resolution: {integrity: sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.2.7': + resolution: {integrity: sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@rollup/plugin-babel@6.1.0': + resolution: {integrity: sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==} + 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 + + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-replace@6.0.3': + resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-terser@1.0.0': + resolution: {integrity: sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.4.0': + resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.63.1': + resolution: {integrity: sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.63.1': + resolution: {integrity: sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.63.1': + resolution: {integrity: sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.63.1': + resolution: {integrity: sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.63.1': + resolution: {integrity: sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.63.1': + resolution: {integrity: sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.63.1': + resolution: {integrity: sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.63.1': + resolution: {integrity: sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.63.1': + resolution: {integrity: sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.63.1': + resolution: {integrity: sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.63.1': + resolution: {integrity: sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.63.1': + resolution: {integrity: sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.63.1': + resolution: {integrity: sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.63.1': + resolution: {integrity: sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.63.1': + resolution: {integrity: sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.63.1': + resolution: {integrity: sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.63.1': + resolution: {integrity: sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.63.1': + resolution: {integrity: sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.63.1': + resolution: {integrity: sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.63.1': + resolution: {integrity: sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.63.1': + resolution: {integrity: sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.63.1': + resolution: {integrity: sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.63.1': + resolution: {integrity: sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.63.1': + resolution: {integrity: sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.63.1': + resolution: {integrity: sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w==} + cpu: [x64] + os: [win32] + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@trickfilm400/rollup-plugin-off-main-thread@3.0.0-pre1': + resolution: {integrity: sha512-/67zpWDBLV+oYAEL682s1ktXL0HgqX76f6gaVGkGnVZlBbm1zd0v4Bz8MFF2GGhoX9rvfq3KSQHubFHwa6w6/Q==} + engines: {node: '>=12'} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/node@22.20.1': + resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==} + + '@types/react-dom@19.2.7': + resolution: {integrity: sha512-I8bPpDLcHBv1qiIiXDCy71Rt8eQDKJP0sMSWJphDdAcdqiJ1sGpZamavoEIRZmYzjia9LuEb2HlYdDpmoENpvQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} + + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@vitejs/plugin-react@6.1.1': + resolution: {integrity: sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + oxc-transform-react: ^0.145.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true + oxc-transform-react: + optional: true + + '@vitest/expect@4.1.11': + resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} + + '@vitest/mocker@4.1.11': + resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.11': + resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} + + '@vitest/runner@4.1.11': + resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} + + '@vitest/snapshot@4.1.11': + resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} + + '@vitest/spy@4.1.11': + resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} + + '@vitest/utils@4.1.11': + resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} + + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + babel-plugin-polyfill-corejs2@0.4.17: + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.14.2: + resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.8: + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + baseline-browser-mapping@2.11.21: + resolution: {integrity: sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} + + browserslist@4.28.9: + resolution: {integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + caniuse-lite@1.0.30001810: + resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-js-compat@3.50.0: + resolution: {integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==} + engines: {node: '>=6.4.0'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + dexie-react-hooks@4.4.0: + resolution: {integrity: sha512-ObLXBS5+4BJU8vtSvBx6b9fY6zZYgniAtwxzjCHsUQadgbqYN6935X2/1TWw4Rf2N1aZV1io5/ziox4vKuxABA==} + peerDependencies: + dexie: '>=4.2.0-alpha.1 <5.0.0' + react: '>=16' + + dexie@4.4.5: + resolution: {integrity: sha512-wWCHdihT3dmlUSuNhn5mMZDWSpG0suxjAni7YjjiZdzabZcKmy3uNZGZ7AeYYXBoLbpSXX35fikPLkPC44Osiw==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.422: + resolution: {integrity: sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==} + + es-abstract-get@1.0.0: + resolution: {integrity: sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==} + engines: {node: '>= 0.4'} + + es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.4: + resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eta@4.6.0: + resolution: {integrity: sha512-lW6is4T1NFOYnmqGZIfvixqj7A7sSvScF+DN8EK6K58xI5MZ5UvYe0GjopxOXQtZvUn4eDdVuZ8XSoYWTMEKwA==} + engines: {node: '>=20'} + + expect-type@1.4.0: + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} + engines: {node: '>=12.0.0'} + + fake-indexeddb@6.2.5: + resolution: {integrity: sha512-CGnyrvbhPlWYMngksqrSSUT1BAVP49dZocrHuK0SvtR0D5TMs5wP0o3j7jexDJW01KSadjBp1M/71o/KR3nD1w==} + engines: {node: '>=18'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-uri@3.1.7: + resolution: {integrity: sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.2.0: + resolution: {integrity: sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + glob@11.1.0: + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} + engines: {node: 20 || >=22} + 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 + hasBin: true + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-document.all@1.0.0: + resolution: {integrity: sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==} + engines: {node: '>= 0.4'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@4.2.3: + resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} + engines: {node: 20 || >=22} + + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} + hasBin: true + + jose@6.2.12: + resolution: {integrity: sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.18: + resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-releases@2.0.54: + resolution: {integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==} + engines: {node: '>=18'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} + + own-keys@1.0.2: + resolution: {integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==} + engines: {node: '>= 0.4'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + playwright-core@1.62.1: + resolution: {integrity: sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==} + engines: {node: '>=20'} + hasBin: true + + playwright@1.62.1: + resolution: {integrity: sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==} + engines: {node: '>=20'} + hasBin: true + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss@8.5.28: + resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} + engines: {node: ^10 || ^12 || >=14} + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-bytes@6.1.1: + resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} + engines: {node: ^14.13.1 || >=16.0.0} + + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 + + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.2: + resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} + hasBin: true + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + + rolldown@1.2.7: + resolution: {integrity: sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rollup@4.63.1: + resolution: {integrity: sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} + engines: {node: '>=0.4'} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + serialize-javascript@7.1.1: + resolution: {integrity: sha512-k3CMsaIvvdSwm8oLB4MXSl0wH2/cwlH7xGcnRd2DaeRmBkbzYmyT8j0tsX60DwD1eRwHTpNpH8ljKu9oUT1MeQ==} + engines: {node: '>=20.0.0'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + smob@1.6.2: + resolution: {integrity: sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==} + engines: {node: '>=20.0.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.8.0: + resolution: {integrity: sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==} + engines: {node: '>= 12'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.1.0: + resolution: {integrity: sha512-tHNHTxInrYLCga9O9YGxWA3G9/nnzQw8UGAyqGx3Ar1pSTTzIuM4woFSq4SowkXCjJIwq5sIiQvEfRI9tCH1qQ==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.11: + resolution: {integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.10: + resolution: {integrity: sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + + strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + tempy@0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + + terser@5.51.2: + resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} + engines: {node: '>=10'} + hasBin: true + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} + engines: {node: '>=14.0.0'} + + type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.8: + resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} + engines: {node: '>= 0.4'} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + + update-browserslist-db@1.3.2: + resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + vite-plugin-pwa@1.3.0: + resolution: {integrity: sha512-c5kMgN+ITrOtHXp8PAtk2uOIEea6XjP/unCGxOWWBzQ6qa65qj/awHg0wf+QF9E/2u9vh86LqxPwzEPNbM2r5A==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@vite-pwa/assets-generator': ^1.0.0 + vite: ^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + workbox-build: ^7.4.1 + workbox-window: ^7.4.1 + peerDependenciesMeta: + '@vite-pwa/assets-generator': + optional: true + + vite@8.2.2: + resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.4.0 || ^0.5.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.11: + resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.11 + '@vitest/browser-preview': 4.1.11 + '@vitest/browser-webdriverio': 4.1.11 + '@vitest/coverage-istanbul': 4.1.11 + '@vitest/coverage-v8': 4.1.11 + '@vitest/ui': 4.1.11 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.22: + resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + workbox-background-sync@7.4.1: + resolution: {integrity: sha512-HhT7KE8tOWDm02wRNshXUnUPofMlhenF2DBdUnDPOubhizzPeItkYTmAB6td1Z2cjYPa98vzEiPLEuzn5hN66g==} + + workbox-broadcast-update@7.4.1: + resolution: {integrity: sha512-uAlgslKLvbQY+suirIdnBCSYrcgBhjp81Nj4l1lj/Jmj0MJO2CJERnCJjT0GFVwmReV0N+zs78K6gqd5gr9/+A==} + + workbox-build@7.4.1: + resolution: {integrity: sha512-SDhxIvEAde9Gy/5w4Yo1Jh/M49Z0qE3q0oteyE8zGq0DScxFqVBcCtIXFuLtmtxRQZCMbf0prco4VyEu3KBQuw==} + engines: {node: '>=20.0.0'} + + workbox-cacheable-response@7.4.1: + resolution: {integrity: sha512-8xaFoJdDc2OjrlbbL3gEeBO1WKcMwRqwLRupgqahYXu75yXajPLuwrbXMrIGZuWYXrQwk0xDjOxZ/ujCy/oJYw==} + + workbox-core@7.4.1: + resolution: {integrity: sha512-DT+vu46eh/2vRsSHTY4Xmc32Z1rr9PRlQUXr1Dx30ZuXRWwOsvZgGgcwxcasubQLQmbTNYZjv44LkBAQ4tT5tQ==} + + workbox-expiration@7.4.1: + resolution: {integrity: sha512-lRKUF7b+OGbeXkQk1s6MHXOa3d7Xxf7Of31W6c6hCfipfIyrtdWZ89stq21AHZMaoG7VNFoHply4Ox+rU31TWg==} + + workbox-google-analytics@7.4.1: + resolution: {integrity: sha512-Mks1JwLEt++ZAkF6sS1OpSh9RtAMIsiDgRpK+codiHGIPXeaUOgi4cPc3GFadUl8V5QPeypEk8Oxgl3HlwVzHw==} + + workbox-navigation-preload@7.4.1: + resolution: {integrity: sha512-C4KVsjPcYKJOhr631AxR9XoG2rLF3QiTk5aMv36MXOjtWvm8axwNFAtKUPGsWUwLXXAMgYM1En7fsvndaXeXRQ==} + + workbox-precaching@7.4.1: + resolution: {integrity: sha512-cdr/9qByww7yzEp7zg/qI4ukUrrNjQLgN+ONQRpjy/VqGQXwkgHwr00KksGJK8v0VifwDXBb8a4cWNZH71jn3Q==} + + workbox-range-requests@7.4.1: + resolution: {integrity: sha512-7i2oxAUE82gHdAJBCAQ04JzNOdRPqzuOzGfoUyJpFSmeqBNYGPrAH8GPoPjUQTfp+NycwrD2H68VtuF8qxv0vQ==} + + workbox-recipes@7.4.1: + resolution: {integrity: sha512-gnbVfmV4/TtmQaM4x9AtuXhcdstJsep3XMVeztOrQVPT+R6+6DeBjGTCQ7fFCXm+4GEHUA5VEBTyi5+4gWGeog==} + + workbox-routing@7.4.1: + resolution: {integrity: sha512-yubJGErZOusuidAenaL5ypfhQOa7urxP/f8E0ws7FPb4039RiWXUWBAyUkmUoOL/BcQGen3h0J8872d51IYxtA==} + + workbox-strategies@7.4.1: + resolution: {integrity: sha512-GZxpaw9NbmOelj7667uZ2kpk5BFpOGbO4X0qjwh5ls8XQ8C+Lha5LQchTiUzsTFSS+NlUpftYAyOVXvQUrcqOQ==} + + workbox-streams@7.4.1: + resolution: {integrity: sha512-HWWtraKUbJknd9kgqGcpQ3G114HOPYvqs8HaJMDs2ebLNAimDkVDaWfAXE6Ybl+m8U6KsCE6pWyLYuigWmnAXw==} + + workbox-sw@7.4.1: + resolution: {integrity: sha512-fez5f2DUlDJWTFYkCWQpY10N8gtztd849NswCbVFk0QlcSM4HT5A8x4g4ii650yem4I8tHY0R7JZahwp3ltIPw==} + + workbox-window@7.4.1: + resolution: {integrity: sha512-notZDH2u8VXaqyuD7xaqIfEFi6SRM4SUSd7ewe9PDsVqADuepxX2ZMY3uvuZGxzY5ZOsGC/vD3A/3smFtJt4/A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + zod@4.5.4: + resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==} + +snapshots: + + '@apideck/better-ajv-errors@0.3.7(ajv@8.20.0)': + dependencies: + ajv: 8.20.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.8': + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.29.7': + dependencies: + '@babel/types': 7.29.8 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.9 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/traverse': 7.29.8 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.12 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-member-expression-to-functions@7.29.7': + dependencies: + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.29.7': + dependencies: + '@babel/types': 7.29.8 + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-wrap-function': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + dependencies: + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helper-wrap-function@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + + '@babel/parser@7.29.8': + dependencies: + '@babel/types': 7.29.8 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + + '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/template': 7.29.7 + + '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.29.8(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-regenerator@7.29.8(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-spread@7.29.8(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/preset-env@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7) + '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-systemjs': 7.29.8(@babel/core@7.29.7) + '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-regenerator': 7.29.8(@babel/core@7.29.7) + '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-spread': 7.29.8(@babel/core@7.29.7) + '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.7) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7) + core-js-compat: 3.50.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/types': 7.29.8 + esutils: 2.0.3 + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + + '@babel/traverse@7.29.8': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@fontsource/heebo@5.3.0': {} + + '@isaacs/cliui@9.0.0': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.6.0': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.6.0 + + '@model/shared@git+https://git.ruff.co.il/model-dlab/delivery-app-shared.git#9133b921a713b35c46a138f9e83d1ccfbf56417e': + dependencies: + zod: 4.5.4 + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true + + '@oxc-project/types@0.148.0': {} + + '@playwright/test@1.62.1': + dependencies: + playwright: 1.62.1 + + '@rolldown/binding-android-arm-eabi@1.2.7': + optional: true + + '@rolldown/binding-android-arm64@1.2.7': + optional: true + + '@rolldown/binding-darwin-arm64@1.2.7': + optional: true + + '@rolldown/binding-darwin-x64@1.2.7': + optional: true + + '@rolldown/binding-freebsd-x64@1.2.7': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.2.7': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.7': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.7': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.7': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.7': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.7': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.7': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.7': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.2.7': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.7': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/plugin-babel@6.1.0(@babel/core@7.29.7)(rollup@4.63.1)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) + optionalDependencies: + rollup: 4.63.1 + transitivePeerDependencies: + - supports-color + + '@rollup/plugin-node-resolve@16.0.3(rollup@4.63.1)': + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.12 + optionalDependencies: + rollup: 4.63.1 + + '@rollup/plugin-replace@6.0.3(rollup@4.63.1)': + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.63.1) + magic-string: 0.30.21 + optionalDependencies: + rollup: 4.63.1 + + '@rollup/plugin-terser@1.0.0(rollup@4.63.1)': + dependencies: + serialize-javascript: 7.1.1 + smob: 1.6.2 + terser: 5.51.2 + optionalDependencies: + rollup: 4.63.1 + + '@rollup/pluginutils@5.4.0(rollup@4.63.1)': + dependencies: + '@types/estree': 1.0.9 + estree-walker: 2.0.2 + picomatch: 4.0.7 + optionalDependencies: + rollup: 4.63.1 + + '@rollup/rollup-android-arm-eabi@4.63.1': + optional: true + + '@rollup/rollup-android-arm64@4.63.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.63.1': + optional: true + + '@rollup/rollup-darwin-x64@4.63.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.63.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.63.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.63.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.63.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.63.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.63.1': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.63.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.63.1': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.63.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.63.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.63.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.63.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.63.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.63.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.63.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.63.1': + optional: true + + '@rollup/rollup-openharmony-arm64@4.63.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.63.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.63.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.63.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.63.1': + optional: true + + '@standard-schema/spec@1.1.0': {} + + '@trickfilm400/rollup-plugin-off-main-thread@3.0.0-pre1': + dependencies: + ejs: 3.1.10 + json5: 2.2.3 + magic-string: 0.30.21 + string.prototype.matchall: 4.1.0 + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.9': {} + + '@types/node@22.20.1': + dependencies: + undici-types: 6.21.0 + + '@types/react-dom@19.2.7(@types/react@19.2.18)': + dependencies: + '@types/react': 19.2.18 + + '@types/react@19.2.18': + dependencies: + csstype: 3.2.3 + + '@types/resolve@1.20.2': {} + + '@types/trusted-types@2.0.7': {} + + '@vitejs/plugin-react@6.1.1(vite@8.2.2(@types/node@22.20.1)(terser@5.51.2))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.2.2(@types/node@22.20.1)(terser@5.51.2) + + '@vitest/expect@4.1.11': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + chai: 6.2.2 + tinyrainbow: 3.1.1 + + '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@22.20.1)(terser@5.51.2))': + dependencies: + '@vitest/spy': 4.1.11 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.2.2(@types/node@22.20.1)(terser@5.51.2) + + '@vitest/pretty-format@4.1.11': + dependencies: + tinyrainbow: 3.1.1 + + '@vitest/runner@4.1.11': + dependencies: + '@vitest/utils': 4.1.11 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.11': + dependencies: + '@vitest/pretty-format': 4.1.11 + '@vitest/utils': 4.1.11 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.11': {} + + '@vitest/utils@4.1.11': + dependencies: + '@vitest/pretty-format': 4.1.11 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.1 + + acorn@8.18.0: {} + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.7 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + assertion-error@2.0.1: {} + + async-function@1.0.0: {} + + async@3.2.6: {} + + at-least-node@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7): + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + core-js-compat: 3.50.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + baseline-browser-mapping@2.11.21: {} + + brace-expansion@2.1.4: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.9: + dependencies: + balanced-match: 4.0.4 + + browserslist@4.28.9: + dependencies: + baseline-browser-mapping: 2.11.21 + caniuse-lite: 1.0.30001810 + electron-to-chromium: 1.5.422 + node-releases: 2.0.54 + update-browserslist-db: 1.3.2(browserslist@4.28.9) + + buffer-from@1.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + caniuse-lite@1.0.30001810: {} + + chai@6.2.2: {} + + commander@2.20.3: {} + + common-tags@1.8.2: {} + + convert-source-map@2.0.0: {} + + core-js-compat@3.50.0: + dependencies: + browserslist: 4.28.9 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-random-string@2.0.0: {} + + csstype@3.2.3: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + detect-libc@2.1.2: {} + + dexie-react-hooks@4.4.0(dexie@4.4.5)(react@19.2.8): + dependencies: + dexie: 4.4.5 + react: 19.2.8 + + dexie@4.4.5: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ejs@3.1.10: + dependencies: + jake: 10.9.4 + + electron-to-chromium@1.5.422: {} + + es-abstract-get@1.0.0: + dependencies: + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + is-callable: 1.2.7 + object-inspect: 1.13.4 + + es-abstract@1.24.2: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.4 + function.prototype.name: 1.2.0 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.2 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.4 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.11 + string.prototype.trimend: 1.0.10 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.8 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.22 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.3.2: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + es-to-primitive@1.3.4: + dependencies: + es-abstract-get: 1.0.0 + es-define-property: 1.0.1 + es-errors: 1.3.0 + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + escalade@3.2.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + esutils@2.0.3: {} + + eta@4.6.0: {} + + expect-type@1.4.0: {} + + fake-indexeddb@6.2.5: {} + + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-uri@3.1.7: {} + + fdir@6.5.0(picomatch@4.0.7): + optionalDependencies: + picomatch: 4.0.7 + + filelist@1.0.6: + dependencies: + minimatch: 5.1.9 + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.2.0: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + es-define-property: 1.0.1 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + hasown: 2.0.4 + is-callable: 1.2.7 + is-document.all: 1.0.0 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-own-enumerable-property-symbols@3.0.2: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + glob@11.1.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.2.3 + minimatch: 10.2.6 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-bigints@1.1.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + idb@7.1.1: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.4 + side-channel: 1.1.1 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.4 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-document.all@1.0.0: + dependencies: + call-bound: 1.0.4 + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-map@2.0.3: {} + + is-module@1.0.0: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-obj@1.0.1: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + is-regexp@1.0.0: {} + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@2.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.22 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + jackspeak@4.2.3: + dependencies: + '@isaacs/cliui': 9.0.0 + + jake@10.9.4: + dependencies: + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 + + jose@6.2.12: {} + + js-tokens@4.0.0: {} + + jsesc@3.1.0: {} + + json-schema-traverse@1.0.0: {} + + json5@2.2.3: {} + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonpointer@5.0.1: {} + + leven@3.1.0: {} + + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + + lodash.debounce@4.0.8: {} + + lru-cache@11.5.2: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + + math-intrinsics@1.1.0: {} + + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.9 + + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.4 + + minipass@7.1.3: {} + + ms@2.1.3: {} + + nanoid@3.3.18: {} + + node-releases@2.0.54: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + obug@2.1.4: {} + + own-keys@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + package-json-from-dist@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@2.0.2: + dependencies: + lru-cache: 11.5.2 + minipass: 7.1.3 + + pathe@2.0.3: {} + + picocolors@1.1.1: {} + + picomatch@4.0.7: {} + + playwright-core@1.62.1: {} + + playwright@1.62.1: + dependencies: + playwright-core: 1.62.1 + optionalDependencies: + fsevents: 2.3.2 + + possible-typed-array-names@1.1.0: {} + + postcss@8.5.28: + dependencies: + nanoid: 3.3.18 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + pretty-bytes@5.6.0: {} + + pretty-bytes@6.1.1: {} + + react-dom@19.2.8(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + + react@19.2.8: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.2 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.13.2: + dependencies: + jsesc: 3.1.0 + + require-from-string@2.0.2: {} + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rolldown@1.2.7: + dependencies: + '@oxc-project/types': 0.148.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm-eabi': 1.2.7 + '@rolldown/binding-android-arm64': 1.2.7 + '@rolldown/binding-darwin-arm64': 1.2.7 + '@rolldown/binding-darwin-x64': 1.2.7 + '@rolldown/binding-freebsd-x64': 1.2.7 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.7 + '@rolldown/binding-linux-arm64-gnu': 1.2.7 + '@rolldown/binding-linux-arm64-musl': 1.2.7 + '@rolldown/binding-linux-ppc64-gnu': 1.2.7 + '@rolldown/binding-linux-s390x-gnu': 1.2.7 + '@rolldown/binding-linux-x64-gnu': 1.2.7 + '@rolldown/binding-linux-x64-musl': 1.2.7 + '@rolldown/binding-openharmony-arm64': 1.2.7 + '@rolldown/binding-win32-arm64-msvc': 1.2.7 + '@rolldown/binding-win32-x64-msvc': 1.2.7 + + rollup@4.63.1: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.63.1 + '@rollup/rollup-android-arm64': 4.63.1 + '@rollup/rollup-darwin-arm64': 4.63.1 + '@rollup/rollup-darwin-x64': 4.63.1 + '@rollup/rollup-freebsd-arm64': 4.63.1 + '@rollup/rollup-freebsd-x64': 4.63.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.63.1 + '@rollup/rollup-linux-arm-musleabihf': 4.63.1 + '@rollup/rollup-linux-arm64-gnu': 4.63.1 + '@rollup/rollup-linux-arm64-musl': 4.63.1 + '@rollup/rollup-linux-loong64-gnu': 4.63.1 + '@rollup/rollup-linux-loong64-musl': 4.63.1 + '@rollup/rollup-linux-ppc64-gnu': 4.63.1 + '@rollup/rollup-linux-ppc64-musl': 4.63.1 + '@rollup/rollup-linux-riscv64-gnu': 4.63.1 + '@rollup/rollup-linux-riscv64-musl': 4.63.1 + '@rollup/rollup-linux-s390x-gnu': 4.63.1 + '@rollup/rollup-linux-x64-gnu': 4.63.1 + '@rollup/rollup-linux-x64-musl': 4.63.1 + '@rollup/rollup-openbsd-x64': 4.63.1 + '@rollup/rollup-openharmony-arm64': 4.63.1 + '@rollup/rollup-win32-arm64-msvc': 4.63.1 + '@rollup/rollup-win32-ia32-msvc': 4.63.1 + '@rollup/rollup-win32-x64-gnu': 4.63.1 + '@rollup/rollup-win32-x64-msvc': 4.63.1 + fsevents: 2.3.3 + + safe-array-concat@1.1.4: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + scheduler@0.27.0: {} + + semver@6.3.1: {} + + serialize-javascript@7.1.1: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + + smob@1.6.2: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.8.0: {} + + stackback@0.0.2: {} + + std-env@4.2.0: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string.prototype.matchall@4.1.0: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.1 + + string.prototype.trim@1.2.11: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.2 + has-property-descriptors: 1.0.2 + safe-regex-test: 1.1.0 + + string.prototype.trimend@1.0.10: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + stringify-object@3.3.0: + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + + strip-comments@2.0.1: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + temp-dir@2.0.0: {} + + tempy@0.6.0: + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + + terser@5.51.2: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.18.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + tinybench@2.9.0: {} + + tinyexec@1.3.1: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + + tinyrainbow@3.1.1: {} + + type-fest@0.16.0: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.8: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript@5.9.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.21.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + + universalify@2.0.1: {} + + upath@1.2.0: {} + + update-browserslist-db@1.3.2(browserslist@4.28.9): + dependencies: + browserslist: 4.28.9 + escalade: 3.2.0 + picocolors: 1.1.1 + + vite-plugin-pwa@1.3.0(vite@8.2.2(@types/node@22.20.1)(terser@5.51.2))(workbox-build@7.4.1)(workbox-window@7.4.1): + dependencies: + debug: 4.4.3 + pretty-bytes: 6.1.1 + tinyglobby: 0.2.17 + vite: 8.2.2(@types/node@22.20.1)(terser@5.51.2) + workbox-build: 7.4.1 + workbox-window: 7.4.1 + transitivePeerDependencies: + - supports-color + + vite@8.2.2(@types/node@22.20.1)(terser@5.51.2): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.28 + rolldown: 1.2.7 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 22.20.1 + fsevents: 2.3.3 + terser: 5.51.2 + + vitest@4.1.11(@types/node@22.20.1)(vite@8.2.2(@types/node@22.20.1)(terser@5.51.2)): + dependencies: + '@vitest/expect': 4.1.11 + '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@22.20.1)(terser@5.51.2)) + '@vitest/pretty-format': 4.1.11 + '@vitest/runner': 4.1.11 + '@vitest/snapshot': 4.1.11 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + es-module-lexer: 2.3.2 + expect-type: 1.4.0 + magic-string: 0.30.21 + obug: 2.1.4 + pathe: 2.0.3 + picomatch: 4.0.7 + std-env: 4.2.0 + tinybench: 2.9.0 + tinyexec: 1.3.1 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.1 + vite: 8.2.2(@types/node@22.20.1)(terser@5.51.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.20.1 + transitivePeerDependencies: + - msw + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.2.0 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.22 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.22: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + workbox-background-sync@7.4.1: + dependencies: + idb: 7.1.1 + workbox-core: 7.4.1 + + workbox-broadcast-update@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-build@7.4.1: + dependencies: + '@apideck/better-ajv-errors': 0.3.7(ajv@8.20.0) + '@babel/core': 7.29.7 + '@babel/preset-env': 7.29.7(@babel/core@7.29.7) + '@babel/runtime': 7.29.7 + '@rollup/plugin-babel': 6.1.0(@babel/core@7.29.7)(rollup@4.63.1) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.63.1) + '@rollup/plugin-replace': 6.0.3(rollup@4.63.1) + '@rollup/plugin-terser': 1.0.0(rollup@4.63.1) + '@trickfilm400/rollup-plugin-off-main-thread': 3.0.0-pre1 + ajv: 8.20.0 + common-tags: 1.8.2 + eta: 4.6.0 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 11.1.0 + pretty-bytes: 5.6.0 + rollup: 4.63.1 + source-map: 0.8.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 7.4.1 + workbox-broadcast-update: 7.4.1 + workbox-cacheable-response: 7.4.1 + workbox-core: 7.4.1 + workbox-expiration: 7.4.1 + workbox-google-analytics: 7.4.1 + workbox-navigation-preload: 7.4.1 + workbox-precaching: 7.4.1 + workbox-range-requests: 7.4.1 + workbox-recipes: 7.4.1 + workbox-routing: 7.4.1 + workbox-strategies: 7.4.1 + workbox-streams: 7.4.1 + workbox-sw: 7.4.1 + workbox-window: 7.4.1 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + + workbox-cacheable-response@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-core@7.4.1: {} + + workbox-expiration@7.4.1: + dependencies: + idb: 7.1.1 + workbox-core: 7.4.1 + + workbox-google-analytics@7.4.1: + dependencies: + workbox-background-sync: 7.4.1 + workbox-core: 7.4.1 + workbox-routing: 7.4.1 + workbox-strategies: 7.4.1 + + workbox-navigation-preload@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-precaching@7.4.1: + dependencies: + workbox-core: 7.4.1 + workbox-routing: 7.4.1 + workbox-strategies: 7.4.1 + + workbox-range-requests@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-recipes@7.4.1: + dependencies: + workbox-cacheable-response: 7.4.1 + workbox-core: 7.4.1 + workbox-expiration: 7.4.1 + workbox-precaching: 7.4.1 + workbox-routing: 7.4.1 + workbox-strategies: 7.4.1 + + workbox-routing@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-strategies@7.4.1: + dependencies: + workbox-core: 7.4.1 + + workbox-streams@7.4.1: + dependencies: + workbox-core: 7.4.1 + workbox-routing: 7.4.1 + + workbox-sw@7.4.1: {} + + workbox-window@7.4.1: + dependencies: + '@types/trusted-types': 2.0.7 + workbox-core: 7.4.1 + + yallist@3.1.1: {} + + zod@4.5.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..306b185 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: [] +onlyBuiltDependencies: + - esbuild diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d75315e496d6ccfd316f5dd8dac164f246cf9fef GIT binary patch literal 6584 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 Qk^lez07*qoM6N<$g3ci=`~Uy| literal 0 HcmV?d00001 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1157e0cf53908c4855967644f63ee7d5006b7e0f GIT binary patch literal 3732 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 W$UQn_E+231C!xgj>)HOloBtnns`F<6 literal 0 HcmV?d00001 diff --git a/public/icon-192.png b/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffa0d2f98a8bdf185daa0e28784b4bb7b3b9562 GIT binary patch literal 8188 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 literal 0 HcmV?d00001 diff --git a/public/icon-512.png b/public/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..693cc3cbf5dba46f77d38a363c223afaaf3b86c9 GIT binary patch literal 25393 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 Dm>`M7 literal 0 HcmV?d00001 diff --git a/public/icon-maskable-512.png b/public/icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..c10fd90be7626b7263437b4c4ab31ab2eaefddba GIT binary patch literal 20701 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

mUV-<#HD6t150C$pTyIsF%t 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 literal 0 HcmV?d00001 diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..55ed040 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,211 @@ +import { useCallback, useEffect, useRef, useState, type FormEvent } from 'react'; +import { useLiveQuery } from 'dexie-react-hooks'; +import { useRegisterSW } from 'virtual:pwa-register/react'; +import { totalPrice, userSchema, type DeliverySlot, type User } from '@model/shared'; +import { DeliveryActions } from './DeliveryActions'; +import { CustomersView } from './CustomersView'; +import { DashboardView } from './DashboardView'; +import { CostsView } from './CostsView'; +import { deliveryDateKey, toDateKey } from './analytics'; +import { db, saveLocal, type SyncState } from './db'; +import { ConnectionError, retryErrors, synchronize } from './sync'; +import { BrandLogo } from './BrandLogo'; +import { deliverySlotOptions, deliveryTimingInput, deliveryTimingText, windowText } from './deliveryTiming'; + +const currency = new Intl.NumberFormat('he-IL', { style: 'currency', currency: 'ILS' }); +const dateFormat = new Intl.DateTimeFormat('he-IL', { dateStyle: 'short', timeStyle: 'short' }); +const statusLabels: Record = { pending: 'ממתין לסנכרון', synced: 'מסונכרן', error: 'שגיאת סנכרון' }; +function Badge({ state }: { state: SyncState }) { return {statusLabels[state]}; } +type View = 'dashboard' | 'deliveries' | 'customers' | 'costs'; +const viewCopy: Record = { + dashboard: { path: 'לוח בקרה', title: 'תמונת המצב שלך', description: 'המשלוחים של היום והשבוע, מסודרים יום אחר יום.' }, + deliveries: { path: 'משלוחים', title: 'המשלוחים שלך', description: 'אספקות, איסופים וכל מה שבדרך.' }, + customers: { path: 'לקוחות', title: 'הלקוחות שלך', description: 'אנשי קשר, כתובות, חלונות מסירה וכל הרשומות במקום אחד.' }, + costs: { path: 'עלויות', title: 'עלויות משלוחים', description: 'סיכום המחירים השמורים לפי יום, שבוע, חודש ולקוח.' }, +}; + +export function App({ user, onLogout, onProfileChange }: { user: User; onLogout: () => Promise; onProfileChange: (user: User) => void }) { + const customers = useLiveQuery(() => db.customers.toArray(), []) ?? []; + const addresses = useLiveQuery(() => db.addresses.toArray(), []) ?? []; + const types = useLiveQuery(() => db.deliveryTypes.toArray(), []) ?? []; + const deliveries = useLiveQuery(() => db.deliveries.orderBy('createdAt').reverse().toArray(), []) ?? []; + const outbox = useLiveQuery(() => db.outbox.toArray(), []) ?? []; + const lastSynced = useLiveQuery(() => db.meta.get('lastSyncedAt'), []); + const [view, setView] = useState('dashboard'); + const [online, setOnline] = useState(navigator.onLine); + const [syncing, setSyncing] = useState(false); + const [syncError, setSyncError] = useState(''); + const [formError, setFormError] = useState(''); + const [notice, setNotice] = useState(''); + const [saving, setSaving] = useState(false); + const [customerId, setCustomerId] = useState(''); + const [addressId, setAddressId] = useState(''); + const [typeId, setTypeId] = useState(''); + const [unitPrice, setUnitPrice] = useState('0'); + const [scheduledDate, setScheduledDate] = useState(() => toDateKey(new Date())); + const [deliverySlot, setDeliverySlot] = useState('morning'); + const [specificTime, setSpecificTime] = useState('09:00'); + const [deliveryDateFilter, setDeliveryDateFilter] = useState(null); + const [customerCreateRequest, setCustomerCreateRequest] = useState(0); + const [selectedId, setSelectedId] = useState(); + const [accountOpen, setAccountOpen] = useState(false); + const [menuOpen, setMenuOpen] = useState(false); + const [profileBusy, setProfileBusy] = useState(false); + const [profileError, setProfileError] = useState(''); + const retryTimer = useRef(undefined); + const retryDelay = useRef(1000); + const mounted = useRef(true); + const initialSyncStarted = useRef(false); + const { needRefresh: [needRefresh], offlineReady: [offlineReady], updateServiceWorker } = useRegisterSW(); + + async function saveProfile(event?: FormEvent) { + event?.preventDefault(); setProfileBusy(true); setProfileError(''); + const displayName = event ? new FormData(event.currentTarget).get('displayName') : null; + try { + const response = await fetch('/api/auth/profile', { method: 'POST', headers: { 'content-type': 'application/json', 'x-model-request': '1', 'x-model-user': user.id }, body: JSON.stringify({ displayName }), signal: AbortSignal.timeout(10000) }); + if (response.status === 401) window.dispatchEvent(new Event('model-session-expired')); + if (!response.ok) throw new Error('לא ניתן לשמור את השם כרגע. בדקו את החיבור וההתחברות.'); + const updated = userSchema.parse((await response.json()).user); + if (updated.id !== user.id) throw new Error('החשבון השתנה. יש לרענן את העמוד.'); + onProfileChange(updated); setAccountOpen(false); setNotice('השם לתצוגה נשמר'); + } catch (failure) { setProfileError(failure instanceof TypeError ? 'נדרש חיבור לשרת כדי לשמור את השם.' : failure instanceof Error ? failure.message : 'לא ניתן לשמור את השם.'); } + finally { setProfileBusy(false); } + } + + const syncNow = useCallback(async () => { + window.clearTimeout(retryTimer.current); + setSyncing(true); + try { await synchronize(); setSyncError(''); retryDelay.current = 1000; } + catch (error) { + setSyncError(error instanceof Error && !error.message.startsWith('[') ? error.message : 'הסנכרון לא הושלם. הנתונים שמורים במכשיר.'); + // An online signal can precede usable connectivity. Retry with backoff while open. + if (error instanceof ConnectionError && navigator.onLine && mounted.current) { + window.clearTimeout(retryTimer.current); + retryTimer.current = window.setTimeout(() => { void syncNow(); }, retryDelay.current); + retryDelay.current = Math.min(retryDelay.current * 2, 30000); + } + } + finally { setSyncing(false); } + }, []); + useEffect(() => { + mounted.current = true; + const reconnect = () => { setOnline(true); void syncNow(); }; + const disconnect = () => setOnline(false); + const foreground = () => { if (document.visibilityState === 'visible') void syncNow(); }; + window.addEventListener('online', reconnect); + window.addEventListener('offline', disconnect); + document.addEventListener('visibilitychange', foreground); + const interval = window.setInterval(() => { if (document.visibilityState === 'visible' && navigator.onLine) void syncNow(); }, 30000); + if (navigator.onLine && !initialSyncStarted.current) { initialSyncStarted.current = true; void syncNow(); } + return () => { mounted.current = false; window.clearTimeout(retryTimer.current); window.removeEventListener('online', reconnect); window.removeEventListener('offline', disconnect); document.removeEventListener('visibilitychange', foreground); clearInterval(interval); }; + }, [syncNow]); + + const activeCustomers = customers.filter(c => !c.deletedAt); + const availableAddresses = addresses.filter(a => a.customerId === customerId && !a.deletedAt); + const availableTypes = types.filter(t => !t.deletedAt); + const selectedType = availableTypes.find(t => t.id === typeId) ?? availableTypes[0]; + const selectedCustomer = activeCustomers.find(customer => customer.id === customerId); + const allVisibleDeliveries = deliveries.filter(d => !d.deletedAt); + const visibleDeliveries = allVisibleDeliveries.filter(d => !deliveryDateFilter || deliveryDateKey(d) === deliveryDateFilter); + const selected = visibleDeliveries.find(d => d.id === selectedId) ?? visibleDeliveries[0]; + const errors = outbox.filter(e => e.state === 'error'); + const pending = outbox.length - errors.length; + + async function saveEntity(kind: 'customer.create' | 'address.create', data: unknown) { + const id = await saveLocal(kind, data); + void navigator.storage?.persist?.().catch(() => false); + if (navigator.onLine) void syncNow(); + return id; + } + + async function submit(event: FormEvent, kind: 'customer.create' | 'address.create' | 'delivery.create') { + event.preventDefault(); + const form = event.currentTarget; + const fields = new FormData(form); + setSaving(true); setFormError(''); setNotice(''); + try { + let data: unknown; + if (kind === 'customer.create') data = { name: fields.get('name') }; + else if (kind === 'address.create') data = { customerId: fields.get('customerId'), label: fields.get('label'), address: fields.get('address') }; + else { + if (!selectedType) throw new Error('יש להתחבר פעם אחת כדי לטעון את סוגי המשלוח'); + data = { customerId, addressId, scheduledDate, ...deliveryTimingInput(selectedCustomer, deliverySlot, specificTime), deliveryTypeId: selectedType.id, deliveryTypeVersion: selectedType.version, shipmentUnitHundredths: selectedType.shipmentUnitHundredths, unitPriceAgorot: Math.round(Number(unitPrice) * 100), notes: fields.get('notes') ?? '' }; + } + const id = await saveLocal(kind, data); + setNotice('נשמר במכשיר בהצלחה'); + if (kind === 'delivery.create') { + setSelectedId(id); setUnitPrice('0'); + (form.elements.namedItem('notes') as HTMLTextAreaElement).value = ''; + } else form.reset(); + // Request persistence after a user gesture; browsers can still decline it. + void navigator.storage?.persist?.().catch(() => false); + if (navigator.onLine) void syncNow(); + } catch (error) { + setFormError(error instanceof Error && !error.message.startsWith('[') ? error.message : 'לא ניתן לשמור. יש לבדוק את השדות ואת האחסון במכשיר.'); + } finally { setSaving(false); } + } + + function navigate(next: View) { if (next === 'deliveries') setDeliveryDateFilter(null); setView(next); setMenuOpen(false); } + function openDeliveries(date: string) { setScheduledDate(date); setDeliveryDateFilter(date); setView('deliveries'); setMenuOpen(false); } + function openNewCustomer() { setCustomerCreateRequest(value => value + 1); setView('customers'); setMenuOpen(false); } + return

+ {menuOpen && + + + + +
סביבת עבודה מקומית

כל שמירה מתחילה במכשיר שלך.

הנתונים מסתנכרנים כשהחיבור זמין.
+ +
+
המעבדה שלי / {viewCopy[view].path}
{!online ? 'ללא חיבור לרשת' : syncError ? 'השרת אינו זמין' : 'מחובר לרשת'}{accountOpen &&
{user.displayName}{user.username}{user.role === 'admin' ? 'מנהל מערכת' : 'משתמש'}{user.groups.length > 0 && קבוצות: {user.groups.join(', ')}}

שינויים ממתינים יישמרו לחשבון שלך עד הכניסה הבאה.

void saveProfile(event)}>

השם שיופיע בברכה האישית. שמירת השם דורשת חיבור.

{profileError &&

{profileError}

}{user.authProvider === 'oidc' && }
}
+
+

שלום, {user.displayName}

+

מודל · מעבדת שיניים

{viewCopy[view].title}

{viewCopy[view].description}

+
{errors.length > 0 ? `${errors.length} פעולות דורשות בדיקה` : pending > 0 ? `${pending} פעולות ממתינות לסנכרון` : lastSynced ? 'כל השינויים סונכרנו' : 'טוען נתונים ראשונים'}{lastSynced ? `סנכרון אחרון: ${dateFormat.format(new Date(lastSynced.value))}` : 'ממתין לסנכרון ראשון'}
+ {syncError &&

{syncError}

} + {errors.length > 0 &&
{errors.length} פעולות דורשות בדיקה{errors.map(e =>

{e.error}

)}
} + {needRefresh &&
גרסה חדשה זמינה.
} + {notice &&

{notice}

} + {formError &&

{formError}

} + + {view === 'dashboard' ? openDeliveries(toDateKey(new Date()))} onNewCustomer={openNewCustomer} onOpenCosts={() => navigate('costs')} /> : view === 'deliveries' ? <> + {deliveryDateFilter &&
מציג משלוחים לתאריך {new Intl.DateTimeFormat('he-IL', { dateStyle: 'long' }).format(new Date(`${deliveryDateFilter}T12:00:00`))}
} +
כל המשלוחים{visibleDeliveries.length}
ממתינים לסנכרון{visibleDeliveries.filter(d => d.syncState === 'pending').length}
סונכרנו בהצלחה{visibleDeliveries.filter(d => d.syncState === 'synced').length}
+
+

משלוח חדש

נשמר גם ללא חיבור
+
void submit(e, 'delivery.create')}> + + + {customerId && !availableAddresses.length &&

יש להוסיף כתובת ללקוח במסך לקוחות וכתובות.

} + +
+ מועד מסירה +
{deliverySlotOptions.map(option => { + const window = selectedCustomer && option.value !== 'custom' ? selectedCustomer.deliveryWindows[option.value] : null; + return ; + })}
+ {deliverySlot === 'custom' && } + {!selectedCustomer && deliverySlot !== 'custom' &&

לאחר בחירת לקוח יוצגו שעות החלון שהוגדרו עבורו.

} +
+
+