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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

@Sdq>IbTPpN$%YHWK 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 literal 0 HcmV?d00001 diff --git a/public/icons/icon-maskable-512.png b/public/icons/icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..79e1d7b00b0faf876d8573058591809e16eee5c8 GIT binary patch literal 78817 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 literal 0 HcmV?d00001 diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest index e42fbbc..8595b26 100644 --- a/public/manifest.webmanifest +++ b/public/manifest.webmanifest @@ -2,19 +2,35 @@ "name": "MindSwipe", "short_name": "MindSwipe", "description": "Replace doomscrolling with short useful rescue sessions.", - "start_url": "/", - "scope": "/", + "id": "./", + "start_url": "./", + "scope": "./", "display": "standalone", + "display_override": ["window-controls-overlay", "standalone", "minimal-ui"], "background_color": "#0f1115", "theme_color": "#0f1115", - "orientation": "portrait", + "orientation": "any", + "lang": "en", + "dir": "ltr", "categories": ["education", "productivity", "health"], "icons": [ { - "src": "/favicon.svg", + "src": "icons/icon-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any" + }, + { + "src": "icons/icon-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any" + }, + { + "src": "icons/icon-maskable-512.png", "sizes": "512x512", - "type": "image/svg+xml", - "purpose": "any maskable" + "type": "image/png", + "purpose": "maskable" } ] } diff --git a/scripts/create-service-worker.mjs b/scripts/create-service-worker.mjs new file mode 100644 index 0000000..2a405bc --- /dev/null +++ b/scripts/create-service-worker.mjs @@ -0,0 +1,92 @@ +import { createHash } from 'node:crypto'; +import { readdir, readFile, writeFile } from 'node:fs/promises'; +import path from 'node:path'; +import { pathToFileURL } from 'node:url'; + +const serviceWorkerName = 'sw.js'; + +export async function listBuildFiles(directory, relativeDirectory = '') { + const entries = await readdir(path.join(directory, relativeDirectory), { withFileTypes: true }); + const files = []; + + for (const entry of entries) { + const relativePath = path.posix.join(relativeDirectory.replaceAll('\\', '/'), entry.name); + if (entry.isDirectory()) files.push(...await listBuildFiles(directory, relativePath)); + else if (relativePath !== serviceWorkerName) files.push(relativePath); + } + + return files.sort(); +} + +export function createServiceWorkerSource(files, version) { + return `const CACHE_NAME = 'mindswipe-${version}'; +const PRECACHE_FILES = ${JSON.stringify(files)}; + +self.addEventListener('install', (event) => { + event.waitUntil((async () => { + const cache = await caches.open(CACHE_NAME); + const urls = PRECACHE_FILES.map((file) => new URL(file, self.registration.scope).href); + await cache.addAll(urls); + await self.skipWaiting(); + })()); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil((async () => { + const keys = await caches.keys(); + await Promise.all(keys.filter((key) => key.startsWith('mindswipe-') && key !== CACHE_NAME).map((key) => caches.delete(key))); + await self.clients.claim(); + })()); +}); + +self.addEventListener('fetch', (event) => { + if (event.request.method !== 'GET') return; + const requestUrl = new URL(event.request.url); + if (requestUrl.origin !== self.location.origin) return; + + if (event.request.mode === 'navigate') { + event.respondWith((async () => { + try { + const response = await fetch(event.request); + if (response.ok) { + const cache = await caches.open(CACHE_NAME); + await cache.put(event.request, response.clone()); + } + return response; + } catch { + return (await caches.match(event.request)) || caches.match(new URL('index.html', self.registration.scope).href); + } + })()); + return; + } + + event.respondWith((async () => { + const cached = await caches.match(event.request); + if (cached) return cached; + const response = await fetch(event.request); + if (response.ok) { + const cache = await caches.open(CACHE_NAME); + await cache.put(event.request, response.clone()); + } + return response; + })()); +}); +`; +} + +export async function writeServiceWorker(directory) { + const files = await listBuildFiles(directory); + const hash = createHash('sha256'); + for (const file of files) { + hash.update(file); + hash.update(await readFile(path.join(directory, file))); + } + const version = hash.digest('hex').slice(0, 12); + await writeFile(path.join(directory, serviceWorkerName), createServiceWorkerSource(files, version), 'utf8'); + return { files, version }; +} + +const invokedPath = process.argv[1] ? pathToFileURL(path.resolve(process.argv[1])).href : ''; +if (import.meta.url === invokedPath) { + await writeServiceWorker(path.resolve('dist')); +} diff --git a/src/App.jsx b/src/App.jsx index 91a1719..9c4707c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -6,6 +6,7 @@ import { createRoot } from 'react-dom/client'; import { dailyQuotes, extraActionMoves, extraLessons, packOptions } from './content.js'; import { famousQuotes } from './quoteBank.js'; import MindSwipeLogo from './MindSwipeLogo.jsx'; +import { registerMindSwipeServiceWorker } from './pwa.js'; import './styles.css'; import './packs.css'; import './app-shell.css'; @@ -692,6 +693,15 @@ function getXpToNextLevel(xp) { const remainder = xp % 120; return remainder === 0 ? 120 : 120 - remainder; } + +function isRunningStandalone() { + return window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone === true; +} + +function SkipLink() { + return Skip to main content; +} + function App() { const [progress, setProgress] = useState(readProgress); const [screen, setScreen] = useState(progress.tutorialSeen ? (progress.onboarded ? 'home' : 'onboarding') : 'tutorial'); @@ -714,6 +724,9 @@ function App() { const [sessionResult, setSessionResult] = useState(null); const touchStartRef = useRef(null); const [swipeFeedback, setSwipeFeedback] = useState(''); + const [installPrompt, setInstallPrompt] = useState(null); + const [installMessage, setInstallMessage] = useState(isRunningStandalone() ? 'MindSwipe is installed on this device.' : ''); + const [isInstalled, setIsInstalled] = useState(isRunningStandalone); function commit(next) { setProgress(next); @@ -721,9 +734,8 @@ function App() { } const today = todayKey(); - const interestKey = selectedInterests.join('|'); - const dailyQuote = useMemo(() => getDailyQuote(today, activeMood, activePack, selectedInterests), [today, activeMood, activePack, interestKey]); - const yesterdayQuote = useMemo(() => getDailyQuote(dateKey(addDays(new Date(), -1)), activeMood, activePack, selectedInterests), [activeMood, activePack, interestKey]); + const dailyQuote = useMemo(() => getDailyQuote(today, activeMood, activePack, selectedInterests), [today, activeMood, activePack, selectedInterests]); + const yesterdayQuote = useMemo(() => getDailyQuote(dateKey(addDays(new Date(), -1)), activeMood, activePack, selectedInterests), [activeMood, activePack, selectedInterests]); const nextSession = useMemo(() => { const profile = getInterestProfile(selectedInterests); @@ -742,7 +754,7 @@ function App() { .map((item) => item.lesson); const offset = (progress.sessions + quizAttempt * sessionSize) % Math.max(1, scored.length); return [...scored.slice(offset), ...scored.slice(0, offset)].slice(0, sessionSize); - }, [activeMood, activePack, interestKey, progress.completed, progress.sessions, quizAttempt]); + }, [activeMood, activePack, selectedInterests, progress.completed, progress.sessions, quizAttempt]); const savedLessons = allLessons.filter((lesson) => progress.saved.includes(lesson.id)); const recentLessons = allLessons.filter((lesson) => progress.recent.includes(lesson.id)).slice(0, 6); @@ -760,15 +772,28 @@ function App() { useEffect(() => { if (!progress.quoteReminderEnabled || !progress.quoteReminderTime || Capacitor.isNativePlatform()) return undefined; const target = getNextReminderDate(progress.quoteReminderTime); - const timeoutId = window.setTimeout(() => showQuoteReminder(dailyQuote), target.getTime() - Date.now()); + const timeoutId = window.setTimeout(() => { + if (progress.quoteNotifiedToday === today) return; + hapticNotify(NotificationType.Success, [12, 18, 12]); + const body = dailyQuote.source ? `${dailyQuote.text} - ${dailyQuote.source}` : dailyQuote.text; + if ('Notification' in window && Notification.permission === 'granted') { + new Notification('MindSwipe daily quote', { body: `${body} ${dailyQuote.action}` }); + } + setQuoteToast(dailyQuote); + setProgress((current) => { + const next = { ...current, quoteNotifiedToday: today }; + saveProgress(next); + return next; + }); + }, target.getTime() - Date.now()); return () => window.clearTimeout(timeoutId); - }, [dailyQuote, progress.quoteNotifiedToday, progress.quoteReminderEnabled, progress.quoteReminderTime]); + }, [dailyQuote, progress.quoteNotifiedToday, progress.quoteReminderEnabled, progress.quoteReminderTime, today]); useEffect(() => { if (!Capacitor.isNativePlatform() || !progress.quoteReminderEnabled) return; scheduleNativeQuoteReminders({ time: progress.quoteReminderTime, mood: activeMood, activePack, interestIds: selectedInterests }) .catch(() => setQuoteMessage('Native quote reminder needs notification permission.')); - }, [activeMood, activePack, progress.quoteReminderEnabled, progress.quoteReminderTime, interestKey]); + }, [activeMood, activePack, progress.quoteReminderEnabled, progress.quoteReminderTime, selectedInterests]); useEffect(() => { if (!Capacitor.isNativePlatform()) return undefined; @@ -784,6 +809,27 @@ function App() { }; }, []); + useEffect(() => { + function handleInstallPrompt(event) { + event.preventDefault(); + setInstallPrompt(event); + setInstallMessage('MindSwipe is ready to install.'); + } + + function handleInstalled() { + setInstallPrompt(null); + setIsInstalled(true); + setInstallMessage('MindSwipe is installed and can open from your apps.'); + } + + window.addEventListener('beforeinstallprompt', handleInstallPrompt); + window.addEventListener('appinstalled', handleInstalled); + return () => { + window.removeEventListener('beforeinstallprompt', handleInstallPrompt); + window.removeEventListener('appinstalled', handleInstalled); + }; + }, []); + function toggleInterest(id) { hapticSelect(); setSelectedInterests((current) => current.includes(id) ? current.filter((item) => item !== id) : [...current, id]); @@ -803,17 +849,6 @@ function App() { setScreen(progress.onboarded ? 'home' : 'onboarding'); } - function showQuoteReminder(quote, force = false) { - if (!force && progress.quoteNotifiedToday === today) return; - hapticNotify(NotificationType.Success, [12, 18, 12]); - const body = quote.source ? `${quote.text} - ${quote.source}` : quote.text; - if ('Notification' in window && Notification.permission === 'granted') { - new Notification('MindSwipe daily quote', { body: `${body} ${quote.action}` }); - } - setQuoteToast(quote); - commit({ ...progress, quoteNotifiedToday: today }); - } - async function enableQuoteReminder() { hapticImpact(ImpactStyle.Light, 8); if (Capacitor.isNativePlatform()) { @@ -932,27 +967,29 @@ function App() { setDragState({ x: 0, y: 0, active: false }); if (horizontal && dx <= -64) { - hapticSwipe('save'); - setSwipeFeedback('Save'); - setExitSwipe('Save'); - window.setTimeout(() => finishCard(currentLesson, 'save'), 280); + queueCardAction('save'); return; } if (horizontal && dx >= 64) { - hapticSwipe('done'); - setSwipeFeedback('Done'); - setExitSwipe('Done'); - window.setTimeout(() => finishCard(currentLesson, 'done'), 280); + queueCardAction('done'); return; } if (!horizontal && dy >= 64) { - hapticSwipe('skip'); - setSwipeFeedback('Skip'); - setExitSwipe('Skip'); - window.setTimeout(() => finishCard(currentLesson, 'skip'), 280); + queueCardAction('skip'); } } + function queueCardAction(mode) { + if (exitSwipe) return; + const labels = { save: 'Save', skip: 'Skip', done: 'Done' }; + const label = labels[mode]; + hapticSwipe(mode); + setSwipeFeedback(label); + setExitSwipe(label); + const delay = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 20 : 280; + window.setTimeout(() => finishCard(currentLesson, mode), delay); + } + function scrollToInterestCategory(id) { hapticSelect(); document.getElementById(`interest-${id}`)?.scrollIntoView({ behavior: 'smooth', block: 'start' }); @@ -1017,6 +1054,7 @@ function App() { } function resetProgress() { + if (!window.confirm('Reset all MindSwipe progress stored on this device? This cannot be undone.')) return; localStorage.removeItem('mindSwipeProgress'); const fresh = readProgress(); setProgress(fresh); @@ -1035,12 +1073,28 @@ function App() { setActivePage('Home'); } + async function installMindSwipe() { + if (!installPrompt) { + setInstallMessage('In Chrome, open the browser menu and choose Install app or Add to Home screen.'); + return; + } + + await installPrompt.prompt(); + const result = await installPrompt.userChoice; + setInstallPrompt(null); + setInstallMessage(result.outcome === 'accepted' + ? 'Installation started. MindSwipe will appear with your apps.' + : 'Installation was cancelled. You can install it later from Settings.'); + } + if (screen === 'tutorial') { return ( -

-
+ <> + +
+
-

Learn the app by touching the flow.

+

Learn the app by touching the flow.

MindSwipe is three cards, one check, and one reminder. Tap each step and watch the part it uses.

@@ -1062,14 +1116,14 @@ function App() {
Quote 12:00
-
+
{tutorialItems.map((item, index) => ( - ))}
-
+
{activeTutorial.title}

{activeTutorial.body}

@@ -1078,37 +1132,40 @@ function App() {
+ ); } if (screen === 'onboarding') { return ( -
-
-

Pick what you want MindSwipe to help with.

+ <> + +
+
+

Pick what you want MindSwipe to help with.

Choose lanes that would genuinely make your next month better. Pick useful pressure points, not random boxes.

-
+
{selectedInterests.length} selected {selectedInterests.length < 2 ? 'Pick at least 2 useful lanes to unlock your daily run.' : 'Good. Your daily cards will adapt around these lanes.'}
-
+
+
{interestCategories.map((category) => (
- {category.label}{broadInterests.filter((interest) => interest.category === category.id).length} +

{category.label}{broadInterests.filter((interest) => interest.category === category.id).length}

{category.detail}
{broadInterests.filter((interest) => interest.category === category.id).map((interest) => ( - @@ -1117,19 +1174,21 @@ function App() {
))}
-
+
+

Choose a content style

{packOptions.slice(0, 4).map((pack) => ( - ))} -
+
+ ); } @@ -1142,12 +1201,14 @@ function App() { '--drag-rotate': `${dragRotation}deg` }; return ( -
+ <> + +
{sessionIndex + 1} / {nextSession.length} -
+
-
-{swipeFeedback ?
{swipeFeedback}
: null} +{swipeFeedback ?
{swipeFeedback}
: null}
{currentLesson.area}
-

{currentLesson.title}

+

{currentLesson.title}

{currentLesson.hook}

{currentLesson.body}

Tiny move {getMove(currentLesson)}
-
- Save - Skip - Done +

Swipe left to save, down to skip, or right to mark done. You can also use the three buttons below.

+
+ + +
-
+ {actionFlash ? (
{actionFlash.cue} @@ -1185,13 +1249,16 @@ onPointerCancel={handleCardPointerEnd}
) : null}
+ ); } if (screen === 'quiz' && quiz) { const correctAnswerCount = quiz.options.filter((option) => option.correct).length; return ( -
+ <> + +
{actionFlash ? (
3 cards cleared @@ -1210,6 +1277,7 @@ onPointerCancel={handleCardPointerEnd}
+ ); } if (screen === 'quizRetry') { return ( -
+ <> + +

Not counted yet

Close, but the streak needs proof.

@@ -1234,6 +1305,7 @@ onPointerCancel={handleCardPointerEnd}
+ ); } @@ -1243,7 +1315,9 @@ onPointerCancel={handleCardPointerEnd} const levelProgress = getLevelProgress(result.xp); const xpToNext = getXpToNextLevel(result.xp); return ( -
+ <> + +
-
+
@@ -1284,11 +1358,14 @@ onPointerCancel={handleCardPointerEnd}
+ ); } return ( -
+ <> + +
+ ); } +if (import.meta.env.PROD && !Capacitor.isNativePlatform()) { + registerMindSwipeServiceWorker().catch(() => { + // The web app still works online when service-worker registration is unavailable. + }); +} + createRoot(document.getElementById('root')).render(); diff --git a/src/MindSwipeLogo.jsx b/src/MindSwipeLogo.jsx index f559217..3ad2126 100644 --- a/src/MindSwipeLogo.jsx +++ b/src/MindSwipeLogo.jsx @@ -1,6 +1,6 @@ export default function MindSwipeLogo({ className = '' }) { return ( - +