From bb02b6e05abb4cb912910a1cce586f880be72cd0 Mon Sep 17 00:00:00 2001
From: daniel-techAI <290375699+daniel-techAI@users.noreply.github.com>
Date: Tue, 28 Jul 2026 22:14:46 +0200
Subject: [PATCH 1/4] docs: complete public repository handoff
---
.github/ISSUE_TEMPLATE/bug_report.md | 26 +
.github/ISSUE_TEMPLATE/feature_request.md | 16 +
.github/PULL_REQUEST_TEMPLATE.md | 19 +
.github/workflows/build-android.yml | 14 +-
CONTRIBUTING.md | 21 +
LICENSE | 7 +
README.md | 83 +-
SECURITY.md | 9 +
docs/ARCHITECTURE.md | 35 +
docs/IOS.md | 2 +-
docs/PRIVACY_POLICY_DRAFT.md | 2 +-
docs/RELEASE_CHECKLIST.md | 2 +-
docs/STORE_LISTING.md | 6 +-
package-lock.json | 2840 +++++++++++++++++++++
package.json | 9 +-
public/privacy.html | 34 +-
16 files changed, 3087 insertions(+), 38 deletions(-)
create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md
create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md
create mode 100644 .github/PULL_REQUEST_TEMPLATE.md
create mode 100644 CONTRIBUTING.md
create mode 100644 LICENSE
create mode 100644 SECURITY.md
create mode 100644 docs/ARCHITECTURE.md
create mode 100644 package-lock.json
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..f85277c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,26 @@
+---
+name: Bug report
+about: Report reproducible broken behavior
+title: "bug: "
+labels: bug
+---
+
+## What happened?
+
+## How can we reproduce it?
+
+1.
+2.
+3.
+
+## Expected behavior
+
+## Environment
+
+- Browser or Android version:
+- App version or commit:
+- Installed PWA, browser tab, or Android build:
+
+## Additional context
+
+Do not include passwords, signing keys, API credentials, or personal information.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..56aa4a7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,16 @@
+---
+name: Feature request
+about: Propose a focused product improvement
+title: "feature: "
+labels: enhancement
+---
+
+## User problem
+
+## Proposed change
+
+## Why this is better than the current flow
+
+## Privacy, permissions, or store-policy impact
+
+## Smallest useful version
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..3f8a015
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,19 @@
+## What changed
+
+
+
+## Why
+
+
+
+## Validation
+
+- [ ] `npm ci`
+- [ ] `npm run check`
+- [ ] Tested at mobile width
+- [ ] Tested persistence after reload when relevant
+- [ ] Updated privacy/store documentation when data handling changed
+
+## Risks
+
+
diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml
index d5a1365..ed7b3f7 100644
--- a/.github/workflows/build-android.yml
+++ b/.github/workflows/build-android.yml
@@ -2,14 +2,19 @@ name: Build Android APK
on:
workflow_dispatch:
- push:
- branches:
- - main
+
+permissions:
+ contents: read
+
+concurrency:
+ group: mindswipe-android-debug
+ cancel-in-progress: true
jobs:
build-android:
name: Build Mind Swipe debug APK and AAB
runs-on: ubuntu-latest
+ timeout-minutes: 45
steps:
- name: Check out repository
@@ -19,6 +24,7 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: 24
+ cache: npm
- name: Set up Java
uses: actions/setup-java@v4
@@ -30,7 +36,7 @@ jobs:
uses: android-actions/setup-android@v3
- name: Install dependencies
- run: npm install
+ run: npm ci
- name: Build web app
run: npm run build
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..60baeaa
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,21 @@
+# Contributing to MindSwipe
+
+MindSwipe is an early product, so focused fixes and evidence-backed improvements are more useful than large rewrites.
+
+## Before opening a pull request
+
+1. Open an issue for a substantial feature or data-model change.
+2. Create a short branch from `main`.
+3. Install with `npm ci` and run `npm run check`.
+4. Test the affected flow at mobile width and confirm progress survives a reload.
+5. If notifications changed, test both permission acceptance and denial on Android.
+
+## Pull-request expectations
+
+- Explain the user problem and the smallest change that solves it.
+- Keep user progress backward compatible or include an explicit migration.
+- Do not introduce tracking, advertising, accounts, remote storage, or payments without corresponding privacy and store-disclosure changes.
+- Do not commit `.env` files, signing keys, API credentials, generated Android projects, or production store certificates.
+- Identify any new dependency and why it is necessary.
+
+Content contributions must be original, practical, and free of medical, legal, investment, or guaranteed-income claims.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..ed57b10
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,7 @@
+Copyright (c) 2026 MindSwipe. All rights reserved.
+
+No license is granted to use, copy, modify, merge, publish, distribute,
+sublicense, sell, or create derivative works from this software or its
+content except with prior written permission from the copyright holder.
+
+Third-party packages remain governed by their respective licenses.
diff --git a/README.md b/README.md
index c82235a..ece5c67 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,70 @@
# MindSwipe
-MindSwipe replaces doomscrolling with short, useful rescue sessions for people trying to rebuild discipline, money, focus, and options from a rough starting point.
+MindSwipe replaces doomscrolling with focused three-card learning sessions for discipline, money, work, confidence, and attention.
-This repo is intentionally kept lean so GitHub Actions can build the Android APK remotely without needing Replit, pnpm, or a slow local machine.
+> **Project status:** public prototype and Android debug build. MindSwipe currently has no account system, analytics SDK, advertising SDK, or remote user database. Progress and reminder preferences stay on the device.
-## Product Direction
+## What works
-- Audience: broke comeback first
-- Tone: direct bro, store-safe, blunt without being cringe
-- Public brand: MindSwipe, not tied to Daniel publicly for now
+- Mood-based three-card rescue sessions with touch gestures and explicit controls.
+- Practical content packs for focus, habits, work, money basics, and confidence.
+- Saved-card replay, XP, streaks, missions, and rescued-time tracking.
+- Local progress storage with a complete in-app reset.
+- Installable web-app metadata and a Capacitor Android wrapper.
+- Optional Android local notifications and haptic feedback.
-## What it does now
+## Run locally
-- Onboards users around their scroll trigger, interest lanes, and first content pack
-- Offers Rescue Mode for boredom, stress, focus, and money ideas
-- Includes serious content packs: No Money Comeback, Discipline, Social Confidence, Work Grind, Focus, and Online Income Basics
-- Runs quick 3-card learning sessions with touch swipe gestures plus Save, Skip, and Done controls
-- Uses hook-first cards with useful tiny moves instead of school-style quizzes
-- Tracks XP, streaks, streak freezes, completed cards, saved cards, sessions, daily missions, reminder preference, and rescued minutes in local storage
-- Includes a saved-ideas replay mode
-- Includes PWA metadata, a privacy policy draft, Capacitor Android config, and store-prep docs
-- Includes a GitHub Actions workflow that builds a debug APK
+Requirements: Node.js 24 or newer and npm.
-## Remote APK build
+```bash
+npm ci
+npm run dev
+```
-1. Open this repo on GitHub.
-2. Go to Actions.
-3. Open Build Android APK.
-4. Click Run workflow.
-5. Download the MindSwipe-debug-apk artifact.
+Open the address printed by Vite. Before committing a change, run:
-The debug APK is for testing. Play Store release needs a signed AAB later.
+```bash
+npm run check
+```
-## iOS plan
+The check creates a production web build in `dist/`. There is no automated test suite yet.
-Use this same repo for iPhone and iPad. Capacitor can generate both Android and iOS apps from the same React source, so a second Apple-only repo would create extra work and risk the two apps drifting apart.
+## Android debug build
-Publishing to the App Store later needs a Mac build environment, Xcode, and an Apple Developer account. Until then, keep product changes in this shared repo and add iOS signing/build steps only when the app is ready for store submission.
+Install Android Studio, Java 21, and the Android SDK, then run:
+
+```bash
+npm ci
+npm run android:add # first Android build only
+npm run android:sync # after web changes
+npm run android:open
+```
+
+The repository also contains a manual `Build Android APK` workflow. It produces unsigned debug APK and AAB artifacts for testing; it does not create a Play Store release. See [Play Store preparation](docs/PLAY_STORE_PREP.md) and the [release checklist](docs/RELEASE_CHECKLIST.md).
+
+## Privacy boundary
+
+The current app stores onboarding choices, progress, saved cards, streaks, and reminder settings in local storage. Local notifications are scheduled on the device. Adding accounts, analytics, ads, payments, crash reporting, or cloud sync requires a fresh code review, an updated privacy notice, and updated store disclosures.
+
+The bundled privacy policy is a draft until a real support contact and hosted policy URL are added.
+
+## Repository map
+
+- `src/App.jsx` — application flow, progress state, reminders, and session logic.
+- `src/content.js` and `src/quoteBank.js` — learning content.
+- `src/*.css` — visual system and responsive layout.
+- `public/` — PWA metadata, icons, and the privacy page.
+- `capacitor.config.json` — native wrapper identity and notification configuration.
+- `docs/` — product direction, platform plans, store copy, and release checks.
+- `.github/workflows/build-android.yml` — manually triggered debug artifact build.
+
+For design boundaries and data flow, read [the architecture guide](docs/ARCHITECTURE.md).
+
+## Contributing and security
+
+Read [CONTRIBUTING.md](CONTRIBUTING.md) before proposing a change. Please report suspected security or privacy problems privately using GitHub's security-advisory flow described in [SECURITY.md](SECURITY.md).
+
+## License
+
+Copyright © 2026 MindSwipe. All rights reserved. The public repository makes the source reviewable but does not grant permission to copy, redistribute, sell, or create derivative products. See [LICENSE](LICENSE).
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000..1137d77
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,9 @@
+# Security policy
+
+MindSwipe is a prototype and does not yet publish supported release branches.
+
+Report suspected vulnerabilities or privacy problems privately through the repository's **Security → Report a vulnerability** flow. Do not include secrets, personal data, or exploit details in a public issue.
+
+Helpful reports include the affected version or commit, reproduction steps, impact, and a suggested mitigation. Reports concerning committed credentials should identify the file and commit without repeating the credential value.
+
+The current privacy boundary is local-only progress and local notifications. Any unexpected network transmission, cross-user data exposure, permission misuse, or persistence after the in-app reset should be treated as a security or privacy defect.
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
new file mode 100644
index 0000000..6d131e3
--- /dev/null
+++ b/docs/ARCHITECTURE.md
@@ -0,0 +1,35 @@
+# MindSwipe architecture
+
+## Runtime
+
+MindSwipe is a client-only React application built with Vite. Capacitor wraps the same `dist/` output for Android. There is no application backend in this repository.
+
+```text
+content modules ──> React session UI ──> local progress state
+ │
+ ├── localStorage
+ ├── Capacitor haptics
+ └── Capacitor local notifications
+```
+
+## Sources of truth
+
+- `src/content.js`, `src/quoteBank.js`: user-facing learning material.
+- `src/App.jsx`: navigation, session selection, progress persistence, reminders, and native capability checks.
+- `src/*.css`: responsive presentation.
+- `public/manifest.webmanifest`: installable web-app identity.
+- `capacitor.config.json`: Android application ID, web output directory, and native plugin configuration.
+
+## Data and trust boundaries
+
+- Progress is serialized under the `mindSwipeProgress` browser-storage key.
+- The reset control removes that local progress record.
+- Native notification schedules stay on the device.
+- No code path currently sends progress to an application server.
+- Content is bundled with the application and is not remotely generated.
+
+These statements must be revalidated whenever networking, analytics, ads, accounts, payments, crash reporting, or cloud synchronization are added.
+
+## Release boundaries
+
+`npm run build` validates the web bundle. The manual GitHub workflow generates unsigned debug artifacts. Production distribution still requires signed builds, final raster assets, store-policy review, device testing, and a public support contact.
diff --git a/docs/IOS.md b/docs/IOS.md
index 1f9bf43..ca3420e 100644
--- a/docs/IOS.md
+++ b/docs/IOS.md
@@ -19,5 +19,5 @@ MindSwipe should stay in one shared repository for now. The React app is the sou
## Practical path
1. Improve the shared app until the product feels worth testing daily.
-2. Keep Android debug APK builds on GitHub Actions for fast testing.
+2. Use the manually triggered Android debug workflow for controlled test builds.
3. Add iOS only after the core loop, content, privacy policy, and app identity are stable.
diff --git a/docs/PRIVACY_POLICY_DRAFT.md b/docs/PRIVACY_POLICY_DRAFT.md
index c2794f3..d29ab10 100644
--- a/docs/PRIVACY_POLICY_DRAFT.md
+++ b/docs/PRIVACY_POLICY_DRAFT.md
@@ -34,6 +34,6 @@ If MindSwipe later adds accounts, analytics, advertising, payments, AI services,
## Contact
-Developer contact: replace this with your public support email before publishing.
+Prototype contact: use the repository's GitHub Issues page for general project questions, but never post personal or sensitive information there. Add a monitored public support email before store submission.
This is a working draft, not legal advice. Review it before using it publicly.
diff --git a/docs/RELEASE_CHECKLIST.md b/docs/RELEASE_CHECKLIST.md
index c76a727..3099904 100644
--- a/docs/RELEASE_CHECKLIST.md
+++ b/docs/RELEASE_CHECKLIST.md
@@ -2,7 +2,7 @@
## Build
-- [ ] Confirm latest GitHub Actions APK installs on Android.
+- [ ] Manually run the Android workflow and confirm its APK installs on Android.
- [ ] Confirm `Test notification` fires after 5 seconds.
- [ ] Confirm scheduled quote reminder fires when the app is closed.
- [ ] Confirm Android notification permission denial is handled clearly.
diff --git a/docs/STORE_LISTING.md b/docs/STORE_LISTING.md
index 3230bcb..c2ce479 100644
--- a/docs/STORE_LISTING.md
+++ b/docs/STORE_LISTING.md
@@ -2,7 +2,7 @@
## Direction
-Audience: broke comeback first.
+Audience: people replacing unproductive scrolling with practical, short learning sessions.
Tone: direct bro, store-safe, practical, blunt without being cringe.
Public brand: MindSwipe.
@@ -32,9 +32,9 @@ MindSwipe tracks XP, streaks, saved ideas, daily missions, and minutes rescued f
- Daily missions and streaks
- Local progress storage
-## Placeholder Details To Replace
+## Release Details Still Required
-- Support email: support@example.com
+- Support email: not set; add a monitored public address before store submission
- Developer name: MindSwipe
- Privacy policy URL: add hosted URL before Play Store submission
- App category: Education or Productivity
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..203e82a
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,2840 @@
+{
+ "name": "mind-swipe",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "mind-swipe",
+ "version": "0.1.0",
+ "license": "UNLICENSED",
+ "dependencies": {
+ "@capacitor/core": "^8.3.4",
+ "@capacitor/haptics": "^8.0.0",
+ "@capacitor/local-notifications": "^8.0.0",
+ "@vitejs/plugin-react": "^5.0.4",
+ "react": "^19.1.0",
+ "react-dom": "^19.1.0",
+ "typescript": "~5.9.3",
+ "vite": "^7.3.2"
+ },
+ "devDependencies": {
+ "@capacitor/android": "^8.3.4",
+ "@capacitor/cli": "^8.3.4"
+ },
+ "engines": {
+ "node": ">=24"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz",
+ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.7",
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helpers": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/template": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz",
+ "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
+ "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz",
+ "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.29.7"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz",
+ "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz",
+ "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz",
+ "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.7",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz",
+ "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@capacitor/android": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-8.4.2.tgz",
+ "integrity": "sha512-bzf8XZ9C+ePgOQ+e+T0fnhHGH4aCNY494vvSQIF5w4AY07RwEmkFqZs1678DDSMH0hLSQpxEwXGFNUVcXO6bBA==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@capacitor/core": "^8.4.0"
+ }
+ },
+ "node_modules/@capacitor/cli": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-8.4.2.tgz",
+ "integrity": "sha512-hE4HmpMdr5T8eQ++kGa1BKkdG2JLEvo1y1cj1kmFK78VB9dBp538oe1EZvzwupNGOl0ZueALotzL5wcXRD9w1Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ionic/cli-framework-output": "^2.2.8",
+ "@ionic/utils-subprocess": "^3.0.1",
+ "@ionic/utils-terminal": "^2.3.5",
+ "commander": "^12.1.0",
+ "debug": "^4.4.0",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^11.2.0",
+ "kleur": "^4.1.5",
+ "native-run": "^2.0.3",
+ "open": "^8.4.0",
+ "plist": "^3.1.0",
+ "prompts": "^2.4.2",
+ "rimraf": "^6.0.1",
+ "semver": "^7.6.3",
+ "tar": "^7.5.3",
+ "tslib": "^2.8.1",
+ "xml2js": "^0.6.2"
+ },
+ "bin": {
+ "cap": "bin/capacitor",
+ "capacitor": "bin/capacitor"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@capacitor/core": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.4.2.tgz",
+ "integrity": "sha512-fQPRb3JXRaU2pnufDUvqOjhsrYxDQeFRZyaj/sHydIUxD2NxOGHKMpmKUdI+U4OOmKuGZyvRpi7TSJU+7Bjbmg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@capacitor/haptics": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-8.0.2.tgz",
+ "integrity": "sha512-c2hZzRR5Fk1tbTvhG1jhh2XBAf3EhnIerMIb2sl7Mt41Gxx1fhBJFDa0/BI1IbY4loVepyyuqNC9820/GZuoWQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@capacitor/core": ">=8.0.0"
+ }
+ },
+ "node_modules/@capacitor/local-notifications": {
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/@capacitor/local-notifications/-/local-notifications-8.2.1.tgz",
+ "integrity": "sha512-Bkim+MGl7UrDTjDferV4ECq0aWciTsa0k15+MX2jnx2PeWgEPvlBy5yrqzBlwEZPrtHFUvPVxPi5V66MPGHkAw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@capacitor/core": ">=8.0.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
+ "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
+ "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
+ "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
+ "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
+ "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
+ "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
+ "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
+ "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
+ "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
+ "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
+ "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
+ "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
+ "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
+ "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
+ "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
+ "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
+ "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
+ "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
+ "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
+ "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
+ "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
+ "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
+ "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
+ "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
+ "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
+ "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@ionic/cli-framework-output": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/@ionic/cli-framework-output/-/cli-framework-output-2.2.8.tgz",
+ "integrity": "sha512-TshtaFQsovB4NWRBydbNFawql6yul7d5bMiW1WYYf17hd99V6xdDdk3vtF51bw6sLkxON3bDQpWsnUc9/hVo3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ionic/utils-terminal": "2.3.5",
+ "debug": "^4.0.0",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@ionic/utils-array": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.6.tgz",
+ "integrity": "sha512-0JZ1Zkp3wURnv8oq6Qt7fMPo5MpjbLoUoa9Bu2Q4PJuSDWM8H8gwF3dQO7VTeUj3/0o1IB1wGkFWZZYgUXZMUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.0.0",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@ionic/utils-fs": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.7.tgz",
+ "integrity": "sha512-2EknRvMVfhnyhL1VhFkSLa5gOcycK91VnjfrTB0kbqkTFCOXyXgVLI5whzq7SLrgD9t1aqos3lMMQyVzaQ5gVA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/fs-extra": "^8.0.0",
+ "debug": "^4.0.0",
+ "fs-extra": "^9.0.0",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@ionic/utils-fs/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@ionic/utils-object": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.6.tgz",
+ "integrity": "sha512-vCl7sl6JjBHFw99CuAqHljYJpcE88YaH2ZW4ELiC/Zwxl5tiwn4kbdP/gxi2OT3MQb1vOtgAmSNRtusvgxI8ww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.0.0",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@ionic/utils-process": {
+ "version": "2.1.12",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.12.tgz",
+ "integrity": "sha512-Jqkgyq7zBs/v/J3YvKtQQiIcxfJyplPgECMWgdO0E1fKrrH8EF0QGHNJ9mJCn6PYe2UtHNS8JJf5G21e09DfYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ionic/utils-object": "2.1.6",
+ "@ionic/utils-terminal": "2.3.5",
+ "debug": "^4.0.0",
+ "signal-exit": "^3.0.3",
+ "tree-kill": "^1.2.2",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@ionic/utils-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.7.tgz",
+ "integrity": "sha512-eSELBE7NWNFIHTbTC2jiMvh1ABKGIpGdUIvARsNPMNQhxJB3wpwdiVnoBoTYp+5a6UUIww4Kpg7v6S7iTctH1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.0.0",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@ionic/utils-subprocess": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-3.0.1.tgz",
+ "integrity": "sha512-cT4te3AQQPeIM9WCwIg8ohroJ8TjsYaMb2G4ZEgv9YzeDqHZ4JpeIKqG2SoaA3GmVQ3sOfhPM6Ox9sxphV/d1A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ionic/utils-array": "2.1.6",
+ "@ionic/utils-fs": "3.1.7",
+ "@ionic/utils-process": "2.1.12",
+ "@ionic/utils-stream": "3.1.7",
+ "@ionic/utils-terminal": "2.3.5",
+ "cross-spawn": "^7.0.3",
+ "debug": "^4.0.0",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@ionic/utils-terminal": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.5.tgz",
+ "integrity": "sha512-3cKScz9Jx2/Pr9ijj1OzGlBDfcmx7OMVBt4+P1uRR0SSW4cm1/y3Mo4OY3lfkuaYifMNBW8Wz6lQHbs1bihr7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/slice-ansi": "^4.0.0",
+ "debug": "^4.0.0",
+ "signal-exit": "^3.0.3",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "tslib": "^2.0.1",
+ "untildify": "^4.0.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-rc.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz",
+ "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==",
+ "license": "MIT"
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.3.tgz",
+ "integrity": "sha512-c0wdcekXtQvvn5Tsrk/+op/gUArrbWaFduBnTLP2l1cKLSQs4diMWjJw3m6A0DdzT8dAAX95KpkJ3qynCePbmw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.3.tgz",
+ "integrity": "sha512-3YjElDdWN+qXAFbJ/CzPV+0wspLqh54k/I6GfdYtEJRqg7buSgc1yPM3B+93j1M4neobtkATHZTmxK2AMVGfnA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.3.tgz",
+ "integrity": "sha512-Pch2pFNOxxz1hTjypIdPyRTR6riiwRl84+VcN9djS680fw+Co1nAJINrdpqp7KV0NvyuU8ilZXZCjd7ykJl1GQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.3.tgz",
+ "integrity": "sha512-LEuncFUHFiF8t4yZVZvvZA1wk0pjAscRnsrn1EfTEmN4HXotBi2YtcnLRyaK6UbuczW7xZS5ES+81Rdz8Z0T6g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.3.tgz",
+ "integrity": "sha512-zvBUvsQUpOWALdDsk6qbS8bXf2VxmPisuudNDrY7x0p0jBdsoZl8HsHczIOgkQiZldmcacMKtBzpoGVNeIe2bQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.3.tgz",
+ "integrity": "sha512-C2KmNrcSem/AMg984H/dev+si0lieQGdXdR/lYGJnuumXnFb9Y7QdiI62obFdLlxRYLBv4P0eUVIDbD4c1vVvw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.3.tgz",
+ "integrity": "sha512-ggXnsTAEzNQx74XpunRsiZ9aBZDsI7XIa0hm2nzR9f4WzH5/f/d73ZSDaC5ejJ8YLY4NW+V3wr0tjOaeCq8hqA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.3.tgz",
+ "integrity": "sha512-2vng+FlzNUhKZxtej3IUqJgbZoQk2M/dwQM20+ULV0R/E/8tr9/P6uEf2iiGIk4HL0zMKh5Jry7mUHdUOvyGgA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.3.tgz",
+ "integrity": "sha512-LLLFZKt4/Nraf9rxDkhiU8QVgLF4WmCkfr0L4fj0fPfIZFBib0DeiFk1hhaYKd03LFAFJcxHslhDFlNJLylf5Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.3.tgz",
+ "integrity": "sha512-WJkdQCvS9sWNOUBJZfQRKpZGFBztRzcowI+nndmflKgU4XY+3a420FgTOSKTsVqJbnzSxeT4vaJalpOaPo2YCQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.3.tgz",
+ "integrity": "sha512-PwHXCCS2n64/1Ot6rP1YEYA02MGYBcQlr8CSZZyrUG2O7NH6NklYmvr9v3Jy+5e/eDeNchc/ukmKJi9LuflMIQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.3.tgz",
+ "integrity": "sha512-vUjxINQu3RC8NZS3ykk1gN65gIz8pAopOq2HXuZhiIxHdx7TFvDG+jgrdSgInu1Eza4/Rfi2VzZgyIgEH4WOaw==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.3.tgz",
+ "integrity": "sha512-wzko4aJ13+0G3kGnviCg5gnXFKd40izKsrf2uOw12US4XqprkDrmwOpeW14aSNa37V8bfPcz5Fkob6LZ3BAPmA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.3.tgz",
+ "integrity": "sha512-8120ue0JUMSwy11stlwnfdX3pPd+WZYGCDBwEHWtIHi6pOpZmsEF5QKB7a/UN+XFdqvobxz98kv8RTqikyCEBw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.3.tgz",
+ "integrity": "sha512-XLFHnR3tXMjbOCh2vtVJHmxt+995uJsTERQyseFDRA0xxMxyTZPLa3OIUlyFaO4mF/Lu0FjmWHCuPXJT1n/IOg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.3.tgz",
+ "integrity": "sha512-se6yXvNGMIl0f+RQzyh7XAmia8/9kplQx424wnG2w0C1oi6XgO6Y8otKhdXFHbHs88Ihavzmvh1NWjuovE76BQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.3.tgz",
+ "integrity": "sha512-gNoxRefktVIiGflpONuxWWXZAzIQG++z9qHO3xKwk4WdDMuQja3JHGfE1u0i3PfPDyvhypdk+WrgIJqLhGG7sg==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.3.tgz",
+ "integrity": "sha512-V4KtWtQfAFMU7+9/A/VDps/VI8CHd3cYz0L8sgJzz8qK7eY7wI4ruFD82UYIYvW9Z4DtlTfhQcsl4XyPHW5uSg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.3.tgz",
+ "integrity": "sha512-LBx9LYXvj2CBkMkjLdNAWLwH0MLMin7do2VcVo9kVPibGLkY0BQQut2fv7NVqkXqZ/CrAu9LqDHVV1xHCMpCPw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.3.tgz",
+ "integrity": "sha512-ABVf3Q0RCu7NcyCCOZQI0pJ3GuSdfSl8EXcy88QtdceIMIoCUdfhsJChZ64L9zVM2aJHjde1Bhn5uqSRcX9ySA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.3.tgz",
+ "integrity": "sha512-+2Cy/ldweGBLlPIKsQLF8U5N44a0KDdbrk1rAjHOM9M2K+kGdIVjHLmmrZIcx+9Ny3ke/1JomCsDI1ocb11+sg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.3.tgz",
+ "integrity": "sha512-dtZvzc8BedpSaFNy75x6uiWwAGTH+aZHDtdrqP6qk+WcLJrfti6sGje1ZJ9UxyzDLF23d/mV+PaMwuC0hL7UVA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.3.tgz",
+ "integrity": "sha512-Rj8Ra4noo+aYy7sKBggCx0407mws34kAb1ySyWuq5DAtFBQdkSwnsjCgPrhPe9cvgBKZIukpE+CVHvORCS93kQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.3.tgz",
+ "integrity": "sha512-vp7N084ew/odXn2gi/mzm9mUkQu9l6AiN6dt4IeUM2Uvm9o+cVmP+YkqbMOteLbiGgqBBlJZjIMYVCfOOIVbVQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.3.tgz",
+ "integrity": "sha512-MOG/3gTOn4Fwf574RVOaY61I5o6P90legkFADiTyn1hyjNydT+cerU2rLUwPdZkKKyJ+iT+K9p7WXK4LM1Ka6g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
+ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.2"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
+ "license": "MIT"
+ },
+ "node_modules/@types/fs-extra": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz",
+ "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "26.1.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
+ "integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~8.3.0"
+ }
+ },
+ "node_modules/@types/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vitejs/plugin-react": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.2.0.tgz",
+ "integrity": "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.29.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.27.1",
+ "@babel/plugin-transform-react-jsx-source": "^7.27.1",
+ "@rolldown/pluginutils": "1.0.0-rc.3",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.18.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.9.10",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz",
+ "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.6"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.11.6",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.6.tgz",
+ "integrity": "sha512-69D/imtToCsIcAl8WBS2YaRwA4jO/j0HhU+hELqMEu9f54MoUtI6+XH5mrKU8rEFNEk/Ui1I2MK4/JkWacclGw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/big-integer": {
+ "version": "1.6.52",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
+ "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
+ "dev": true,
+ "license": "Unlicense",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/bplist-parser": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz",
+ "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "big-integer": "1.6.x"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.8.tgz",
+ "integrity": "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz",
+ "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.10.44",
+ "caniuse-lite": "^1.0.30001806",
+ "electron-to-chromium": "^1.5.393",
+ "node-releases": "^2.0.51",
+ "update-browserslist-db": "^1.2.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001806",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz",
+ "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.397",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.397.tgz",
+ "integrity": "sha512-khGTy9U9x02KEtsKM8vx5A62BsRmcOsIgDpWr1ImE32Ax8GxHGPHZf+Eu9H8zOOyHJnB0jTbseyTHbq2XCT8yw==",
+ "license": "ISC"
+ },
+ "node_modules/elementtree": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz",
+ "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "sax": "1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
+ "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.28.1",
+ "@esbuild/android-arm": "0.28.1",
+ "@esbuild/android-arm64": "0.28.1",
+ "@esbuild/android-x64": "0.28.1",
+ "@esbuild/darwin-arm64": "0.28.1",
+ "@esbuild/darwin-x64": "0.28.1",
+ "@esbuild/freebsd-arm64": "0.28.1",
+ "@esbuild/freebsd-x64": "0.28.1",
+ "@esbuild/linux-arm": "0.28.1",
+ "@esbuild/linux-arm64": "0.28.1",
+ "@esbuild/linux-ia32": "0.28.1",
+ "@esbuild/linux-loong64": "0.28.1",
+ "@esbuild/linux-mips64el": "0.28.1",
+ "@esbuild/linux-ppc64": "0.28.1",
+ "@esbuild/linux-riscv64": "0.28.1",
+ "@esbuild/linux-s390x": "0.28.1",
+ "@esbuild/linux-x64": "0.28.1",
+ "@esbuild/netbsd-arm64": "0.28.1",
+ "@esbuild/netbsd-x64": "0.28.1",
+ "@esbuild/openbsd-arm64": "0.28.1",
+ "@esbuild/openbsd-x64": "0.28.1",
+ "@esbuild/openharmony-arm64": "0.28.1",
+ "@esbuild/sunos-x64": "0.28.1",
+ "@esbuild/win32-arm64": "0.28.1",
+ "@esbuild/win32-ia32": "0.28.1",
+ "@esbuild/win32-x64": "0.28.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.4.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz",
+ "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz",
+ "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "10.2.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
+ "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.8"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
+ "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.16",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz",
+ "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/native-run": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/native-run/-/native-run-2.0.3.tgz",
+ "integrity": "sha512-U1PllBuzW5d1gfan+88L+Hky2eZx+9gv3Pf6rNBxKbORxi7boHzqiA6QFGSnqMem4j0A9tZ08NMIs5+0m/VS1Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ionic/utils-fs": "^3.1.7",
+ "@ionic/utils-terminal": "^2.3.4",
+ "bplist-parser": "^0.3.2",
+ "debug": "^4.3.4",
+ "elementtree": "^0.1.7",
+ "ini": "^4.1.1",
+ "plist": "^3.1.0",
+ "split2": "^4.2.0",
+ "through2": "^4.0.2",
+ "tslib": "^2.6.2",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "native-run": "bin/native-run"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.51",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz",
+ "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-scurry": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/plist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.1.tgz",
+ "integrity": "sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@xmldom/xmldom": "^0.9.10",
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^15.1.1"
+ },
+ "engines": {
+ "node": ">=10.4.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.24",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.24.tgz",
+ "integrity": "sha512-8RyVklq0owXUTa4xlpzu4l9AaVKIdQvAcOHZWaMh98HgySsUtxRVf/chRe3dsSLqb6i40BzGRzEUddRaI+9TSw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.16",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prompts/node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react": {
+ "version": "19.2.8",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz",
+ "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.2.8",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz",
+ "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==",
+ "license": "MIT",
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.8"
+ }
+ },
+ "node_modules/react-refresh": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz",
+ "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
+ "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "glob": "^13.0.3",
+ "package-json-from-dist": "^1.0.1"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.62.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.3.tgz",
+ "integrity": "sha512-Gu0c0iH9FzgX1L1t7ByIbbS3Vmdz+6KHm/EsqmmC71gUQ82yvZRkTK6XzrFObSka91WUVdynqp6nsfilzr5k6Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.9"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.62.3",
+ "@rollup/rollup-android-arm64": "4.62.3",
+ "@rollup/rollup-darwin-arm64": "4.62.3",
+ "@rollup/rollup-darwin-x64": "4.62.3",
+ "@rollup/rollup-freebsd-arm64": "4.62.3",
+ "@rollup/rollup-freebsd-x64": "4.62.3",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.62.3",
+ "@rollup/rollup-linux-arm-musleabihf": "4.62.3",
+ "@rollup/rollup-linux-arm64-gnu": "4.62.3",
+ "@rollup/rollup-linux-arm64-musl": "4.62.3",
+ "@rollup/rollup-linux-loong64-gnu": "4.62.3",
+ "@rollup/rollup-linux-loong64-musl": "4.62.3",
+ "@rollup/rollup-linux-ppc64-gnu": "4.62.3",
+ "@rollup/rollup-linux-ppc64-musl": "4.62.3",
+ "@rollup/rollup-linux-riscv64-gnu": "4.62.3",
+ "@rollup/rollup-linux-riscv64-musl": "4.62.3",
+ "@rollup/rollup-linux-s390x-gnu": "4.62.3",
+ "@rollup/rollup-linux-x64-gnu": "4.62.3",
+ "@rollup/rollup-linux-x64-musl": "4.62.3",
+ "@rollup/rollup-openbsd-x64": "4.62.3",
+ "@rollup/rollup-openharmony-arm64": "4.62.3",
+ "@rollup/rollup-win32-arm64-msvc": "4.62.3",
+ "@rollup/rollup-win32-ia32-msvc": "4.62.3",
+ "@rollup/rollup-win32-x64-gnu": "4.62.3",
+ "@rollup/rollup-win32-x64-msvc": "4.62.3",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/sax": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
+ "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/scheduler": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar": {
+ "version": "7.5.22",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz",
+ "integrity": "sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.1.0",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/through2": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+ "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "3"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "tree-kill": "cli.js"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
+ "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vite": {
+ "version": "7.3.6",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz",
+ "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==",
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.27.0 || ^0.28.0",
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3",
+ "postcss": "^8.5.6",
+ "rollup": "^4.43.0",
+ "tinyglobby": "^0.2.15"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "lightningcss": "^1.21.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
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/xml2js": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xml2js/node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
+ "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index e6c8b63..653442a 100644
--- a/package.json
+++ b/package.json
@@ -1,11 +1,17 @@
{
"name": "mind-swipe",
"version": "0.1.0",
+ "description": "Focused three-card learning sessions that replace doomscrolling with practical actions.",
"private": true,
"type": "module",
+ "license": "UNLICENSED",
+ "engines": {
+ "node": ">=24"
+ },
"scripts": {
"dev": "vite --host 0.0.0.0",
"build": "vite build",
+ "check": "npm run build",
"preview": "vite preview --host 0.0.0.0",
"android:add": "npm run build && cap add android",
"android:sync": "npm run build && cap sync android",
@@ -24,5 +30,6 @@
"devDependencies": {
"@capacitor/android": "^8.3.4",
"@capacitor/cli": "^8.3.4"
- }
+ },
+ "packageManager": "npm@11.9.0"
}
diff --git a/public/privacy.html b/public/privacy.html
index 9f0bfcc..0133019 100644
--- a/public/privacy.html
+++ b/public/privacy.html
@@ -1 +1,33 @@
-
MindSwipe Privacy Policy MindSwipe Privacy Policy Last updated: June 25, 2026
Overview MindSwipe helps users replace doomscrolling with short rescue sessions. The app is designed to work without requiring an account.
Information Stored On Your Device MindSwipe stores onboarding choices, completed cards, XP, streak, saved ideas, reminder preference, and content pack settings locally on your device.
Notifications If reminders are enabled in a future release, MindSwipe may ask for notification permission. You can disable notifications in the app or device settings.
Data Sharing This version does not sell personal data and does not send learning progress to a remote server.
Contact Add your support email before publishing on Google Play.
+
+
+
+
+
+ MindSwipe Privacy Policy
+
+
+
+
+ MindSwipe Privacy Policy
+ Last updated: July 28, 2026
+ Overview
+ MindSwipe helps users replace doomscrolling with short learning sessions. The current version works without an account.
+ Information Stored on Your Device
+ MindSwipe stores onboarding choices, completed cards, XP, streaks, saved ideas, reminder preferences, and content-pack settings locally on your device.
+ Notifications
+ If you enable reminders in the Android app, MindSwipe asks for notification permission and schedules notifications locally. You can disable them in the app or Android settings.
+ Data Sharing
+ The current version does not sell personal data or send learning progress to an application server, analytics provider, or advertising provider.
+ Removing Local Data
+ Use the in-app reset, clear the app's storage, or uninstall the app to remove locally stored progress.
+ Contact
+ For prototype questions, use GitHub Issues . Do not post personal or sensitive information in a public issue. A monitored support email must be added before store publication.
+
+
+
From ba1047ada768436ee5b16d87a7509e230b09c62b Mon Sep 17 00:00:00 2001
From: daniel-techAI <290375699+daniel-techAI@users.noreply.github.com>
Date: Sun, 2 Aug 2026 14:03:44 +0200
Subject: [PATCH 2/4] Make MindSwipe installable and accessible
---
.github/workflows/deploy-pages.yml | 67 +
.github/workflows/quality.yml | 50 +
.gitignore | 2 +
README.md | 64 +-
docs/ARCHITECTURE.md | 4 +-
e2e/app.spec.js | 64 +
eslint.config.js | 42 +
index.html | 8 +-
package-lock.json | 3121 +++++++++++++++++++++++++++-
package.json | 17 +-
playwright.config.js | 24 +
public/icons/icon-180.png | Bin 0 -> 22666 bytes
public/icons/icon-192.png | Bin 0 -> 24107 bytes
public/icons/icon-512.png | Bin 0 -> 78817 bytes
public/icons/icon-maskable-512.png | Bin 0 -> 78817 bytes
public/manifest.webmanifest | 28 +-
scripts/create-service-worker.mjs | 92 +
src/App.jsx | 230 +-
src/MindSwipeLogo.jsx | 2 +-
src/app-shell.css | 174 ++
src/pwa.js | 21 +
tests/pwa.test.js | 46 +
vite.config.js | 2 +
23 files changed, 3906 insertions(+), 152 deletions(-)
create mode 100644 .github/workflows/deploy-pages.yml
create mode 100644 .github/workflows/quality.yml
create mode 100644 e2e/app.spec.js
create mode 100644 eslint.config.js
create mode 100644 playwright.config.js
create mode 100644 public/icons/icon-180.png
create mode 100644 public/icons/icon-192.png
create mode 100644 public/icons/icon-512.png
create mode 100644 public/icons/icon-maskable-512.png
create mode 100644 scripts/create-service-worker.mjs
create mode 100644 src/pwa.js
create mode 100644 tests/pwa.test.js
diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml
new file mode 100644
index 0000000..ec636ec
--- /dev/null
+++ b/.github/workflows/deploy-pages.yml
@@ -0,0 +1,67 @@
+name: Deploy web app
+
+on:
+ push:
+ branches:
+ - main
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+concurrency:
+ group: pages
+ cancel-in-progress: false
+
+jobs:
+ build:
+ name: Build static site
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v4
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 24
+ cache: npm
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Verify and build
+ run: npm run check
+
+ - name: Install browser for smoke tests
+ run: npx playwright install --with-deps chromium
+
+ - name: Test desktop and Android-sized web app
+ run: npm run test:e2e
+
+ - name: Configure GitHub Pages
+ uses: actions/configure-pages@v5
+
+ - name: Upload static site
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: dist
+
+ deploy:
+ name: Publish GitHub Pages
+ needs: build
+ runs-on: ubuntu-latest
+ timeout-minutes: 10
+ permissions:
+ pages: write
+ id-token: write
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml
new file mode 100644
index 0000000..14e7518
--- /dev/null
+++ b/.github/workflows/quality.yml
@@ -0,0 +1,50 @@
+name: Quality
+
+on:
+ pull_request:
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+concurrency:
+ group: quality-${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ verify:
+ name: Lint, test and build
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v4
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 24
+ cache: npm
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Verify application
+ run: npm run check
+
+ - name: Install browser for smoke tests
+ run: npx playwright install --with-deps chromium
+
+ - name: Test desktop and Android-sized web app
+ run: npm run test:e2e
+
+ - name: Verify installable assets
+ shell: bash
+ run: |
+ test -f dist/index.html
+ test -f dist/manifest.webmanifest
+ test -f dist/sw.js
+ test -f dist/icons/icon-192.png
+ test -f dist/icons/icon-512.png
+ grep -q 'serviceWorker.register' dist/assets/*.js
diff --git a/.gitignore b/.gitignore
index fa9d411..cec6978 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,8 @@
node_modules
dist
android
+playwright-report
+test-results
*.log
.DS_Store
Thumbs.db
diff --git a/README.md b/README.md
index ece5c67..e0fc36e 100644
--- a/README.md
+++ b/README.md
@@ -2,16 +2,33 @@
MindSwipe replaces doomscrolling with focused three-card learning sessions for discipline, money, work, confidence, and attention.
-> **Project status:** public prototype and Android debug build. MindSwipe currently has no account system, analytics SDK, advertising SDK, or remote user database. Progress and reminder preferences stay on the device.
+> **Project status:** installable web prototype and Android debug build. MindSwipe currently has no account system, analytics SDK, advertising SDK, or remote user database. Progress and reminder preferences stay on the device.
+
+## Open the web app
+
+The GitHub Pages deployment is configured for:
+
+**https://daniel-techai.github.io/MindSwipe/**
+
+The URL becomes live after the Pages workflow is enabled for the repository and this work reaches `main`.
+
+### Install on Android or desktop
+
+1. Open the web app in Chrome on Android, Windows, macOS, or Linux.
+2. In MindSwipe, choose **Show install help** or open **Settings > Install MindSwipe**.
+3. Use Chrome's **Install app** or **Add to Home screen** action when offered.
+
+The installed Progressive Web App opens in its own window and keeps the app shell available offline after the first successful visit. Browser notifications only work while the web app is open; scheduled background reminders are a native Android capability.
## What works
-- Mood-based three-card rescue sessions with touch gestures and explicit controls.
+- Mood-based three-card rescue sessions with touch gestures and explicit keyboard-accessible controls.
- Practical content packs for focus, habits, work, money basics, and confidence.
- Saved-card replay, XP, streaks, missions, and rescued-time tracking.
-- Local progress storage with a complete in-app reset.
-- Installable web-app metadata and a Capacitor Android wrapper.
-- Optional Android local notifications and haptic feedback.
+- Local progress storage with a confirmed in-app reset.
+- Installable PWA with scoped GitHub Pages paths, raster icons, and an offline service worker.
+- Capacitor Android wrapper with optional local notifications and haptic feedback.
+- Responsive layouts, visible focus states, reduced motion, skip navigation, and text alternatives for gesture actions.
## Run locally
@@ -28,7 +45,13 @@ Open the address printed by Vite. Before committing a change, run:
npm run check
```
-The check creates a production web build in `dist/`. There is no automated test suite yet.
+That command lints the React accessibility and hooks rules, runs the service-worker tests, and creates the production web build in `dist/`.
+
+## Static web deployment
+
+`.github/workflows/deploy-pages.yml` validates the app and publishes `dist/` to GitHub Pages whenever `main` changes. In repository **Settings > Pages**, set the source to **GitHub Actions** once. The workflow uses read-only repository access during the build and grants Pages/OIDC write permissions only to the deployment job.
+
+Relative asset URLs allow the same production bundle to work under the `/MindSwipe/` GitHub project path and in the Capacitor wrapper.
## Android debug build
@@ -41,30 +64,35 @@ npm run android:sync # after web changes
npm run android:open
```
-The repository also contains a manual `Build Android APK` workflow. It produces unsigned debug APK and AAB artifacts for testing; it does not create a Play Store release. See [Play Store preparation](docs/PLAY_STORE_PREP.md) and the [release checklist](docs/RELEASE_CHECKLIST.md).
+The manual `Build Android APK` workflow produces unsigned debug APK and AAB artifacts for device testing. These artifacts are **not signed production releases** and must not be presented as Play Store-ready downloads. A durable Android release still needs a protected signing key, signed release AAB, Play Console setup, policy forms, final store assets, and real-device/closed-track testing. See [Play Store preparation](docs/PLAY_STORE_PREP.md) and the [release checklist](docs/RELEASE_CHECKLIST.md).
## Privacy boundary
-The current app stores onboarding choices, progress, saved cards, streaks, and reminder settings in local storage. Local notifications are scheduled on the device. Adding accounts, analytics, ads, payments, crash reporting, or cloud sync requires a fresh code review, an updated privacy notice, and updated store disclosures.
+The current app stores onboarding choices, progress, saved cards, streaks, and reminder settings in local storage. Native local notifications are scheduled on the device. Adding accounts, analytics, ads, payments, crash reporting, or cloud sync requires a fresh code review, an updated privacy notice, and updated store disclosures.
-The bundled privacy policy is a draft until a real support contact and hosted policy URL are added.
+The bundled privacy policy is a draft until a monitored support contact and final hosted policy URL are added.
## Repository map
-- `src/App.jsx` — application flow, progress state, reminders, and session logic.
-- `src/content.js` and `src/quoteBank.js` — learning content.
-- `src/*.css` — visual system and responsive layout.
-- `public/` — PWA metadata, icons, and the privacy page.
-- `capacitor.config.json` — native wrapper identity and notification configuration.
-- `docs/` — product direction, platform plans, store copy, and release checks.
-- `.github/workflows/build-android.yml` — manually triggered debug artifact build.
+- `src/App.jsx` -- application flow, progress state, reminders, install prompt, and session logic.
+- `src/pwa.js` -- base-path-safe service-worker registration.
+- `src/content.js` and `src/quoteBank.js` -- learning content.
+- `src/*.css` -- responsive presentation and accessibility states.
+- `public/` -- PWA metadata, raster icons, source icon, and privacy page.
+- `scripts/create-service-worker.mjs` -- deterministic offline worker generation after each build.
+- `tests/` -- service-worker and GitHub project-path coverage.
+- `capacitor.config.json` -- native wrapper identity and notification configuration.
+- `docs/` -- product direction, platform plans, store copy, and release checks.
+- `.github/workflows/quality.yml` -- pull-request lint, test, and build gate.
+- `.github/workflows/deploy-pages.yml` -- static web deployment.
+- `.github/workflows/build-android.yml` -- manually triggered debug Android artifacts.
For design boundaries and data flow, read [the architecture guide](docs/ARCHITECTURE.md).
## Contributing and security
-Read [CONTRIBUTING.md](CONTRIBUTING.md) before proposing a change. Please report suspected security or privacy problems privately using GitHub's security-advisory flow described in [SECURITY.md](SECURITY.md).
+Read [CONTRIBUTING.md](CONTRIBUTING.md) before proposing a change. Report suspected security or privacy problems privately using GitHub's security-advisory flow described in [SECURITY.md](SECURITY.md).
## License
-Copyright © 2026 MindSwipe. All rights reserved. The public repository makes the source reviewable but does not grant permission to copy, redistribute, sell, or create derivative products. See [LICENSE](LICENSE).
+Copyright (c) 2026 MindSwipe. All rights reserved. The public repository makes the source reviewable but does not grant permission to copy, redistribute, sell, or create derivative products. See [LICENSE](LICENSE).
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
index 6d131e3..fb3fd41 100644
--- a/docs/ARCHITECTURE.md
+++ b/docs/ARCHITECTURE.md
@@ -16,8 +16,10 @@ content modules ──> React session UI ──> local progress state
- `src/content.js`, `src/quoteBank.js`: user-facing learning material.
- `src/App.jsx`: navigation, session selection, progress persistence, reminders, and native capability checks.
+- `src/pwa.js`: base-path-safe service-worker registration.
- `src/*.css`: responsive presentation.
- `public/manifest.webmanifest`: installable web-app identity.
+- `scripts/create-service-worker.mjs`: deterministic precache generation from the completed Vite build.
- `capacitor.config.json`: Android application ID, web output directory, and native plugin configuration.
## Data and trust boundaries
@@ -32,4 +34,4 @@ These statements must be revalidated whenever networking, analytics, ads, accoun
## Release boundaries
-`npm run build` validates the web bundle. The manual GitHub workflow generates unsigned debug artifacts. Production distribution still requires signed builds, final raster assets, store-policy review, device testing, and a public support contact.
+`npm run check` lints, tests, and builds the web app. GitHub Pages publishes the installable PWA from `main`. The manual Android workflow generates unsigned debug artifacts only. Production store distribution still requires a protected signing process, a signed release AAB, store-policy review, device testing, and a public support contact.
diff --git a/e2e/app.spec.js b/e2e/app.spec.js
new file mode 100644
index 0000000..0fdc7c6
--- /dev/null
+++ b/e2e/app.spec.js
@@ -0,0 +1,64 @@
+import AxeBuilder from '@axe-core/playwright';
+import { expect, test } from '@playwright/test';
+
+test.beforeEach(async ({ page }) => {
+ await page.goto('/');
+});
+
+test('loads an accessible first-run experience', async ({ page }) => {
+ await expect(page).toHaveTitle('MindSwipe');
+ await expect(page.getByRole('heading', { level: 1, name: /learn the app/i })).toBeVisible();
+
+ const results = await new AxeBuilder({ page }).analyze();
+ const seriousViolations = results.violations.filter(({ impact }) => impact === 'serious' || impact === 'critical');
+ expect(seriousViolations).toEqual([]);
+});
+
+test('supports keyboard navigation and registers its offline worker', async ({ page }) => {
+ const skipLink = page.getByRole('link', { name: 'Skip to main content' });
+ await skipLink.focus();
+ await page.keyboard.press('Enter');
+ await expect(page.locator('#main-content')).toBeFocused();
+
+ await page.locator('.tutorialStartOrb').focus();
+ await page.keyboard.press('Enter');
+ await expect(page.getByText('Move the card, then let it fly.')).toBeVisible();
+
+ const scope = await page.evaluate(async () => (await navigator.serviceWorker.ready).scope);
+ expect(scope).toBe(new URL('./', page.url()).href);
+});
+
+test('keeps the home and card flows usable without swipe gestures', async ({ page }) => {
+ await page.evaluate(() => {
+ localStorage.setItem('mindSwipeProgress', JSON.stringify({
+ tutorialSeen: true,
+ onboarded: true,
+ interests: ['focus', 'money'],
+ activePack: 'all'
+ }));
+ });
+ await page.reload();
+
+ await expect(page.getByRole('heading', { level: 1, name: 'MindSwipe' })).toBeVisible();
+ await expect(page.getByRole('heading', { name: /use mindswipe like an app/i })).toBeVisible();
+ const results = await new AxeBuilder({ page }).analyze();
+ expect(results.violations.filter(({ impact }) => impact === 'serious' || impact === 'critical')).toEqual([]);
+
+ await page.getByRole('button', { name: /start a new swipe/i }).click();
+ await expect(page.getByRole('button', { name: 'Save' })).toBeVisible();
+ await page.getByRole('button', { name: 'Save' }).focus();
+ await page.keyboard.press('Enter');
+ await expect(page.locator('[aria-label="Card 2 of 3"]')).toBeVisible();
+});
+
+test('ships a project-path-safe install manifest', async ({ request }) => {
+ const response = await request.get('./manifest.webmanifest');
+ expect(response.ok()).toBeTruthy();
+ const manifest = await response.json();
+ expect(manifest.start_url).toBe('./');
+ expect(manifest.scope).toBe('./');
+ expect(manifest.icons).toEqual(expect.arrayContaining([
+ expect.objectContaining({ sizes: '192x192', type: 'image/png' }),
+ expect.objectContaining({ sizes: '512x512', type: 'image/png', purpose: 'maskable' })
+ ]));
+});
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 0000000..25e5178
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,42 @@
+import js from '@eslint/js';
+import jsxA11y from 'eslint-plugin-jsx-a11y';
+import reactHooks from 'eslint-plugin-react-hooks';
+import reactRefresh from 'eslint-plugin-react-refresh';
+import globals from 'globals';
+
+export default [
+ {
+ ignores: ['dist/**', 'android/**', 'node_modules/**']
+ },
+ {
+ files: ['src/**/*.{js,jsx}'],
+ ...js.configs.recommended,
+ languageOptions: {
+ ecmaVersion: 'latest',
+ globals: globals.browser,
+ parserOptions: {
+ ecmaFeatures: { jsx: true },
+ sourceType: 'module'
+ }
+ },
+ plugins: {
+ 'jsx-a11y': jsxA11y,
+ 'react-hooks': reactHooks,
+ 'react-refresh': reactRefresh
+ },
+ rules: {
+ ...jsxA11y.flatConfigs.recommended.rules,
+ ...reactHooks.configs.flat.recommended.rules,
+ 'react-refresh/only-export-components': 'off'
+ }
+ },
+ {
+ files: ['scripts/**/*.mjs', 'tests/**/*.js', 'e2e/**/*.js', 'vite.config.js', 'playwright.config.js'],
+ ...js.configs.recommended,
+ languageOptions: {
+ ecmaVersion: 'latest',
+ globals: globals.node,
+ sourceType: 'module'
+ }
+ }
+];
diff --git a/index.html b/index.html
index 66985e2..bc50759 100644
--- a/index.html
+++ b/index.html
@@ -6,10 +6,14 @@
MindSwipe
+
+
+
-
-
+
+
+
diff --git a/package-lock.json b/package-lock.json
index 203e82a..78c330b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,13 +19,34 @@
"vite": "^7.3.2"
},
"devDependencies": {
+ "@axe-core/playwright": "^4.12.1",
"@capacitor/android": "^8.3.4",
- "@capacitor/cli": "^8.3.4"
+ "@capacitor/cli": "^8.3.4",
+ "@eslint/js": "^9.39.2",
+ "@playwright/test": "^1.62.1",
+ "eslint": "^9.39.2",
+ "eslint-plugin-jsx-a11y": "^6.10.2",
+ "eslint-plugin-react-hooks": "^7.0.1",
+ "eslint-plugin-react-refresh": "^0.4.24",
+ "globals": "^17.2.0"
},
"engines": {
"node": ">=24"
}
},
+ "node_modules/@axe-core/playwright": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.12.1.tgz",
+ "integrity": "sha512-rMd7xriptqKpP+w5265i4Hdkv2X5kbu6uiBi/B2I7uf3hieRBM3qDCfaKPtxfiYb2mKXfF+yLODJwIx+Jv1GDw==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "axe-core": "~4.12.1"
+ },
+ "peerDependencies": {
+ "playwright-core": ">= 1.0.0"
+ }
+ },
"node_modules/@babel/code-frame": {
"version": "7.29.7",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
@@ -793,6 +814,291 @@
"node": ">=18"
}
},
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz",
+ "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.21.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz",
+ "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.7",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.5"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@eslint/config-array/node_modules/brace-expansion": {
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
+ "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
+ "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.6.tgz",
+ "integrity": "sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.14.0",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.3.0",
+ "minimatch": "^3.1.5",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.39.5",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz",
+ "integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
+ "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
+ "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz",
+ "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/types": "^0.15.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz",
+ "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/core": "^0.19.2",
+ "@humanfs/types": "^0.15.0",
+ "@humanwhocodes/retry": "^0.4.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/types": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz",
+ "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
"node_modules/@ionic/cli-framework-output": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/@ionic/cli-framework-output/-/cli-framework-output-2.2.8.tgz",
@@ -999,6 +1305,22 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@playwright/test": {
+ "version": "1.62.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.1.tgz",
+ "integrity": "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright": "1.62.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
"node_modules/@rolldown/pluginutils": {
"version": "1.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz",
@@ -1387,6 +1709,13 @@
"@types/node": "*"
}
},
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/node": {
"version": "26.1.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
@@ -1434,6 +1763,46 @@
"node": ">=14.6"
}
},
+ "node_modules/acorn": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
+ "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -1460,6 +1829,130 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "is-array-buffer": "^3.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz",
+ "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.24.0",
+ "es-object-atoms": "^1.1.1",
+ "get-intrinsic": "^1.3.0",
+ "is-string": "^1.1.1",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz",
+ "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz",
+ "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ast-types-flow": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
@@ -1470,6 +1963,16 @@
"node": ">=8"
}
},
+ "node_modules/async-function": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
+ "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/at-least-node": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -1480,14 +1983,50 @@
"node": ">= 4.0.0"
}
},
- "node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
"engines": {
- "node": "18 || 20 || >=22"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.12.1.tgz",
+ "integrity": "sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
}
},
"node_modules/base64-js": {
@@ -1602,6 +2141,66 @@
"node": "*"
}
},
+ "node_modules/call-bind": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz",
+ "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/caniuse-lite": {
"version": "1.0.30001806",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz",
@@ -1622,6 +2221,23 @@
],
"license": "CC-BY-4.0"
},
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
"node_modules/chownr": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
@@ -1662,6 +2278,13 @@
"node": ">=18"
}
},
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
@@ -1683,6 +2306,67 @@
"node": ">= 8"
}
},
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/inspect-js"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
@@ -1700,6 +2384,31 @@
}
}
},
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/define-lazy-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
@@ -1710,6 +2419,39 @@
"node": ">=8"
}
},
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/electron-to-chromium": {
"version": "1.5.397",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.397.tgz",
@@ -1746,6 +2488,177 @@
"node": ">=6"
}
},
+ "node_modules/es-abstract": {
+ "version": "1.24.2",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz",
+ "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.2",
+ "arraybuffer.prototype.slice": "^1.0.4",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "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.1",
+ "es-set-tostringtag": "^2.1.0",
+ "es-to-primitive": "^1.3.0",
+ "function.prototype.name": "^1.1.8",
+ "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.2",
+ "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.1",
+ "regexp.prototype.flags": "^1.5.4",
+ "safe-array-concat": "^1.1.3",
+ "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.10",
+ "string.prototype.trimend": "^1.0.9",
+ "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.7",
+ "unbox-primitive": "^1.1.0",
+ "which-typed-array": "^1.1.19"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-abstract-get": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz",
+ "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.2",
+ "is-callable": "^1.2.7",
+ "object-inspect": "^1.13.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
+ "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz",
+ "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz",
+ "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/esbuild": {
"version": "0.28.1",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
@@ -1796,72 +2709,567 @@
"node": ">=6"
}
},
- "node_modules/fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "pend": "~1.2.0"
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/fdir": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
- "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "node_modules/eslint": {
+ "version": "9.39.5",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.5.tgz",
+ "integrity": "sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.21.2",
+ "@eslint/config-helpers": "^0.4.2",
+ "@eslint/core": "^0.17.0",
+ "@eslint/eslintrc": "^3.3.6",
+ "@eslint/js": "9.39.5",
+ "@eslint/plugin-kit": "^0.4.1",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "ajv": "^6.14.0",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.4.0",
+ "eslint-visitor-keys": "^4.2.1",
+ "espree": "^10.4.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.5",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
"engines": {
- "node": ">=12.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
},
"peerDependencies": {
- "picomatch": "^3 || ^4"
+ "jiti": "*"
},
"peerDependenciesMeta": {
- "picomatch": {
+ "jiti": {
"optional": true
}
}
},
- "node_modules/fs-extra": {
- "version": "11.4.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz",
- "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==",
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz",
+ "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "aria-query": "^5.3.2",
+ "array-includes": "^3.1.8",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "^4.10.0",
+ "axobject-query": "^4.1.0",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.includes": "^2.0.1"
},
"engines": {
- "node": ">=14.14"
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9"
}
},
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": {
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
+ "dev": true,
"license": "MIT",
- "engines": {
- "node": ">=6.9.0"
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/glob": {
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz",
+ "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.24.4",
+ "@babel/parser": "^7.24.4",
+ "hermes-parser": "^0.25.1",
+ "zod": "^3.25.0 || ^4.0.0",
+ "zod-validation-error": "^3.5.0 || ^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react-refresh": {
+ "version": "0.4.26",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz",
+ "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "eslint": ">=8.40"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.18",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
+ "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz",
+ "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/for-each": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.4.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz",
+ "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz",
+ "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/generator-function": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
+ "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
"version": "13.0.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
"integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
@@ -1876,15 +3284,219 @@
"node": "18 || 20 || >=22"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "17.8.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.8.0.tgz",
+ "integrity": "sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/has-bigints": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
+ "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hermes-estree": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
+ "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/hermes-parser": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz",
+ "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hermes-estree": "0.25.1"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
- "license": "ISC"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
},
"node_modules/inherits": {
"version": "2.0.4",
@@ -1903,6 +3515,140 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/internal-slot": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.2",
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-async-function": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "async-function": "^1.0.0",
+ "call-bound": "^1.0.3",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
+ "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-docker": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
@@ -1919,6 +3665,48 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-document.all": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz",
+ "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -1929,6 +3717,227 @@
"node": ">=8"
}
},
+ "node_modules/is-generator-function": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
+ "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.4",
+ "generator-function": "^2.0.0",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
+ "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -1942,6 +3951,13 @@
"node": ">=8"
}
},
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -1955,6 +3971,29 @@
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"license": "MIT"
},
+ "node_modules/js-yaml": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz",
+ "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
"node_modules/jsesc": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
@@ -1967,6 +4006,27 @@
"node": ">=6"
}
},
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -1992,6 +4052,32 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
"node_modules/kleur": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
@@ -2002,6 +4088,63 @@
"node": ">=6"
}
},
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.23",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
+ "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "language-subtag-registry": "^0.3.20"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -2011,6 +4154,16 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/minimatch": {
"version": "10.2.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
@@ -2100,6 +4253,13 @@
"node": ">=16.0.0"
}
},
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/node-releases": {
"version": "2.0.51",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz",
@@ -2109,6 +4269,88 @@
"node": ">=18"
}
},
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0",
+ "has-symbols": "^1.1.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz",
+ "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/open": {
"version": "8.4.2",
"resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
@@ -2127,6 +4369,75 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/own-keys": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz",
+ "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.4",
+ "get-intrinsic": "^1.3.0",
+ "object-keys": "^1.1.1",
+ "safe-push-apply": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/package-json-from-dist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
@@ -2134,6 +4445,29 @@
"dev": true,
"license": "BlueOak-1.0.0"
},
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -2196,6 +4530,53 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/playwright": {
+ "version": "1.62.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz",
+ "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.62.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
+ }
+ },
+ "node_modules/playwright-core": {
+ "version": "1.62.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz",
+ "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/plist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.1.1.tgz",
@@ -2211,6 +4592,16 @@
"node": ">=10.4.0"
}
},
+ "node_modules/possible-typed-array-names": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/postcss": {
"version": "8.5.24",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.24.tgz",
@@ -2239,6 +4630,16 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -2263,6 +4664,16 @@
"node": ">=6"
}
},
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/react": {
"version": "19.2.8",
"resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz",
@@ -2308,6 +4719,60 @@
"node": ">= 6"
}
},
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.9",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.7",
+ "get-proto": "^1.0.1",
+ "which-builtin-type": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/rimraf": {
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
@@ -2372,6 +4837,26 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/safe-array-concat": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz",
+ "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -2393,6 +4878,41 @@
],
"license": "MIT"
},
+ "node_modules/safe-push-apply": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/sax": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
@@ -2419,6 +4939,55 @@
"node": ">=10"
}
},
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -2442,6 +5011,82 @@
"node": ">=8"
}
},
+ "node_modules/side-channel": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
+ "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
@@ -2493,6 +5138,20 @@
"node": ">= 10.x"
}
},
+ "node_modules/stop-iteration-iterator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
+ "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "internal-slot": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -2518,6 +5177,81 @@
"node": ">=8"
}
},
+ "node_modules/string.prototype.includes": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz",
+ "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz",
+ "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz",
+ "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.9",
+ "call-bound": "^1.0.4",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -2531,6 +5265,32 @@
"node": ">=8"
}
},
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/tar": {
"version": "7.5.22",
"resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz",
@@ -2600,6 +5360,97 @@
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD"
},
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.15",
+ "reflect.getprototypeof": "^1.0.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz",
+ "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/typescript": {
"version": "5.9.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
@@ -2613,6 +5464,25 @@
"node": ">=14.17"
}
},
+ "node_modules/unbox-primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "which-boxed-primitive": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/undici-types": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
@@ -2670,6 +5540,16 @@
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -2767,6 +5647,105 @@
"node": ">= 8"
}
},
+ "node_modules/which-boxed-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.1",
+ "is-number-object": "^1.1.1",
+ "is-string": "^1.1.1",
+ "is-symbol": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.1.0",
+ "is-finalizationregistry": "^1.1.0",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.2.1",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.1.0",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.22",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz",
+ "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -2835,6 +5814,42 @@
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
}
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
+ "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zod-validation-error": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz",
+ "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "zod": "^3.25.0 || ^4.0.0"
+ }
}
}
}
diff --git a/package.json b/package.json
index 653442a..eafbb66 100644
--- a/package.json
+++ b/package.json
@@ -10,8 +10,11 @@
},
"scripts": {
"dev": "vite --host 0.0.0.0",
- "build": "vite build",
- "check": "npm run build",
+ "build": "vite build && node scripts/create-service-worker.mjs",
+ "lint": "eslint src scripts tests e2e vite.config.js playwright.config.js",
+ "test": "node --test tests/*.test.js",
+ "test:e2e": "playwright test",
+ "check": "npm run lint && npm test && npm run build",
"preview": "vite preview --host 0.0.0.0",
"android:add": "npm run build && cap add android",
"android:sync": "npm run build && cap sync android",
@@ -29,7 +32,15 @@
},
"devDependencies": {
"@capacitor/android": "^8.3.4",
- "@capacitor/cli": "^8.3.4"
+ "@capacitor/cli": "^8.3.4",
+ "@axe-core/playwright": "^4.12.1",
+ "@eslint/js": "^9.39.2",
+ "@playwright/test": "^1.62.1",
+ "eslint": "^9.39.2",
+ "eslint-plugin-jsx-a11y": "^6.10.2",
+ "eslint-plugin-react-hooks": "^7.0.1",
+ "eslint-plugin-react-refresh": "^0.4.24",
+ "globals": "^17.2.0"
},
"packageManager": "npm@11.9.0"
}
diff --git a/playwright.config.js b/playwright.config.js
new file mode 100644
index 0000000..d0514ff
--- /dev/null
+++ b/playwright.config.js
@@ -0,0 +1,24 @@
+import { defineConfig, devices } from '@playwright/test';
+
+export default defineConfig({
+ testDir: './e2e',
+ fullyParallel: false,
+ timeout: 60_000,
+ forbidOnly: Boolean(process.env.CI),
+ retries: process.env.CI ? 1 : 0,
+ reporter: process.env.CI ? 'github' : 'list',
+ use: {
+ baseURL: 'http://127.0.0.1:4173/',
+ trace: 'retain-on-failure'
+ },
+ projects: [
+ { name: 'desktop-chromium', use: { ...devices['Desktop Chrome'] } },
+ { name: 'android-chromium', use: { ...devices['Pixel 7'] } }
+ ],
+ webServer: {
+ command: 'npm run preview -- --port 4173',
+ url: 'http://127.0.0.1:4173/',
+ reuseExistingServer: !process.env.CI,
+ timeout: 120_000
+ }
+});
diff --git a/public/icons/icon-180.png b/public/icons/icon-180.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ceeabc20105da52a6c55eac15a4965b25640160
GIT binary patch
literal 22666
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
literal 0
HcmV?d00001
diff --git a/public/icons/icon-192.png b/public/icons/icon-192.png
new file mode 100644
index 0000000000000000000000000000000000000000..4aae42cd1dc58a21c26c6fd127393e37e34ca3e5
GIT binary patch
literal 24107
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 Vlkj<%3YL6*2A)~J0Q~G_2J9li+b{Z
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