diff --git a/.cursor/commands/opencontext-context.md b/.cursor/commands/opencontext-context.md
deleted file mode 100644
index f6f3f8b..0000000
--- a/.cursor/commands/opencontext-context.md
+++ /dev/null
@@ -1,19 +0,0 @@
---- Cursor Command: opencontext-context.md ---
----
-title: /opencontext-context
-description: Load relevant OpenContext docs for the current task (safe, no index build)
----
-
-Goal: Load enough context from OpenContext so you can proceed confidently.
-Safety: Do NOT trigger index builds by default (no `oc index build`). Prefer manifest + direct reads.
-
-1. If the target space/folder is unclear, run `oc folder ls --all` and ask the user to choose a folder (no guessing when ambiguous).
-2. Run `oc context manifest --limit 10` (or `oc context manifest . --limit 10` for broad context).
-3. Load 3–10 relevant files by `abs_path` and extract:
- - Key constraints, decisions, and current state
- - Open questions / risks
-4. Cite sources:
- - Prefer stable links `oc://doc/` when available in the manifest output.
- - Use `abs_path` + `range` only for line-level evidence.
-5. Summarize the loaded context and proceed with the user’s task.
---- End Command ---
diff --git a/.cursor/commands/opencontext-create.md b/.cursor/commands/opencontext-create.md
deleted file mode 100644
index 58e89df..0000000
--- a/.cursor/commands/opencontext-create.md
+++ /dev/null
@@ -1,25 +0,0 @@
---- Cursor Command: opencontext-create.md ---
----
-title: /opencontext-create
-description: Create a new idea or problem statement inside OpenContext
----
-
-0. **Blocking requirement**: Do NOT answer the user’s broader question until the document has been created and minimally populated.
-1. Infer the target space from recent context; if unclear, ask the user to specify the space (no default).
-2. Derive a concise idea title & summary from the current conversation, then generate a slug (kebab-case; fallback to `idea-`). Only ask the user if information is insufficient.
-3. Determine the target folder path under OpenContext (do NOT assume fixed subfolders like `ideas/`):
- - If the user gave a target folder, use it.
- - Otherwise, infer a sensible default and confirm with the user (or ask the user to choose).
- - If you are unsure what folders exist, run `oc folder ls --all` and pick/ask accordingly.
-4. Ensure the target folder exists by running `oc folder create -d ""` (safe to rerun).
-5. **[CRITICAL - DO NOT SKIP]** You MUST run: `oc doc create .md -d ""` to create the document.
- - This command registers the document in the OpenContext database.
- - DO NOT directly create the file with Write tool - you MUST use `oc doc create` first.
- - The command will output the file path after successful creation.
-6. After `oc doc create` succeeds, set `CONTEXTS_ROOT=${OPENCONTEXT_CONTEXTS_ROOT:-$HOME/.opencontext/contexts}` and edit `${CONTEXTS_ROOT}//.md` directly - do not mirror it inside the project repo.
-7. Populate that file with:
- - Title / problem statement
- - Initial description/background
- - “Related Requests” list (can be empty placeholders)
-8. Return the document path and immediately keep organizing content (no follow-up questions unless critical info is missing).
---- End Command ---
diff --git a/.cursor/commands/opencontext-help.md b/.cursor/commands/opencontext-help.md
deleted file mode 100644
index 0890863..0000000
--- a/.cursor/commands/opencontext-help.md
+++ /dev/null
@@ -1,16 +0,0 @@
---- Cursor Command: opencontext-help.md ---
----
-title: /opencontext-help
-description: Start here — choose the right OpenContext command (beginner-friendly)
----
-
-You are assisting a user who may be new to OpenContext. Your goal is to route them to the right workflow and execute it.
-
-1. Ask the user which of these they want (pick one):
- - A) "I want to find what I've written before" → use **/opencontext-search**
- - B) "I want to load background/context for the current task" → use **/opencontext-context**
- - C) "I want to create a new doc/idea" → use **/opencontext-create**
- - D) "I want to save/update a doc with what we just learned" → use **/opencontext-iterate**
-2. If they are unsure, default to **/opencontext-context**.
-3. Then run the chosen command and continue the task.
---- End Command ---
diff --git a/.cursor/commands/opencontext-iterate.md b/.cursor/commands/opencontext-iterate.md
deleted file mode 100644
index 860074f..0000000
--- a/.cursor/commands/opencontext-iterate.md
+++ /dev/null
@@ -1,16 +0,0 @@
---- Cursor Command: opencontext-iterate.md ---
----
-title: /opencontext-iterate
-description: Enrich an existing idea with additional context from OpenContext
----
-
-1. Identify the target idea document from the current discussion (ask only if ambiguous). Set `CONTEXTS_ROOT=${OPENCONTEXT_CONTEXTS_ROOT:-$HOME/.opencontext/contexts}` and load `${CONTEXTS_ROOT}/` to understand existing sections (never duplicate it under the project repo).
-2. Derive the owning space from the doc path (e.g., `/.../foo.md` → space ``). If the space is unclear, run `oc folder ls --all`. Then run `oc context manifest --limit 10` (or `oc context manifest . --limit 10`) and load each `abs_path` for inspiration.
-3. Update the Markdown directly in the global file:
- - Ensure a `## Iteration Log` section exists (create if missing).
- - Append a new entry timestamped with local date/time in readable format (e.g., `2025-12-11 17:00` or `Dec 11, 2025 5:00 PM`) that summarizes insights, cites referenced docs, and lists next steps/risks.
- - **Citation rule (DO NOT SKIP)**: when citing any OpenContext doc in `Iteration Log`, you MUST use the stable link format `oc://doc/` as the primary reference (example: `[label](oc://doc/)`). Only add `abs_path` and/or `range` when you specifically need auditability or line-level evidence. Do NOT cite using only file paths if `stable_id` is available in the manifest output.
- - Refresh any other impacted sections (Overview, Requirements, Implementation notes, etc.).
-4. Save the updated document and call `oc doc set-desc ""` so the manifest reflects the newest iteration.
-5. Report the updated doc path plus which references were used.
---- End Command ---
diff --git a/.cursor/commands/opencontext-search.md b/.cursor/commands/opencontext-search.md
deleted file mode 100644
index 163fdbf..0000000
--- a/.cursor/commands/opencontext-search.md
+++ /dev/null
@@ -1,18 +0,0 @@
---- Cursor Command: opencontext-search.md ---
----
-title: /opencontext-search
-description: Search OpenContext to find the right docs (safe, no index build by default)
----
-
-Goal: Help the user find relevant existing docs quickly.
-Safety: Do NOT trigger index builds by default (cost may be unpredictable).
-
-1. Ask the user for a short query (or infer one from the conversation).
-2. Try search in read-only mode:
- - Run: `oc search "" --format json --limit 10`
- - If it succeeds, use results to pick candidate docs and then use **/opencontext-context** (manifest + reads) to load and cite them.
-3. If search fails due to missing index:
- - Fall back to `oc context manifest --limit 20` and use doc `description` + filename triage.
- - Optionally suggest a controlled index build, but do NOT run it unless the user explicitly approves.
-4. Cite sources using stable links `oc://doc/` when available.
---- End Command ---
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 0000000..e432950
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,27 @@
+changelog:
+ template: |
+ ## Downloads
+ - **macOS**: Download `.dmg` and double-click to install.
+ - **Windows**: Download `.msi` or `.exe`.
+
+ ## 更新日志
+ $CHANGES
+
+ ## Contributors
+ $CONTRIBUTORS
+ categories:
+ - title: Features
+ labels:
+ - feature
+ - enhancement
+ - title: Bug Fixes
+ labels:
+ - bug
+ - fix
+ - title: Documentation
+ labels:
+ - docs
+ - documentation
+ - title: Other Changes
+ labels:
+ - "*"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b41e510..53e0317 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -43,7 +43,10 @@ jobs:
cd crates/opencontext-node
npm ci
npm run build:debug
-
+
+ - name: Use local native build for tests
+ run: npm uninstall @aicontextlab/core-native
+
- name: Run JS tests
run: npm test
diff --git a/.github/workflows/cli-smoke.yml b/.github/workflows/cli-smoke.yml
new file mode 100644
index 0000000..c5aba19
--- /dev/null
+++ b/.github/workflows/cli-smoke.yml
@@ -0,0 +1,28 @@
+name: CLI smoke test (no publish)
+
+on:
+ workflow_dispatch:
+
+jobs:
+ linux-cli-smoke:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: "22"
+
+ - name: Install dependencies
+ run: npm install
+
+ - name: Install CLI from repo (no publish)
+ run: npm install -g .
+
+ - name: CLI help
+ run: oc --help
+
+ - name: CLI init (expected to pass; if it fails, we capture logs)
+ run: oc init
diff --git a/.github/workflows/desktop-build.yml b/.github/workflows/desktop-build.yml
index 99e68ed..f5aa177 100644
--- a/.github/workflows/desktop-build.yml
+++ b/.github/workflows/desktop-build.yml
@@ -37,21 +37,29 @@ jobs:
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Version: $VERSION"
+ - name: Ensure tag exists (workflow_dispatch)
+ if: github.event_name == 'workflow_dispatch' && !startsWith(github.ref, 'refs/tags/desktop-v')
+ run: |
+ if [ "${{ steps.get_version.outputs.version }}" = "0.0.0-dev" ]; then
+ echo "Missing version for workflow_dispatch. Provide an input version." >&2
+ exit 1
+ fi
+ TAG="desktop-v${{ steps.get_version.outputs.version }}"
+ git fetch --tags
+ if git rev-parse "$TAG" >/dev/null 2>&1; then
+ echo "Tag $TAG already exists."
+ exit 0
+ fi
+ git tag "$TAG"
+ git push origin "$TAG"
+
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: desktop-v${{ steps.get_version.outputs.version }}
name: OpenContext Desktop v${{ steps.get_version.outputs.version }}
- body: |
- ## OpenContext Desktop v${{ steps.get_version.outputs.version }}
-
- ### 下载
- - **macOS**: 下载 `.dmg` 文件,双击安装
- - **Windows**: 下载 `.msi` 或 `.exe` 文件安装
-
- ### 更新日志
- 请查看 [CHANGELOG](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md)
+ generate_release_notes: true
draft: true
prerelease: false
@@ -67,6 +75,9 @@ jobs:
- platform: windows-latest
target: x86_64-pc-windows-msvc
artifact_name: windows
+ - platform: ubuntu-22.04
+ target: x86_64-unknown-linux-gnu
+ artifact_name: linux
runs-on: ${{ matrix.platform }}
@@ -97,8 +108,49 @@ jobs:
if: matrix.platform == 'windows-latest'
run: choco install protoc -y
+ - name: Install Linux dependencies
+ if: matrix.platform == 'ubuntu-22.04'
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y \
+ libwebkit2gtk-4.1-dev \
+ libgtk-3-dev \
+ libayatana-appindicator3-dev \
+ librsvg2-dev \
+ patchelf \
+ protobuf-compiler
+
- name: Install npm dependencies
- run: npm ci
+ run: npm ci --include=optional
+
+ - name: Import Apple signing certificate
+ if: matrix.platform == 'macos-latest'
+ env:
+ APPLE_CERTIFICATE_P12: ${{ secrets.APPLE_CERTIFICATE_P12 }}
+ APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
+ KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
+ run: |
+ CERT_PATH="$RUNNER_TEMP/apple_cert.p12"
+ KEYCHAIN_PATH="$RUNNER_TEMP/app-signing.keychain-db"
+ echo "$APPLE_CERTIFICATE_P12" | base64 -D > "$CERT_PATH"
+ security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
+ security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH"
+ security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
+ security import "$CERT_PATH" -P "$APPLE_CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k "$KEYCHAIN_PATH"
+ security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
+ security list-keychains -d user -s "$KEYCHAIN_PATH"
+ echo "KEYCHAIN_PATH=$KEYCHAIN_PATH" >> $GITHUB_ENV
+
+ - name: Resolve signing identity
+ if: matrix.platform == 'macos-latest'
+ run: |
+ SIGNING_IDENTITY=$(security find-identity -v -p codesigning "$KEYCHAIN_PATH" | awk -F\" '/Developer ID Application/ {print $2; exit}')
+ if [ -z "$SIGNING_IDENTITY" ]; then
+ echo "No Developer ID Application identity found in keychain." >&2
+ security find-identity -v -p codesigning "$KEYCHAIN_PATH" || true
+ exit 1
+ fi
+ echo "APPLE_SIGNING_IDENTITY=$SIGNING_IDENTITY" >> $GITHUB_ENV
- name: Update version in tauri.conf.json
run: |
@@ -111,17 +163,69 @@ jobs:
- name: Build Tauri app (macOS)
if: matrix.platform == 'macos-latest'
+ env:
+ APPLE_ID: ${{ secrets.APPLE_ID }}
+ APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
+ APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
+ APPLE_SIGNING_IDENTITY: ${{ env.APPLE_SIGNING_IDENTITY }}
run: npm run tauri build -- --target universal-apple-darwin
+ - name: Notarize and staple DMG (macOS)
+ if: matrix.platform == 'macos-latest'
+ env:
+ APPLE_ID: ${{ secrets.APPLE_ID }}
+ APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
+ APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
+ run: |
+ DMG_PATH=$(ls src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg | head -n 1)
+ if [ -z "$DMG_PATH" ]; then
+ echo "No DMG found to notarize." >&2
+ exit 1
+ fi
+ xcrun notarytool submit "$DMG_PATH" --apple-id "$APPLE_ID" --password "$APPLE_PASSWORD" --team-id "$APPLE_TEAM_ID" --wait
+ xcrun stapler staple "$DMG_PATH"
+
+ - name: Verify notarized DMG (macOS)
+ if: matrix.platform == 'macos-latest'
+ run: |
+ DMG_PATH=$(ls src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg | head -n 1)
+ if [ -z "$DMG_PATH" ]; then
+ echo "No DMG found to verify." >&2
+ exit 1
+ fi
+ xcrun stapler validate "$DMG_PATH"
+ MOUNT_DIR=$(mktemp -d)
+ cleanup() {
+ if mount | grep -q "$MOUNT_DIR"; then
+ hdiutil detach "$MOUNT_DIR" -quiet || true
+ fi
+ rm -rf "$MOUNT_DIR"
+ }
+ trap cleanup EXIT
+ hdiutil attach "$DMG_PATH" -nobrowse -quiet -mountpoint "$MOUNT_DIR"
+ APP_PATH=$(find "$MOUNT_DIR" -maxdepth 1 -type d -name "*.app" | head -n 1)
+ if [ -z "$APP_PATH" ]; then
+ echo "No .app found inside DMG." >&2
+ exit 1
+ fi
+ spctl -a -vv --type execute "$APP_PATH"
+
- name: Build Tauri app (Windows)
if: matrix.platform == 'windows-latest'
run: npm run tauri build
+ - name: Build Tauri app (Linux)
+ if: matrix.platform == 'ubuntu-22.04'
+ run: npm run tauri build -- --bundles appimage
+
- name: Upload to Release (macOS)
if: matrix.platform == 'macos-latest'
uses: softprops/action-gh-release@v1
with:
tag_name: desktop-v${{ needs.create-release.outputs.version }}
+ name: OpenContext Desktop v${{ needs.create-release.outputs.version }}
+ generate_release_notes: true
+ draft: true
files: |
src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg
@@ -130,10 +234,22 @@ jobs:
uses: softprops/action-gh-release@v1
with:
tag_name: desktop-v${{ needs.create-release.outputs.version }}
+ name: OpenContext Desktop v${{ needs.create-release.outputs.version }}
+ generate_release_notes: true
+ draft: true
files: |
src-tauri/target/release/bundle/msi/*.msi
src-tauri/target/release/bundle/nsis/*.exe
+ - name: Upload to Release (Linux)
+ if: matrix.platform == 'ubuntu-22.04'
+ uses: softprops/action-gh-release@v1
+ with:
+ tag_name: desktop-v${{ needs.create-release.outputs.version }}
+ draft: true
+ files: |
+ src-tauri/target/release/bundle/appimage/*.AppImage
+
publish-release:
needs: [create-release, build]
runs-on: ubuntu-latest
@@ -142,4 +258,6 @@ jobs:
uses: softprops/action-gh-release@v1
with:
tag_name: desktop-v${{ needs.create-release.outputs.version }}
+ name: OpenContext Desktop v${{ needs.create-release.outputs.version }}
+ generate_release_notes: true
draft: false
diff --git a/.github/workflows/native-build.yml b/.github/workflows/native-build.yml
index 79e0d7d..46bab00 100644
--- a/.github/workflows/native-build.yml
+++ b/.github/workflows/native-build.yml
@@ -84,6 +84,11 @@ jobs:
target: x86_64-pc-windows-msvc
build: npm run build -- --target x86_64-pc-windows-msvc
+ # Linux
+ - host: ubuntu-22.04
+ target: x86_64-unknown-linux-gnu
+ build: npm run build -- --target x86_64-unknown-linux-gnu
+
steps:
- uses: actions/checkout@v4
@@ -114,7 +119,12 @@ jobs:
if: runner.os == 'Windows'
run: choco install protoc -y
working-directory: .
-
+
+ - name: Install Protobuf (Linux)
+ if: runner.os == 'Linux'
+ run: sudo apt-get update && sudo apt-get install -y protobuf-compiler
+ working-directory: .
+
- name: Install dependencies
run: npm ci --omit=optional
@@ -194,7 +204,8 @@ jobs:
const targets = [
{ rust: 'x86_64-apple-darwin', npm: 'darwin-x64', os: 'darwin', cpu: 'x64' },
{ rust: 'aarch64-apple-darwin', npm: 'darwin-arm64', os: 'darwin', cpu: 'arm64' },
- { rust: 'x86_64-pc-windows-msvc', npm: 'win32-x64-msvc', os: 'win32', cpu: 'x64' }
+ { rust: 'x86_64-pc-windows-msvc', npm: 'win32-x64-msvc', os: 'win32', cpu: 'x64' },
+ { rust: 'x86_64-unknown-linux-gnu', npm: 'linux-x64-gnu', os: 'linux', cpu: 'x64' }
];
for (const t of targets) {
diff --git a/.gitignore b/.gitignore
index fb0556b..2178610 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,11 @@
# Dependencies
node_modules/
+# Expo
+.expo/
+.expo-shared/
+.expo-devices
+
# Database
opencontext.db
*.db
diff --git a/README.md b/README.md
index 7c961e3..80462f9 100644
--- a/README.md
+++ b/README.md
@@ -10,8 +10,20 @@
Stop repeating yourself. Start building smarter.
-
-
+
+ Bring your own coding agent. OpenContext reuses your existing CLI (Codex/Claude/OpenCode) and adds a GUI + built-in Skills/tools — no extra agent subscription.
+
+
+
+
+
+
+
+
+
+
+
+
@@ -31,11 +43,13 @@
## The Problem
-When you use an AI assistant to build things, **context gets lost** (across days, repos, chats). You end up re-explaining background, repeating decisions, and sometimes the assistant continues with the wrong assumptions.
+When you use an AI assistant to build things, **context gets lost** (across days, repos, chats). You end up re-explaining background, repeating decisions, and sometimes the assistant continues with the wrong assumptions. Most tools stop at storage and don't plug into the coding agent you already use.
## The Solution
-OpenContext is a lightweight **personal context / knowledge store** for AI assistants (Agents) and Cursor users. Write down important project context as documents, and let your assistant "load history first, then act; ship, then persist".
+OpenContext is a lightweight **personal context / knowledge store** for AI assistants (Agents) and coding tools like Cursor / Claude Code / Codex. It reuses your existing coding agent CLI (Codex/Claude/OpenCode) while adding a GUI plus built-in Skills/tools, so your agent can "load history first, then act; ship, then persist".
+
+**Skills-first support:** `oc init` generates user-level skills (Cursor/Claude Code/Codex) plus slash commands (Cursor/Claude Code), so agents can load, search, create, and iterate your context with one command.
| Before OpenContext | After OpenContext |
|-------------------|-------------------|
@@ -46,10 +60,16 @@ OpenContext is a lightweight **personal context / knowledge store** for AI assis
## What's Included
- **`oc` CLI** — manage a global `contexts/` library (folders/docs, manifests, search)
-- **MCP Server** — so Cursor/Agents can call OpenContext as tools
+- **MCP Server** — so Cursor/Claude Code/Codex/Agents can call OpenContext as tools
+- **Skills + Slash Commands** — user-level skills for Cursor/Claude Code/Codex and slash commands for Cursor/Claude Code (generated by `oc init`)
+- **Agent-ready Knowledge Layer** — reuse your existing coding agent CLI (Codex/Claude/OpenCode) with built-in skills/tools and GUI
- **Desktop App** — manage/search/edit contexts with a native UI
- **Web UI** — browse/edit contexts locally (no install required)
+## Why OpenContext for Builders
+
+OpenContext's knowledge management Agent can **be the coding agent you already use** (Codex/Claude/OpenCode). You don't pay for a separate agent — you bring your own CLI and get a ready-to-use experience: a GUI for context management plus built-in Skills and tools that let the agent read, search, create, and iterate on your knowledge.
+
## Quick Start
### Install CLI
@@ -63,24 +83,40 @@ npm install -g @aicontextlab/cli
| Path | Best For | Get Started |
|------|----------|-------------|
| 🖥️ **Desktop App** | Visual users who want a native UI | [Download from Releases](https://github.com/0xranx/OpenContext/releases) |
-| ⌨️ **CLI + Cursor** | Developers using Cursor/AI agents | `npm install -g @aicontextlab/cli && oc init` |
+| ⌨️ **CLI + Tools** | Developers using Cursor/Claude Code/Codex/AI agents | `npm install -g @aicontextlab/cli && oc init` |
| 🔧 **CLI Only** | Power users, automation | `npm install -g @aicontextlab/cli` |
-### 30-Second Setup (CLI + Cursor)
+OpenContext works with the coding agent CLI you already have — it adds a GUI plus built-in Skills/tools instead of replacing your agent.
+
+### 30-Second Setup (CLI + Cursor/Claude Code/Codex)
```bash
# 1. Install
npm install -g @aicontextlab/cli
-# 2. Initialize in your project
+# 2. Initialize (prompts for tool setup; defaults to all)
cd your-project
oc init
-# 3. Use slash commands in Cursor
+# 3. Use slash commands (Cursor + Claude Code)
# /opencontext-context — load background before working
# /opencontext-search — find relevant docs
# /opencontext-create — create a new doc
# /opencontext-iterate — persist what you learned
+# Tip: non-interactive installs can use --tools cursor,claude,codex or --no-claude/--no-cursor/--no-codex
+#
+# Installed by oc init:
+# - Cursor: ~/.cursor/commands
+# - Claude Code: ~/.claude/commands (or $CLAUDE_CONFIG_DIR/commands)
+# Skills (wrapped from slash commands):
+# - Cursor: ~/.cursor/skills/opencontext-*/SKILL.md
+# - Claude Code: ~/.claude/skills/opencontext-*/SKILL.md (or $CLAUDE_CONFIG_DIR/skills)
+# - Codex: ~/.codex/skills/opencontext-*/SKILL.md (or $CODEX_HOME/skills)
+#
+# 4. MCP config is user-level (Cursor/Claude Code/Codex)
+# - Cursor: ~/.cursor/mcp.json
+# - Claude Code: ~/.claude/mcp.json (or $CLAUDE_CONFIG_DIR/mcp.json)
+# - Codex: ~/.codex/mcp.json (or $CODEX_HOME/mcp.json)
```
> 📖 **For detailed usage guide, search configuration, and FAQ, visit the [Website](https://0xranx.github.io/OpenContext/en/usage/).**
@@ -93,14 +129,14 @@ Run `oc --help` for details.
| Command | What it does |
|---------|--------------|
-| `oc init` | Initialize OpenContext in your project |
+| `oc init` | Initialize OpenContext + user-level tool integrations |
| `oc folder ls` | List folders |
| `oc folder create -d "desc"` | Create a folder |
| `oc doc create .md -d "desc"` | Create a document |
| `oc doc ls ` | List documents |
| `oc context manifest ` | Generate file list for AI to read |
| `oc search "query"` | Search documents |
-| `oc mcp` | Start MCP server for Cursor |
+| `oc mcp` | Start MCP server for MCP clients |
| `oc ui` | Start local Web UI |
> 📖 **Full command reference available on the [Website](https://0xranx.github.io/OpenContext/en/usage/).**
@@ -128,4 +164,3 @@ npm run ui:build # production build
## License
MIT © [OpenContext](https://github.com/0xranx/OpenContext)
-
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 002ce41..918e1f4 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -10,8 +10,20 @@
不再重复解释,专注高效构建。
-
-
+
+ 复用你已有的 coding agent。 OpenContext 直接接入你现有的 CLI(Codex/Claude/OpenCode),并提供 GUI + 内置 Skills/工具,无需额外为另一套 Agent 付费。
+
+
+
+
+
+
+
+
+
+
+
+
@@ -31,11 +43,13 @@
## 痛点
-当你用 AI 助手做事时,**上下文会丢、历史决策会忘、跨天/跨仓库会断片**。你很容易重复解释背景、重复踩坑,甚至让 AI 在错误前提下继续执行。
+当你用 AI 助手做事时,**上下文会丢、历史决策会忘、跨天/跨仓库会断片**。你很容易重复解释背景、重复踩坑,甚至让 AI 在错误前提下继续执行。很多工具只停留在“管理”,并没有接入你已经在用的 coding agent。
## 解决方案
-OpenContext 是一个面向 AI 助手(Agent)与 Cursor 用户的「个人上下文/知识库」。把重要的背景、决策、规范沉淀成文档,让 AI 助手能「先读历史再动手、做完再沉淀」。
+OpenContext 是一个面向 AI 助手(Agent)与 Cursor / Claude Code / Codex 等编码工具用户的「个人上下文/知识库」。它直接复用你已有的 coding agent CLI(Codex/Claude/OpenCode),并提供 GUI 与内置 Skills/工具,让 AI 助手能「先读历史再动手、做完再沉淀」。
+
+**Skills 优先支持:** `oc init` 会生成用户级 skills(Cursor/Claude Code/Codex)和斜杠命令(Cursor/Claude Code),让 Agent 用一条命令完成加载、搜索、创建与迭代。
| 使用前 | 使用后 |
|-------|-------|
@@ -46,10 +60,16 @@ OpenContext 是一个面向 AI 助手(Agent)与 Cursor 用户的「个人上
## 包含什么
- **`oc` CLI** — 管理全局 `contexts/` 文档库(目录/文档、清单、检索)
-- **MCP Server** — 让 Cursor/Agent 通过工具调用 OpenContext
+- **MCP Server** — 让 Cursor/Claude Code/Codex/Agent 通过工具调用 OpenContext
+- **Skills + 斜杠命令** — 为 Cursor/Claude Code/Codex 生成用户级 skills,为 Cursor/Claude Code 生成斜杠命令(由 `oc init` 生成)
+- **面向 Agent 的知识层** — 复用你已有的 coding agent CLI(Codex/Claude/OpenCode),并内置 Skills/工具 + GUI
- **桌面版应用** — 用原生 UI 管理/搜索/编辑 contexts
- **Web UI** — 本地浏览/编辑文档(无需安装桌面版)
+## 为什么 OpenContext 更适合开发者
+
+OpenContext 的知识管理 Agent 可以**直接用你已经在用的 coding agent CLI**(Codex/Claude/OpenCode),不需要为另一套 Agent 再付费。你带来自己熟悉的代理工具,OpenContext 直接提供现成 GUI 和内置 Skills/工具,让 Agent 能读、搜、写、迭代你的知识库。
+
## 快速开始
### 安装 CLI
@@ -63,24 +83,40 @@ npm install -g @aicontextlab/cli
| 路径 | 适合人群 | 开始使用 |
|-----|---------|---------|
| 🖥️ **桌面版应用** | 喜欢图形界面的用户 | [从 Releases 下载](https://github.com/0xranx/OpenContext/releases) |
-| ⌨️ **CLI + Cursor** | 使用 Cursor/AI Agent 的开发者 | `npm install -g @aicontextlab/cli && oc init` |
+| ⌨️ **CLI + 工具接入** | 使用 Cursor/Claude Code/Codex/AI Agent 的开发者 | `npm install -g @aicontextlab/cli && oc init` |
| 🔧 **仅 CLI** | 高级用户、自动化场景 | `npm install -g @aicontextlab/cli` |
-### 30 秒上手(CLI + Cursor)
+OpenContext 不替换你的 Agent,而是复用你已有的 coding agent CLI,并补上 GUI 与内置 Skills/工具。
+
+### 30 秒上手(CLI + Cursor/Claude Code/Codex)
```bash
# 1. 安装
npm install -g @aicontextlab/cli
-# 2. 在你的项目中初始化
+# 2. 初始化(会提示选择工具,默认全选)
cd your-project
oc init
-# 3. 在 Cursor 中使用斜杠命令
+# 3. 在 Cursor / Claude Code 中使用斜杠命令
# /opencontext-context — 开始工作前加载背景
# /opencontext-search — 查找相关文档
# /opencontext-create — 创建新文档
# /opencontext-iterate — 沉淀学到的内容
+# 提示:非交互可用 --tools cursor,claude,codex 或 --no-claude/--no-cursor/--no-codex
+#
+# oc init 会安装:
+# - Cursor: ~/.cursor/commands
+# - Claude Code: ~/.claude/commands(或 $CLAUDE_CONFIG_DIR/commands)
+# Skills(斜杠命令的同名封装):
+# - Cursor: ~/.cursor/skills/opencontext-*/SKILL.md
+# - Claude Code: ~/.claude/skills/opencontext-*/SKILL.md(或 $CLAUDE_CONFIG_DIR/skills)
+# - Codex: ~/.codex/skills/opencontext-*/SKILL.md(或 $CODEX_HOME/skills)
+#
+# 用户级 MCP 配置:
+# - Cursor: ~/.cursor/mcp.json
+# - Claude Code: ~/.claude/mcp.json(或 $CLAUDE_CONFIG_DIR/mcp.json)
+# - Codex: ~/.codex/mcp.json(或 $CODEX_HOME/mcp.json)
```
> 📖 **详细使用指南、搜索配置和常见问题,请访问[官网](https://0xranx.github.io/OpenContext/zh/usage/)。**
@@ -93,14 +129,14 @@ oc init
| 命令 | 说明 |
|-----|------|
-| `oc init` | 在项目中初始化 OpenContext |
+| `oc init` | 初始化 OpenContext + 用户级工具集成 |
| `oc folder ls` | 列出目录 |
| `oc folder create -d "desc"` | 创建目录 |
| `oc doc create .md -d "desc"` | 创建文档 |
| `oc doc ls ` | 列出文档 |
| `oc context manifest ` | 生成文档清单供 AI 读取 |
| `oc search "query"` | 搜索文档 |
-| `oc mcp` | 启动 MCP Server(给 Cursor 用) |
+| `oc mcp` | 启动 MCP Server(给 MCP 客户端用) |
| `oc ui` | 启动本地 Web UI |
> 📖 **完整命令参考请访问[官网](https://0xranx.github.io/OpenContext/zh/usage/)。**
diff --git a/bin/oc.js b/bin/oc.js
index 6c145cc..6e90e12 100755
--- a/bin/oc.js
+++ b/bin/oc.js
@@ -152,16 +152,147 @@ function openInEditor(filePath) {
}
}
+const TOOL_LABELS = {
+ cursor: 'Cursor',
+ claude: 'Claude Code',
+ codex: 'Codex'
+};
+const TOOL_ALIASES = {
+ '1': 'cursor',
+ '2': 'claude',
+ '3': 'codex',
+ cursor: 'cursor',
+ claude: 'claude',
+ 'claude-code': 'claude',
+ 'claude_code': 'claude',
+ codex: 'codex'
+};
+const DEFAULT_TOOL_SELECTION = {
+ cursor: true,
+ claude: true,
+ codex: true
+};
+
+function parseToolSelection(input) {
+ const tokens = String(input || '')
+ .split(/[, ]+/)
+ .map((t) => t.trim().toLowerCase())
+ .filter(Boolean);
+
+ if (tokens.length === 0) {
+ return { selection: { ...DEFAULT_TOOL_SELECTION }, unknown: [] };
+ }
+
+ if (tokens.includes('all')) {
+ return { selection: { ...DEFAULT_TOOL_SELECTION }, unknown: [] };
+ }
+
+ if (tokens.includes('none')) {
+ return { selection: { cursor: false, claude: false, codex: false }, unknown: [] };
+ }
+
+ const selection = { cursor: false, claude: false, codex: false };
+ const unknown = [];
+
+ tokens.forEach((token) => {
+ const key = TOOL_ALIASES[token];
+ if (!key) {
+ unknown.push(token);
+ return;
+ }
+ selection[key] = true;
+ });
+
+ return { selection, unknown };
+}
+
+function applyToolFlags(selection, options) {
+ const result = { ...selection };
+ if (options.cursor === false) result.cursor = false;
+ if (options.claude === false) result.claude = false;
+ if (options.codex === false) result.codex = false;
+ return result;
+}
+
+function summarizeSelection(selection) {
+ return Object.keys(TOOL_LABELS)
+ .filter((key) => selection[key])
+ .map((key) => TOOL_LABELS[key]);
+}
+
+async function promptForToolSelection() {
+ const readline = require('readline');
+ const prompt =
+ 'Select tools to configure (1=Cursor, 2=Claude Code, 3=Codex; default: all): ';
+ while (true) {
+ const answer = await new Promise((resolve) => {
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
+ rl.question(prompt, (input) => {
+ rl.close();
+ resolve(input);
+ });
+ });
+ if (!String(answer || '').trim()) {
+ return { ...DEFAULT_TOOL_SELECTION };
+ }
+ const parsed = parseToolSelection(answer);
+ if (parsed.unknown.length === 0) {
+ return parsed.selection;
+ }
+ console.log(`Invalid selection: ${parsed.unknown.join(', ')}. Try again.`);
+ }
+}
+
+async function resolveToolSelection(options) {
+ let selection = { ...DEFAULT_TOOL_SELECTION };
+ let hasExplicit = false;
+
+ if (options.tools) {
+ const parsed = parseToolSelection(options.tools);
+ if (parsed.unknown.length > 0) {
+ throw new Error(`Invalid --tools entries: ${parsed.unknown.join(', ')}`);
+ }
+ selection = parsed.selection;
+ hasExplicit = true;
+ }
+
+ if (options.cursor === false || options.claude === false || options.codex === false) {
+ selection = applyToolFlags(selection, options);
+ hasExplicit = true;
+ }
+
+ if (hasExplicit) {
+ return selection;
+ }
+
+ if (!process.stdin.isTTY || process.env.CI) {
+ return selection;
+ }
+
+ return promptForToolSelection();
+}
+
program
.command('init')
.description('Initialize contexts directory and database')
+ .option('--tools ', 'Tools to configure (cursor, claude, codex; default: all)')
+ .option('--no-cursor', 'Skip Cursor setup')
+ .option('--no-claude', 'Skip Claude Code setup')
+ .option('--no-codex', 'Skip Codex setup')
.action(
- handle(() => {
+ handle(async (options) => {
const info = store.initEnvironment();
console.log(`Contexts directory ready at ${info.contextsRoot}`);
console.log(`Database ready at ${info.dbPath}`);
const projectRoot = process.cwd();
- const outputs = syncAgentsArtifacts(projectRoot);
+ const tools = await resolveToolSelection(options);
+ const selected = summarizeSelection(tools);
+ if (selected.length === 0) {
+ console.log('No tool configuration selected; skipping slash commands and MCP config.');
+ } else {
+ console.log(`Tool setup: ${selected.join(', ')}`);
+ }
+ const outputs = syncAgentsArtifacts(projectRoot, { tools });
if (outputs.length) {
outputs.forEach((file) => console.log(`Synced instructions: ${file}`));
}
@@ -390,15 +521,29 @@ program
.action(
handle((folderPath, options) => {
const effectiveFolder = folderPath === undefined ? '.' : folderPath;
- const limit = options.limit !== undefined ? Number(options.limit) : null;
- const rows = store.generateManifest({ folderPath: effectiveFolder, limit });
+ const limit = options.limit !== undefined ? Number(options.limit) : undefined;
+ const result = store.generateManifest({ folderPath: effectiveFolder, limit });
+ const rows = result.items;
+ const unindexed = result.unindexed_files || [];
const format = options.llm ? 'llm' : (options.format || 'json');
if (format === 'json') {
- console.log(JSON.stringify(rows, null, 2));
+ console.log(JSON.stringify(result, null, 2));
+ if (unindexed.length > 0) {
+ console.error(
+ `\n⚠️ ${unindexed.length} files exist on disk but are not indexed. ` +
+ `Run \`oc index reconcile ${effectiveFolder}\` to register them.`
+ );
+ }
return;
}
if (format === 'llm') {
console.log(renderManifestLlm({ folderPath: effectiveFolder, limit, rows }));
+ if (unindexed.length > 0) {
+ console.error(
+ `\n⚠️ ${unindexed.length} unindexed files: ${unindexed.join(', ')}\n` +
+ ` Run \`oc index reconcile ${effectiveFolder}\`.`
+ );
+ }
return;
}
throw new Error(`Unknown format "${format}". Supported: json, llm`);
@@ -563,6 +708,36 @@ indexCmd
})
);
+indexCmd
+ .command('reconcile')
+ .argument('[folder]', 'Folder to reconcile (default: all root folders)')
+ .description('Register *.md files that exist on disk but are missing from the SQLite index. Does NOT rebuild embeddings (use `oc index build` for that).')
+ .action(
+ handle((folder) => {
+ const folders = folder
+ ? [folder]
+ : store.listFolders({ all: false }).map((f) => f.rel_path);
+
+ let total = 0;
+ for (const f of folders) {
+ const added = store.reconcileFolder({ folderPath: f });
+ if (added.length === 0) {
+ console.log(`✅ ${f}: nothing to reconcile`);
+ } else {
+ console.log(`📥 ${f}: registered ${added.length} file(s)`);
+ for (const rel of added) {
+ console.log(` + ${rel}`);
+ }
+ }
+ total += added.length;
+ }
+ if (total > 0) {
+ console.log(`\nDone. ${total} doc(s) added to the index.`);
+ console.log('Run `oc index build` to (re)compute embeddings.');
+ }
+ })
+ );
+
indexCmd
.command('clean')
.description('Clean/reset the search index completely')
diff --git a/crates/opencontext-core/src/lib.rs b/crates/opencontext-core/src/lib.rs
index 639d84f..ca7ac55 100644
--- a/crates/opencontext-core/src/lib.rs
+++ b/crates/opencontext-core/src/lib.rs
@@ -6,7 +6,11 @@ mod tests;
use chrono::{SecondsFormat, Utc};
use parking_lot::Mutex;
use rusqlite::{params, Connection, OptionalExtension};
-use std::{env, fs, path::PathBuf, sync::Arc};
+use std::{
+ env, fs,
+ path::{Path, PathBuf},
+ sync::Arc,
+};
use thiserror::Error;
// Events module (enabled with "search" feature)
@@ -89,6 +93,16 @@ pub struct DocManifestEntry {
pub updated_at: String,
}
+/// Manifest response that also surfaces filesystem files which are NOT
+/// registered in SQLite (i.e. created via `Write`/`Edit` bypassing the API).
+/// `unindexed_files` is the list of relative paths (under the requested
+/// folder) of `*.md` files that exist on disk but have no `docs` row.
+#[derive(Debug, Clone, serde::Serialize)]
+pub struct ManifestResult {
+ pub items: Vec,
+ pub unindexed_files: Vec,
+}
+
impl OpenContext {
pub fn initialize(overrides: EnvOverrides) -> CoreResult {
let base_root = overrides
@@ -317,7 +331,7 @@ impl OpenContext {
if parent.is_empty() {
new_name.to_string()
} else {
- format!("{}/{}", parent, new_name)
+ format!("{parent}/{new_name}")
}
} else {
new_name.to_string()
@@ -361,7 +375,7 @@ impl OpenContext {
.collect::, _>>()?;
for (id, child_rel) in folder_rows {
let suffix = &child_rel[folder.rel_path.len() + 1..];
- let updated_rel = format!("{}/{}", new_rel_path, suffix);
+ let updated_rel = format!("{new_rel_path}/{suffix}");
let updated_abs = self.contexts_root.join(&updated_rel);
tx.execute(
"UPDATE folders SET rel_path = ?1, abs_path = ?2, updated_at = ?3 WHERE id = ?4",
@@ -377,7 +391,7 @@ impl OpenContext {
.collect::, _>>()?;
for (id, doc_rel) in doc_rows {
let suffix = &doc_rel[folder.rel_path.len() + 1..];
- let updated_rel = format!("{}/{}", new_rel_path, suffix);
+ let updated_rel = format!("{new_rel_path}/{suffix}");
let updated_abs = self.contexts_root.join(&updated_rel);
tx.execute(
"UPDATE docs SET rel_path = ?1, abs_path = ?2, updated_at = ?3 WHERE id = ?4",
@@ -426,7 +440,7 @@ impl OpenContext {
"Root is not supported. Please move into a folder under contexts/.".into(),
));
}
- if dest_rel_folder == rel_path || dest_rel_folder.starts_with(&format!("{}/", rel_path)) {
+ if dest_rel_folder == rel_path || dest_rel_folder.starts_with(&format!("{rel_path}/")) {
return Err(CoreError::Message(
"Cannot move a folder into itself or its descendants.".into(),
));
@@ -492,7 +506,7 @@ impl OpenContext {
.collect::, _>>()?;
for (id, child_rel) in folder_rows {
let suffix = &child_rel[folder.rel_path.len() + 1..];
- let updated_rel = format!("{}/{}", new_rel_path, suffix);
+ let updated_rel = format!("{new_rel_path}/{suffix}");
let updated_abs = self.contexts_root.join(&updated_rel);
tx.execute(
"UPDATE folders SET rel_path = ?1, abs_path = ?2, updated_at = ?3 WHERE id = ?4",
@@ -509,7 +523,7 @@ impl OpenContext {
.collect::, _>>()?;
for (id, doc_rel) in doc_rows {
let suffix = &doc_rel[folder.rel_path.len() + 1..];
- let updated_rel = format!("{}/{}", new_rel_path, suffix);
+ let updated_rel = format!("{new_rel_path}/{suffix}");
let updated_abs = self.contexts_root.join(&updated_rel);
tx.execute(
"UPDATE docs SET rel_path = ?1, abs_path = ?2, updated_at = ?3 WHERE id = ?4",
@@ -586,7 +600,7 @@ impl OpenContext {
"Folder \"{rel_path}\" is not empty. Use --force to delete recursively."
)));
}
- let like_pattern = format!("{}/%", rel_path);
+ let like_pattern = format!("{rel_path}/%");
let tx = conn.unchecked_transaction()?;
tx.execute(
"DELETE FROM docs WHERE rel_path LIKE ?1",
@@ -792,7 +806,7 @@ impl OpenContext {
let folder_rel = parent_rel_path(&doc.rel_path);
let new_rel_path = folder_rel
.and_then(|p| if p.is_empty() { None } else { Some(p) })
- .map(|prefix| format!("{}/{}", prefix, new_name))
+ .map(|prefix| format!("{prefix}/{new_name}"))
.unwrap_or_else(|| new_name.to_string());
if self.find_doc(&new_rel_path)?.is_some() {
return Err(CoreError::Message(format!(
@@ -971,6 +985,132 @@ impl OpenContext {
})
}
+ /// Like `generate_manifest`, but also scans the filesystem and returns
+ /// any `*.md` files that exist on disk under the folder but are NOT
+ /// registered in the `docs` table. Manifest itself remains read-only —
+ /// nothing is inserted; the caller is expected to surface a warning
+ /// and (optionally) invoke `reconcile_folder` to fix the drift.
+ pub fn generate_manifest_full(
+ &self,
+ folder_path: &str,
+ limit: Option,
+ ) -> CoreResult {
+ let items = self.generate_manifest(folder_path, limit)?;
+
+ let rel_path = normalize_folder_path(Some(folder_path))?;
+ let folder = self
+ .find_folder(&rel_path)?
+ .ok_or_else(|| folder_not_found(&rel_path))?;
+
+ // Collect rel_paths of every *.md file under the folder.
+ let mut on_disk: Vec = Vec::new();
+ if folder.abs_path.is_dir() {
+ scan_md_files(&folder.abs_path, &self.contexts_root, &mut on_disk)?;
+ }
+
+ // Subtract everything that is already in the DB for this folder
+ // (use a fresh full SELECT — `items` may be limited).
+ let known: std::collections::HashSet = self.with_conn(|conn| {
+ let pattern = if folder.rel_path.is_empty() {
+ "%".to_string()
+ } else {
+ format!("{}/%", folder.rel_path)
+ };
+ let mut stmt = conn.prepare("SELECT rel_path FROM docs WHERE rel_path LIKE ?1")?;
+ let rows = stmt
+ .query_map([pattern], |row| row.get::<_, String>(0))?
+ .collect::, _>>()?;
+ Ok(rows.into_iter().collect())
+ })?;
+
+ let mut unindexed_files: Vec =
+ on_disk.into_iter().filter(|p| !known.contains(p)).collect();
+ unindexed_files.sort();
+
+ Ok(ManifestResult {
+ items,
+ unindexed_files,
+ })
+ }
+
+ /// Walk the filesystem under `folder_path` and register any `*.md`
+ /// files that are not yet present in the `docs` table. Does NOT touch
+ /// embeddings / LanceDB — that's a separate (slow) step via
+ /// `oc index build`. Returns the list of newly registered rel_paths.
+ pub fn reconcile_folder(&self, folder_path: &str) -> CoreResult> {
+ let rel_path = normalize_folder_path(Some(folder_path))?;
+ let folder = self
+ .find_folder(&rel_path)?
+ .ok_or_else(|| folder_not_found(&rel_path))?;
+
+ let mut on_disk: Vec = Vec::new();
+ if folder.abs_path.is_dir() {
+ scan_md_files(&folder.abs_path, &self.contexts_root, &mut on_disk)?;
+ }
+
+ let known: std::collections::HashSet = self.with_conn(|conn| {
+ let pattern = if folder.rel_path.is_empty() {
+ "%".to_string()
+ } else {
+ format!("{}/%", folder.rel_path)
+ };
+ let mut stmt = conn.prepare("SELECT rel_path FROM docs WHERE rel_path LIKE ?1")?;
+ let rows = stmt
+ .query_map([pattern], |row| row.get::<_, String>(0))?
+ .collect::, _>>()?;
+ Ok(rows.into_iter().collect())
+ })?;
+
+ let mut added: Vec = Vec::new();
+ for doc_rel in on_disk {
+ if known.contains(&doc_rel) {
+ continue;
+ }
+ let parent_rel = parent_rel_path(&doc_rel).unwrap_or_default();
+ if parent_rel.is_empty() {
+ // Root-level docs are not representable in the schema
+ // (folders.rel_path = '' has no row). Skip silently.
+ continue;
+ }
+ let parent_folder = self
+ .ensure_folder_record(&parent_rel)?
+ .ok_or_else(|| folder_not_found(&parent_rel))?;
+ let name = doc_rel
+ .split('/')
+ .next_back()
+ .unwrap_or(&doc_rel)
+ .to_string();
+ let abs_path = self.contexts_root.join(&doc_rel);
+ let ts = now_iso();
+ self.with_conn(|conn| {
+ let sid = generate_stable_id(conn)?;
+ conn.execute(
+ "INSERT INTO docs (folder_id, name, rel_path, abs_path, description, stable_id, created_at, updated_at)
+ VALUES (?1, ?2, ?3, ?4, '', ?5, ?6, ?6)",
+ params![
+ parent_folder.id,
+ name,
+ doc_rel,
+ abs_path.to_string_lossy(),
+ sid,
+ ts
+ ],
+ )?;
+ Ok(())
+ })?;
+
+ #[cfg(feature = "search")]
+ self.emit_doc_event(DocEvent::Created {
+ rel_path: doc_rel.clone(),
+ });
+
+ added.push(doc_rel);
+ }
+
+ added.sort();
+ Ok(added)
+ }
+
fn find_folder(&self, rel_path: &str) -> CoreResult> {
self.with_conn(|conn| {
let mut stmt = conn.prepare(
@@ -1135,6 +1275,40 @@ fn parent_rel_path(rel_path: &str) -> Option {
}
}
+/// Recursively walk `dir` and append rel_paths (relative to `contexts_root`)
+/// of every `*.md` file. Hidden directories (starting with `.`) and any
+/// non-utf8 paths are skipped.
+fn scan_md_files(dir: &Path, contexts_root: &Path, out: &mut Vec) -> CoreResult<()> {
+ for entry in fs::read_dir(dir)? {
+ let entry = entry?;
+ let path = entry.path();
+ let file_name = match entry.file_name().into_string() {
+ Ok(n) => n,
+ Err(_) => continue,
+ };
+ if file_name.starts_with('.') {
+ continue;
+ }
+ let file_type = entry.file_type()?;
+ if file_type.is_dir() {
+ scan_md_files(&path, contexts_root, out)?;
+ } else if file_type.is_file()
+ && path
+ .extension()
+ .and_then(|e| e.to_str())
+ .map(|e| e.eq_ignore_ascii_case("md"))
+ .unwrap_or(false)
+ {
+ if let Ok(rel) = path.strip_prefix(contexts_root) {
+ if let Some(s) = rel.to_str() {
+ out.push(s.replace('\\', "/"));
+ }
+ }
+ }
+ }
+ Ok(())
+}
+
fn folder_not_found(rel_path: &str) -> CoreError {
CoreError::Message(format!(
"Folder \"{rel_path}\" does not exist. Use \"oc folder create {rel_path}\" first."
@@ -1224,7 +1398,7 @@ fn generate_stable_id(conn: &Connection) -> CoreResult {
// UUID v4 variant/version bits
b[6] = (b[6] & 0x0f) | 0x40;
b[8] = (b[8] & 0x3f) | 0x80;
- let hex = b.iter().map(|v| format!("{:02x}", v)).collect::();
+ let hex = b.iter().map(|v| format!("{v:02x}")).collect::();
Ok(format!(
"{}-{}-{}-{}-{}",
&hex[0..8],
diff --git a/crates/opencontext-core/src/search/embedding.rs b/crates/opencontext-core/src/search/embedding.rs
index 457c3d6..cecb18c 100644
--- a/crates/opencontext-core/src/search/embedding.rs
+++ b/crates/opencontext-core/src/search/embedding.rs
@@ -127,9 +127,10 @@ impl EmbeddingClient {
let input_count = texts.len();
// Truncate texts that are too long (most embedding APIs have ~8K token limit)
- // Using char count as approximation: ~4 chars per token for English, ~1-2 for Chinese
- // Set conservative limit to avoid API silently dropping texts
- const MAX_CHARS: usize = 8000;
+ // Using char count as approximation: ~4 chars per token for English, ~1-2 for CJK/Cyrillic
+ // nomic-embed-text and similar models have 8192 token limit
+ // Conservative limit: 2000 chars (safe for all languages including Cyrillic/CJK)
+ const MAX_CHARS: usize = 2000;
let texts: Vec = texts
.into_iter()
.map(|t| {
diff --git a/crates/opencontext-core/src/search/indexer.rs b/crates/opencontext-core/src/search/indexer.rs
index 9530bce..7624df9 100644
--- a/crates/opencontext-core/src/search/indexer.rs
+++ b/crates/opencontext-core/src/search/indexer.rs
@@ -1,11 +1,7 @@
//! Document indexer
-use std::collections::HashMap;
use std::path::PathBuf;
-use regex::Regex;
-use urlencoding::decode;
-
use super::chunker::Chunker;
use super::config::SearchConfig;
use super::embedding::EmbeddingClient;
@@ -13,13 +9,6 @@ use super::error::{SearchError, SearchResult};
use super::types::Chunk;
use super::vector_store::VectorStore;
-#[derive(Clone)]
-struct DocInfo {
- name: String,
- rel_path: String,
- description: String,
-}
-
#[derive(Clone)]
struct IdeaEntry {
id: String,
@@ -27,6 +16,8 @@ struct IdeaEntry {
content: String,
}
+const DEFAULT_IDEA_BOX: &str = "inbox";
+
fn parse_idea_marker(line: &str) -> Option<(String, String)> {
let trimmed = line.trim();
if !trimmed.starts_with("[//]: # (") || !trimmed.ends_with(')') {
@@ -84,102 +75,24 @@ fn parse_idea_entries(content: &str) -> Vec {
entries
}
-fn extract_refs(text: &str) -> Vec<(String, String)> {
- let regex = Regex::new(r"\[([^\]]+)\]\((oc://[^)]+)\)").unwrap();
- regex
- .captures_iter(text)
- .map(|cap| (cap[1].to_string(), cap[2].to_string()))
- .collect()
-}
-
-fn parse_doc_href(href: &str) -> (Option, Option) {
- if !href.starts_with("oc://doc/") {
- return (None, None);
- }
- let raw = href.trim_start_matches("oc://doc/");
- let mut stable_id = raw.to_string();
- let mut path_param: Option = None;
- if let Some((id, query)) = raw.split_once('?') {
- stable_id = id.to_string();
- if let Some(path) = query.split('&').find_map(|pair| {
- let mut iter = pair.splitn(2, '=');
- match (iter.next(), iter.next()) {
- (Some("path"), Some(value)) => Some(value.to_string()),
- _ => None,
- }
- }) {
- if let Ok(decoded) = decode(&path) {
- path_param = Some(decoded.to_string());
- }
- }
- }
- let stable_id = if stable_id.is_empty() {
- None
- } else {
- Some(stable_id)
- };
- (stable_id, path_param)
-}
-
-fn append_reference_summary(
- text: &str,
- doc_by_stable: &HashMap,
- doc_by_path: &HashMap,
-) -> String {
- let refs = extract_refs(text);
- if refs.is_empty() {
- return text.to_string();
+fn extract_idea_box(rel_path: &str) -> Option {
+ let normalized = rel_path.trim_start_matches("./");
+ if !normalized.starts_with(".ideas/") {
+ return None;
}
-
- let mut lines: Vec = Vec::new();
- for (label, href) in refs {
- if href.starts_with("oc://doc/") {
- let (stable_id, path) = parse_doc_href(&href);
- let meta = stable_id
- .as_ref()
- .and_then(|id| doc_by_stable.get(id))
- .cloned()
- .or_else(|| path.as_ref().and_then(|p| doc_by_path.get(p)).cloned());
- let title = if !label.is_empty() {
- label
- } else {
- meta.as_ref()
- .map(|m| m.name.clone())
- .unwrap_or_else(|| "文档".to_string())
- };
- let summary = meta
- .as_ref()
- .map(|m| {
- let mut parts = Vec::new();
- if !m.description.is_empty() {
- parts.push(m.description.clone());
- }
- if !m.rel_path.is_empty() {
- parts.push(m.rel_path.clone());
- }
- parts.join(" · ")
- })
- .unwrap_or_default();
- if summary.is_empty() {
- lines.push(format!("文档: {}", title));
+ let rest = &normalized[".ideas/".len()..];
+ let mut parts = rest.split('/').filter(|p| !p.is_empty());
+ let first = parts.next();
+ match first {
+ None => Some(DEFAULT_IDEA_BOX.to_string()),
+ Some(seg) => {
+ if seg.len() == 4 && seg.chars().all(|c| c.is_ascii_digit()) {
+ Some(DEFAULT_IDEA_BOX.to_string())
} else {
- lines.push(format!("文档: {} — {}", title, summary));
+ Some(seg.to_string())
}
- } else if href.starts_with("oc://idea/") {
- let title = if !label.is_empty() {
- label
- } else {
- "想法".to_string()
- };
- lines.push(format!("想法: {}", title));
}
}
-
- if lines.is_empty() {
- return text.to_string();
- }
-
- format!("{text}\n\n引用:\n- {}", lines.join("\n- "))
}
/// Index build statistics
@@ -290,18 +203,6 @@ impl Indexer {
let mut total_chunks = 0;
let mut processed_docs = 0;
- let mut doc_by_stable: HashMap = HashMap::new();
- let mut doc_by_path: HashMap = HashMap::new();
- for doc in &docs {
- let info = DocInfo {
- name: doc.name.clone(),
- rel_path: doc.rel_path.clone(),
- description: doc.description.clone(),
- };
- doc_by_stable.insert(doc.stable_id.clone(), info.clone());
- doc_by_path.insert(doc.rel_path.clone(), info);
- }
-
// Reset existing index
self.vector_store.reset().await?;
@@ -325,6 +226,16 @@ impl Indexer {
});
for doc in batch {
+ // Skip files that no longer exist on disk (orphaned DB records)
+ if !std::path::Path::new(&doc.abs_path).exists() {
+ log::warn!(
+ "Skipping missing file during indexing: {} (orphaned DB record?)",
+ doc.rel_path
+ );
+ processed_docs += 1;
+ continue;
+ }
+
let content = std::fs::read_to_string(&doc.abs_path)?;
if content.trim().is_empty() {
processed_docs += 1;
@@ -333,6 +244,7 @@ impl Indexer {
if doc.rel_path.starts_with(".ideas/") {
let entries = parse_idea_entries(&content);
+ let idea_box = extract_idea_box(&doc.rel_path);
for (i, entry) in entries.into_iter().enumerate() {
let entry_date = entry.created_at.get(0..10).unwrap_or("").to_string();
let title_line = entry
@@ -342,13 +254,11 @@ impl Indexer {
.unwrap_or("")
.trim()
.to_string();
- let entry_content =
- append_reference_summary(&entry.content, &doc_by_stable, &doc_by_path);
let id = format!("{}#{}", doc.rel_path, entry.id);
all_chunks.push(Chunk {
id,
file_path: doc.rel_path.clone(),
- content: entry_content,
+ content: entry.content,
heading_path: String::new(),
section_title: if title_line.is_empty() {
None
@@ -363,6 +273,7 @@ impl Indexer {
Some(entry_date)
},
entry_created_at: Some(entry.created_at),
+ idea_box: idea_box.clone(),
chunk_index: i,
vector: vec![], // Will be filled below
});
@@ -382,6 +293,7 @@ impl Indexer {
entry_id: None,
entry_date: None,
entry_created_at: None,
+ idea_box: None,
chunk_index: i,
vector: vec![], // Will be filled below
});
@@ -478,6 +390,7 @@ impl Indexer {
if rel_path.starts_with(".ideas/") {
let entries = parse_idea_entries(&content);
+ let idea_box = extract_idea_box(rel_path);
for (i, entry) in entries.into_iter().enumerate() {
let entry_date = entry.created_at.get(0..10).unwrap_or("").to_string();
let title_line = entry
@@ -506,6 +419,7 @@ impl Indexer {
Some(entry_date)
},
entry_created_at: Some(entry.created_at),
+ idea_box: idea_box.clone(),
chunk_index: i,
vector: vec![],
});
@@ -524,6 +438,7 @@ impl Indexer {
entry_id: None,
entry_date: None,
entry_created_at: None,
+ idea_box: None,
chunk_index: i,
vector: vec![],
});
diff --git a/crates/opencontext-core/src/search/searcher.rs b/crates/opencontext-core/src/search/searcher.rs
index e34342d..3f2860b 100644
--- a/crates/opencontext-core/src/search/searcher.rs
+++ b/crates/opencontext-core/src/search/searcher.rs
@@ -505,6 +505,7 @@ impl Searcher {
entry_id: None,
entry_date: None,
entry_created_at: None,
+ idea_box: doc.top_chunk.idea_box,
}
})
.collect();
@@ -600,6 +601,7 @@ impl Searcher {
entry_id: None,
entry_date: None,
entry_created_at: None,
+ idea_box: folder.top_chunk.idea_box,
}
})
.collect();
diff --git a/crates/opencontext-core/src/search/types.rs b/crates/opencontext-core/src/search/types.rs
index 7ef11a6..fc3a92c 100644
--- a/crates/opencontext-core/src/search/types.rs
+++ b/crates/opencontext-core/src/search/types.rs
@@ -28,6 +28,9 @@ pub struct Chunk {
/// Entry created timestamp (ISO8601)
#[serde(skip_serializing_if = "Option::is_none")]
pub entry_created_at: Option,
+ /// Ideas box name (e.g. "inbox")
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub idea_box: Option,
/// Index of this chunk within the document
pub chunk_index: usize,
/// Embedding vector
@@ -164,6 +167,9 @@ pub struct SearchHit {
/// Entry created timestamp (ISO8601)
#[serde(skip_serializing_if = "Option::is_none")]
pub entry_created_at: Option,
+ /// Ideas box name (e.g. "inbox")
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub idea_box: Option,
}
/// Search results response
diff --git a/crates/opencontext-core/src/search/vector_store.rs b/crates/opencontext-core/src/search/vector_store.rs
index be639df..c4a9765 100644
--- a/crates/opencontext-core/src/search/vector_store.rs
+++ b/crates/opencontext-core/src/search/vector_store.rs
@@ -87,6 +87,7 @@ impl VectorStore {
Field::new("entry_id", DataType::Utf8, true),
Field::new("entry_date", DataType::Utf8, true),
Field::new("entry_created_at", DataType::Utf8, true),
+ Field::new("idea_box", DataType::Utf8, true),
Field::new("chunk_index", DataType::UInt32, false),
Field::new(
"vector",
@@ -117,22 +118,21 @@ impl VectorStore {
// Wrap in iterator
let batches = RecordBatchIterator::new(vec![Ok(batch)], schema.clone());
- if self.table.is_none() {
- // Create new table
- let table = db
- .create_table(TABLE_NAME, Box::new(batches))
+ if let Some(table) = self.table.as_ref() {
+ // Add to existing table
+ table
+ .add(Box::new(batches))
.execute()
.await
.map_err(SearchError::Lance)?;
- self.table = Some(table);
} else {
- // Add to existing table
- let table = self.table.as_ref().unwrap();
- table
- .add(Box::new(batches))
+ // Create new table
+ let table = db
+ .create_table(TABLE_NAME, Box::new(batches))
.execute()
.await
.map_err(SearchError::Lance)?;
+ self.table = Some(table);
}
Ok(count)
@@ -164,6 +164,10 @@ impl VectorStore {
.iter()
.map(|c| c.entry_created_at.as_deref().unwrap_or(""))
.collect();
+ let idea_boxes: Vec<&str> = chunks
+ .iter()
+ .map(|c| c.idea_box.as_deref().unwrap_or(""))
+ .collect();
let chunk_indices: Vec = chunks.iter().map(|c| c.chunk_index as u32).collect();
let vectors_array = FixedSizeListArray::from_iter_primitive::(
@@ -185,6 +189,7 @@ impl VectorStore {
Arc::new(StringArray::from(entry_ids)),
Arc::new(StringArray::from(entry_dates)),
Arc::new(StringArray::from(entry_created_ats)),
+ Arc::new(StringArray::from(idea_boxes)),
Arc::new(UInt32Array::from(chunk_indices)),
Arc::new(vectors_array),
],
@@ -250,6 +255,10 @@ impl VectorStore {
.column_by_name("entry_created_at")
.and_then(|c| c.as_any().downcast_ref::());
+ let idea_boxes = batch
+ .column_by_name("idea_box")
+ .and_then(|c| c.as_any().downcast_ref::());
+
let line_starts = batch
.column_by_name("line_start")
.and_then(|c| c.as_any().downcast_ref::());
@@ -317,6 +326,15 @@ impl VectorStore {
}
});
+ let idea_box = idea_boxes.and_then(|arr| {
+ let val = arr.value(i);
+ if val.is_empty() {
+ None
+ } else {
+ Some(val.to_string())
+ }
+ });
+
let line_start = line_starts.map(|arr| arr.value(i) as usize);
let line_end = line_ends.map(|arr| arr.value(i) as usize);
@@ -366,6 +384,7 @@ impl VectorStore {
entry_id,
entry_date,
entry_created_at,
+ idea_box,
});
}
}
@@ -478,6 +497,10 @@ impl VectorStore {
.column_by_name("entry_created_at")
.and_then(|c| c.as_any().downcast_ref::());
+ let idea_boxes = batch
+ .column_by_name("idea_box")
+ .and_then(|c| c.as_any().downcast_ref::());
+
let line_starts = batch
.column_by_name("line_start")
.and_then(|c| c.as_any().downcast_ref::());
@@ -542,6 +565,15 @@ impl VectorStore {
}
});
+ let idea_box = idea_boxes.and_then(|arr| {
+ let val = arr.value(i);
+ if val.is_empty() {
+ None
+ } else {
+ Some(val.to_string())
+ }
+ });
+
let line_start = line_starts.map(|arr| arr.value(i) as usize);
let line_end = line_ends.map(|arr| arr.value(i) as usize);
@@ -584,6 +616,7 @@ impl VectorStore {
entry_id,
entry_date,
entry_created_at,
+ idea_box,
});
}
}
diff --git a/crates/opencontext-core/src/tests.rs b/crates/opencontext-core/src/tests.rs
index 4ada394..9993d2f 100644
--- a/crates/opencontext-core/src/tests.rs
+++ b/crates/opencontext-core/src/tests.rs
@@ -729,4 +729,78 @@ mod manifest_tests {
assert!(!entry.updated_at.is_empty());
assert!(entry.abs_path.to_string_lossy().contains("folder/doc.md"));
}
+
+ #[test]
+ fn test_generate_manifest_full_detects_unindexed_files() {
+ let (ctx, _temp) = create_test_context();
+ ctx.create_folder("folder", None).unwrap();
+ ctx.create_doc("folder", "indexed.md", None).unwrap();
+
+ // Bypass the API and write a file straight to disk.
+ let abs = ctx.env_info().contexts_root.join("folder/orphan.md");
+ std::fs::write(&abs, "# orphan").unwrap();
+
+ let result = ctx.generate_manifest_full("folder", None).unwrap();
+ assert_eq!(result.items.len(), 1);
+ assert_eq!(result.items[0].rel_path, "folder/indexed.md");
+ assert_eq!(result.unindexed_files, vec!["folder/orphan.md".to_string()]);
+ }
+
+ #[test]
+ fn test_generate_manifest_full_detects_nested_unindexed() {
+ let (ctx, _temp) = create_test_context();
+ ctx.create_folder("project", None).unwrap();
+
+ // Two nested orphans created bypass the API. The nested directory
+ // also has no `folders` row — scan must still discover them.
+ let nested = ctx.env_info().contexts_root.join("project/research");
+ std::fs::create_dir_all(&nested).unwrap();
+ std::fs::write(nested.join("a.md"), "a").unwrap();
+ std::fs::write(nested.join("b.md"), "b").unwrap();
+ std::fs::write(ctx.env_info().contexts_root.join("project/INDEX.md"), "idx").unwrap();
+
+ let result = ctx.generate_manifest_full("project", None).unwrap();
+ assert!(result.items.is_empty());
+ assert_eq!(
+ result.unindexed_files,
+ vec![
+ "project/INDEX.md".to_string(),
+ "project/research/a.md".to_string(),
+ "project/research/b.md".to_string(),
+ ]
+ );
+ }
+
+ #[test]
+ fn test_reconcile_folder_registers_orphans() {
+ let (ctx, _temp) = create_test_context();
+ ctx.create_folder("project", None).unwrap();
+
+ let nested = ctx.env_info().contexts_root.join("project/research");
+ std::fs::create_dir_all(&nested).unwrap();
+ std::fs::write(nested.join("a.md"), "a").unwrap();
+ std::fs::write(ctx.env_info().contexts_root.join("project/INDEX.md"), "idx").unwrap();
+
+ let added = ctx.reconcile_folder("project").unwrap();
+ assert_eq!(
+ added,
+ vec![
+ "project/INDEX.md".to_string(),
+ "project/research/a.md".to_string(),
+ ]
+ );
+
+ // After reconcile, manifest no longer reports drift.
+ let result = ctx.generate_manifest_full("project", None).unwrap();
+ assert_eq!(result.items.len(), 2);
+ assert!(result.unindexed_files.is_empty());
+
+ // Idempotent — second run finds nothing.
+ let added2 = ctx.reconcile_folder("project").unwrap();
+ assert!(added2.is_empty());
+
+ // Newly registered docs have stable_ids and resolvable metadata.
+ let meta = ctx.get_doc_meta("project/INDEX.md").unwrap();
+ assert!(!meta.stable_id.is_empty());
+ }
}
diff --git a/crates/opencontext-node/index.d.ts b/crates/opencontext-node/index.d.ts
index 5b6b373..eeff878 100644
--- a/crates/opencontext-node/index.d.ts
+++ b/crates/opencontext-node/index.d.ts
@@ -72,12 +72,17 @@ export declare function getDocMeta(docPath: string): NapiResult
export declare function getDocByStableId(stableId: string): NapiResult
export declare function saveDocContent(options: SaveDocOptions): NapiResult
export declare function generateManifest(options: ManifestOptions): NapiResult
+export interface ReconcileOptions {
+ folderPath: string
+}
+export declare function reconcileFolder(options: ReconcileOptions): NapiResult
/** Search options passed from JavaScript */
export interface SearchOptions {
query: string
limit?: number
mode?: string
aggregateBy?: string
+ docType?: string
}
/** Load search config */
export declare function loadSearchConfig(): any
diff --git a/crates/opencontext-node/index.js b/crates/opencontext-node/index.js
index a232ea7..99edf7c 100644
--- a/crates/opencontext-node/index.js
+++ b/crates/opencontext-node/index.js
@@ -310,7 +310,7 @@ if (!nativeBinding) {
throw new Error(`Failed to load native binding`)
}
-const { initEnvironment, listFolders, createFolder, renameFolder, moveFolder, removeFolder, listDocs, createDoc, moveDoc, renameDoc, removeDoc, setDocDescription, getDocContent, getDocMeta, getDocByStableId, saveDocContent, generateManifest, Searcher, Indexer, loadSearchConfig, startIndexSync, isIndexSyncRunning, getIndexSyncStatus } = nativeBinding
+const { initEnvironment, listFolders, createFolder, renameFolder, moveFolder, removeFolder, listDocs, createDoc, moveDoc, renameDoc, removeDoc, setDocDescription, getDocContent, getDocMeta, getDocByStableId, saveDocContent, generateManifest, reconcileFolder, Searcher, Indexer, loadSearchConfig, startIndexSync, isIndexSyncRunning, getIndexSyncStatus } = nativeBinding
module.exports.initEnvironment = initEnvironment
module.exports.listFolders = listFolders
@@ -329,6 +329,7 @@ module.exports.getDocMeta = getDocMeta
module.exports.getDocByStableId = getDocByStableId
module.exports.saveDocContent = saveDocContent
module.exports.generateManifest = generateManifest
+module.exports.reconcileFolder = reconcileFolder
module.exports.Searcher = Searcher
module.exports.Indexer = Indexer
module.exports.loadSearchConfig = loadSearchConfig
diff --git a/crates/opencontext-node/package-lock.json b/crates/opencontext-node/package-lock.json
index af1b1d7..963f16b 100644
--- a/crates/opencontext-node/package-lock.json
+++ b/crates/opencontext-node/package-lock.json
@@ -17,6 +17,7 @@
"optionalDependencies": {
"@aicontextlab/core-native-darwin-arm64": "^0.1.0",
"@aicontextlab/core-native-darwin-x64": "^0.1.0",
+ "@aicontextlab/core-native-linux-x64-gnu": "^0.1.0",
"@aicontextlab/core-native-win32-x64-msvc": "^0.1.0"
}
},
@@ -46,6 +47,9 @@
"darwin"
]
},
+ "node_modules/@aicontextlab/core-native-linux-x64-gnu": {
+ "optional": true
+ },
"node_modules/@aicontextlab/core-native-win32-x64-msvc": {
"version": "0.1.9",
"resolved": "https://registry.npmjs.org/@aicontextlab/core-native-win32-x64-msvc/-/core-native-win32-x64-msvc-0.1.9.tgz",
diff --git a/crates/opencontext-node/package.json b/crates/opencontext-node/package.json
index 1459e8a..32d186a 100644
--- a/crates/opencontext-node/package.json
+++ b/crates/opencontext-node/package.json
@@ -11,7 +11,8 @@
"additional": [
"x86_64-apple-darwin",
"aarch64-apple-darwin",
- "x86_64-pc-windows-msvc"
+ "x86_64-pc-windows-msvc",
+ "x86_64-unknown-linux-gnu"
]
}
},
@@ -32,7 +33,8 @@
"optionalDependencies": {
"@aicontextlab/core-native-darwin-x64": "^0.1.0",
"@aicontextlab/core-native-darwin-arm64": "^0.1.0",
- "@aicontextlab/core-native-win32-x64-msvc": "^0.1.0"
+ "@aicontextlab/core-native-win32-x64-msvc": "^0.1.0",
+ "@aicontextlab/core-native-linux-x64-gnu": "^0.1.0"
},
"engines": {
"node": ">= 18"
diff --git a/crates/opencontext-node/src/lib.rs b/crates/opencontext-node/src/lib.rs
index 90a77b1..77f5a41 100644
--- a/crates/opencontext-node/src/lib.rs
+++ b/crates/opencontext-node/src/lib.rs
@@ -239,11 +239,24 @@ pub fn save_doc_content(env: Env, options: SaveDocOptions) -> NapiResult NapiResult {
let ctx = ctx()?;
- let manifest =
- convert(ctx.generate_manifest(&options.folder_path, options.limit.map(|v| v as usize)))?;
+ let manifest = convert(
+ ctx.generate_manifest_full(&options.folder_path, options.limit.map(|v| v as usize)),
+ )?;
to_js(env, &manifest)
}
+#[napi(object)]
+pub struct ReconcileOptions {
+ pub folder_path: String,
+}
+
+#[napi]
+pub fn reconcile_folder(env: Env, options: ReconcileOptions) -> NapiResult {
+ let ctx = ctx()?;
+ let added = convert(ctx.reconcile_folder(&options.folder_path))?;
+ to_js(env, &added)
+}
+
fn to_js(env: Env, value: &T) -> NapiResult {
env.to_js_value(value)
}
diff --git a/docs/images/overview.png b/docs/images/overview.png
new file mode 100644
index 0000000..0444d06
Binary files /dev/null and b/docs/images/overview.png differ
diff --git a/package-lock.json b/package-lock.json
index 7abcb95..cf33d68 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -32,7 +32,7 @@
"@tauri-apps/plugin-clipboard-manager": "^2.3.2",
"@tauri-apps/plugin-shell": "^2.3.3",
"@tiptap/extension-bubble-menu": "^3.14.0",
- "@tiptap/extension-code-block-lowlight": "^3.14.0",
+ "@tiptap/extension-code-block": "^3.18.0",
"@tiptap/extension-floating-menu": "^3.14.0",
"@tiptap/extension-horizontal-rule": "^3.14.0",
"@tiptap/extension-image": "^3.14.0",
@@ -57,6 +57,7 @@
"cors": "^2.8.5",
"express": "^5.0.1",
"fs-extra": "^11.3.2",
+ "highlight.js": "^11.11.1",
"i18next": "^25.7.2",
"i18next-browser-languagedetector": "^8.2.0",
"lowlight": "^3.3.0",
@@ -78,6 +79,8 @@
"remark-toc": "^9.0.0",
"tiptap-markdown": "^0.9.0",
"vectra": "^0.11.1",
+ "xterm": "^5.3.0",
+ "xterm-addon-fit": "^0.8.0",
"zod": "^4.1.13"
},
"bin": {
@@ -97,24 +100,77 @@
"node": ">=18"
},
"optionalDependencies": {
- "@aicontextlab/core-native": "^0.1.0"
+ "@aicontextlab/core-native": "^0.2.1"
}
},
"node_modules/@aicontextlab/core-native": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/@aicontextlab/core-native/-/core-native-0.1.7.tgz",
- "integrity": "sha512-9wfvyH2+haOGf6vKXJ2nUqhNiBbGfwx+OdNOWB6Mu71gjQV/BVRlRLhnFJHxi0GZEtO9L81D3XeGWnnUCMCidg==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@aicontextlab/core-native/-/core-native-0.2.1.tgz",
+ "integrity": "sha512-+HXRAQiR5CsPjYLT6t+1wvkymxXACcA4NwZY5Stl857jFCwpI8l+pmjhVH1KlOQ5yAiaKE5xyiYGSUJTdKLyGA==",
"license": "ISC",
"optional": true,
"engines": {
"node": ">= 18"
},
"optionalDependencies": {
- "@aicontextlab/core-native-darwin-arm64": "0.1.0",
- "@aicontextlab/core-native-darwin-x64": "0.1.0",
- "@aicontextlab/core-native-win32-x64-msvc": "0.1.0"
+ "@aicontextlab/core-native-darwin-arm64": "0.2.1",
+ "@aicontextlab/core-native-darwin-x64": "0.2.1",
+ "@aicontextlab/core-native-linux-x64-gnu": "0.2.1",
+ "@aicontextlab/core-native-win32-x64-msvc": "0.2.1"
}
},
+ "node_modules/@aicontextlab/core-native-darwin-arm64": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@aicontextlab/core-native-darwin-arm64/-/core-native-darwin-arm64-0.2.1.tgz",
+ "integrity": "sha512-aQnSL4mDDA4sDw9N3ZYU9gpa/MdGTbpNiUV02ZjOEWLDuyKjDrwM9UbFygw/c3CP81mMyDXrd7sHCCuoba4N7g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "ISC",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@aicontextlab/core-native-darwin-x64": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@aicontextlab/core-native-darwin-x64/-/core-native-darwin-x64-0.2.1.tgz",
+ "integrity": "sha512-BaZBrEH2KEdCy/rJfrV6Rkws8i1blkPxSdnV2vW8Z/3TjKHufQAMd1X1Bx+gvvKLZu5HHYa2a3WNBQkVWk9HfQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "ISC",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@aicontextlab/core-native-linux-x64-gnu": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@aicontextlab/core-native-linux-x64-gnu/-/core-native-linux-x64-gnu-0.2.1.tgz",
+ "integrity": "sha512-iil6pMlffLX1ytIQs6XTKOGueZVu4TwQ786xOYddyqeHBxOH2DSiJVi/3luoydOW5khNLDymlWldB0lvohx9zQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "ISC",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@aicontextlab/core-native-win32-x64-msvc": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@aicontextlab/core-native-win32-x64-msvc/-/core-native-win32-x64-msvc-0.2.1.tgz",
+ "integrity": "sha512-U9my6ZwEmm6gwrTWLOA5uZpZESzO8KD6k9k42tJYKE0X/BW72847kXl9qiicu1zKwc5cNA4dTXDA5qmK9ETuJA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "ISC",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
"node_modules/@alloc/quick-lru": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
@@ -128,13 +184,13 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz",
+ "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -143,9 +199,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
- "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz",
+ "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -153,21 +209,21 @@
}
},
"node_modules/@babel/core": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
- "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz",
+ "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.5",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.28.3",
- "@babel/helpers": "^7.28.4",
- "@babel/parser": "^7.28.5",
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.28.5",
- "@babel/types": "^7.28.5",
+ "@babel/code-frame": "^7.28.6",
+ "@babel/generator": "^7.28.6",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helpers": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/template": "^7.28.6",
+ "@babel/traverse": "^7.28.6",
+ "@babel/types": "^7.28.6",
"@jridgewell/remapping": "^2.3.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
@@ -183,25 +239,15 @@
"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==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/@babel/generator": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
- "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz",
+ "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.5",
- "@babel/types": "^7.28.5",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -211,13 +257,13 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
- "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
+ "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.27.2",
+ "@babel/compat-data": "^7.28.6",
"@babel/helper-validator-option": "^7.27.1",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -227,16 +273,6 @@
"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==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/@babel/helper-globals": {
"version": "7.28.0",
"resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
@@ -248,29 +284,29 @@
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
- "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
+ "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
- "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
+ "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.28.3"
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -280,9 +316,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
- "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
+ "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
"dev": true,
"license": "MIT",
"engines": {
@@ -320,27 +356,27 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
- "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
+ "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4"
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
- "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz",
+ "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.28.5"
+ "@babel/types": "^7.28.6"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -382,42 +418,42 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
- "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz",
+ "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
- "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz",
+ "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.5",
+ "@babel/code-frame": "^7.28.6",
+ "@babel/generator": "^7.28.6",
"@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.5",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.5",
+ "@babel/parser": "^7.28.6",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.28.6",
"debug": "^4.3.1"
},
"engines": {
@@ -425,9 +461,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
- "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz",
+ "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -498,9 +534,9 @@
}
},
"node_modules/@emnapi/runtime": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz",
- "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz",
+ "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -919,18 +955,18 @@
}
},
"node_modules/@floating-ui/react": {
- "version": "0.27.16",
- "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.16.tgz",
- "integrity": "sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==",
+ "version": "0.26.28",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz",
+ "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==",
"license": "MIT",
"dependencies": {
- "@floating-ui/react-dom": "^2.1.6",
- "@floating-ui/utils": "^0.2.10",
+ "@floating-ui/react-dom": "^2.1.2",
+ "@floating-ui/utils": "^0.2.8",
"tabbable": "^6.0.0"
},
"peerDependencies": {
- "react": ">=17.0.0",
- "react-dom": ">=17.0.0"
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
}
},
"node_modules/@floating-ui/react-dom": {
@@ -1054,21 +1090,6 @@
"react-dom": "^18 || ^19 || ^19.0.0-rc"
}
},
- "node_modules/@headlessui/react/node_modules/@floating-ui/react": {
- "version": "0.26.28",
- "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz",
- "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/react-dom": "^2.1.2",
- "@floating-ui/utils": "^0.2.8",
- "tabbable": "^6.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- }
- },
"node_modules/@heroicons/react": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz",
@@ -1079,13 +1100,13 @@
}
},
"node_modules/@heroui/aria-utils": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/@heroui/aria-utils/-/aria-utils-2.2.24.tgz",
- "integrity": "sha512-Y7FfQl2jvJr8JjpH+iuJElDwbn3eSWohuxHg6e5+xk5GcPYrEecgr0F/9qD6VU8IvVrRzJ00JzmT87lgA5iE3Q==",
+ "version": "2.2.26",
+ "resolved": "https://registry.npmjs.org/@heroui/aria-utils/-/aria-utils-2.2.26.tgz",
+ "integrity": "sha512-FUrI92sy3s3JnZPBLmGH4UaT6nMrWCr2ksxGdL86eTc9S+QbUtiGgMw4SFMTsvjH175q8Cbl67/276kK0WHpOw==",
"license": "MIT",
"dependencies": {
- "@heroui/system": "2.4.23",
- "@react-aria/utils": "3.31.0",
+ "@heroui/system": "2.4.25",
+ "@react-aria/utils": "3.32.0",
"@react-stately/collections": "3.12.8",
"@react-types/overlays": "3.9.2",
"@react-types/shared": "3.32.1"
@@ -1105,51 +1126,64 @@
}
},
"node_modules/@heroui/form": {
- "version": "2.1.27",
- "resolved": "https://registry.npmjs.org/@heroui/form/-/form-2.1.27.tgz",
- "integrity": "sha512-vtaBqWhxppkJeWgbAZA/A1bRj6XIudBqJWSkoqYlejtLuvaxNwxQ2Z9u7ewxN96R6QqPrQwChlknIn0NgCWlXQ==",
+ "version": "2.1.29",
+ "resolved": "https://registry.npmjs.org/@heroui/form/-/form-2.1.29.tgz",
+ "integrity": "sha512-bWkd9SK+uuZN6gDVy/p9ccrpUryEjW4Y6y1EDaAsXYV8E9o/7JwIoWyZ0oxfskk1CS5TCHpKIYlb7mkdCeYmkA==",
"license": "MIT",
"dependencies": {
"@heroui/shared-utils": "2.1.12",
- "@heroui/system": "2.4.23",
- "@heroui/theme": "2.4.23",
+ "@heroui/system": "2.4.25",
+ "@heroui/theme": "2.4.25",
"@react-stately/form": "3.2.2",
"@react-types/form": "3.7.16",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18",
"react-dom": ">=18"
}
},
"node_modules/@heroui/form/node_modules/@heroui/theme": {
- "version": "2.4.23",
- "resolved": "https://registry.npmjs.org/@heroui/theme/-/theme-2.4.23.tgz",
- "integrity": "sha512-5hoaRWG+/d/t06p7Pfhz70DUP0Uggjids7/z2Ytgup4A8KAOvDIXxvHUDlk6rRHKiN1wDMNA5H+EWsSXB/m03Q==",
+ "version": "2.4.25",
+ "resolved": "https://registry.npmjs.org/@heroui/theme/-/theme-2.4.25.tgz",
+ "integrity": "sha512-nTptYhO1V9rMoh9SJDnMfaSmFuoXvbem1UuwgHcraRtqy/TIVBPqv26JEGzSoUCL194TDGOJpqrpMuab/PdXcw==",
"license": "MIT",
"dependencies": {
"@heroui/shared-utils": "2.1.12",
- "clsx": "^1.2.1",
"color": "^4.2.3",
"color2k": "^2.0.3",
"deepmerge": "4.3.1",
"flat": "^5.0.2",
- "tailwind-merge": "3.3.1",
- "tailwind-variants": "3.1.1"
+ "tailwind-merge": "3.4.0",
+ "tailwind-variants": "3.2.2"
},
"peerDependencies": {
"tailwindcss": ">=4.0.0"
}
},
- "node_modules/@heroui/form/node_modules/clsx": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
- "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+ "node_modules/@heroui/form/node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
"license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=12.5.0"
+ }
+ },
+ "node_modules/@heroui/form/node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
}
},
"node_modules/@heroui/form/node_modules/tailwindcss": {
@@ -1160,12 +1194,12 @@
"peer": true
},
"node_modules/@heroui/framer-utils": {
- "version": "2.1.23",
- "resolved": "https://registry.npmjs.org/@heroui/framer-utils/-/framer-utils-2.1.23.tgz",
- "integrity": "sha512-crLLMjRmxs8/fysFv5gwghSGcDmYYkhNfAWh1rFzDy+FRPZN4f/bPH2rt85hdApmuHbWt0QCocqsrjHxLEzrAw==",
+ "version": "2.1.25",
+ "resolved": "https://registry.npmjs.org/@heroui/framer-utils/-/framer-utils-2.1.25.tgz",
+ "integrity": "sha512-uH55w1g0UuzPB9/2XfTFq/JiJG+Vxp4N5hAAw0/G4R/kFo4YYdtPafmYyL1Qcpi37LgbLdLP6w4dQejLmzR0Mg==",
"license": "MIT",
"dependencies": {
- "@heroui/system": "2.4.23",
+ "@heroui/system": "2.4.25",
"@heroui/use-measure": "2.1.8"
},
"peerDependencies": {
@@ -1175,61 +1209,61 @@
}
},
"node_modules/@heroui/react": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/@heroui/react/-/react-2.8.5.tgz",
- "integrity": "sha512-cGiG0/DCPsYopa+zACFDmtx9LQDfY5KU58Tt82ELANhmKRyYAesAq9tSa01dG+MjOXUTUR6cxp5i5RmRn8rPYg==",
- "license": "MIT",
- "dependencies": {
- "@heroui/accordion": "2.2.24",
- "@heroui/alert": "2.2.27",
- "@heroui/autocomplete": "2.3.29",
- "@heroui/avatar": "2.2.22",
- "@heroui/badge": "2.2.17",
- "@heroui/breadcrumbs": "2.2.22",
- "@heroui/button": "2.2.27",
- "@heroui/calendar": "2.2.27",
- "@heroui/card": "2.2.25",
- "@heroui/checkbox": "2.3.27",
- "@heroui/chip": "2.2.22",
- "@heroui/code": "2.2.21",
- "@heroui/date-input": "2.3.27",
- "@heroui/date-picker": "2.3.28",
- "@heroui/divider": "2.2.20",
- "@heroui/drawer": "2.2.24",
- "@heroui/dropdown": "2.3.27",
- "@heroui/form": "2.1.27",
- "@heroui/framer-utils": "2.1.23",
- "@heroui/image": "2.2.17",
- "@heroui/input": "2.4.28",
- "@heroui/input-otp": "2.1.27",
- "@heroui/kbd": "2.2.22",
- "@heroui/link": "2.2.23",
- "@heroui/listbox": "2.3.26",
- "@heroui/menu": "2.2.26",
- "@heroui/modal": "2.2.24",
- "@heroui/navbar": "2.2.25",
- "@heroui/number-input": "2.0.18",
- "@heroui/pagination": "2.2.24",
- "@heroui/popover": "2.3.27",
- "@heroui/progress": "2.2.22",
- "@heroui/radio": "2.3.27",
- "@heroui/ripple": "2.2.20",
- "@heroui/scroll-shadow": "2.3.18",
- "@heroui/select": "2.4.28",
- "@heroui/skeleton": "2.2.17",
- "@heroui/slider": "2.4.24",
- "@heroui/snippet": "2.2.28",
- "@heroui/spacer": "2.2.21",
- "@heroui/spinner": "2.2.24",
- "@heroui/switch": "2.2.24",
- "@heroui/system": "2.4.23",
- "@heroui/table": "2.2.27",
- "@heroui/tabs": "2.2.24",
- "@heroui/theme": "2.4.23",
- "@heroui/toast": "2.0.17",
- "@heroui/tooltip": "2.2.24",
- "@heroui/user": "2.2.22",
- "@react-aria/visually-hidden": "3.8.28"
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/@heroui/react/-/react-2.8.7.tgz",
+ "integrity": "sha512-0PkjyvjXQpsjNz9P6q3YmJEWO7F+cyQjc2Ts7HqfvnOWPKAX3zAVnExq8d4Bdwnpp1F6TZpuC0woowVq6Fj4Fw==",
+ "license": "MIT",
+ "dependencies": {
+ "@heroui/accordion": "2.2.26",
+ "@heroui/alert": "2.2.29",
+ "@heroui/autocomplete": "2.3.31",
+ "@heroui/avatar": "2.2.24",
+ "@heroui/badge": "2.2.18",
+ "@heroui/breadcrumbs": "2.2.24",
+ "@heroui/button": "2.2.29",
+ "@heroui/calendar": "2.2.29",
+ "@heroui/card": "2.2.27",
+ "@heroui/checkbox": "2.3.29",
+ "@heroui/chip": "2.2.24",
+ "@heroui/code": "2.2.22",
+ "@heroui/date-input": "2.3.29",
+ "@heroui/date-picker": "2.3.30",
+ "@heroui/divider": "2.2.21",
+ "@heroui/drawer": "2.2.26",
+ "@heroui/dropdown": "2.3.29",
+ "@heroui/form": "2.1.29",
+ "@heroui/framer-utils": "2.1.25",
+ "@heroui/image": "2.2.18",
+ "@heroui/input": "2.4.30",
+ "@heroui/input-otp": "2.1.29",
+ "@heroui/kbd": "2.2.23",
+ "@heroui/link": "2.2.25",
+ "@heroui/listbox": "2.3.28",
+ "@heroui/menu": "2.2.28",
+ "@heroui/modal": "2.2.26",
+ "@heroui/navbar": "2.2.27",
+ "@heroui/number-input": "2.0.20",
+ "@heroui/pagination": "2.2.26",
+ "@heroui/popover": "2.3.29",
+ "@heroui/progress": "2.2.24",
+ "@heroui/radio": "2.3.29",
+ "@heroui/ripple": "2.2.21",
+ "@heroui/scroll-shadow": "2.3.19",
+ "@heroui/select": "2.4.30",
+ "@heroui/skeleton": "2.2.18",
+ "@heroui/slider": "2.4.26",
+ "@heroui/snippet": "2.2.30",
+ "@heroui/spacer": "2.2.22",
+ "@heroui/spinner": "2.2.26",
+ "@heroui/switch": "2.2.26",
+ "@heroui/system": "2.4.25",
+ "@heroui/table": "2.2.29",
+ "@heroui/tabs": "2.2.26",
+ "@heroui/theme": "2.4.25",
+ "@heroui/toast": "2.0.19",
+ "@heroui/tooltip": "2.2.26",
+ "@heroui/user": "2.2.24",
+ "@react-aria/visually-hidden": "3.8.29"
},
"peerDependencies": {
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
@@ -1260,106 +1294,106 @@
}
},
"node_modules/@heroui/react/node_modules/@heroui/accordion": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/@heroui/accordion/-/accordion-2.2.24.tgz",
- "integrity": "sha512-iVJVKKsGN4t3hn4Exwic6n5SOQOmmmsodSsCt0VUcs5VTHu9876sAC44xlEMpc9CP8pC1wQS3DzWl3mN6Z120g==",
+ "version": "2.2.26",
+ "resolved": "https://registry.npmjs.org/@heroui/accordion/-/accordion-2.2.26.tgz",
+ "integrity": "sha512-hTOyxt8sQqRHDyz6M4g0eRIICwQQy+03zFXPbDv7DQINMyZLwAjIZhtZBjSa3N+nnyJ4YBCxBlQr4zFJChD9aw==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
- "@heroui/divider": "2.2.20",
+ "@heroui/aria-utils": "2.2.26",
+ "@heroui/divider": "2.2.21",
"@heroui/dom-animation": "2.1.10",
- "@heroui/framer-utils": "2.1.23",
+ "@heroui/framer-utils": "2.1.25",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@heroui/use-aria-accordion": "2.2.18",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-stately/tree": "3.9.3",
+ "@heroui/use-aria-accordion": "2.2.19",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-stately/tree": "3.9.4",
"@react-types/accordion": "3.0.0-alpha.26",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/alert": {
- "version": "2.2.27",
- "resolved": "https://registry.npmjs.org/@heroui/alert/-/alert-2.2.27.tgz",
- "integrity": "sha512-Y6oX9SV//tdhxhpgkSZvnjwdx7d8S7RAhgVlxCs2Hla//nCFC3yiMHIv8UotTryAGdOwZIsffmcna9vqbNL5vw==",
+ "version": "2.2.29",
+ "resolved": "https://registry.npmjs.org/@heroui/alert/-/alert-2.2.29.tgz",
+ "integrity": "sha512-poPE5fwK4CQO2s3AcLcdVyde4FU8NAJKn8YpUEcoP/Kfn8i8nuHoRKMTj5Ofs/0W/y4ysABajsgKPydPNzUupA==",
"license": "MIT",
"dependencies": {
- "@heroui/button": "2.2.27",
+ "@heroui/button": "2.2.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@react-stately/utils": "3.10.8"
+ "@react-stately/utils": "3.11.0"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.19",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/autocomplete": {
- "version": "2.3.29",
- "resolved": "https://registry.npmjs.org/@heroui/autocomplete/-/autocomplete-2.3.29.tgz",
- "integrity": "sha512-BQkiWrrhPbNMFF1Hd60QDyG4iwD+sdsjWh0h7sw2XhcT6Bjw/6Hqpf4eHsTvPElW/554vPZVtChjugRY1N2zsw==",
+ "version": "2.3.31",
+ "resolved": "https://registry.npmjs.org/@heroui/autocomplete/-/autocomplete-2.3.31.tgz",
+ "integrity": "sha512-xRA3mttbLSiSU9rJSm1N3+liHcLEUUCiGdKRkCa89yZwcrD9N1mg6FaTrn099W0/obHZ30r36Nmfx8z3Z7Cnfw==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
- "@heroui/button": "2.2.27",
- "@heroui/form": "2.1.27",
- "@heroui/input": "2.4.28",
- "@heroui/listbox": "2.3.26",
- "@heroui/popover": "2.3.27",
+ "@heroui/aria-utils": "2.2.26",
+ "@heroui/button": "2.2.29",
+ "@heroui/form": "2.1.29",
+ "@heroui/input": "2.4.30",
+ "@heroui/listbox": "2.3.28",
+ "@heroui/popover": "2.3.29",
"@heroui/react-utils": "2.1.14",
- "@heroui/scroll-shadow": "2.3.18",
+ "@heroui/scroll-shadow": "2.3.19",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-safe-layout-effect": "2.1.8",
- "@react-aria/combobox": "3.14.0",
- "@react-aria/i18n": "3.12.13",
- "@react-stately/combobox": "3.12.0",
- "@react-types/combobox": "3.13.9",
+ "@react-aria/combobox": "3.14.1",
+ "@react-aria/i18n": "3.12.14",
+ "@react-stately/combobox": "3.12.1",
+ "@react-types/combobox": "3.13.10",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/avatar": {
- "version": "2.2.22",
- "resolved": "https://registry.npmjs.org/@heroui/avatar/-/avatar-2.2.22.tgz",
- "integrity": "sha512-znmKdsrVj91Fg8+wm/HA/b8zi3iAg5g3MezliBfS2PmwgZcpBR6VtwgeeP6uN49+TR+faGIrck0Zxceuw4U0FQ==",
+ "version": "2.2.24",
+ "resolved": "https://registry.npmjs.org/@heroui/avatar/-/avatar-2.2.24.tgz",
+ "integrity": "sha512-GuocEjSrxM6lHlLjrpJam5MJzKzprXtJjVOnXAcOzbWN8VKSUbYvvnf4mMtb3ckfVAE8AwF9vX9S9LwH1kk9/w==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-image": "2.1.13",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6"
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/badge": {
- "version": "2.2.17",
- "resolved": "https://registry.npmjs.org/@heroui/badge/-/badge-2.2.17.tgz",
- "integrity": "sha512-UNILRsAIJn+B6aWml+Rv2QCyYB7sadNqRPDPzNeVKJd8j3MNgZyyEHDwvqM2FWrgGccQIuWFaUgGdnPxRJpwwg==",
+ "version": "2.2.18",
+ "resolved": "https://registry.npmjs.org/@heroui/badge/-/badge-2.2.18.tgz",
+ "integrity": "sha512-OfGove8YJ9oDrdugzq05FC15ZKD5nzqe+thPZ+1SY1LZorJQjZvqSD9QnoEH1nG7fu2IdH6pYJy3sZ/b6Vj5Kg==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
@@ -1367,287 +1401,287 @@
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/breadcrumbs": {
- "version": "2.2.22",
- "resolved": "https://registry.npmjs.org/@heroui/breadcrumbs/-/breadcrumbs-2.2.22.tgz",
- "integrity": "sha512-2fWfpbwhRPeC99Kuzu+DnzOYL4TOkDm9sznvSj0kIAbw/Rvl+D2/6fmBOaTRIUXfswWpHVRUCcNYczIAp0PkoA==",
+ "version": "2.2.24",
+ "resolved": "https://registry.npmjs.org/@heroui/breadcrumbs/-/breadcrumbs-2.2.24.tgz",
+ "integrity": "sha512-O4M+FrqmAyBB0kfUjBN8PyuVfMMuMRg8B6dl7U+DxFyzfc3TmgtI9t2rIrnnNKj/EA3s/FEv9iaPcb02W6Fp5A==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@react-aria/breadcrumbs": "3.5.29",
- "@react-aria/focus": "3.21.2",
+ "@react-aria/breadcrumbs": "3.5.30",
+ "@react-aria/focus": "3.21.3",
"@react-types/breadcrumbs": "3.7.17"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/button": {
- "version": "2.2.27",
- "resolved": "https://registry.npmjs.org/@heroui/button/-/button-2.2.27.tgz",
- "integrity": "sha512-Fxb8rtjPQm9T4GAtB1oW2QMUiQCtn7EtvO5AN41ANxAgmsNMM5wnLTkxQ05vNueCrp47kTDtSuyMhKU2llATHQ==",
+ "version": "2.2.29",
+ "resolved": "https://registry.npmjs.org/@heroui/button/-/button-2.2.29.tgz",
+ "integrity": "sha512-F8cWp6V1/dJIeLOj0Cb9fA8luwzVKI3RUMUmx4zLo0C90cctRzssAMlg6eQ+SBz2NQxCYxMff8mtxMri1wrizg==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
- "@heroui/ripple": "2.2.20",
+ "@heroui/ripple": "2.2.21",
"@heroui/shared-utils": "2.1.12",
- "@heroui/spinner": "2.2.24",
- "@heroui/use-aria-button": "2.2.20",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
+ "@heroui/spinner": "2.2.26",
+ "@heroui/use-aria-button": "2.2.21",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/calendar": {
- "version": "2.2.27",
- "resolved": "https://registry.npmjs.org/@heroui/calendar/-/calendar-2.2.27.tgz",
- "integrity": "sha512-VtyXQSoT9u9tC4HjBkJIaSSmhau1LwPUwvof0LjYDpBfTsJKqn+308wI3nAp75BTbAkK+vFM8LI0VfbALCwR4Q==",
+ "version": "2.2.29",
+ "resolved": "https://registry.npmjs.org/@heroui/calendar/-/calendar-2.2.29.tgz",
+ "integrity": "sha512-poDlzOIB30sWSG+xxgNUwiSM90JmGHxq8w9ggVW460BChMAxPSA0IXZXF8fXWjReblSKHu50yS+Z2/koFJDl8Q==",
"license": "MIT",
"dependencies": {
- "@heroui/button": "2.2.27",
+ "@heroui/button": "2.2.29",
"@heroui/dom-animation": "2.1.10",
- "@heroui/framer-utils": "2.1.23",
+ "@heroui/framer-utils": "2.1.25",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@heroui/use-aria-button": "2.2.20",
- "@internationalized/date": "3.10.0",
- "@react-aria/calendar": "3.9.2",
- "@react-aria/focus": "3.21.2",
- "@react-aria/i18n": "3.12.13",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/visually-hidden": "3.8.28",
- "@react-stately/calendar": "3.9.0",
- "@react-stately/utils": "3.10.8",
+ "@heroui/use-aria-button": "2.2.21",
+ "@internationalized/date": "3.10.1",
+ "@react-aria/calendar": "3.9.3",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/i18n": "3.12.14",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/visually-hidden": "3.8.29",
+ "@react-stately/calendar": "3.9.1",
+ "@react-stately/utils": "3.11.0",
"@react-types/button": "3.14.1",
- "@react-types/calendar": "3.8.0",
+ "@react-types/calendar": "3.8.1",
"@react-types/shared": "3.32.1",
"scroll-into-view-if-needed": "3.0.10"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/card": {
- "version": "2.2.25",
- "resolved": "https://registry.npmjs.org/@heroui/card/-/card-2.2.25.tgz",
- "integrity": "sha512-dtd/G24zePIHPutRIxWC69IO3IGJs8X+zh9rBYM9cY5Q972D8Eet5WdWTfDBhw//fFIoagDAs5YcI9emGczGaQ==",
+ "version": "2.2.27",
+ "resolved": "https://registry.npmjs.org/@heroui/card/-/card-2.2.27.tgz",
+ "integrity": "sha512-UP9IuKYzGCjwBaocv8eiusOi1SheV6Pn37r05N6Hrqd8DKvs2Ebgye3hGRZ3z3MKRsqFKAyhG+3tdDIjVs3J/Q==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
- "@heroui/ripple": "2.2.20",
+ "@heroui/ripple": "2.2.21",
"@heroui/shared-utils": "2.1.12",
- "@heroui/use-aria-button": "2.2.20",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
+ "@heroui/use-aria-button": "2.2.21",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/checkbox": {
- "version": "2.3.27",
- "resolved": "https://registry.npmjs.org/@heroui/checkbox/-/checkbox-2.3.27.tgz",
- "integrity": "sha512-YC0deiB7EOzcpJtk9SdySugD1Z2TNtfyYee2voDBHrng7ZBRB+cmAvizXINHnaQGFi0yuVPrZ5ixR/wsvTNW+Q==",
+ "version": "2.3.29",
+ "resolved": "https://registry.npmjs.org/@heroui/checkbox/-/checkbox-2.3.29.tgz",
+ "integrity": "sha512-KcI2hAv/lsW427KEtcIq5GFILmRNiPaj9em5QaDrGUYQeJkO29slOGG8M8YAWvF4e3rRzBa9Xfzjp1D51d/OGA==",
"license": "MIT",
"dependencies": {
- "@heroui/form": "2.1.27",
+ "@heroui/form": "2.1.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-callback-ref": "2.1.8",
"@heroui/use-safe-layout-effect": "2.1.8",
- "@react-aria/checkbox": "3.16.2",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-stately/checkbox": "3.7.2",
- "@react-stately/toggle": "3.9.2",
+ "@react-aria/checkbox": "3.16.3",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-stately/checkbox": "3.7.3",
+ "@react-stately/toggle": "3.9.3",
"@react-types/checkbox": "3.10.2",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/chip": {
- "version": "2.2.22",
- "resolved": "https://registry.npmjs.org/@heroui/chip/-/chip-2.2.22.tgz",
- "integrity": "sha512-6O4Sv1chP+xxftp7E5gHUJIzo04ML9BW9N9jjxWCqT0Qtl+a/ZxnDalCyup6oraMiVLLHp+zEVX93C+3LONgkg==",
+ "version": "2.2.24",
+ "resolved": "https://registry.npmjs.org/@heroui/chip/-/chip-2.2.24.tgz",
+ "integrity": "sha512-QdJPQroHKGO+ZgZVlnhlhnAwE46Sm23UlHuFiW6cFIRVuARxHo/K+M/KXpjUEAP659EOtMyS1CzIVhDzuqHuSg==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6"
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/code": {
- "version": "2.2.21",
- "resolved": "https://registry.npmjs.org/@heroui/code/-/code-2.2.21.tgz",
- "integrity": "sha512-ExHcfTGr9tCbAaBOfMzTla8iHHfwIV5/xRk4WApeVmL4MiIlLMykc9bSi1c88ltaJInQGFAmE6MOFHXuGHxBXw==",
+ "version": "2.2.22",
+ "resolved": "https://registry.npmjs.org/@heroui/code/-/code-2.2.22.tgz",
+ "integrity": "sha512-i3pDe5Mzzh04jVx0gFwi2NMtCmsYfIRhLvkebXQcmfUDYl0+IGRJLcBsrWoOzes0pE/s7yyv+yJ/VhoU8F5jcg==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@heroui/system-rsc": "2.3.20"
+ "@heroui/system-rsc": "2.3.21"
},
"peerDependencies": {
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/date-input": {
- "version": "2.3.27",
- "resolved": "https://registry.npmjs.org/@heroui/date-input/-/date-input-2.3.27.tgz",
- "integrity": "sha512-IxvZYezbR9jRxTWdsuHH47nsnB6RV1HPY7VwiJd9ZCy6P6oUV0Rx3cdwIRtUnyXbvz1G7+I22NL4C2Ku194l8A==",
+ "version": "2.3.29",
+ "resolved": "https://registry.npmjs.org/@heroui/date-input/-/date-input-2.3.29.tgz",
+ "integrity": "sha512-ADjmqCJWERjd0BYIwCNgA16IJQ+k7K+Y//ht0OKx4wWU2hMrug0MD9nhymecuCuP7Fa6xIU55+ucZ1qSmesNmg==",
"license": "MIT",
"dependencies": {
- "@heroui/form": "2.1.27",
+ "@heroui/form": "2.1.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@internationalized/date": "3.10.0",
- "@react-aria/datepicker": "3.15.2",
- "@react-aria/i18n": "3.12.13",
- "@react-stately/datepicker": "3.15.2",
- "@react-types/datepicker": "3.13.2",
+ "@internationalized/date": "3.10.1",
+ "@react-aria/datepicker": "3.15.3",
+ "@react-aria/i18n": "3.12.14",
+ "@react-stately/datepicker": "3.15.3",
+ "@react-types/datepicker": "3.13.3",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/date-picker": {
- "version": "2.3.28",
- "resolved": "https://registry.npmjs.org/@heroui/date-picker/-/date-picker-2.3.28.tgz",
- "integrity": "sha512-duKvXijabpafxU04sItrozf982tXkUDymcT3SoEvW4LDg6bECgPI8bYNN49hlzkI8+zuwJdKzJ4hDmANGVaL8Q==",
+ "version": "2.3.30",
+ "resolved": "https://registry.npmjs.org/@heroui/date-picker/-/date-picker-2.3.30.tgz",
+ "integrity": "sha512-NBdo1KkaCkFLRMTrzQoAB02qUP/FxEVffFgCUeTwAxQCKb76gnGYfOVKIbxZHleBmQtpaaIl7LlLpjo08qtgFA==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
- "@heroui/button": "2.2.27",
- "@heroui/calendar": "2.2.27",
- "@heroui/date-input": "2.3.27",
- "@heroui/form": "2.1.27",
- "@heroui/popover": "2.3.27",
+ "@heroui/aria-utils": "2.2.26",
+ "@heroui/button": "2.2.29",
+ "@heroui/calendar": "2.2.29",
+ "@heroui/date-input": "2.3.29",
+ "@heroui/form": "2.1.29",
+ "@heroui/popover": "2.3.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@internationalized/date": "3.10.0",
- "@react-aria/datepicker": "3.15.2",
- "@react-aria/i18n": "3.12.13",
- "@react-stately/datepicker": "3.15.2",
- "@react-stately/utils": "3.10.8",
- "@react-types/datepicker": "3.13.2",
+ "@internationalized/date": "3.10.1",
+ "@react-aria/datepicker": "3.15.3",
+ "@react-aria/i18n": "3.12.14",
+ "@react-stately/datepicker": "3.15.3",
+ "@react-stately/utils": "3.11.0",
+ "@react-types/datepicker": "3.13.3",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/divider": {
- "version": "2.2.20",
- "resolved": "https://registry.npmjs.org/@heroui/divider/-/divider-2.2.20.tgz",
- "integrity": "sha512-t+NNJ2e5okZraLKQoj+rS2l49IMy5AeXTixjsR+QRZ/WPrETNpMj4lw5cBSxG0i7WhRhlBa+KgqweUUezvCdAg==",
+ "version": "2.2.21",
+ "resolved": "https://registry.npmjs.org/@heroui/divider/-/divider-2.2.21.tgz",
+ "integrity": "sha512-aVvl8/3fWUc+/fHbg+hD/0wrkoMKmXG0yRgyNrJSeu0pkRwhb0eD4ZjnBK1pCYqnstoltNE33J8ko/sU+WlmPw==",
"license": "MIT",
"dependencies": {
"@heroui/react-rsc-utils": "2.1.9",
- "@heroui/system-rsc": "2.3.20",
+ "@heroui/system-rsc": "2.3.21",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/drawer": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/@heroui/drawer/-/drawer-2.2.24.tgz",
- "integrity": "sha512-gb51Lj9A8jlL1UvUrQ+MLS9tz+Qw+cdXwIJd39RXDkJwDmxqhzkz+WoOPZZwcOAHtATmwlTuxxlv6Cro59iswg==",
+ "version": "2.2.26",
+ "resolved": "https://registry.npmjs.org/@heroui/drawer/-/drawer-2.2.26.tgz",
+ "integrity": "sha512-XTWKsmYX7/35kOJkidSuuDEbgZqQPv7iJhDvfgVgM1NXX0913CA+Q/Lnl2D7LHFIXs/lhXaV2Z/KWNlbUnBHfQ==",
"license": "MIT",
"dependencies": {
- "@heroui/framer-utils": "2.1.23",
- "@heroui/modal": "2.2.24",
+ "@heroui/framer-utils": "2.1.25",
+ "@heroui/modal": "2.2.26",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/dropdown": {
- "version": "2.3.27",
- "resolved": "https://registry.npmjs.org/@heroui/dropdown/-/dropdown-2.3.27.tgz",
- "integrity": "sha512-6aedMmxC+St5Ixz9o3s0ERkLOR6ZQE2uRccmRchPCEt7ZJU6TAeJo7fSpxIvdEUjFDe+pNhR2ojIocZEXtBZZg==",
+ "version": "2.3.29",
+ "resolved": "https://registry.npmjs.org/@heroui/dropdown/-/dropdown-2.3.29.tgz",
+ "integrity": "sha512-QJxA9SgzThrP8mQJQwrlS+PBITn9ig/pXylVgodZbAMbHJ3E/OgTFeAbYTmoxYAlzSLs/0+SfTdm0vI83zrcmA==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
- "@heroui/menu": "2.2.26",
- "@heroui/popover": "2.3.27",
+ "@heroui/aria-utils": "2.2.26",
+ "@heroui/menu": "2.2.28",
+ "@heroui/popover": "2.3.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@react-aria/focus": "3.21.2",
- "@react-aria/menu": "3.19.3",
- "@react-stately/menu": "3.9.8",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/menu": "3.19.4",
+ "@react-stately/menu": "3.9.9",
"@react-types/menu": "3.10.5"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/image": {
- "version": "2.2.17",
- "resolved": "https://registry.npmjs.org/@heroui/image/-/image-2.2.17.tgz",
- "integrity": "sha512-B/MrWafTsiCBFnRc0hPTLDBh7APjb/lRuQf18umuh20/1n6KiQXJ7XGSjnrHaA6HQcrtMGh6mDFZDaXq9rHuoA==",
+ "version": "2.2.18",
+ "resolved": "https://registry.npmjs.org/@heroui/image/-/image-2.2.18.tgz",
+ "integrity": "sha512-hrvj/hDM0+Khb9EqstZOPeO0vIGZvhrJWPMxk7a6i2PqhWWQI+ws+nrwsG5XqAkwE4mqqf9Uw8EMfIG1XE5YYg==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
@@ -1656,331 +1690,331 @@
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/input": {
- "version": "2.4.28",
- "resolved": "https://registry.npmjs.org/@heroui/input/-/input-2.4.28.tgz",
- "integrity": "sha512-uaBubg814YOlVvX13yCAMqsR9HC4jg+asQdukbOvOnFtHY/d53her1BDdXhR9tMcrRTdYWQ3FoHqWbpvd5X4OQ==",
+ "version": "2.4.30",
+ "resolved": "https://registry.npmjs.org/@heroui/input/-/input-2.4.30.tgz",
+ "integrity": "sha512-dTtQaZ21PofBIyWCnbysw2zpb5V8g6xu4mrZWO5faXt/bUjQLqmv3Y4MI1ghkWL6d0DB2xx0Z0I+U7LYMvoD4g==",
"license": "MIT",
"dependencies": {
- "@heroui/form": "2.1.27",
+ "@heroui/form": "2.1.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-safe-layout-effect": "2.1.8",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/textfield": "3.18.2",
- "@react-stately/utils": "3.10.8",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/textfield": "3.18.3",
+ "@react-stately/utils": "3.11.0",
"@react-types/shared": "3.32.1",
"@react-types/textfield": "3.12.6",
"react-textarea-autosize": "^8.5.3"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.19",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/input-otp": {
- "version": "2.1.27",
- "resolved": "https://registry.npmjs.org/@heroui/input-otp/-/input-otp-2.1.27.tgz",
- "integrity": "sha512-VUzQ1u6/0okE0eqDx/2I/8zpGItSsn7Zml01IVwGM4wY2iJeQA+uRjfP+B1ff9jO/y8n582YU4uv/ZSOmmEQ7A==",
+ "version": "2.1.29",
+ "resolved": "https://registry.npmjs.org/@heroui/input-otp/-/input-otp-2.1.29.tgz",
+ "integrity": "sha512-N3vejZl7+4VYazUS0/JZYBTGjUvstYBz9Bo4ArYye7zC20XkM84j3+Ox664UyNTdLu3Fcr7cO0dv4MVo2vJu7Q==",
"license": "MIT",
"dependencies": {
- "@heroui/form": "2.1.27",
+ "@heroui/form": "2.1.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-form-reset": "2.0.1",
- "@react-aria/focus": "3.21.2",
- "@react-aria/form": "3.1.2",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/form": "3.1.3",
"@react-stately/form": "3.2.2",
- "@react-stately/utils": "3.10.8",
+ "@react-stately/utils": "3.11.0",
"@react-types/textfield": "3.12.6",
"input-otp": "1.4.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18",
"react-dom": ">=18"
}
},
"node_modules/@heroui/react/node_modules/@heroui/kbd": {
- "version": "2.2.22",
- "resolved": "https://registry.npmjs.org/@heroui/kbd/-/kbd-2.2.22.tgz",
- "integrity": "sha512-PKhgwGB7i53kBuqB1YdFZsg7H9fJ8YESMRRPwRRyPSz5feMdwGidyXs+/ix7lrlYp4mlC3wtPp7L79SEyPCpBA==",
+ "version": "2.2.23",
+ "resolved": "https://registry.npmjs.org/@heroui/kbd/-/kbd-2.2.23.tgz",
+ "integrity": "sha512-nKL1Kl044l1Xsk4U8Nib3wFD2NlZCZo6kdqiqUv+DchOo4s3BJcxWSWqHn6fDVmHNyj3DFMYDvA2f/geMasaHQ==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@heroui/system-rsc": "2.3.20"
+ "@heroui/system-rsc": "2.3.21"
},
"peerDependencies": {
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/link": {
- "version": "2.2.23",
- "resolved": "https://registry.npmjs.org/@heroui/link/-/link-2.2.23.tgz",
- "integrity": "sha512-lObtPRLy8ModlTvJiKhczuAV/CIt31hde6xPGFYRpPsaQN1b7RgQMmai5/Iv/M8WrzFmFZRpgW75RKYIB6hHVQ==",
+ "version": "2.2.25",
+ "resolved": "https://registry.npmjs.org/@heroui/link/-/link-2.2.25.tgz",
+ "integrity": "sha512-6hJpMrmHzmVkhze3523xe9PygCjiOHIu0t9p2LRG/kyWrTGx6LZRiufyIHEwZPVm2xp1Wu39UqPwBIkHoGkrag==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@heroui/use-aria-link": "2.2.21",
- "@react-aria/focus": "3.21.2",
+ "@heroui/use-aria-link": "2.2.22",
+ "@react-aria/focus": "3.21.3",
"@react-types/link": "3.6.5"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/listbox": {
- "version": "2.3.26",
- "resolved": "https://registry.npmjs.org/@heroui/listbox/-/listbox-2.3.26.tgz",
- "integrity": "sha512-/k3k+xyl2d+aFfT02h+/0njhsDX8vJDEkPK+dl9ETYI9Oz3L+xbHN9yIzuWjBXYkNGlQCjQ46N+0jWjhP5B4pA==",
+ "version": "2.3.28",
+ "resolved": "https://registry.npmjs.org/@heroui/listbox/-/listbox-2.3.28.tgz",
+ "integrity": "sha512-uONT4NOSYYSOYDtjuMvK13vUYNXspZw+1QpvVSd+Vaq0WcPvEfgoLI/3Kwu4lHPyfoOlE58vCpY7Hfqx/FTQjg==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
- "@heroui/divider": "2.2.20",
+ "@heroui/aria-utils": "2.2.26",
+ "@heroui/divider": "2.2.21",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-is-mobile": "2.2.12",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/listbox": "3.15.0",
- "@react-stately/list": "3.13.1",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/listbox": "3.15.1",
+ "@react-stately/list": "3.13.2",
"@react-types/shared": "3.32.1",
"@tanstack/react-virtual": "3.11.3"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/menu": {
- "version": "2.2.26",
- "resolved": "https://registry.npmjs.org/@heroui/menu/-/menu-2.2.26.tgz",
- "integrity": "sha512-raR5pXgEqizKD9GsWS1yKqTm4RPWMrSQlqXLE2zNMQk0TkDqmPVw1z5griMqu2Zt9Vf2Ectf55vh4c0DNOUGlg==",
+ "version": "2.2.28",
+ "resolved": "https://registry.npmjs.org/@heroui/menu/-/menu-2.2.28.tgz",
+ "integrity": "sha512-54RdjC9cJsdksozy8ZZSoeixFDzbrdCU8qKttg1KYttAUaZzYm853VBwCLYsooIioeCXgrITqNy/NFjQcqx6Fg==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
- "@heroui/divider": "2.2.20",
+ "@heroui/aria-utils": "2.2.26",
+ "@heroui/divider": "2.2.21",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-is-mobile": "2.2.12",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/menu": "3.19.3",
- "@react-stately/tree": "3.9.3",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/menu": "3.19.4",
+ "@react-stately/tree": "3.9.4",
"@react-types/menu": "3.10.5",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/modal": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/@heroui/modal/-/modal-2.2.24.tgz",
- "integrity": "sha512-ISbgorNqgps9iUvQdgANxprdN+6H3Sx9TrGKpuW798qjc2f0T4rTbjrEfFPT8tFx6XYF4P5j7T7m3zoKcortHQ==",
+ "version": "2.2.26",
+ "resolved": "https://registry.npmjs.org/@heroui/modal/-/modal-2.2.26.tgz",
+ "integrity": "sha512-NpnjTEweNExUb3pZWr17u15N1OHbBac4QY4aObwcbIJZKsInLU8NbuLbwyRw9nwAshGSf2FdnQ6dhmDZqwNqfA==",
"license": "MIT",
"dependencies": {
"@heroui/dom-animation": "2.1.10",
- "@heroui/framer-utils": "2.1.23",
+ "@heroui/framer-utils": "2.1.25",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@heroui/use-aria-button": "2.2.20",
- "@heroui/use-aria-modal-overlay": "2.2.19",
- "@heroui/use-disclosure": "2.2.17",
- "@heroui/use-draggable": "2.1.18",
+ "@heroui/use-aria-button": "2.2.21",
+ "@heroui/use-aria-modal-overlay": "2.2.20",
+ "@heroui/use-disclosure": "2.2.18",
+ "@heroui/use-draggable": "2.1.19",
"@heroui/use-viewport-size": "2.0.1",
- "@react-aria/dialog": "3.5.31",
- "@react-aria/focus": "3.21.2",
- "@react-aria/overlays": "3.30.0",
- "@react-stately/overlays": "3.6.20"
+ "@react-aria/dialog": "3.5.32",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/overlays": "3.31.0",
+ "@react-stately/overlays": "3.6.21"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/navbar": {
- "version": "2.2.25",
- "resolved": "https://registry.npmjs.org/@heroui/navbar/-/navbar-2.2.25.tgz",
- "integrity": "sha512-5fNIMDpX2htDTMb/Xgv81qw/FuNWb+0Wpfc6rkFtNYd968I7G6Kjm782QB8WQjZ8DsMugcLEYUN4lpbJHRSdwg==",
+ "version": "2.2.27",
+ "resolved": "https://registry.npmjs.org/@heroui/navbar/-/navbar-2.2.27.tgz",
+ "integrity": "sha512-O2G7kavGDuGbPtpzGMci7YmV8Kf7BOxQ6k7xqnwxWivWX2MdvDNyR+ca60FPPdQL14zH+KfrQmQpoPxgxr79pw==",
"license": "MIT",
"dependencies": {
"@heroui/dom-animation": "2.1.10",
- "@heroui/framer-utils": "2.1.23",
+ "@heroui/framer-utils": "2.1.25",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-resize": "2.1.8",
"@heroui/use-scroll-position": "2.1.8",
- "@react-aria/button": "3.14.2",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/overlays": "3.30.0",
- "@react-stately/toggle": "3.9.2",
- "@react-stately/utils": "3.10.8"
+ "@react-aria/button": "3.14.3",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/overlays": "3.31.0",
+ "@react-stately/toggle": "3.9.3",
+ "@react-stately/utils": "3.11.0"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/number-input": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/@heroui/number-input/-/number-input-2.0.18.tgz",
- "integrity": "sha512-28v0/0FABs+yy3CcJimcr5uNlhaJSyKt1ENMSXfzPxdN2WgIs14+6NLMT+KV7ibcJl7kmqG0uc8vuIDLVrM5bQ==",
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/@heroui/number-input/-/number-input-2.0.20.tgz",
+ "integrity": "sha512-WnSleY9eBRPhZIz4qVi1pYSkxMqNXEZLQgZaiMVbKdkeR9M2ASMo0Qv8+tLMT3KwRaxAu53BvQjp/hz8VADx1Q==",
"license": "MIT",
"dependencies": {
- "@heroui/button": "2.2.27",
- "@heroui/form": "2.1.27",
+ "@heroui/button": "2.2.29",
+ "@heroui/form": "2.1.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-safe-layout-effect": "2.1.8",
- "@react-aria/focus": "3.21.2",
- "@react-aria/i18n": "3.12.13",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/numberfield": "3.12.2",
- "@react-stately/numberfield": "3.10.2",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/i18n": "3.12.14",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/numberfield": "3.12.3",
+ "@react-stately/numberfield": "3.10.3",
"@react-types/button": "3.14.1",
- "@react-types/numberfield": "3.8.15",
+ "@react-types/numberfield": "3.8.16",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.19",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/pagination": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/@heroui/pagination/-/pagination-2.2.24.tgz",
- "integrity": "sha512-5ObSJ1PzB9D1CjHV0MfDNzLR69vSYpx/rNQLBo/D4g5puaAR7kkGgw5ncf5eirhdKuy9y8VGAhjwhBxO4NUdpQ==",
+ "version": "2.2.26",
+ "resolved": "https://registry.npmjs.org/@heroui/pagination/-/pagination-2.2.26.tgz",
+ "integrity": "sha512-Ta70RAMo223BDFw3fAvYew1PauQ+b38Xa0zWnj5mkkrYrLXk7sjomunNtlUFPKkr0B8Dpuu67tp9a8AlmI1z8A==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-intersection-observer": "2.2.14",
- "@heroui/use-pagination": "2.2.18",
- "@react-aria/focus": "3.21.2",
- "@react-aria/i18n": "3.12.13",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/utils": "3.31.0",
+ "@heroui/use-pagination": "2.2.19",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/i18n": "3.12.14",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/utils": "3.32.0",
"scroll-into-view-if-needed": "3.0.10"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/popover": {
- "version": "2.3.27",
- "resolved": "https://registry.npmjs.org/@heroui/popover/-/popover-2.3.27.tgz",
- "integrity": "sha512-PmSCKQcAvKIegK59Flr9cglbsEu7OAegQMtwNIjqWHsPT18NNphimmUSJrtuD78rcfKekrZ+Uo9qJEUf0zGZDw==",
+ "version": "2.3.29",
+ "resolved": "https://registry.npmjs.org/@heroui/popover/-/popover-2.3.29.tgz",
+ "integrity": "sha512-ldEV2iJ8dHUxvEGSlARdqU7V/9Nr6X+AJmImEUHXASiDKnJ2GdiMyIuyx4eIC2cbldJ94W2dRUlJ1rt8Pvsm4w==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
- "@heroui/button": "2.2.27",
+ "@heroui/aria-utils": "2.2.26",
+ "@heroui/button": "2.2.29",
"@heroui/dom-animation": "2.1.10",
- "@heroui/framer-utils": "2.1.23",
+ "@heroui/framer-utils": "2.1.25",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@heroui/use-aria-button": "2.2.20",
- "@heroui/use-aria-overlay": "2.0.4",
+ "@heroui/use-aria-button": "2.2.21",
+ "@heroui/use-aria-overlay": "2.0.5",
"@heroui/use-safe-layout-effect": "2.1.8",
- "@react-aria/dialog": "3.5.31",
- "@react-aria/focus": "3.21.2",
- "@react-aria/overlays": "3.30.0",
- "@react-stately/overlays": "3.6.20",
+ "@react-aria/dialog": "3.5.32",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/overlays": "3.31.0",
+ "@react-stately/overlays": "3.6.21",
"@react-types/overlays": "3.9.2"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/progress": {
- "version": "2.2.22",
- "resolved": "https://registry.npmjs.org/@heroui/progress/-/progress-2.2.22.tgz",
- "integrity": "sha512-ch+iWEDo8d+Owz81vu4+Kj6CLfxi0nUlivQBhXeOzgU3VZbRmxJyW8S6l7wk6GyKJZxsCbYbjV1wPSjZhKJXCg==",
+ "version": "2.2.24",
+ "resolved": "https://registry.npmjs.org/@heroui/progress/-/progress-2.2.24.tgz",
+ "integrity": "sha512-1wGF1tSBx35//7+15dw06j1AB7+FhJiGYIH8hBefDSRD0U16htwXVxoVBk6v4Vd/yfpvVQTktA5fiT+Sl4XQlQ==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-is-mounted": "2.1.8",
- "@react-aria/progress": "3.4.27",
+ "@react-aria/progress": "3.4.28",
"@react-types/progress": "3.5.16"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/radio": {
- "version": "2.3.27",
- "resolved": "https://registry.npmjs.org/@heroui/radio/-/radio-2.3.27.tgz",
- "integrity": "sha512-kfDxzPR0u4++lZX2Gf6wbEe/hGbFnoXI4XLbe4e+ZDjGdBSakNuJlcDvWHVoDFZH1xXyOO9w/dHfZuE6O2VGLA==",
+ "version": "2.3.29",
+ "resolved": "https://registry.npmjs.org/@heroui/radio/-/radio-2.3.29.tgz",
+ "integrity": "sha512-0nj6ws7R1yX5yh4plEjvRLbri6vRG6ogWDU9tJIb6D3vqxv7Lmpdna3+V+fdGdz4uvQp3YQebOY+UE3fCak/Ow==",
"license": "MIT",
"dependencies": {
- "@heroui/form": "2.1.27",
+ "@heroui/form": "2.1.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/radio": "3.12.2",
- "@react-aria/visually-hidden": "3.8.28",
- "@react-stately/radio": "3.11.2",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/radio": "3.12.3",
+ "@react-aria/visually-hidden": "3.8.29",
+ "@react-stately/radio": "3.11.3",
"@react-types/radio": "3.9.2",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/ripple": {
- "version": "2.2.20",
- "resolved": "https://registry.npmjs.org/@heroui/ripple/-/ripple-2.2.20.tgz",
- "integrity": "sha512-3+fBx5jO7l8SE84ZG0vB5BOxKKr23Ay180AeIWcf8m8lhXXd4iShVz2S+keW9PewqVHv52YBaxLoSVQ93Ddcxw==",
+ "version": "2.2.21",
+ "resolved": "https://registry.npmjs.org/@heroui/ripple/-/ripple-2.2.21.tgz",
+ "integrity": "sha512-wairSq9LnhbIqTCJmUlJAQURQ1wcRK/L8pjg2s3R/XnvZlPXHy4ZzfphiwIlTI21z/f6tH3arxv/g1uXd1RY0g==",
"license": "MIT",
"dependencies": {
"@heroui/dom-animation": "2.1.10",
@@ -1988,16 +2022,16 @@
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/scroll-shadow": {
- "version": "2.3.18",
- "resolved": "https://registry.npmjs.org/@heroui/scroll-shadow/-/scroll-shadow-2.3.18.tgz",
- "integrity": "sha512-P/nLQbFPOlbTLRjO2tKoZCljJtU7iq81wsp7C8wZ1rZI1RmkTx3UgLLeoFWgmAp3ZlUIYgaewTnejt6eRx+28w==",
+ "version": "2.3.19",
+ "resolved": "https://registry.npmjs.org/@heroui/scroll-shadow/-/scroll-shadow-2.3.19.tgz",
+ "integrity": "sha512-y5mdBlhiITVrFnQTDqEphYj7p5pHqoFSFtVuRRvl9wUec2lMxEpD85uMGsfL8OgQTKIAqGh2s6M360+VJm7ajQ==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
@@ -2006,189 +2040,187 @@
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/select": {
- "version": "2.4.28",
- "resolved": "https://registry.npmjs.org/@heroui/select/-/select-2.4.28.tgz",
- "integrity": "sha512-Dg3jv248Tu+g2WJMWseDjWA0FAG356elZIcE0OufVAIzQoWjLhgbkTqY9ths0HkcHy0nDwQWvyrrwkbif1kNqA==",
+ "version": "2.4.30",
+ "resolved": "https://registry.npmjs.org/@heroui/select/-/select-2.4.30.tgz",
+ "integrity": "sha512-laGM9ib4E/wxWu0T5/85yQZaKaT9HYP2hqy+xpD0HrKOZxBEINyTIbPJCq3cB9LiM6qqJJk/2A3rRjKNSj1Law==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
- "@heroui/form": "2.1.27",
- "@heroui/listbox": "2.3.26",
- "@heroui/popover": "2.3.27",
+ "@heroui/aria-utils": "2.2.26",
+ "@heroui/form": "2.1.29",
+ "@heroui/listbox": "2.3.28",
+ "@heroui/popover": "2.3.29",
"@heroui/react-utils": "2.1.14",
- "@heroui/scroll-shadow": "2.3.18",
+ "@heroui/scroll-shadow": "2.3.19",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@heroui/spinner": "2.2.24",
- "@heroui/use-aria-button": "2.2.20",
- "@heroui/use-aria-multiselect": "2.4.19",
+ "@heroui/spinner": "2.2.26",
+ "@heroui/use-aria-button": "2.2.21",
+ "@heroui/use-aria-multiselect": "2.4.20",
"@heroui/use-form-reset": "2.0.1",
"@heroui/use-safe-layout-effect": "2.1.8",
- "@react-aria/focus": "3.21.2",
- "@react-aria/form": "3.1.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/overlays": "3.30.0",
- "@react-aria/visually-hidden": "3.8.28",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/form": "3.1.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/overlays": "3.31.0",
+ "@react-aria/visually-hidden": "3.8.29",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/skeleton": {
- "version": "2.2.17",
- "resolved": "https://registry.npmjs.org/@heroui/skeleton/-/skeleton-2.2.17.tgz",
- "integrity": "sha512-WDzwODs+jW+GgMr3oOdLtXXfv8ScXuuWgxN2iPWWyDBcQYXX2XCKGVjCpM5lSKf1UG4Yp3iXuqKzH1m+E+m7kg==",
+ "version": "2.2.18",
+ "resolved": "https://registry.npmjs.org/@heroui/skeleton/-/skeleton-2.2.18.tgz",
+ "integrity": "sha512-7AjU5kjk9rqrKP9mWQiAVj0dow4/vbK5/ejh4jqdb3DZm7bM2+DGzfnQPiS0c2eWR606CgOuuoImpwDS82HJtA==",
"license": "MIT",
"dependencies": {
"@heroui/shared-utils": "2.1.12"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/slider": {
- "version": "2.4.24",
- "resolved": "https://registry.npmjs.org/@heroui/slider/-/slider-2.4.24.tgz",
- "integrity": "sha512-GKdqFTCe9O8tT3HEZ/W4TEWkz7ADtUBzuOBXw779Oqqf02HNg9vSnISlNvI6G0ymYjY42EanwA+dChHbPBIVJw==",
+ "version": "2.4.26",
+ "resolved": "https://registry.npmjs.org/@heroui/slider/-/slider-2.4.26.tgz",
+ "integrity": "sha512-hsJOyNjixw8QK5DC9yMWSOg9abbRuXRXao0ZxQH+/xM8F59eb5xZaqopbN7aFmBP7G28Tfge4i36vE8TsK2Q/g==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@heroui/tooltip": "2.2.24",
- "@react-aria/focus": "3.21.2",
- "@react-aria/i18n": "3.12.13",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/slider": "3.8.2",
- "@react-aria/visually-hidden": "3.8.28",
- "@react-stately/slider": "3.7.2"
+ "@heroui/tooltip": "2.2.26",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/i18n": "3.12.14",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/slider": "3.8.3",
+ "@react-aria/visually-hidden": "3.8.29",
+ "@react-stately/slider": "3.7.3"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.19",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/snippet": {
- "version": "2.2.28",
- "resolved": "https://registry.npmjs.org/@heroui/snippet/-/snippet-2.2.28.tgz",
- "integrity": "sha512-UfC/ZcYpmOutAcazxkizJWlhvqzr077szDyQ85thyUC5yhuRRLrsOHDIhyLWQrEKIcWw5+CaEGS2VLwAFlgfzw==",
+ "version": "2.2.30",
+ "resolved": "https://registry.npmjs.org/@heroui/snippet/-/snippet-2.2.30.tgz",
+ "integrity": "sha512-o/fNVh4jtYAH8/2F6uU7pFdJiCCWZYN0LaPC57dRo8FNxL6+kcxt13Lp+sCBVKEDnuBmMtlL1prjMedX7VqzfQ==",
"license": "MIT",
"dependencies": {
- "@heroui/button": "2.2.27",
+ "@heroui/button": "2.2.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@heroui/tooltip": "2.2.24",
+ "@heroui/tooltip": "2.2.26",
"@heroui/use-clipboard": "2.1.9",
- "@react-aria/focus": "3.21.2"
+ "@react-aria/focus": "3.21.3"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/spacer": {
- "version": "2.2.21",
- "resolved": "https://registry.npmjs.org/@heroui/spacer/-/spacer-2.2.21.tgz",
- "integrity": "sha512-WKD+BlgHfqJ8lrkkg/6cvzSWNsbRjzr24HpZnv6cDeWX95wVLTOco9HVR8ohwStMqwu5zYeUd1bw6yCDVTo53w==",
+ "version": "2.2.22",
+ "resolved": "https://registry.npmjs.org/@heroui/spacer/-/spacer-2.2.22.tgz",
+ "integrity": "sha512-BJ7RauvSY3gx10ntqZkCcyTy9K2FS4AeeryQUE9RgkMKQxP4t5TbeYLPEyomjWK+cCL/ERQCCruW16D3vKyWmw==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@heroui/system-rsc": "2.3.20"
+ "@heroui/system-rsc": "2.3.21"
},
"peerDependencies": {
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/spinner": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/@heroui/spinner/-/spinner-2.2.24.tgz",
- "integrity": "sha512-HfKkFffrIN9UdJY2UaenlB8xEwIzolCCFCwU0j3wVnLMX+Dw+ixwaELdAxX14Z6gPQYec6AROKetkWWit14rlw==",
+ "version": "2.2.26",
+ "resolved": "https://registry.npmjs.org/@heroui/spinner/-/spinner-2.2.26.tgz",
+ "integrity": "sha512-AtZhUO+IrZwahdQ5FOVptOZRMz7Z51gDUuj1K3pEJvOiKW+zvqab9BHYW9A09nd7qMH+DMM/41PQJbZg+eOHzg==",
"license": "MIT",
"dependencies": {
"@heroui/shared-utils": "2.1.12",
- "@heroui/system": "2.4.23",
- "@heroui/system-rsc": "2.3.20"
+ "@heroui/system": "2.4.25",
+ "@heroui/system-rsc": "2.3.21"
},
"peerDependencies": {
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/switch": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/@heroui/switch/-/switch-2.2.24.tgz",
- "integrity": "sha512-RbV+MECncBKsthX3D8r+CGoQRu8Q3AAYUEdm/7ody6+bMZFmBilm695yLiqziMI33Ct/WQ0WkpvrTClIcmxU/A==",
+ "version": "2.2.26",
+ "resolved": "https://registry.npmjs.org/@heroui/switch/-/switch-2.2.26.tgz",
+ "integrity": "sha512-c/FCzromB+ww8AObgA0H//jOrhxyn0MllWVeEwMXac7O6z/N4B+fJ8dLCu/vu1zchySFLuDq/PaETEMJ7hKW4A==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-safe-layout-effect": "2.1.8",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/switch": "3.7.8",
- "@react-aria/visually-hidden": "3.8.28",
- "@react-stately/toggle": "3.9.2"
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/switch": "3.7.9",
+ "@react-aria/visually-hidden": "3.8.29",
+ "@react-stately/toggle": "3.9.3"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/system-rsc": {
- "version": "2.3.20",
- "resolved": "https://registry.npmjs.org/@heroui/system-rsc/-/system-rsc-2.3.20.tgz",
- "integrity": "sha512-uZwQErEud/lAX7KRXEdsDcGLyygBffHcgnbCDrLvmTf3cyBE84YziG7AjM7Ts8ZcrF+wBXX4+a1IqnKGlsGEdQ==",
+ "version": "2.3.21",
+ "resolved": "https://registry.npmjs.org/@heroui/system-rsc/-/system-rsc-2.3.21.tgz",
+ "integrity": "sha512-icB7njbNgkI3dcfZhY5LP7VFspaVgWL1lcg9Q7uJMAaj6gGFqqSSnHkSMwpR9AGLxVRKTHey0TUx8CeZDe8XDw==",
"license": "MIT",
"dependencies": {
- "@react-types/shared": "3.32.1",
- "clsx": "^1.2.1"
+ "@react-types/shared": "3.32.1"
},
"peerDependencies": {
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/table": {
- "version": "2.2.27",
- "resolved": "https://registry.npmjs.org/@heroui/table/-/table-2.2.27.tgz",
- "integrity": "sha512-XFmbEgBzf89WH1VzmnwENxVzK4JrHV5jdlzyM3snNhk8uDSjfecnUY33qR62cpdZsKiCFFcYf7kQPkCnJGnD0Q==",
+ "version": "2.2.29",
+ "resolved": "https://registry.npmjs.org/@heroui/table/-/table-2.2.29.tgz",
+ "integrity": "sha512-/YLP1+cSSiolj1kvU6YSge4BNvwqT7yDom8YebBHCjidwOBbORGHh6HJ9btVk2GUzdTh57N9vErh9VCEuz5/DA==",
"license": "MIT",
"dependencies": {
- "@heroui/checkbox": "2.3.27",
+ "@heroui/checkbox": "2.3.29",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@heroui/spacer": "2.2.21",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/table": "3.17.8",
- "@react-aria/visually-hidden": "3.8.28",
- "@react-stately/table": "3.15.1",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/table": "3.17.9",
+ "@react-aria/visually-hidden": "3.8.29",
+ "@react-stately/table": "3.15.2",
"@react-stately/virtualizer": "4.4.4",
"@react-types/grid": "3.3.6",
"@react-types/table": "3.13.4",
@@ -2196,208 +2228,122 @@
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/tabs": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/@heroui/tabs/-/tabs-2.2.24.tgz",
- "integrity": "sha512-2SfxzAXe1t2Zz0v16kqkb7DR2wW86XoDwRUpLex6zhEN4/uT5ILeynxIVSUyAvVN3z95cnaQt0XPQBfUjAIQhQ==",
+ "version": "2.2.26",
+ "resolved": "https://registry.npmjs.org/@heroui/tabs/-/tabs-2.2.26.tgz",
+ "integrity": "sha512-RK5TjDI2KY1i/zyO/zzwkiDnQEYxcXSu9QCigNLcCZ6SXq0J3n83FC5Vv91kFwU9aTRuwdxIHv5KzV7D8Xe14w==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
+ "@heroui/aria-utils": "2.2.26",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
"@heroui/use-is-mounted": "2.1.8",
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/tabs": "3.10.8",
- "@react-stately/tabs": "3.8.6",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/tabs": "3.10.9",
+ "@react-stately/tabs": "3.8.7",
"@react-types/shared": "3.32.1",
"scroll-into-view-if-needed": "3.0.10"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.22",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/theme": {
- "version": "2.4.23",
- "resolved": "https://registry.npmjs.org/@heroui/theme/-/theme-2.4.23.tgz",
- "integrity": "sha512-5hoaRWG+/d/t06p7Pfhz70DUP0Uggjids7/z2Ytgup4A8KAOvDIXxvHUDlk6rRHKiN1wDMNA5H+EWsSXB/m03Q==",
+ "version": "2.4.25",
+ "resolved": "https://registry.npmjs.org/@heroui/theme/-/theme-2.4.25.tgz",
+ "integrity": "sha512-nTptYhO1V9rMoh9SJDnMfaSmFuoXvbem1UuwgHcraRtqy/TIVBPqv26JEGzSoUCL194TDGOJpqrpMuab/PdXcw==",
"license": "MIT",
"dependencies": {
"@heroui/shared-utils": "2.1.12",
- "clsx": "^1.2.1",
"color": "^4.2.3",
"color2k": "^2.0.3",
"deepmerge": "4.3.1",
"flat": "^5.0.2",
- "tailwind-merge": "3.3.1",
- "tailwind-variants": "3.1.1"
+ "tailwind-merge": "3.4.0",
+ "tailwind-variants": "3.2.2"
},
"peerDependencies": {
"tailwindcss": ">=4.0.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/toast": {
- "version": "2.0.17",
- "resolved": "https://registry.npmjs.org/@heroui/toast/-/toast-2.0.17.tgz",
- "integrity": "sha512-w3TaA1DYLcwdDjpwf9xw5YSr+odo9GGHsObsrMmLEQDS0JQhmKyK5sQqXUzb9d27EC6KVwGjeVg0hUHYQBK2JA==",
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/@heroui/toast/-/toast-2.0.19.tgz",
+ "integrity": "sha512-KUl/vIMoZQxpjLPxx57XKh39Ai1CyPqm+1Pn20xOVk0fV+2SqC7OW6xivwwBnS7rysx8JfMHwNVJUHTU0o9K1Q==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
"@heroui/shared-icons": "2.1.10",
"@heroui/shared-utils": "2.1.12",
- "@heroui/spinner": "2.2.24",
+ "@heroui/spinner": "2.2.26",
"@heroui/use-is-mobile": "2.2.12",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/toast": "3.0.8",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/toast": "3.0.9",
"@react-stately/toast": "3.1.2"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/tooltip": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/@heroui/tooltip/-/tooltip-2.2.24.tgz",
- "integrity": "sha512-H+0STFea2/Z4obDdk+ZPoDzJxJQHIWGSjnW/jieThJbJ5zow/qBfcg5DqzIdiC+FCJ4dDD5jEDZ4W4H/fQUKQA==",
+ "version": "2.2.26",
+ "resolved": "https://registry.npmjs.org/@heroui/tooltip/-/tooltip-2.2.26.tgz",
+ "integrity": "sha512-VERreBoBAjqFLvJmBMVvRCYGxr+nq8gcncC14ewWqCzWwv/WQm9wVSqHLnwCtZelOz7ofaDDqvxmGjMqzMnqFw==",
"license": "MIT",
"dependencies": {
- "@heroui/aria-utils": "2.2.24",
+ "@heroui/aria-utils": "2.2.26",
"@heroui/dom-animation": "2.1.10",
- "@heroui/framer-utils": "2.1.23",
+ "@heroui/framer-utils": "2.1.25",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@heroui/use-aria-overlay": "2.0.4",
+ "@heroui/use-aria-overlay": "2.0.5",
"@heroui/use-safe-layout-effect": "2.1.8",
- "@react-aria/overlays": "3.30.0",
- "@react-aria/tooltip": "3.8.8",
- "@react-stately/tooltip": "3.5.8",
+ "@react-aria/overlays": "3.31.0",
+ "@react-aria/tooltip": "3.9.0",
+ "@react-stately/tooltip": "3.5.9",
"@react-types/overlays": "3.9.2",
- "@react-types/tooltip": "3.4.21"
+ "@react-types/tooltip": "3.5.0"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/react/node_modules/@heroui/user": {
- "version": "2.2.22",
- "resolved": "https://registry.npmjs.org/@heroui/user/-/user-2.2.22.tgz",
- "integrity": "sha512-kOLxh9Bjgl/ya/f+W7/eKVO/n1GPsU5TPzwocC9+FU/+MbCOrmkevhAGGUrb259KCnp9WCv7WGRIcf8rrsreDw==",
+ "version": "2.2.24",
+ "resolved": "https://registry.npmjs.org/@heroui/user/-/user-2.2.24.tgz",
+ "integrity": "sha512-SH8MlILc1Nn7lBvbvsqNok6H36+FrhT9VIQlKwzzX/tidr15LRK74F1k8UPV7PBAxDKxQ0FRCictCXI8dN9lcQ==",
"license": "MIT",
"dependencies": {
- "@heroui/avatar": "2.2.22",
+ "@heroui/avatar": "2.2.24",
"@heroui/react-utils": "2.1.14",
"@heroui/shared-utils": "2.1.12",
- "@react-aria/focus": "3.21.2"
+ "@react-aria/focus": "3.21.3"
},
"peerDependencies": {
"@heroui/system": ">=2.4.18",
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.24",
"react": ">=18 || >=19.0.0-rc.0",
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
- "node_modules/@heroui/react/node_modules/@react-aria/form": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.1.2.tgz",
- "integrity": "sha512-R3i7L7Ci61PqZQvOrnL9xJeWEbh28UkTVgkj72EvBBn39y4h7ReH++0stv7rRs8p5ozETSKezBbGfu4UsBewWw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/form": "^3.2.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@heroui/react/node_modules/@react-aria/listbox": {
- "version": "3.15.0",
- "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.15.0.tgz",
- "integrity": "sha512-Ub1Wu79R9sgxM7h4HeEdjOgOKDHwduvYcnDqsSddGXgpkL8ADjsy2YUQ0hHY5VnzA4BxK36bLp4mzSna8Qvj1w==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/label": "^3.7.22",
- "@react-aria/selection": "^3.26.0",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/collections": "^3.12.8",
- "@react-stately/list": "^3.13.1",
- "@react-types/listbox": "^3.7.4",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@heroui/react/node_modules/@react-aria/menu": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.19.3.tgz",
- "integrity": "sha512-52fh8y8b2776R2VrfZPpUBJYC9oTP7XDy+zZuZTxPEd7Ywk0JNUl5F92y6ru22yPkS13sdhrNM/Op+V/KulmAg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/focus": "^3.21.2",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/overlays": "^3.30.0",
- "@react-aria/selection": "^3.26.0",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/collections": "^3.12.8",
- "@react-stately/menu": "^3.9.8",
- "@react-stately/selection": "^3.20.6",
- "@react-stately/tree": "^3.9.3",
- "@react-types/button": "^3.14.1",
- "@react-types/menu": "^3.10.5",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@heroui/react/node_modules/@react-aria/textfield": {
- "version": "3.18.2",
- "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.18.2.tgz",
- "integrity": "sha512-G+lM8VYSor6g9Yptc6hLZ6BF+0cq0pYol1z6wdQUQgJN8tg4HPtzq75lsZtlCSIznL3amgRAxJtd0dUrsAnvaQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/form": "^3.1.2",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/label": "^3.7.22",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/form": "^3.2.2",
- "@react-stately/utils": "^3.10.8",
- "@react-types/shared": "^3.32.1",
- "@react-types/textfield": "^3.12.6",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
"node_modules/@heroui/react/node_modules/@tanstack/react-virtual": {
"version": "3.11.3",
"resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.3.tgz",
@@ -2425,24 +2371,47 @@
"url": "https://github.com/sponsors/tannerlinsley"
}
},
- "node_modules/@heroui/react/node_modules/clsx": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
- "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+ "node_modules/@heroui/react/node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
"license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=12.5.0"
}
},
- "node_modules/@heroui/react/node_modules/tailwindcss": {
- "version": "4.1.17",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz",
- "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==",
+ "node_modules/@heroui/react/node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
"license": "MIT",
- "peer": true
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
},
- "node_modules/@heroui/shared-icons": {
- "version": "2.1.10",
+ "node_modules/@heroui/react/node_modules/scroll-into-view-if-needed": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz",
+ "integrity": "sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==",
+ "license": "MIT",
+ "dependencies": {
+ "compute-scroll-into-view": "^3.0.2"
+ }
+ },
+ "node_modules/@heroui/react/node_modules/tailwindcss": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz",
+ "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@heroui/shared-icons": {
+ "version": "2.1.10",
"resolved": "https://registry.npmjs.org/@heroui/shared-icons/-/shared-icons-2.1.10.tgz",
"integrity": "sha512-ePo60GjEpM0SEyZBGOeySsLueNDCqLsVL79Fq+5BphzlrBAcaKY7kUp74964ImtkXvknTxAWzuuTr3kCRqj6jg==",
"license": "MIT",
@@ -2458,16 +2427,16 @@
"license": "MIT"
},
"node_modules/@heroui/system": {
- "version": "2.4.23",
- "resolved": "https://registry.npmjs.org/@heroui/system/-/system-2.4.23.tgz",
- "integrity": "sha512-kgYvfkIOQKM6CCBIlNSE2tXMtNrS1mvEUbvwnaU3pEYbMlceBtwA5v7SlpaJy/5dqKcTbfmVMUCmXnY/Kw4vaQ==",
+ "version": "2.4.25",
+ "resolved": "https://registry.npmjs.org/@heroui/system/-/system-2.4.25.tgz",
+ "integrity": "sha512-F6UUoGTQ+Qas5wYkCzLjXE7u74Z9ygO0u0+dkTW7zCaY7ds65CcmvZ/ahKz2ES3Tk6TNks1MJSyaQ9rFLs8AqA==",
"license": "MIT",
"dependencies": {
"@heroui/react-utils": "2.1.14",
- "@heroui/system-rsc": "2.3.20",
- "@react-aria/i18n": "3.12.13",
- "@react-aria/overlays": "3.30.0",
- "@react-aria/utils": "3.31.0"
+ "@heroui/system-rsc": "2.3.21",
+ "@react-aria/i18n": "3.12.14",
+ "@react-aria/overlays": "3.31.0",
+ "@react-aria/utils": "3.32.0"
},
"peerDependencies": {
"framer-motion": ">=11.5.6 || >=12.0.0-alpha.1",
@@ -2476,23 +2445,22 @@
}
},
"node_modules/@heroui/system/node_modules/@heroui/system-rsc": {
- "version": "2.3.20",
- "resolved": "https://registry.npmjs.org/@heroui/system-rsc/-/system-rsc-2.3.20.tgz",
- "integrity": "sha512-uZwQErEud/lAX7KRXEdsDcGLyygBffHcgnbCDrLvmTf3cyBE84YziG7AjM7Ts8ZcrF+wBXX4+a1IqnKGlsGEdQ==",
+ "version": "2.3.21",
+ "resolved": "https://registry.npmjs.org/@heroui/system-rsc/-/system-rsc-2.3.21.tgz",
+ "integrity": "sha512-icB7njbNgkI3dcfZhY5LP7VFspaVgWL1lcg9Q7uJMAaj6gGFqqSSnHkSMwpR9AGLxVRKTHey0TUx8CeZDe8XDw==",
"license": "MIT",
"dependencies": {
- "@react-types/shared": "3.32.1",
- "clsx": "^1.2.1"
+ "@react-types/shared": "3.32.1"
},
"peerDependencies": {
- "@heroui/theme": ">=2.4.17",
+ "@heroui/theme": ">=2.4.23",
"react": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/system/node_modules/@heroui/theme": {
- "version": "2.4.24",
- "resolved": "https://registry.npmjs.org/@heroui/theme/-/theme-2.4.24.tgz",
- "integrity": "sha512-lL+anmY4GGWwKyTbJ2PEBZE4talIZ3hu4yGpku9TktCVG2nC2YTwiWQFJ+Jcbf8Cf9vuLzI1sla5bz2jUqiBRA==",
+ "version": "2.4.25",
+ "resolved": "https://registry.npmjs.org/@heroui/theme/-/theme-2.4.25.tgz",
+ "integrity": "sha512-nTptYhO1V9rMoh9SJDnMfaSmFuoXvbem1UuwgHcraRtqy/TIVBPqv26JEGzSoUCL194TDGOJpqrpMuab/PdXcw==",
"license": "MIT",
"peer": true,
"dependencies": {
@@ -2508,44 +2476,29 @@
"tailwindcss": ">=4.0.0"
}
},
- "node_modules/@heroui/system/node_modules/clsx": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
- "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@heroui/system/node_modules/tailwind-merge": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz",
- "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==",
+ "node_modules/@heroui/system/node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
"license": "MIT",
"peer": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/dcastil"
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
}
},
- "node_modules/@heroui/system/node_modules/tailwind-variants": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz",
- "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==",
+ "node_modules/@heroui/system/node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
"license": "MIT",
"peer": true,
- "engines": {
- "node": ">=16.x",
- "pnpm": ">=7.x"
- },
- "peerDependencies": {
- "tailwind-merge": ">=3.0.0",
- "tailwindcss": "*"
- },
- "peerDependenciesMeta": {
- "tailwind-merge": {
- "optional": true
- }
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
}
},
"node_modules/@heroui/system/node_modules/tailwindcss": {
@@ -2556,15 +2509,15 @@
"peer": true
},
"node_modules/@heroui/use-aria-accordion": {
- "version": "2.2.18",
- "resolved": "https://registry.npmjs.org/@heroui/use-aria-accordion/-/use-aria-accordion-2.2.18.tgz",
- "integrity": "sha512-qjRkae2p4MFDrNqO6v6YCor0BtVi3idMd1dsI82XM16bxLQ2stqG4Ajrg60xV0AN+WKZUq10oetqkJuY6MYg0w==",
+ "version": "2.2.19",
+ "resolved": "https://registry.npmjs.org/@heroui/use-aria-accordion/-/use-aria-accordion-2.2.19.tgz",
+ "integrity": "sha512-4HGY2zr+MIzRtIO9epFQGeU7VeGqhCotxxXzscfwxLfEeHBJwQvMAsu7yrUQ/uyMGvSiohHlJRgIsuT1xzxH1Q==",
"license": "MIT",
"dependencies": {
- "@react-aria/button": "3.14.2",
- "@react-aria/focus": "3.21.2",
- "@react-aria/selection": "3.26.0",
- "@react-stately/tree": "3.9.3",
+ "@react-aria/button": "3.14.3",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/selection": "3.27.0",
+ "@react-stately/tree": "3.9.4",
"@react-types/accordion": "3.0.0-alpha.26",
"@react-types/shared": "3.32.1"
},
@@ -2573,14 +2526,14 @@
}
},
"node_modules/@heroui/use-aria-button": {
- "version": "2.2.20",
- "resolved": "https://registry.npmjs.org/@heroui/use-aria-button/-/use-aria-button-2.2.20.tgz",
- "integrity": "sha512-Y0Bmze/pxEACKsHMbA1sYA3ghMJ+9fSnWvZBwlUxqiVXDEy2YrrK2JmXEgsuHGQdKD9RqU2Od3V4VqIIiaHiMA==",
+ "version": "2.2.21",
+ "resolved": "https://registry.npmjs.org/@heroui/use-aria-button/-/use-aria-button-2.2.21.tgz",
+ "integrity": "sha512-8Lhjt1xoDpjhqvEbFC21NEgU89p7Z+MAzrDyoF1eYUn/w4ahhBgcQStP6WicLfx50tOE10WDpPBq72tah/O+ww==",
"license": "MIT",
"dependencies": {
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/utils": "3.31.0",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/utils": "3.32.0",
"@react-types/button": "3.14.1",
"@react-types/shared": "3.32.1"
},
@@ -2589,14 +2542,14 @@
}
},
"node_modules/@heroui/use-aria-link": {
- "version": "2.2.21",
- "resolved": "https://registry.npmjs.org/@heroui/use-aria-link/-/use-aria-link-2.2.21.tgz",
- "integrity": "sha512-sG2rUutT/E/FYguzZmg715cXcM6+ue9wRfs2Gi6epWJwIVpS51uEagJKY0wIutJDfuCPfQ9AuxXfJek4CnxjKw==",
+ "version": "2.2.22",
+ "resolved": "https://registry.npmjs.org/@heroui/use-aria-link/-/use-aria-link-2.2.22.tgz",
+ "integrity": "sha512-T7wESiV9IBqe5MILMZ1pL+GIWxyPVj7ag/KUhZUH3v/dm94m+f2Ua7rXxzI+hj2H51s189YP+Eb1PagHMDrfPg==",
"license": "MIT",
"dependencies": {
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/utils": "3.31.0",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/utils": "3.32.0",
"@react-types/link": "3.6.5",
"@react-types/shared": "3.32.1"
},
@@ -2605,15 +2558,15 @@
}
},
"node_modules/@heroui/use-aria-modal-overlay": {
- "version": "2.2.19",
- "resolved": "https://registry.npmjs.org/@heroui/use-aria-modal-overlay/-/use-aria-modal-overlay-2.2.19.tgz",
- "integrity": "sha512-MPvszNrt+1DauiSyOAwb0pKbYahpEVi9hrmidnO8cd1SA7B2ES0fNRBeNMAwcaeR/Nzsv+Cw1hRXt3egwqi0lg==",
+ "version": "2.2.20",
+ "resolved": "https://registry.npmjs.org/@heroui/use-aria-modal-overlay/-/use-aria-modal-overlay-2.2.20.tgz",
+ "integrity": "sha512-AIYfpnpiRVJm3InKlroGqQSZ1hjBI0Y5oMhMrXuQqrySsMKzMye3zMcEBWf8dEho1l+/U0dgNIUJFbkEFsOc8w==",
"license": "MIT",
"dependencies": {
- "@heroui/use-aria-overlay": "2.0.4",
- "@react-aria/overlays": "3.30.0",
- "@react-aria/utils": "3.31.0",
- "@react-stately/overlays": "3.6.20"
+ "@heroui/use-aria-overlay": "2.0.5",
+ "@react-aria/overlays": "3.31.0",
+ "@react-aria/utils": "3.32.0",
+ "@react-stately/overlays": "3.6.21"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0",
@@ -2621,21 +2574,21 @@
}
},
"node_modules/@heroui/use-aria-multiselect": {
- "version": "2.4.19",
- "resolved": "https://registry.npmjs.org/@heroui/use-aria-multiselect/-/use-aria-multiselect-2.4.19.tgz",
- "integrity": "sha512-RLDSpOLJqNESn6OK/zKuyTriK6sqMby76si/4kTMCs+4lmMPOyFKP3fREywu+zyJjRUCuZPa6xYuN2OHKQRDow==",
- "license": "MIT",
- "dependencies": {
- "@react-aria/i18n": "3.12.13",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/label": "3.7.22",
- "@react-aria/listbox": "3.15.0",
- "@react-aria/menu": "3.19.3",
- "@react-aria/selection": "3.26.0",
- "@react-aria/utils": "3.31.0",
+ "version": "2.4.20",
+ "resolved": "https://registry.npmjs.org/@heroui/use-aria-multiselect/-/use-aria-multiselect-2.4.20.tgz",
+ "integrity": "sha512-Tvbk2AaWfGYgL6Sn9SwsI+nSOcaD1e3wWGPEqHzeFgoSV6cT7oLY70TODD/HyTF+LKYPtYUbAenxDd80Z5j+Eg==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-aria/i18n": "3.12.14",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/label": "3.7.23",
+ "@react-aria/listbox": "3.15.1",
+ "@react-aria/menu": "3.19.4",
+ "@react-aria/selection": "3.27.0",
+ "@react-aria/utils": "3.32.0",
"@react-stately/form": "3.2.2",
- "@react-stately/list": "3.13.1",
- "@react-stately/menu": "3.9.8",
+ "@react-stately/list": "3.13.2",
+ "@react-stately/menu": "3.9.9",
"@react-types/button": "3.14.1",
"@react-types/overlays": "3.9.2",
"@react-types/shared": "3.32.1"
@@ -2645,77 +2598,15 @@
"react-dom": ">=18 || >=19.0.0-rc.0"
}
},
- "node_modules/@heroui/use-aria-multiselect/node_modules/@react-aria/label": {
- "version": "3.7.22",
- "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.22.tgz",
- "integrity": "sha512-jLquJeA5ZNqDT64UpTc9XJ7kQYltUlNcgxZ37/v4mHe0UZ7QohCKdKQhXHONb0h2jjNUpp2HOZI8J9++jOpzxA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/utils": "^3.31.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@heroui/use-aria-multiselect/node_modules/@react-aria/listbox": {
- "version": "3.15.0",
- "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.15.0.tgz",
- "integrity": "sha512-Ub1Wu79R9sgxM7h4HeEdjOgOKDHwduvYcnDqsSddGXgpkL8ADjsy2YUQ0hHY5VnzA4BxK36bLp4mzSna8Qvj1w==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/label": "^3.7.22",
- "@react-aria/selection": "^3.26.0",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/collections": "^3.12.8",
- "@react-stately/list": "^3.13.1",
- "@react-types/listbox": "^3.7.4",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@heroui/use-aria-multiselect/node_modules/@react-aria/menu": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.19.3.tgz",
- "integrity": "sha512-52fh8y8b2776R2VrfZPpUBJYC9oTP7XDy+zZuZTxPEd7Ywk0JNUl5F92y6ru22yPkS13sdhrNM/Op+V/KulmAg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/focus": "^3.21.2",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/overlays": "^3.30.0",
- "@react-aria/selection": "^3.26.0",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/collections": "^3.12.8",
- "@react-stately/menu": "^3.9.8",
- "@react-stately/selection": "^3.20.6",
- "@react-stately/tree": "^3.9.3",
- "@react-types/button": "^3.14.1",
- "@react-types/menu": "^3.10.5",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
"node_modules/@heroui/use-aria-overlay": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@heroui/use-aria-overlay/-/use-aria-overlay-2.0.4.tgz",
- "integrity": "sha512-iv+y0+OvQd1eWiZftPI07JE3c5AdK85W5k3rDlhk5MFEI3dllkIpu8z8zLh3ge/BQGFiGkySVC5iXl8w84gMUQ==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@heroui/use-aria-overlay/-/use-aria-overlay-2.0.5.tgz",
+ "integrity": "sha512-2g1HxRoDzGAqIkW7s09WEXg+SAWslh+ZkIuixNAqsA60FHSAzQtGCNpbE2yFeMrukhbmRfS8t3hT2JVZVAXG7w==",
"license": "MIT",
"dependencies": {
- "@react-aria/focus": "3.21.2",
- "@react-aria/interactions": "3.25.6",
- "@react-aria/overlays": "3.30.0",
+ "@react-aria/focus": "3.21.3",
+ "@react-aria/interactions": "3.26.0",
+ "@react-aria/overlays": "3.31.0",
"@react-types/shared": "3.32.1"
},
"peerDependencies": {
@@ -2757,26 +2648,26 @@
}
},
"node_modules/@heroui/use-disclosure": {
- "version": "2.2.17",
- "resolved": "https://registry.npmjs.org/@heroui/use-disclosure/-/use-disclosure-2.2.17.tgz",
- "integrity": "sha512-S3pN0WmpcTTZuQHcXw4RcTVsxLaCZ95H5qi/JPN83ahhWTCC+pN8lwE37vSahbMTM1YriiHyTM6AWpv/E3Jq7w==",
+ "version": "2.2.18",
+ "resolved": "https://registry.npmjs.org/@heroui/use-disclosure/-/use-disclosure-2.2.18.tgz",
+ "integrity": "sha512-aR/4oITXOyt8uze9EdfL/b2j8pg75dc92Q8FfoT17MibD6nKI1VmQDA+9CAtUwuKq6rSrEGqc14muO3GYpTH4g==",
"license": "MIT",
"dependencies": {
"@heroui/use-callback-ref": "2.1.8",
- "@react-aria/utils": "3.31.0",
- "@react-stately/utils": "3.10.8"
+ "@react-aria/utils": "3.32.0",
+ "@react-stately/utils": "3.11.0"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0"
}
},
"node_modules/@heroui/use-draggable": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/@heroui/use-draggable/-/use-draggable-2.1.18.tgz",
- "integrity": "sha512-ihQdmLGYJ6aTEaJ0/yCXYn6VRdrRV2eO03XD2A3KANZPb1Bj/n4r298xNMql5VnGq5ZNDJB9nTv8NNCu9pmPdg==",
+ "version": "2.1.19",
+ "resolved": "https://registry.npmjs.org/@heroui/use-draggable/-/use-draggable-2.1.19.tgz",
+ "integrity": "sha512-pk0Oe4QLcjr1gndcuvq+8z6eoM+v3lvbmEDxbsEjeST9AwykfmT/60X+xrPFtCkfYldYXk1UxBPiGwrFs0lscQ==",
"license": "MIT",
"dependencies": {
- "@react-aria/interactions": "3.25.6"
+ "@react-aria/interactions": "3.26.0"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0"
@@ -2844,13 +2735,13 @@
}
},
"node_modules/@heroui/use-pagination": {
- "version": "2.2.18",
- "resolved": "https://registry.npmjs.org/@heroui/use-pagination/-/use-pagination-2.2.18.tgz",
- "integrity": "sha512-qm1mUe5UgV0kPZItcs/jiX/BxzdDagmcxaJkYR6DkhfMRoCuOdoJhcoh8ncbCAgHpzPESPn1VxsOcG4/Y+Jkdw==",
+ "version": "2.2.19",
+ "resolved": "https://registry.npmjs.org/@heroui/use-pagination/-/use-pagination-2.2.19.tgz",
+ "integrity": "sha512-0VLyxge+rPBexK7xoLgPwCC8ngh9vIgHEtS+sRvulcEy4grG9EvZWUfMpMeiboFc5Ku2l5u+D9jYkaV06EY4Rw==",
"license": "MIT",
"dependencies": {
"@heroui/shared-utils": "2.1.12",
- "@react-aria/i18n": "3.12.13"
+ "@react-aria/i18n": "3.12.14"
},
"peerDependencies": {
"react": ">=18 || >=19.0.0-rc.0"
@@ -2892,6 +2783,18 @@
"react": ">=18 || >=19.0.0-rc.0"
}
},
+ "node_modules/@hono/node-server": {
+ "version": "1.19.9",
+ "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.9.tgz",
+ "integrity": "sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.14.1"
+ },
+ "peerDependencies": {
+ "hono": "^4"
+ }
+ },
"node_modules/@img/colour": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz",
@@ -3383,9 +3286,9 @@
}
},
"node_modules/@internationalized/date": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.0.tgz",
- "integrity": "sha512-oxDR/NTEJ1k+UFVQElaNIk65E/Z83HK1z1WI3lQyhTtnNg4R5oVXaPzK3jcpKG8UHKDVuDQHzn+wsxSz8RP3aw==",
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz",
+ "integrity": "sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==",
"license": "Apache-2.0",
"dependencies": {
"@swc/helpers": "^0.5.0"
@@ -3640,11 +3543,12 @@
"license": "BSD-2-Clause"
},
"node_modules/@modelcontextprotocol/sdk": {
- "version": "1.24.3",
- "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.24.3.tgz",
- "integrity": "sha512-YgSHW29fuzKKAHTGe9zjNoo+yF8KaQPzDC2W9Pv41E7/57IfY+AMGJ/aDFlgTLcVVELoggKE4syABCE75u3NCw==",
+ "version": "1.25.3",
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.3.tgz",
+ "integrity": "sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==",
"license": "MIT",
"dependencies": {
+ "@hono/node-server": "^1.19.9",
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"content-type": "^1.0.5",
@@ -3655,6 +3559,7 @@
"express": "^5.0.1",
"express-rate-limit": "^7.5.0",
"jose": "^6.1.1",
+ "json-schema-typed": "^8.0.2",
"pkce-challenge": "^5.0.0",
"raw-body": "^3.0.0",
"zod": "^3.25 || ^4.0",
@@ -3727,26 +3632,30 @@
"license": "MIT"
},
"node_modules/@platejs/autoformat": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/autoformat/-/autoformat-52.0.1.tgz",
- "integrity": "sha512-eLXtzOiXJIbWO3nzp0wcdZsh0JI3ePvmxFY9Yhl4dIQYVGGq9kZaRR+HucmVH7nV3Oirsq3WSR/nrdby6GwEdA==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/autoformat/-/autoformat-52.0.11.tgz",
+ "integrity": "sha512-5/pLa0uAOrN/jfwpEWEhk/5G9wmSD12EnBnVDP0lB2tuosOzyMCH0rNylMYwgLFACNO7goLw7ka6tvjJ1ErxtQ==",
"license": "MIT",
"dependencies": {
- "lodash": "^4.17.21"
+ "lodash": "^4.17.21",
+ "react-compiler-runtime": "^1.0.0"
},
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
},
"node_modules/@platejs/basic-nodes": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/basic-nodes/-/basic-nodes-52.0.1.tgz",
- "integrity": "sha512-s6leoufEsraw1sFmXD73OA45UisCvAiU7+w5t4kkRTJqYMpvUPzAvpOP+gW4JC5GJ8/dptLZ2uSuaJd9YyeHcA==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/basic-nodes/-/basic-nodes-52.0.11.tgz",
+ "integrity": "sha512-vvjSybGRdY/dZoQKUItX7Jou0W0VdLYA7C9OtqTKL9DD5DuRTp4+/7WZTFgS255ZH4lodxfUCsFNRkeIzzm8EQ==",
"license": "MIT",
+ "dependencies": {
+ "react-compiler-runtime": "^1.0.0"
+ },
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
@@ -3766,9 +3675,9 @@
}
},
"node_modules/@platejs/core": {
- "version": "52.0.11",
- "resolved": "https://registry.npmjs.org/@platejs/core/-/core-52.0.11.tgz",
- "integrity": "sha512-wLROu2EOgY6bbQxUxltl+j87QXSujafJAZ13/YLyQGae5pIJsUANnBARVlSqXxnll8g/pXnhCJ1DJw1F+WGvlg==",
+ "version": "52.0.17",
+ "resolved": "https://registry.npmjs.org/@platejs/core/-/core-52.0.17.tgz",
+ "integrity": "sha512-AXwt/GfotU/+0WsCxVOI3tCR7svIX2eT+yGTCHriSDAPJYrRq6qxGUBzDJWV7M16Zh3ihMPHpE+sfOhnCfdYeg==",
"license": "MIT",
"dependencies": {
"@platejs/slate": "52.0.10",
@@ -3798,35 +3707,18 @@
"react-dom": ">=18.0.0"
}
},
- "node_modules/@platejs/core/node_modules/nanoid": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz",
- "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.js"
- },
- "engines": {
- "node": "^18 || >=20"
- }
- },
"node_modules/@platejs/dnd": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/dnd/-/dnd-52.0.1.tgz",
- "integrity": "sha512-z2T8CxbfjSyDqmOmruzqYPH/na2AbGQvq/jNdFxgsfptmBihZ030g91ua8kAYYsqRTH7VvN/URpunMqUtviu7A==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/dnd/-/dnd-52.0.11.tgz",
+ "integrity": "sha512-iXWDHCzD0JE55E9AZGeWN+ZZkgaaxYNg4llRFryV2FVbMbFj2u7rca3Qv/YTvAinqbI8nswO4EhuP5JHSUNdMQ==",
"license": "MIT",
"dependencies": {
"lodash": "^4.17.21",
- "raf": "^3.4.1"
+ "raf": "^3.4.1",
+ "react-compiler-runtime": "^1.0.0"
},
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dnd": ">=14.0.0",
"react-dnd-html5-backend": ">=14.0.0",
@@ -3834,27 +3726,46 @@
}
},
"node_modules/@platejs/floating": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/floating/-/floating-52.0.1.tgz",
- "integrity": "sha512-Z9YocQIRClu3akdUu9unX01Tv8ME8SRvSFcxIkA+hknpL9iLV0HZzAoMeXxVPpfs5t88SfaomrKHH8RV6dhFVg==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/floating/-/floating-52.0.11.tgz",
+ "integrity": "sha512-ApNpw4KWml+kuK+XTTpji+f/7GxTR4nRzlnfJMvGBrJpLPQ4elS5MABm3oUi81DZn+aub5HvsyH7UqCw7F76IA==",
"license": "MIT",
"dependencies": {
"@floating-ui/core": "^1.7.1",
- "@floating-ui/react": "^0.27.12"
+ "@floating-ui/react": "^0.27.12",
+ "react-compiler-runtime": "^1.0.0"
},
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
},
+ "node_modules/@platejs/floating/node_modules/@floating-ui/react": {
+ "version": "0.27.16",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.16.tgz",
+ "integrity": "sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.1.6",
+ "@floating-ui/utils": "^0.2.10",
+ "tabbable": "^6.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=17.0.0",
+ "react-dom": ">=17.0.0"
+ }
+ },
"node_modules/@platejs/indent": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/indent/-/indent-52.0.1.tgz",
- "integrity": "sha512-sbMizZYlvmYenxfbY3RARLrM6HRuIFCbnQfJ1LMfy2tf7OjhZz/A15ACcmjyqvdZtVF54JtW3q6hiQQPMuMTAQ==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/indent/-/indent-52.0.11.tgz",
+ "integrity": "sha512-CZYFOZObce4yzQal/coKtPzp2+N+DiLetLiYR2U8z4Tgc9da/Fsj11DNR7CorVcdNmBPWkr3vwbTwuSayNOYgQ==",
"license": "MIT",
+ "dependencies": {
+ "react-compiler-runtime": "^1.0.0"
+ },
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
@@ -3874,57 +3785,61 @@
}
},
"node_modules/@platejs/link": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/link/-/link-52.0.1.tgz",
- "integrity": "sha512-IlUB0QKnsnkgMshm0xz2Rqj5Z1rE3FHuVo/umjBm7fWJCbldXps340rPA59LfaDctF3jZYQlf+PFd6Zxaw4Q8A==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/link/-/link-52.0.11.tgz",
+ "integrity": "sha512-ykfTL1NtvDJYGbp+QZiZU+N1WNo5xLiInuBl/Gb/EVeI/PU8He1PLR1ub/zhIuJiiT487u07QT5b4jltvnd86g==",
"license": "MIT",
"dependencies": {
- "@platejs/floating": "52.0.1"
+ "@platejs/floating": "52.0.11",
+ "react-compiler-runtime": "^1.0.0"
},
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
},
"node_modules/@platejs/list": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/list/-/list-52.0.1.tgz",
- "integrity": "sha512-d9IjfzjaIcfycRGsRagaTi9dYNMALq2aq+BGgm/CHhw8JL/dxzMKfz9d2yQFQ7q3cCGMiIxiHtHOWkybfevVKQ==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/list/-/list-52.0.11.tgz",
+ "integrity": "sha512-azmJhBRQsjoWLwVWgTfHxegTg02k81sEJinwNv5gDPyiDlK1Pk98Oys/7H21SpwRWh75tPR/9JfV0ZGMqAHEJA==",
"license": "MIT",
"dependencies": {
- "@platejs/indent": "52.0.1",
- "clsx": "^2.1.1"
+ "@platejs/indent": "52.0.11",
+ "clsx": "^2.1.1",
+ "react-compiler-runtime": "^1.0.0"
},
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
},
"node_modules/@platejs/list-classic": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/list-classic/-/list-classic-52.0.1.tgz",
- "integrity": "sha512-U0Yth/0scWUG55MoBb7L26G3qIfa1ijnU9meqs5cEiytu6haaBT4PAeymG2hB52eYeEtjHbEg8Ft2+90gyPYZQ==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/list-classic/-/list-classic-52.0.11.tgz",
+ "integrity": "sha512-cuR0UJcfT7X45dvptofbozEznx604Y263pjlK7vLFerI2k7cUBuXRKOxtUuwVD4VaWE5aHCr8cO+nb+jhdGHSQ==",
"license": "MIT",
"dependencies": {
- "lodash": "^4.17.21"
+ "lodash": "^4.17.21",
+ "react-compiler-runtime": "^1.0.0"
},
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
},
"node_modules/@platejs/markdown": {
- "version": "52.0.10",
- "resolved": "https://registry.npmjs.org/@platejs/markdown/-/markdown-52.0.10.tgz",
- "integrity": "sha512-2cqhKxu45TFVFHgCCRn5x69t+kRPDwHw51pwrhch5urEmTzEnoK57H6JBsELUQ68v4Ujgtg52KbewO+GKdNyog==",
+ "version": "52.1.0",
+ "resolved": "https://registry.npmjs.org/@platejs/markdown/-/markdown-52.1.0.tgz",
+ "integrity": "sha512-4443H09CJ4AH1449TERm7ot5aFji4rKt+iHIZdB7FiIBz9Coki5+JkKcRn9gEq7lpjMQ9E/MD2J9ejnmglc1/A==",
"license": "MIT",
"dependencies": {
"marked": "^15.0.12",
"mdast-util-math": "3.0.0",
"mdast-util-mdx": "3.0.0",
+ "react-compiler-runtime": "^1.0.0",
"remark-mdx": "^3.1.0",
"remark-parse": "^11.0.0",
"remark-stringify": "^11.0.0",
@@ -3932,7 +3847,7 @@
"unified": "^11.0.5"
},
"peerDependencies": {
- "platejs": ">=52.0.10",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
@@ -3953,12 +3868,15 @@
}
},
"node_modules/@platejs/resizable": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/resizable/-/resizable-52.0.1.tgz",
- "integrity": "sha512-a5Md2pNQNSK1yXOUfe5ABE2qXFLPtMNdzm9rcSYUERzL9j55GfIU4QXgb72EIaWfTuncCdO7FmTGUzDSq9f9dA==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/resizable/-/resizable-52.0.11.tgz",
+ "integrity": "sha512-x2tvjr3XIonbuYseG9M5EqYwXoj+V69xdKIt+n8v2ltgsn7W1wJgzLO8tdBJCnKQPEGAvCFXUTlQAUNeQ1OYQA==",
"license": "MIT",
+ "dependencies": {
+ "react-compiler-runtime": "^1.0.0"
+ },
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
@@ -3977,27 +3895,28 @@
}
},
"node_modules/@platejs/table": {
- "version": "52.0.1",
- "resolved": "https://registry.npmjs.org/@platejs/table/-/table-52.0.1.tgz",
- "integrity": "sha512-FE7hxJgRFGPkWRCDhsvbdr++I52v9Y07LuCQWdBJYD62lkDCRsEUM4AUCUTCrTke6Vyk2prFUIQeNS89+SjuYA==",
+ "version": "52.0.11",
+ "resolved": "https://registry.npmjs.org/@platejs/table/-/table-52.0.11.tgz",
+ "integrity": "sha512-hOf4Ije8KBZtYcIKsbBONSrr9oDO5BqQntf6F1H3gGFgKZqkumjUPcaK2+WZ0PS1aMx5IKqQMzgR/woYhmQ11Q==",
"license": "MIT",
"dependencies": {
- "@platejs/resizable": "52.0.1",
- "lodash": "^4.17.21"
+ "@platejs/resizable": "52.0.11",
+ "lodash": "^4.17.21",
+ "react-compiler-runtime": "^1.0.0"
},
"peerDependencies": {
- "platejs": ">=52.0.1",
+ "platejs": ">=52.0.11",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
}
},
"node_modules/@platejs/utils": {
- "version": "52.0.11",
- "resolved": "https://registry.npmjs.org/@platejs/utils/-/utils-52.0.11.tgz",
- "integrity": "sha512-YQIzE6dxBsglau3kghQwVWaWwpC/OGm9ZkBLvCEuNBphD/n8uSG4wTZYoeqjEv5X0Ytewq+/lK2EKDBpY5+KJg==",
+ "version": "52.0.17",
+ "resolved": "https://registry.npmjs.org/@platejs/utils/-/utils-52.0.17.tgz",
+ "integrity": "sha512-9YvYnic+qo4bPJAPvFwWQLeG5zQ/OWe6hyA7b3sFhmSyuiLWQZklkHrE96iyHu4Jn31h3FndbG9AH7e36HFa1w==",
"license": "MIT",
"dependencies": {
- "@platejs/core": "52.0.11",
+ "@platejs/core": "52.0.17",
"@platejs/slate": "52.0.10",
"@udecode/react-utils": "52.0.11",
"@udecode/utils": "52.0.1",
@@ -4108,14 +4027,14 @@
}
},
"node_modules/@react-aria/breadcrumbs": {
- "version": "3.5.29",
- "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.29.tgz",
- "integrity": "sha512-rKS0dryllaZJqrr3f/EAf2liz8CBEfmL5XACj+Z1TAig6GIYe1QuA3BtkX0cV9OkMugXdX8e3cbA7nD10ORRqg==",
+ "version": "3.5.30",
+ "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.30.tgz",
+ "integrity": "sha512-DZymglA70SwvDJA7GB147sUexvdDy6vWcriGrlEHhMMzBLhGB30I5J96R4pPzURLxXISrWFH56KC5rRgIqsqqg==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/link": "^3.8.6",
- "@react-aria/utils": "^3.31.0",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/link": "^3.8.7",
+ "@react-aria/utils": "^3.32.0",
"@react-types/breadcrumbs": "^3.7.17",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -4126,15 +4045,15 @@
}
},
"node_modules/@react-aria/button": {
- "version": "3.14.2",
- "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.14.2.tgz",
- "integrity": "sha512-VbLIA+Kd6f/MDjd+TJBUg2+vNDw66pnvsj2E4RLomjI9dfBuN7d+Yo2UnsqKVyhePjCUZ6xxa2yDuD63IOSIYA==",
+ "version": "3.14.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.14.3.tgz",
+ "integrity": "sha512-iJTuEECs9im7TwrCRZ0dvuwp8Gao0+I1IuYs1LQvJQgKLpgRH2/6jAiqb2bdAcoAjdbaMs7Xe0xUwURpVNkEyA==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/toolbar": "3.0.0-beta.21",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/toggle": "^3.9.2",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/toolbar": "3.0.0-beta.22",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/toggle": "^3.9.3",
"@react-types/button": "^3.14.1",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -4145,19 +4064,19 @@
}
},
"node_modules/@react-aria/calendar": {
- "version": "3.9.2",
- "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.9.2.tgz",
- "integrity": "sha512-uSLxLgOPRnEU4Jg59lAhUVA+uDx/55NBg4lpfsP2ynazyiJ5LCXmYceJi+VuOqMml7d9W0dB87OldOeLdIxYVA==",
+ "version": "3.9.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.9.3.tgz",
+ "integrity": "sha512-F12UQ4zd8GIxpJxs9GAHzDD9Lby2hESHm0LF5tjsYBIOBJc5K7ICeeE5UqLMBPzgnEP5nfh1CKS8KhCB0mS7PA==",
"license": "Apache-2.0",
"dependencies": {
- "@internationalized/date": "^3.10.0",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
+ "@internationalized/date": "^3.10.1",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
"@react-aria/live-announcer": "^3.4.4",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/calendar": "^3.9.0",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/calendar": "^3.9.1",
"@react-types/button": "^3.14.1",
- "@react-types/calendar": "^3.8.0",
+ "@react-types/calendar": "^3.8.1",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -4167,19 +4086,19 @@
}
},
"node_modules/@react-aria/checkbox": {
- "version": "3.16.2",
- "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.16.2.tgz",
- "integrity": "sha512-29Mj9ZqXioJ0bcMnNGooHztnTau5pikZqX3qCRj5bYR3by/ZFFavYoMroh9F7s/MbFm/tsKX+Sf02lYFEdXRjA==",
+ "version": "3.16.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.16.3.tgz",
+ "integrity": "sha512-2p1haCUtERo5XavBAWNaX//dryNVnOOWfSKyzLs4UiCZR/NL0ttN+Nu/i445q0ipjLqZ6bBJtx0g0NNrubbU7Q==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/form": "^3.1.2",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/label": "^3.7.22",
- "@react-aria/toggle": "^3.12.2",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/checkbox": "^3.7.2",
+ "@react-aria/form": "^3.1.3",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/label": "^3.7.23",
+ "@react-aria/toggle": "^3.12.3",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/checkbox": "^3.7.3",
"@react-stately/form": "^3.2.2",
- "@react-stately/toggle": "^3.9.2",
+ "@react-stately/toggle": "^3.9.3",
"@react-types/checkbox": "^3.10.2",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -4190,25 +4109,25 @@
}
},
"node_modules/@react-aria/combobox": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.14.0.tgz",
- "integrity": "sha512-z4ro0Hma//p4nL2IJx5iUa7NwxeXbzSoZ0se5uTYjG1rUUMszg+wqQh/AQoL+eiULn7rs18JY9wwNbVIkRNKWA==",
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.14.1.tgz",
+ "integrity": "sha512-wuP/4UQrGsYXLw1Gk8G/FcnUlHuoViA9G6w3LhtUgu5Q3E5DvASJalxej3NtyYU+4w4epD1gJidzosAL0rf8Ug==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/focus": "^3.21.2",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/listbox": "^3.15.0",
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/listbox": "^3.15.1",
"@react-aria/live-announcer": "^3.4.4",
- "@react-aria/menu": "^3.19.3",
- "@react-aria/overlays": "^3.30.0",
- "@react-aria/selection": "^3.26.0",
- "@react-aria/textfield": "^3.18.2",
- "@react-aria/utils": "^3.31.0",
+ "@react-aria/menu": "^3.19.4",
+ "@react-aria/overlays": "^3.31.0",
+ "@react-aria/selection": "^3.27.0",
+ "@react-aria/textfield": "^3.18.3",
+ "@react-aria/utils": "^3.32.0",
"@react-stately/collections": "^3.12.8",
- "@react-stately/combobox": "^3.12.0",
+ "@react-stately/combobox": "^3.12.1",
"@react-stately/form": "^3.2.2",
"@react-types/button": "^3.14.1",
- "@react-types/combobox": "^3.13.9",
+ "@react-types/combobox": "^3.13.10",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -4218,26 +4137,26 @@
}
},
"node_modules/@react-aria/datepicker": {
- "version": "3.15.2",
- "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.15.2.tgz",
- "integrity": "sha512-th078hyNqPf4P2K10su/y32zPDjs3lOYVdHvsL9/+5K1dnTvLHCK5vgUyLuyn8FchhF7cmHV49D+LZVv65PEpQ==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.15.3.tgz",
+ "integrity": "sha512-0KkLYeLs+IubHXb879n8dzzKU/NWcxC9DXtv7M/ofL7vAvMSTmaceYJcMW+2gGYhJVpyYz8B6bk0W7kTxgB3jg==",
"license": "Apache-2.0",
"dependencies": {
- "@internationalized/date": "^3.10.0",
+ "@internationalized/date": "^3.10.1",
"@internationalized/number": "^3.6.5",
"@internationalized/string": "^3.2.7",
- "@react-aria/focus": "^3.21.2",
- "@react-aria/form": "^3.1.2",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/label": "^3.7.22",
- "@react-aria/spinbutton": "^3.6.19",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/datepicker": "^3.15.2",
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/form": "^3.1.3",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/label": "^3.7.23",
+ "@react-aria/spinbutton": "^3.7.0",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/datepicker": "^3.15.3",
"@react-stately/form": "^3.2.2",
"@react-types/button": "^3.14.1",
- "@react-types/calendar": "^3.8.0",
- "@react-types/datepicker": "^3.13.2",
+ "@react-types/calendar": "^3.8.1",
+ "@react-types/datepicker": "^3.13.3",
"@react-types/dialog": "^3.5.22",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -4248,14 +4167,14 @@
}
},
"node_modules/@react-aria/dialog": {
- "version": "3.5.31",
- "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.31.tgz",
- "integrity": "sha512-inxQMyrzX0UBW9Mhraq0nZ4HjHdygQvllzloT1E/RlDd61lr3RbmJR6pLsrbKOTtSvDIBJpCso1xEdHCFNmA0Q==",
+ "version": "3.5.32",
+ "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.32.tgz",
+ "integrity": "sha512-2puMjsJS2FtB8LiFuQDAdBSU4dt3lqdJn4FWt/8GL6l91RZBqp2Dnm5Obuee6rV2duNJZcSAUWsQZ/S1iW8Y2g==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/overlays": "^3.30.0",
- "@react-aria/utils": "^3.31.0",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/overlays": "^3.31.0",
+ "@react-aria/utils": "^3.32.0",
"@react-types/dialog": "^3.5.22",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -4266,13 +4185,13 @@
}
},
"node_modules/@react-aria/focus": {
- "version": "3.21.2",
- "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.2.tgz",
- "integrity": "sha512-JWaCR7wJVggj+ldmM/cb/DXFg47CXR55lznJhZBh4XVqJjMKwaOOqpT5vNN7kpC1wUpXicGNuDnJDN1S/+6dhQ==",
+ "version": "3.21.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.3.tgz",
+ "integrity": "sha512-FsquWvjSCwC2/sBk4b+OqJyONETUIXQ2vM0YdPAuC+QFQh2DT6TIBo6dOZVSezlhudDla69xFBd6JvCFq1AbUw==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/utils": "^3.31.0",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/utils": "^3.32.0",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0",
"clsx": "^2.0.0"
@@ -4299,64 +4218,17 @@
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/form/node_modules/@react-aria/interactions": {
- "version": "3.26.0",
- "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.26.0.tgz",
- "integrity": "sha512-AAEcHiltjfbmP1i9iaVw34Mb7kbkiHpYdqieWufldh4aplWgsF11YQZOfaCJW4QoR2ML4Zzoa9nfFwLXA52R7Q==",
+ "node_modules/@react-aria/grid": {
+ "version": "3.14.6",
+ "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.14.6.tgz",
+ "integrity": "sha512-xagBKHNPu4Ovt/I5He7T/oIEq82MDMSrRi5Sw3oxSCwwtZpv+7eyKRSrFz9vrNUzNgWCcx5VHLE660bLdeVNDQ==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/flags": "^3.1.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/form/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/form/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/grid": {
- "version": "3.14.6",
- "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.14.6.tgz",
- "integrity": "sha512-xagBKHNPu4Ovt/I5He7T/oIEq82MDMSrRi5Sw3oxSCwwtZpv+7eyKRSrFz9vrNUzNgWCcx5VHLE660bLdeVNDQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/focus": "^3.21.3",
- "@react-aria/i18n": "^3.12.14",
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/live-announcer": "^3.4.4",
- "@react-aria/selection": "^3.27.0",
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/live-announcer": "^3.4.4",
+ "@react-aria/selection": "^3.27.0",
"@react-aria/utils": "^3.32.0",
"@react-stately/collections": "^3.12.8",
"@react-stately/grid": "^3.11.7",
@@ -4371,33 +4243,7 @@
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/grid/node_modules/@internationalized/date": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz",
- "integrity": "sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- }
- },
- "node_modules/@react-aria/grid/node_modules/@react-aria/focus": {
- "version": "3.21.3",
- "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.3.tgz",
- "integrity": "sha512-FsquWvjSCwC2/sBk4b+OqJyONETUIXQ2vM0YdPAuC+QFQh2DT6TIBo6dOZVSezlhudDla69xFBd6JvCFq1AbUw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/utils": "^3.32.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/grid/node_modules/@react-aria/i18n": {
+ "node_modules/@react-aria/i18n": {
"version": "3.12.14",
"resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.14.tgz",
"integrity": "sha512-zYvs1FlLamFD49uneX3i5mPHrAsB3OjVpSWApTcPw8ydxOaphQDp/Q1aqrbcxlrQCcxZdXWHuvLlbkNR4+8jzw==",
@@ -4417,7 +4263,7 @@
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/grid/node_modules/@react-aria/interactions": {
+ "node_modules/@react-aria/interactions": {
"version": "3.26.0",
"resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.26.0.tgz",
"integrity": "sha512-AAEcHiltjfbmP1i9iaVw34Mb7kbkiHpYdqieWufldh4aplWgsF11YQZOfaCJW4QoR2ML4Zzoa9nfFwLXA52R7Q==",
@@ -4434,92 +4280,6 @@
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/grid/node_modules/@react-aria/selection": {
- "version": "3.27.0",
- "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.27.0.tgz",
- "integrity": "sha512-4zgreuCu4QM4t2U7aF3mbMvIKCEkTEo6h6nGJvbyZALZ/eFtLTvUiV8/5CGDJRLGvgMvi3XxUeF9PZbpk5nMJg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/focus": "^3.21.3",
- "@react-aria/i18n": "^3.12.14",
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/selection": "^3.20.7",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/grid/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/grid/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/i18n": {
- "version": "3.12.13",
- "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.13.tgz",
- "integrity": "sha512-YTM2BPg0v1RvmP8keHenJBmlx8FXUKsdYIEX7x6QWRd1hKlcDwphfjzvt0InX9wiLiPHsT5EoBTpuUk8SXc0Mg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@internationalized/date": "^3.10.0",
- "@internationalized/message": "^3.1.8",
- "@internationalized/number": "^3.6.5",
- "@internationalized/string": "^3.2.7",
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.31.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/interactions": {
- "version": "3.25.6",
- "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.6.tgz",
- "integrity": "sha512-5UgwZmohpixwNMVkMvn9K1ceJe6TzlRlAfuYoQDUuOkk62/JVJNDLAPKIf5YMRc7d2B0rmfgaZLMtbREb0Zvkw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/flags": "^3.1.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
"node_modules/@react-aria/label": {
"version": "3.7.23",
"resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.23.tgz",
@@ -4535,36 +4295,6 @@
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/label/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/label/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
"node_modules/@react-aria/landmark": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/@react-aria/landmark/-/landmark-3.0.8.tgz",
@@ -4581,36 +4311,6 @@
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/landmark/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/landmark/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
"node_modules/@react-aria/link": {
"version": "3.8.7",
"resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.8.7.tgz",
@@ -4628,53 +4328,6 @@
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/link/node_modules/@react-aria/interactions": {
- "version": "3.26.0",
- "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.26.0.tgz",
- "integrity": "sha512-AAEcHiltjfbmP1i9iaVw34Mb7kbkiHpYdqieWufldh4aplWgsF11YQZOfaCJW4QoR2ML4Zzoa9nfFwLXA52R7Q==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/flags": "^3.1.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/link/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/link/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
"node_modules/@react-aria/listbox": {
"version": "3.15.1",
"resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.15.1.tgz",
@@ -4687,389 +4340,65 @@
"@react-aria/utils": "^3.32.0",
"@react-stately/collections": "^3.12.8",
"@react-stately/list": "^3.13.2",
- "@react-types/listbox": "^3.7.4",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/listbox/node_modules/@internationalized/date": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz",
- "integrity": "sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- }
- },
- "node_modules/@react-aria/listbox/node_modules/@react-aria/focus": {
- "version": "3.21.3",
- "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.3.tgz",
- "integrity": "sha512-FsquWvjSCwC2/sBk4b+OqJyONETUIXQ2vM0YdPAuC+QFQh2DT6TIBo6dOZVSezlhudDla69xFBd6JvCFq1AbUw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/utils": "^3.32.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/listbox/node_modules/@react-aria/i18n": {
- "version": "3.12.14",
- "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.14.tgz",
- "integrity": "sha512-zYvs1FlLamFD49uneX3i5mPHrAsB3OjVpSWApTcPw8ydxOaphQDp/Q1aqrbcxlrQCcxZdXWHuvLlbkNR4+8jzw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@internationalized/date": "^3.10.1",
- "@internationalized/message": "^3.1.8",
- "@internationalized/number": "^3.6.5",
- "@internationalized/string": "^3.2.7",
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/listbox/node_modules/@react-aria/interactions": {
- "version": "3.26.0",
- "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.26.0.tgz",
- "integrity": "sha512-AAEcHiltjfbmP1i9iaVw34Mb7kbkiHpYdqieWufldh4aplWgsF11YQZOfaCJW4QoR2ML4Zzoa9nfFwLXA52R7Q==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/flags": "^3.1.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/listbox/node_modules/@react-aria/selection": {
- "version": "3.27.0",
- "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.27.0.tgz",
- "integrity": "sha512-4zgreuCu4QM4t2U7aF3mbMvIKCEkTEo6h6nGJvbyZALZ/eFtLTvUiV8/5CGDJRLGvgMvi3XxUeF9PZbpk5nMJg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/focus": "^3.21.3",
- "@react-aria/i18n": "^3.12.14",
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/selection": "^3.20.7",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/listbox/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/listbox/node_modules/@react-stately/list": {
- "version": "3.13.2",
- "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.13.2.tgz",
- "integrity": "sha512-dGFALuQWNNOkv7W12qSsXLF4mJHLeWeK2hVvdyj4SI8Vxku+BOfaVKuW3sn3mNiixI1dM/7FY2ip4kK+kv27vw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-stately/collections": "^3.12.8",
- "@react-stately/selection": "^3.20.7",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/listbox/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/live-announcer": {
- "version": "3.4.4",
- "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.4.4.tgz",
- "integrity": "sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- }
- },
- "node_modules/@react-aria/menu": {
- "version": "3.19.4",
- "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.19.4.tgz",
- "integrity": "sha512-0A0DUEkEvZynmaD3zktHavM+EmgZSR/ht+g1ExS2jXe73CegA+dbSRfPl9eIKcHxaRrWOV96qMj2pTf0yWTBDg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/focus": "^3.21.3",
- "@react-aria/i18n": "^3.12.14",
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/overlays": "^3.31.0",
- "@react-aria/selection": "^3.27.0",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/collections": "^3.12.8",
- "@react-stately/menu": "^3.9.9",
- "@react-stately/selection": "^3.20.7",
- "@react-stately/tree": "^3.9.4",
- "@react-types/button": "^3.14.1",
- "@react-types/menu": "^3.10.5",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@internationalized/date": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz",
- "integrity": "sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@react-aria/focus": {
- "version": "3.21.3",
- "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.3.tgz",
- "integrity": "sha512-FsquWvjSCwC2/sBk4b+OqJyONETUIXQ2vM0YdPAuC+QFQh2DT6TIBo6dOZVSezlhudDla69xFBd6JvCFq1AbUw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/utils": "^3.32.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@react-aria/i18n": {
- "version": "3.12.14",
- "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.14.tgz",
- "integrity": "sha512-zYvs1FlLamFD49uneX3i5mPHrAsB3OjVpSWApTcPw8ydxOaphQDp/Q1aqrbcxlrQCcxZdXWHuvLlbkNR4+8jzw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@internationalized/date": "^3.10.1",
- "@internationalized/message": "^3.1.8",
- "@internationalized/number": "^3.6.5",
- "@internationalized/string": "^3.2.7",
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@react-aria/interactions": {
- "version": "3.26.0",
- "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.26.0.tgz",
- "integrity": "sha512-AAEcHiltjfbmP1i9iaVw34Mb7kbkiHpYdqieWufldh4aplWgsF11YQZOfaCJW4QoR2ML4Zzoa9nfFwLXA52R7Q==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/flags": "^3.1.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@react-aria/overlays": {
- "version": "3.31.0",
- "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.31.0.tgz",
- "integrity": "sha512-Vq41X1s8XheGIhGbbuqRJslJEX08qmMVX//dwuBaFX9T18mMR04tumKOMxp8Lz+vqwdGLvjNUYDMcgolL+AMjw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/focus": "^3.21.3",
- "@react-aria/i18n": "^3.12.14",
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-aria/visually-hidden": "^3.8.29",
- "@react-stately/overlays": "^3.6.21",
- "@react-types/button": "^3.14.1",
- "@react-types/overlays": "^3.9.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@react-aria/selection": {
- "version": "3.27.0",
- "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.27.0.tgz",
- "integrity": "sha512-4zgreuCu4QM4t2U7aF3mbMvIKCEkTEo6h6nGJvbyZALZ/eFtLTvUiV8/5CGDJRLGvgMvi3XxUeF9PZbpk5nMJg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/focus": "^3.21.3",
- "@react-aria/i18n": "^3.12.14",
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/selection": "^3.20.7",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@react-aria/visually-hidden": {
- "version": "3.8.29",
- "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.29.tgz",
- "integrity": "sha512-1joCP+MHBLd+YA6Gb08nMFfDBhOF0Kh1gR1SA8zoxEB5RMfQEEkufIB8k0GGwvHGSCK3gFyO8UAVsD0+rRYEyg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/utils": "^3.32.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@react-stately/menu": {
- "version": "3.9.9",
- "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.9.9.tgz",
- "integrity": "sha512-moW5JANxMxPilfR0SygpCWCZe7Ef09oadgzTZthRymNRv0PXVS9ad4wd1EkwuMvPH/n0uZLZE2s8hNyFDgyqPA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-stately/overlays": "^3.6.21",
- "@react-types/menu": "^3.10.5",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/menu/node_modules/@react-stately/overlays": {
- "version": "3.6.21",
- "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.21.tgz",
- "integrity": "sha512-7f25H1PS2g+SNvuWPEW30pSGqYNHxesCP4w+1RcV/XV1oQI7oP5Ji2WfI0QsJEFc9wP/ZO1pyjHNKpfLI3O88g==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-stately/utils": "^3.11.0",
- "@react-types/overlays": "^3.9.2",
+ "@react-types/listbox": "^3.7.4",
+ "@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
+ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/menu/node_modules/@react-stately/tree": {
- "version": "3.9.4",
- "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.9.4.tgz",
- "integrity": "sha512-Re1fdEiR0hHPcEda+7ecw+52lgGfFW0MAEDzFg9I6J/t8STQSP+1YC0VVVkv2xRrkLbKLPqggNKgmD8nggecnw==",
+ "node_modules/@react-aria/live-announcer": {
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.4.4.tgz",
+ "integrity": "sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA==",
"license": "Apache-2.0",
"dependencies": {
- "@react-stately/collections": "^3.12.8",
- "@react-stately/selection": "^3.20.7",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/menu/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
+ "node_modules/@react-aria/menu": {
+ "version": "3.19.4",
+ "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.19.4.tgz",
+ "integrity": "sha512-0A0DUEkEvZynmaD3zktHavM+EmgZSR/ht+g1ExS2jXe73CegA+dbSRfPl9eIKcHxaRrWOV96qMj2pTf0yWTBDg==",
"license": "Apache-2.0",
"dependencies": {
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/overlays": "^3.31.0",
+ "@react-aria/selection": "^3.27.0",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/collections": "^3.12.8",
+ "@react-stately/menu": "^3.9.9",
+ "@react-stately/selection": "^3.20.7",
+ "@react-stately/tree": "^3.9.4",
+ "@react-types/button": "^3.14.1",
+ "@react-types/menu": "^3.10.5",
+ "@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
+ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
"node_modules/@react-aria/numberfield": {
- "version": "3.12.2",
- "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.12.2.tgz",
- "integrity": "sha512-M2b+z0HIXiXpGAWOQkO2kpIjaLNUXJ5Q3/GMa3Fkr+B1piFX0VuOynYrtddKVrmXCe+r5t+XcGb0KS29uqv7nQ==",
+ "version": "3.12.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.12.3.tgz",
+ "integrity": "sha512-70LRXWPEuj2X8mbQXUx6l6We+RGs49Kb+2eUiSSLArHK4RvTWJWEfSjHL5IHHJ+j2AkbORdryD7SR3gcXSX+5w==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/spinbutton": "^3.6.19",
- "@react-aria/textfield": "^3.18.2",
- "@react-aria/utils": "^3.31.0",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/spinbutton": "^3.7.0",
+ "@react-aria/textfield": "^3.18.3",
+ "@react-aria/utils": "^3.32.0",
"@react-stately/form": "^3.2.2",
- "@react-stately/numberfield": "^3.10.2",
+ "@react-stately/numberfield": "^3.10.3",
"@react-types/button": "^3.14.1",
- "@react-types/numberfield": "^3.8.15",
+ "@react-types/numberfield": "^3.8.16",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -5079,18 +4408,18 @@
}
},
"node_modules/@react-aria/overlays": {
- "version": "3.30.0",
- "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.30.0.tgz",
- "integrity": "sha512-UpjqSjYZx5FAhceWCRVsW6fX1sEwya1fQ/TKkL53FAlLFR8QKuoKqFlmiL43YUFTcGK3UdEOy3cWTleLQwdSmQ==",
+ "version": "3.31.0",
+ "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.31.0.tgz",
+ "integrity": "sha512-Vq41X1s8XheGIhGbbuqRJslJEX08qmMVX//dwuBaFX9T18mMR04tumKOMxp8Lz+vqwdGLvjNUYDMcgolL+AMjw==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/focus": "^3.21.2",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
"@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.31.0",
- "@react-aria/visually-hidden": "^3.8.28",
- "@react-stately/overlays": "^3.6.20",
+ "@react-aria/utils": "^3.32.0",
+ "@react-aria/visually-hidden": "^3.8.29",
+ "@react-stately/overlays": "^3.6.21",
"@react-types/button": "^3.14.1",
"@react-types/overlays": "^3.9.2",
"@react-types/shared": "^3.32.1",
@@ -5102,14 +4431,14 @@
}
},
"node_modules/@react-aria/progress": {
- "version": "3.4.27",
- "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.27.tgz",
- "integrity": "sha512-0OA1shs1575g1zmO8+rWozdbTnxThFFhOfuoL1m7UV5Dley6FHpueoKB1ECv7B+Qm4dQt6DoEqLg7wsbbQDhmg==",
+ "version": "3.4.28",
+ "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.28.tgz",
+ "integrity": "sha512-3NUUAu+rwf1M7pau9WFkrxe/PlBPiqCl/1maGU7iufVveHnz+SVVqXdNkjYx+WkPE0ViwG86Zx6OU4AYJ1pjNw==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/label": "^3.7.22",
- "@react-aria/utils": "^3.31.0",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/label": "^3.7.23",
+ "@react-aria/utils": "^3.32.0",
"@react-types/progress": "^3.5.16",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -5120,18 +4449,18 @@
}
},
"node_modules/@react-aria/radio": {
- "version": "3.12.2",
- "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.12.2.tgz",
- "integrity": "sha512-I11f6I90neCh56rT/6ieAs3XyDKvEfbj/QmbU5cX3p+SJpRRPN0vxQi5D1hkh0uxDpeClxygSr31NmZsd4sqfg==",
+ "version": "3.12.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.12.3.tgz",
+ "integrity": "sha512-noucVX++9J3VYWg7dB+r09NVX8UZSR1TWUMCbT/MffzhltOsmiLJVvgJ0uEeeVRuu3+ZM63jOshrzG89anX4TQ==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/focus": "^3.21.2",
- "@react-aria/form": "^3.1.2",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/label": "^3.7.22",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/radio": "^3.11.2",
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/form": "^3.1.3",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/label": "^3.7.23",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/radio": "^3.11.3",
"@react-types/radio": "^3.9.2",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -5142,16 +4471,16 @@
}
},
"node_modules/@react-aria/selection": {
- "version": "3.26.0",
- "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.26.0.tgz",
- "integrity": "sha512-ZBH3EfWZ+RfhTj01dH8L17uT7iNbXWS8u77/fUpHgtrm0pwNVhx0TYVnLU1YpazQ/3WVpvWhmBB8sWwD1FlD/g==",
+ "version": "3.27.0",
+ "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.27.0.tgz",
+ "integrity": "sha512-4zgreuCu4QM4t2U7aF3mbMvIKCEkTEo6h6nGJvbyZALZ/eFtLTvUiV8/5CGDJRLGvgMvi3XxUeF9PZbpk5nMJg==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/focus": "^3.21.2",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/selection": "^3.20.6",
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/selection": "^3.20.7",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -5161,16 +4490,16 @@
}
},
"node_modules/@react-aria/slider": {
- "version": "3.8.2",
- "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.8.2.tgz",
- "integrity": "sha512-6KyUGaVzRE4xAz1LKHbNh1q5wzxe58pdTHFSnxNe6nk1SCoHw7NfI4h2s2m6LgJ0megFxsT0Ir8aHaFyyxmbgg==",
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.8.3.tgz",
+ "integrity": "sha512-tOZVH+wLt3ik0C3wyuXqHL9fvnQ5S+/tHMYB7z8aZV5cEe36Gt4efBILphlA7ChkL/RvpHGK2AGpEGxvuEQIuQ==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/label": "^3.7.22",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/slider": "^3.7.2",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/label": "^3.7.23",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/slider": "^3.7.3",
"@react-types/shared": "^3.32.1",
"@react-types/slider": "^3.8.2",
"@swc/helpers": "^0.5.0"
@@ -5198,65 +4527,6 @@
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/spinbutton/node_modules/@internationalized/date": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz",
- "integrity": "sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- }
- },
- "node_modules/@react-aria/spinbutton/node_modules/@react-aria/i18n": {
- "version": "3.12.14",
- "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.14.tgz",
- "integrity": "sha512-zYvs1FlLamFD49uneX3i5mPHrAsB3OjVpSWApTcPw8ydxOaphQDp/Q1aqrbcxlrQCcxZdXWHuvLlbkNR4+8jzw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@internationalized/date": "^3.10.1",
- "@internationalized/message": "^3.1.8",
- "@internationalized/number": "^3.6.5",
- "@internationalized/string": "^3.2.7",
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/spinbutton/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/spinbutton/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
"node_modules/@react-aria/ssr": {
"version": "3.9.10",
"resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.10.tgz",
@@ -5273,13 +4543,13 @@
}
},
"node_modules/@react-aria/switch": {
- "version": "3.7.8",
- "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.7.8.tgz",
- "integrity": "sha512-AfsUq1/YiuoprhcBUD9vDPyWaigAwctQNW1fMb8dROL+i/12B+Zekj8Ml+jbU69/kIVtfL0Jl7/0Bo9KK3X0xQ==",
+ "version": "3.7.9",
+ "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.7.9.tgz",
+ "integrity": "sha512-RZtuFRXews0PBx8Fc2R/kqaIARD5YIM5uYtmwnWfY7y5bEsBGONxp0d+m2vDyY7yk+VNpVFBdwewY9GbZmH1CA==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/toggle": "^3.12.2",
- "@react-stately/toggle": "^3.9.2",
+ "@react-aria/toggle": "^3.12.3",
+ "@react-stately/toggle": "^3.9.3",
"@react-types/shared": "^3.32.1",
"@react-types/switch": "^3.5.15",
"@swc/helpers": "^0.5.0"
@@ -5290,21 +4560,21 @@
}
},
"node_modules/@react-aria/table": {
- "version": "3.17.8",
- "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.17.8.tgz",
- "integrity": "sha512-bXiZoxTMbsqUJsYDhHPzKc3jw0HFJ/xMsJ49a0f7mp5r9zACxNLeIU0wJ4Uvx37dnYOHKzGliG+rj5l4sph7MA==",
+ "version": "3.17.9",
+ "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.17.9.tgz",
+ "integrity": "sha512-Jby561E1YfzoRgtp+RQuhDz4vnxlcqol9RTgQQ7FWXC2IcN9Pny1COU34LkA1cL9VeB9LJ0+qfMhGw4aAwaUmw==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/focus": "^3.21.2",
- "@react-aria/grid": "^3.14.5",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/grid": "^3.14.6",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
"@react-aria/live-announcer": "^3.4.4",
- "@react-aria/utils": "^3.31.0",
- "@react-aria/visually-hidden": "^3.8.28",
+ "@react-aria/utils": "^3.32.0",
+ "@react-aria/visually-hidden": "^3.8.29",
"@react-stately/collections": "^3.12.8",
"@react-stately/flags": "^3.1.2",
- "@react-stately/table": "^3.15.1",
+ "@react-stately/table": "^3.15.2",
"@react-types/checkbox": "^3.10.2",
"@react-types/grid": "^3.3.6",
"@react-types/shared": "^3.32.1",
@@ -5317,18 +4587,18 @@
}
},
"node_modules/@react-aria/tabs": {
- "version": "3.10.8",
- "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.10.8.tgz",
- "integrity": "sha512-sPPJyTyoAqsBh76JinBAxStOcbjZvyWFYKpJ9Uqw+XT0ObshAPPFSGeh8DiQemPs02RwJdrfARPMhyqiX8t59A==",
+ "version": "3.10.9",
+ "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.10.9.tgz",
+ "integrity": "sha512-2+FNd7Ohr3hrEgYrKdZW0FWbgybzTVZft6tw95oQ2+9PnjdDVdtzHliI+8HY8jzb4hTf4bU7O8n+s/HBlCBSIw==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/focus": "^3.21.2",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/selection": "^3.26.0",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/tabs": "^3.8.6",
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/selection": "^3.27.0",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/tabs": "^3.8.7",
"@react-types/shared": "^3.32.1",
- "@react-types/tabs": "^3.3.19",
+ "@react-types/tabs": "^3.3.20",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5357,63 +4627,16 @@
"react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-aria/textfield/node_modules/@react-aria/interactions": {
- "version": "3.26.0",
- "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.26.0.tgz",
- "integrity": "sha512-AAEcHiltjfbmP1i9iaVw34Mb7kbkiHpYdqieWufldh4aplWgsF11YQZOfaCJW4QoR2ML4Zzoa9nfFwLXA52R7Q==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/flags": "^3.1.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/textfield/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/textfield/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
"node_modules/@react-aria/toast": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@react-aria/toast/-/toast-3.0.8.tgz",
- "integrity": "sha512-rfJIms6AkMyQ7ZgKrMZgGfPwGcB/t1JoEwbc1PAmXcAvFI/hzF6YF7ZFDXiq38ucFsP9PnHmbXIzM9w4ccl18A==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@react-aria/toast/-/toast-3.0.9.tgz",
+ "integrity": "sha512-2sRitczXl5VEwyq97o8TVvq3bIqLA7EfA7dhDPkYlHGa4T1vzKkhNqgkskKd9+Tw7gqeFRFjnokh+es9jkM11g==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/landmark": "^3.0.7",
- "@react-aria/utils": "^3.31.0",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/landmark": "^3.0.8",
+ "@react-aria/utils": "^3.32.0",
"@react-stately/toast": "^3.1.2",
"@react-types/button": "^3.14.1",
"@react-types/shared": "^3.32.1",
@@ -5430,89 +4653,27 @@
"integrity": "sha512-mciUbeVP99fRObnH5qLFrkKXX+5VKeV6BhFJlmz1eo3ltR/0xZKnUcycA2CGzmqtB70w09CAhr8NMEnpNH8dwQ==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/interactions": "^3.26.0",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/toggle": "^3.9.3",
- "@react-types/checkbox": "^3.10.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/toggle/node_modules/@react-aria/interactions": {
- "version": "3.26.0",
- "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.26.0.tgz",
- "integrity": "sha512-AAEcHiltjfbmP1i9iaVw34Mb7kbkiHpYdqieWufldh4aplWgsF11YQZOfaCJW4QoR2ML4Zzoa9nfFwLXA52R7Q==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-aria/utils": "^3.32.0",
- "@react-stately/flags": "^3.1.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/toggle/node_modules/@react-aria/utils": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
- "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-aria/ssr": "^3.9.10",
- "@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.11.0",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0",
- "clsx": "^2.0.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/toggle/node_modules/@react-stately/toggle": {
- "version": "3.9.3",
- "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.9.3.tgz",
- "integrity": "sha512-G6aA/aTnid/6dQ9dxNEd7/JqzRmVkVYYpOAP+l02hepiuSmFwLu4nE98i4YFBQqFZ5b4l01gMrS90JGL7HrNmw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@react-stately/utils": "^3.11.0",
- "@react-types/checkbox": "^3.10.2",
- "@react-types/shared": "^3.32.1",
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
- "node_modules/@react-aria/toggle/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/toggle": "^3.9.3",
+ "@react-types/checkbox": "^3.10.2",
+ "@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
+ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1",
+ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
"node_modules/@react-aria/toolbar": {
- "version": "3.0.0-beta.21",
- "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.21.tgz",
- "integrity": "sha512-yRCk/GD8g+BhdDgxd3I0a0c8Ni4Wyo6ERzfSoBkPkwQ4X2E2nkopmraM9D0fXw4UcIr4bnmvADzkHXtBN0XrBg==",
+ "version": "3.0.0-beta.22",
+ "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.22.tgz",
+ "integrity": "sha512-Q1gOj6N4vzvpGrIoNAxpUudEQP82UgQACENH/bcH8FnEMbSP7DHvVfDhj7GTU6ldMXO2cjqLhiidoUK53gkCiA==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/focus": "^3.21.2",
- "@react-aria/i18n": "^3.12.13",
- "@react-aria/utils": "^3.31.0",
+ "@react-aria/focus": "^3.21.3",
+ "@react-aria/i18n": "^3.12.14",
+ "@react-aria/utils": "^3.32.0",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -5522,16 +4683,16 @@
}
},
"node_modules/@react-aria/tooltip": {
- "version": "3.8.8",
- "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.8.8.tgz",
- "integrity": "sha512-CmHUqtXtFWmG4AHMEr9hIVex+oscK6xcM2V47gq9ijNInxe3M6UBu/dBdkgGP/jYv9N7tzCAjTR8nNIHQXwvWw==",
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.9.0.tgz",
+ "integrity": "sha512-2O1DXEV8/+DeUq9dIlAfaNa7lSG+7FCZDuF+sNiPYnZM6tgFOrsId26uMF5EuwpVfOvXSSGnq0+6Ma2On7mZPg==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/utils": "^3.31.0",
- "@react-stately/tooltip": "^3.5.8",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/utils": "^3.32.0",
+ "@react-stately/tooltip": "^3.5.9",
"@react-types/shared": "^3.32.1",
- "@react-types/tooltip": "^3.4.21",
+ "@react-types/tooltip": "^3.5.0",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5540,14 +4701,14 @@
}
},
"node_modules/@react-aria/utils": {
- "version": "3.31.0",
- "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.31.0.tgz",
- "integrity": "sha512-ABOzCsZrWzf78ysswmguJbx3McQUja7yeGj6/vZo4JVsZNlxAN+E9rs381ExBRI0KzVo6iBTeX5De8eMZPJXig==",
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.32.0.tgz",
+ "integrity": "sha512-/7Rud06+HVBIlTwmwmJa2W8xVtgxgzm0+kLbuFooZRzKDON6hhozS1dOMR/YLMxyJOaYOTpImcP4vRR9gL1hEg==",
"license": "Apache-2.0",
"dependencies": {
"@react-aria/ssr": "^3.9.10",
"@react-stately/flags": "^3.1.2",
- "@react-stately/utils": "^3.10.8",
+ "@react-stately/utils": "^3.11.0",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0",
"clsx": "^2.0.0"
@@ -5558,13 +4719,13 @@
}
},
"node_modules/@react-aria/visually-hidden": {
- "version": "3.8.28",
- "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.28.tgz",
- "integrity": "sha512-KRRjbVVob2CeBidF24dzufMxBveEUtUu7IM+hpdZKB+gxVROoh4XRLPv9SFmaH89Z7D9To3QoykVZoWD0lan6Q==",
+ "version": "3.8.29",
+ "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.29.tgz",
+ "integrity": "sha512-1joCP+MHBLd+YA6Gb08nMFfDBhOF0Kh1gR1SA8zoxEB5RMfQEEkufIB8k0GGwvHGSCK3gFyO8UAVsD0+rRYEyg==",
"license": "Apache-2.0",
"dependencies": {
- "@react-aria/interactions": "^3.25.6",
- "@react-aria/utils": "^3.31.0",
+ "@react-aria/interactions": "^3.26.0",
+ "@react-aria/utils": "^3.32.0",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -5592,14 +4753,14 @@
"license": "MIT"
},
"node_modules/@react-stately/calendar": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.9.0.tgz",
- "integrity": "sha512-U5Nf2kx9gDhJRxdDUm5gjfyUlt/uUfOvM1vDW2UA62cA6+2k2cavMLc2wNlXOb/twFtl6p0joYKHG7T4xnEFkg==",
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.9.1.tgz",
+ "integrity": "sha512-q0Q8fivpQa1rcLg5daUVxwVj1smCp1VnpX9A5Q5PkI9lH9x+xdS0Y6eOqb8Ih3TKBDkx9/oEZonOX7RYNIzSig==",
"license": "Apache-2.0",
"dependencies": {
- "@internationalized/date": "^3.10.0",
- "@react-stately/utils": "^3.10.8",
- "@react-types/calendar": "^3.8.0",
+ "@internationalized/date": "^3.10.1",
+ "@react-stately/utils": "^3.11.0",
+ "@react-types/calendar": "^3.8.1",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -5608,13 +4769,13 @@
}
},
"node_modules/@react-stately/checkbox": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.7.2.tgz",
- "integrity": "sha512-j1ycUVz5JmqhaL6mDZgDNZqBilOB8PBW096sDPFaTtuYreDx2HOd1igxiIvwlvPESZwsJP7FVM3mYnaoXtpKPA==",
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.7.3.tgz",
+ "integrity": "sha512-ve2K+uWT+NRM1JMn+tkWJDP2iBAaWvbZ0TbSXs371IUcTWaNW61HygZ+UFOB/frAZGloazEKGqAsX5XjFpgB9w==",
"license": "Apache-2.0",
"dependencies": {
"@react-stately/form": "^3.2.2",
- "@react-stately/utils": "^3.10.8",
+ "@react-stately/utils": "^3.11.0",
"@react-types/checkbox": "^3.10.2",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -5637,17 +4798,17 @@
}
},
"node_modules/@react-stately/combobox": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.12.0.tgz",
- "integrity": "sha512-A6q9R/7cEa/qoQsBkdslXWvD7ztNLLQ9AhBhVN9QvzrmrH5B4ymUwcTU8lWl22ykH7RRwfonLeLXJL4C+/L2oQ==",
+ "version": "3.12.1",
+ "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.12.1.tgz",
+ "integrity": "sha512-RwfTTYgKJ9raIY+7grZ5DbfVRSO5pDjo/ur2VN/28LZzM0eOQrLFQ00vpBmY7/R64sHRpcXLDxpz5cqpKCdvTw==",
"license": "Apache-2.0",
"dependencies": {
"@react-stately/collections": "^3.12.8",
"@react-stately/form": "^3.2.2",
- "@react-stately/list": "^3.13.1",
- "@react-stately/overlays": "^3.6.20",
- "@react-stately/utils": "^3.10.8",
- "@react-types/combobox": "^3.13.9",
+ "@react-stately/list": "^3.13.2",
+ "@react-stately/overlays": "^3.6.21",
+ "@react-stately/utils": "^3.11.0",
+ "@react-types/combobox": "^3.13.10",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -5656,17 +4817,17 @@
}
},
"node_modules/@react-stately/datepicker": {
- "version": "3.15.2",
- "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.15.2.tgz",
- "integrity": "sha512-S5GL+W37chvV8knv9v0JRv0L6hKo732qqabCCHXzOpYxkLIkV4f/y3cHdEzFWzpZ0O0Gkg7WgeYo160xOdBKYg==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.15.3.tgz",
+ "integrity": "sha512-RDYoz1R/EkCyxHYewb58T7DngU3gl6CnQL7xiWiDlayPnstGaanoQ3yCZGJaIQwR8PrKdNbQwXF9NlSmj8iCOw==",
"license": "Apache-2.0",
"dependencies": {
- "@internationalized/date": "^3.10.0",
+ "@internationalized/date": "^3.10.1",
"@internationalized/string": "^3.2.7",
"@react-stately/form": "^3.2.2",
- "@react-stately/overlays": "^3.6.20",
- "@react-stately/utils": "^3.10.8",
- "@react-types/datepicker": "^3.13.2",
+ "@react-stately/overlays": "^3.6.21",
+ "@react-stately/utils": "^3.11.0",
+ "@react-types/datepicker": "^3.13.3",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -5713,14 +4874,14 @@
}
},
"node_modules/@react-stately/list": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.13.1.tgz",
- "integrity": "sha512-eHaoauh21twbcl0kkwULhVJ+CzYcy1jUjMikNVMHOQdhr4WIBdExf7PmSgKHKqsSPhpGg6IpTCY2dUX3RycjDg==",
+ "version": "3.13.2",
+ "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.13.2.tgz",
+ "integrity": "sha512-dGFALuQWNNOkv7W12qSsXLF4mJHLeWeK2hVvdyj4SI8Vxku+BOfaVKuW3sn3mNiixI1dM/7FY2ip4kK+kv27vw==",
"license": "Apache-2.0",
"dependencies": {
"@react-stately/collections": "^3.12.8",
- "@react-stately/selection": "^3.20.6",
- "@react-stately/utils": "^3.10.8",
+ "@react-stately/selection": "^3.20.7",
+ "@react-stately/utils": "^3.11.0",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -5729,12 +4890,12 @@
}
},
"node_modules/@react-stately/menu": {
- "version": "3.9.8",
- "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.9.8.tgz",
- "integrity": "sha512-bo0NOhofnTHLESiYfsSSw6gyXiPVJJ0UlN2igUXtJk5PmyhWjFzUzTzcnd7B028OB0si9w3LIWM3stqz5271Eg==",
+ "version": "3.9.9",
+ "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.9.9.tgz",
+ "integrity": "sha512-moW5JANxMxPilfR0SygpCWCZe7Ef09oadgzTZthRymNRv0PXVS9ad4wd1EkwuMvPH/n0uZLZE2s8hNyFDgyqPA==",
"license": "Apache-2.0",
"dependencies": {
- "@react-stately/overlays": "^3.6.20",
+ "@react-stately/overlays": "^3.6.21",
"@react-types/menu": "^3.10.5",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -5744,15 +4905,15 @@
}
},
"node_modules/@react-stately/numberfield": {
- "version": "3.10.2",
- "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.10.2.tgz",
- "integrity": "sha512-jlKVFYaH3RX5KvQ7a+SAMQuPccZCzxLkeYkBE64u1Zvi7YhJ8hkTMHG/fmZMbk1rHlseE2wfBdk0Rlya3MvoNQ==",
+ "version": "3.10.3",
+ "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.10.3.tgz",
+ "integrity": "sha512-40g/oyVcWoEaLqkr61KuHZzQVLLXFi3oa2K8XLnb6o+859SM4TX3XPNqL6eNQjXSKoJO5Hlgpqhee9j+VDbGog==",
"license": "Apache-2.0",
"dependencies": {
"@internationalized/number": "^3.6.5",
"@react-stately/form": "^3.2.2",
- "@react-stately/utils": "^3.10.8",
- "@react-types/numberfield": "^3.8.15",
+ "@react-stately/utils": "^3.11.0",
+ "@react-types/numberfield": "^3.8.16",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5760,12 +4921,12 @@
}
},
"node_modules/@react-stately/overlays": {
- "version": "3.6.20",
- "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.20.tgz",
- "integrity": "sha512-YAIe+uI8GUXX8F/0Pzr53YeC5c/bjqbzDFlV8NKfdlCPa6+Jp4B/IlYVjIooBj9+94QvbQdjylegvYWK/iPwlg==",
+ "version": "3.6.21",
+ "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.21.tgz",
+ "integrity": "sha512-7f25H1PS2g+SNvuWPEW30pSGqYNHxesCP4w+1RcV/XV1oQI7oP5Ji2WfI0QsJEFc9wP/ZO1pyjHNKpfLI3O88g==",
"license": "Apache-2.0",
"dependencies": {
- "@react-stately/utils": "^3.10.8",
+ "@react-stately/utils": "^3.11.0",
"@react-types/overlays": "^3.9.2",
"@swc/helpers": "^0.5.0"
},
@@ -5774,13 +4935,13 @@
}
},
"node_modules/@react-stately/radio": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.11.2.tgz",
- "integrity": "sha512-UM7L6AW+k8edhSBUEPZAqiWNRNadfOKK7BrCXyBiG79zTz0zPcXRR+N+gzkDn7EMSawDeyK1SHYUuoSltTactg==",
+ "version": "3.11.3",
+ "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.11.3.tgz",
+ "integrity": "sha512-8+Cy0azV1aBWKcBfGHi3nBa285lAS6XhmVw2LfEwxq8DeVKTbJAaCHHwvDoclxDiOAnqzE0pio0QMD8rYISt9g==",
"license": "Apache-2.0",
"dependencies": {
"@react-stately/form": "^3.2.2",
- "@react-stately/utils": "^3.10.8",
+ "@react-stately/utils": "^3.11.0",
"@react-types/radio": "^3.9.2",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -5804,25 +4965,13 @@
"react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
}
},
- "node_modules/@react-stately/selection/node_modules/@react-stately/utils": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
- "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@swc/helpers": "^0.5.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
- }
- },
"node_modules/@react-stately/slider": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.7.2.tgz",
- "integrity": "sha512-EVBHUdUYwj++XqAEiQg2fGi8Reccznba0uyQ3gPejF0pAc390Q/J5aqiTEDfiCM7uJ6WHxTM6lcCqHQBISk2dQ==",
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.7.3.tgz",
+ "integrity": "sha512-9QGnQNXFAH52BzxtU7weyOV/VV7/so6uIvE8VOHfc6QR3GMBM/kJvqBCTWZfQ0pxDIsRagBQDD/tjB09ixTOzg==",
"license": "Apache-2.0",
"dependencies": {
- "@react-stately/utils": "^3.10.8",
+ "@react-stately/utils": "^3.11.0",
"@react-types/shared": "^3.32.1",
"@react-types/slider": "^3.8.2",
"@swc/helpers": "^0.5.0"
@@ -5832,16 +4981,16 @@
}
},
"node_modules/@react-stately/table": {
- "version": "3.15.1",
- "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.15.1.tgz",
- "integrity": "sha512-MhMAgE/LgAzHcAn1P3p/nQErzJ6DiixSJ1AOt2JlnAKEb5YJg4ATKWCb2IjBLwywt9ZCzfm3KMUzkctZqAoxwA==",
+ "version": "3.15.2",
+ "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.15.2.tgz",
+ "integrity": "sha512-vgEArBN5ocqsQdeORBj6xk8acu5iFnd/CyXEQKl0R5RyuYuw0ms8UmFHvs8Fv1HONehPYg+XR4QPliDFPX8R9A==",
"license": "Apache-2.0",
"dependencies": {
"@react-stately/collections": "^3.12.8",
"@react-stately/flags": "^3.1.2",
- "@react-stately/grid": "^3.11.6",
- "@react-stately/selection": "^3.20.6",
- "@react-stately/utils": "^3.10.8",
+ "@react-stately/grid": "^3.11.7",
+ "@react-stately/selection": "^3.20.7",
+ "@react-stately/utils": "^3.11.0",
"@react-types/grid": "^3.3.6",
"@react-types/shared": "^3.32.1",
"@react-types/table": "^3.13.4",
@@ -5852,14 +5001,14 @@
}
},
"node_modules/@react-stately/tabs": {
- "version": "3.8.6",
- "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.8.6.tgz",
- "integrity": "sha512-9RYxmgjVIxUpIsGKPIF7uRoHWOEz8muwaYiStCVeyiYBPmarvZoIYtTXcwSMN/vEs7heVN5uGCL6/bfdY4+WiA==",
+ "version": "3.8.7",
+ "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.8.7.tgz",
+ "integrity": "sha512-ETZEzg7s9F2SCvisZ2cCpLx6XBHqdvVgDGU5l3C3s9zBKBr6lgyLFt61IdGW8XXZRUvw4mMGT6tGQbXeGvR0Wg==",
"license": "Apache-2.0",
"dependencies": {
- "@react-stately/list": "^3.13.1",
+ "@react-stately/list": "^3.13.2",
"@react-types/shared": "^3.32.1",
- "@react-types/tabs": "^3.3.19",
+ "@react-types/tabs": "^3.3.20",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5880,12 +5029,12 @@
}
},
"node_modules/@react-stately/toggle": {
- "version": "3.9.2",
- "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.9.2.tgz",
- "integrity": "sha512-dOxs9wrVXHUmA7lc8l+N9NbTJMAaXcYsnNGsMwfXIXQ3rdq+IjWGNYJ52UmNQyRYFcg0jrzRrU16TyGbNjOdNQ==",
+ "version": "3.9.3",
+ "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.9.3.tgz",
+ "integrity": "sha512-G6aA/aTnid/6dQ9dxNEd7/JqzRmVkVYYpOAP+l02hepiuSmFwLu4nE98i4YFBQqFZ5b4l01gMrS90JGL7HrNmw==",
"license": "Apache-2.0",
"dependencies": {
- "@react-stately/utils": "^3.10.8",
+ "@react-stately/utils": "^3.11.0",
"@react-types/checkbox": "^3.10.2",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
@@ -5895,13 +5044,13 @@
}
},
"node_modules/@react-stately/tooltip": {
- "version": "3.5.8",
- "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.5.8.tgz",
- "integrity": "sha512-gkcUx2ROhCiGNAYd2BaTejakXUUNLPnnoJ5+V/mN480pN+OrO8/2V9pqb/IQmpqxLsso93zkM3A4wFHHLBBmPQ==",
+ "version": "3.5.9",
+ "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.5.9.tgz",
+ "integrity": "sha512-YwqtxFqQFfJtbeh+axHVGAfz9XHf73UaBndHxSbVM/T5c1PfI2yOB39T2FOU5fskZ2VMO3qTDhiXmFgGbGYSfQ==",
"license": "Apache-2.0",
"dependencies": {
- "@react-stately/overlays": "^3.6.20",
- "@react-types/tooltip": "^3.4.21",
+ "@react-stately/overlays": "^3.6.21",
+ "@react-types/tooltip": "^3.5.0",
"@swc/helpers": "^0.5.0"
},
"peerDependencies": {
@@ -5909,14 +5058,14 @@
}
},
"node_modules/@react-stately/tree": {
- "version": "3.9.3",
- "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.9.3.tgz",
- "integrity": "sha512-ZngG79nLFxE/GYmpwX6E/Rma2MMkzdoJPRI3iWk3dgqnGMMzpPnUp/cvjDsU3UHF7xDVusC5BT6pjWN0uxCIFQ==",
+ "version": "3.9.4",
+ "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.9.4.tgz",
+ "integrity": "sha512-Re1fdEiR0hHPcEda+7ecw+52lgGfFW0MAEDzFg9I6J/t8STQSP+1YC0VVVkv2xRrkLbKLPqggNKgmD8nggecnw==",
"license": "Apache-2.0",
"dependencies": {
"@react-stately/collections": "^3.12.8",
- "@react-stately/selection": "^3.20.6",
- "@react-stately/utils": "^3.10.8",
+ "@react-stately/selection": "^3.20.7",
+ "@react-stately/utils": "^3.11.0",
"@react-types/shared": "^3.32.1",
"@swc/helpers": "^0.5.0"
},
@@ -5925,9 +5074,9 @@
}
},
"node_modules/@react-stately/utils": {
- "version": "3.10.8",
- "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.8.tgz",
- "integrity": "sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==",
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz",
+ "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==",
"license": "Apache-2.0",
"dependencies": {
"@swc/helpers": "^0.5.0"
@@ -5988,12 +5137,12 @@
}
},
"node_modules/@react-types/calendar": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.8.0.tgz",
- "integrity": "sha512-ZDZgfZgbz1ydWOFs1mH7QFfX3ioJrmb3Y/lkoubQE0HWXLZzyYNvhhKyFJRS1QJ40IofLSBHriwbQb/tsUnGlw==",
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.8.1.tgz",
+ "integrity": "sha512-B0UuitMP7YkArBAQldwSZSNL2WwazNGCG+lp6yEDj831NrH9e36/jcjv1rObQ9ZMS6uDX9LXu5C8V5RFwGQabA==",
"license": "Apache-2.0",
"dependencies": {
- "@internationalized/date": "^3.10.0",
+ "@internationalized/date": "^3.10.1",
"@react-types/shared": "^3.32.1"
},
"peerDependencies": {
@@ -6013,9 +5162,9 @@
}
},
"node_modules/@react-types/combobox": {
- "version": "3.13.9",
- "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.13.9.tgz",
- "integrity": "sha512-G6GmLbzVkLW6VScxPAr/RtliEyPhBClfYaIllK1IZv+Z42SVnOpKzhnoe79BpmiFqy1AaC3+LjZX783mrsHCwA==",
+ "version": "3.13.10",
+ "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.13.10.tgz",
+ "integrity": "sha512-Wo4iix++ID6JzoH9eD7ddGUlirQiGpN/VQc3iFjnaTXiJ/cj3v+1oGsDGCZZTklTVeUMU7SRBfMhMgxHHIYLXA==",
"license": "Apache-2.0",
"dependencies": {
"@react-types/shared": "^3.32.1"
@@ -6025,13 +5174,13 @@
}
},
"node_modules/@react-types/datepicker": {
- "version": "3.13.2",
- "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.13.2.tgz",
- "integrity": "sha512-+M6UZxJnejYY8kz0spbY/hP08QJ5rsZ3aNarRQQHc48xV2oelFLX5MhAqizfLEsvyfb0JYrhWoh4z1xZtAmYCg==",
+ "version": "3.13.3",
+ "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.13.3.tgz",
+ "integrity": "sha512-OTRa3banGxcUQKRTLUzr0zTVUMUL+Az1BWARCYQ+8Z/dlkYXYUW0fnS5I0pUEqihgai15KxiY13U0gAqbNSfcA==",
"license": "Apache-2.0",
"dependencies": {
- "@internationalized/date": "^3.10.0",
- "@react-types/calendar": "^3.8.0",
+ "@internationalized/date": "^3.10.1",
+ "@react-types/calendar": "^3.8.1",
"@react-types/overlays": "^3.9.2",
"@react-types/shared": "^3.32.1"
},
@@ -6114,9 +5263,9 @@
}
},
"node_modules/@react-types/numberfield": {
- "version": "3.8.15",
- "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.15.tgz",
- "integrity": "sha512-97r92D23GKCOjGIGMeW9nt+/KlfM3GeWH39Czcmd2/D5y3k6z4j0avbsfx2OttCtJszrnENjw3GraYGYI2KosQ==",
+ "version": "3.8.16",
+ "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.16.tgz",
+ "integrity": "sha512-945F0GsD7K2T293YXhap+2Runl3tZWbnhadXVHFWLbqIKKONZFSZTfLKxQcbFr+bQXr2uh1bVJhYcOiS1l5M+A==",
"license": "Apache-2.0",
"dependencies": {
"@react-types/shared": "^3.32.1"
@@ -6232,9 +5381,9 @@
}
},
"node_modules/@react-types/tooltip": {
- "version": "3.4.21",
- "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.21.tgz",
- "integrity": "sha512-ugGHOZU6WbOdeTdbjnaEc+Ms7/WhsUCg+T3PCOIeOT9FG02Ce189yJ/+hd7oqL/tVwIhEMYJIqSCgSELFox+QA==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.5.0.tgz",
+ "integrity": "sha512-o/m1wlKlOD2sLb9vZLWdVkD5LFLHBMLGeeK/bhyUtp0IEdUeKy0ZRTS7pa/A50trov9RvdbzLK79xG8nKNxHew==",
"license": "Apache-2.0",
"dependencies": {
"@react-types/overlays": "^3.9.2",
@@ -6258,9 +5407,9 @@
"license": "MIT"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz",
- "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz",
+ "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==",
"cpu": [
"arm"
],
@@ -6272,9 +5421,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz",
- "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz",
+ "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==",
"cpu": [
"arm64"
],
@@ -6286,9 +5435,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz",
- "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz",
+ "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==",
"cpu": [
"arm64"
],
@@ -6300,9 +5449,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz",
- "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz",
+ "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==",
"cpu": [
"x64"
],
@@ -6314,9 +5463,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz",
- "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz",
+ "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==",
"cpu": [
"arm64"
],
@@ -6328,9 +5477,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz",
- "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz",
+ "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==",
"cpu": [
"x64"
],
@@ -6342,9 +5491,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz",
- "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz",
+ "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==",
"cpu": [
"arm"
],
@@ -6356,9 +5505,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz",
- "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz",
+ "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==",
"cpu": [
"arm"
],
@@ -6370,9 +5519,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz",
- "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz",
+ "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==",
"cpu": [
"arm64"
],
@@ -6384,9 +5533,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz",
- "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz",
+ "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==",
"cpu": [
"arm64"
],
@@ -6398,9 +5547,23 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz",
- "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz",
+ "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz",
+ "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==",
"cpu": [
"loong64"
],
@@ -6412,9 +5575,23 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz",
- "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz",
+ "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz",
+ "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==",
"cpu": [
"ppc64"
],
@@ -6426,9 +5603,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz",
- "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz",
+ "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==",
"cpu": [
"riscv64"
],
@@ -6440,9 +5617,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz",
- "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz",
+ "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==",
"cpu": [
"riscv64"
],
@@ -6454,9 +5631,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz",
- "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz",
+ "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==",
"cpu": [
"s390x"
],
@@ -6468,9 +5645,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz",
- "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz",
+ "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==",
"cpu": [
"x64"
],
@@ -6482,9 +5659,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz",
- "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz",
+ "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==",
"cpu": [
"x64"
],
@@ -6495,10 +5672,24 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz",
+ "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
+ },
"node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz",
- "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz",
+ "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==",
"cpu": [
"arm64"
],
@@ -6510,9 +5701,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz",
- "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz",
+ "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==",
"cpu": [
"arm64"
],
@@ -6524,9 +5715,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz",
- "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz",
+ "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==",
"cpu": [
"ia32"
],
@@ -6538,9 +5729,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz",
- "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz",
+ "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==",
"cpu": [
"x64"
],
@@ -6552,9 +5743,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz",
- "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz",
+ "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==",
"cpu": [
"x64"
],
@@ -6575,65 +5766,19 @@
"text-hex": "1.0.x"
}
},
- "node_modules/@so-ric/colorspace/node_modules/color": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz",
- "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^3.1.3",
- "color-string": "^2.1.3"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@so-ric/colorspace/node_modules/color-convert": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz",
- "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==",
- "license": "MIT",
- "dependencies": {
- "color-name": "^2.0.0"
- },
- "engines": {
- "node": ">=14.6"
- }
- },
- "node_modules/@so-ric/colorspace/node_modules/color-name": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz",
- "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==",
- "license": "MIT",
- "engines": {
- "node": ">=12.20"
- }
- },
- "node_modules/@so-ric/colorspace/node_modules/color-string": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz",
- "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==",
- "license": "MIT",
- "dependencies": {
- "color-name": "^2.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
"node_modules/@swc/helpers": {
- "version": "0.5.17",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
- "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
+ "version": "0.5.18",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz",
+ "integrity": "sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.8.0"
}
},
"node_modules/@tailwindcss/forms": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz",
- "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==",
+ "version": "0.5.11",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.11.tgz",
+ "integrity": "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6655,26 +5800,13 @@
"tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
}
},
- "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
- "version": "6.0.10",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
- "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@tanstack/react-virtual": {
- "version": "3.13.13",
- "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.13.tgz",
- "integrity": "sha512-4o6oPMDvQv+9gMi8rE6gWmsOjtUZUYIJHv7EB+GblyYdi8U6OqLl8rhHWIUZSL1dUU2dPwTdTgybCKf9EjIrQg==",
+ "version": "3.13.18",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.18.tgz",
+ "integrity": "sha512-dZkhyfahpvlaV0rIKnvQiVoWPyURppl6w4m9IwMDpuIjcJ1sD9YGWrt0wISvgU7ewACXx2Ct46WPgI6qAD4v6A==",
"license": "MIT",
"dependencies": {
- "@tanstack/virtual-core": "3.13.13"
+ "@tanstack/virtual-core": "3.13.18"
},
"funding": {
"type": "github",
@@ -6686,9 +5818,9 @@
}
},
"node_modules/@tanstack/virtual-core": {
- "version": "3.13.13",
- "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.13.tgz",
- "integrity": "sha512-uQFoSdKKf5S8k51W5t7b2qpfkyIbdHMzAn+AMQvHPxKUPeo1SsGaA4JRISQT87jm28b7z8OEqPcg1IOZagQHcA==",
+ "version": "3.13.18",
+ "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.18.tgz",
+ "integrity": "sha512-Mx86Hqu1k39icq2Zusq+Ey2J6dDWTjDvEv43PJtRCoEYTLyfaPnxIQ6iy7YAOK0NV/qOEmZQ/uCufrppZxTgcg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -6932,57 +6064,57 @@
}
},
"node_modules/@tauri-apps/plugin-shell": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.3.3.tgz",
- "integrity": "sha512-Xod+pRcFxmOWFWEnqH5yZcA7qwAMuaaDkMR1Sply+F8VfBj++CGnj2xf5UoialmjZ2Cvd8qrvSCbU+7GgNVsKQ==",
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.3.4.tgz",
+ "integrity": "sha512-ktsRWf8wHLD17aZEyqE8c5x98eNAuTizR1FSX475zQ4TxaiJnhwksLygQz+AGwckJL5bfEP13nWrlTNQJUpKpA==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@tauri-apps/api": "^2.8.0"
}
},
"node_modules/@tiptap/core": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.14.0.tgz",
- "integrity": "sha512-nm0VWVA1Vq/jaKY3wyRXViL/kf78yMdH7qETpv4qZXDQLU+pdWV3IGoRTQTKESc7d8L1wL/2uCeByLNUJfrSIw==",
+ "version": "3.18.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.18.0.tgz",
+ "integrity": "sha512-Gczd4GbK1DNgy/QUPElMVozoa0GW9mW8E31VIi7Q4a9PHHz8PcrxPmuWwtJ2q0PF8MWpOSLuBXoQTWaXZRPRnQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/pm": "^3.14.0"
+ "@tiptap/pm": "^3.18.0"
}
},
"node_modules/@tiptap/extension-blockquote": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.14.0.tgz",
- "integrity": "sha512-I7aOqcVLHBgCeRtMaMHA+ILSS8Sli46fjFq8477stOpQ79TPiBd6e4SDuFCAu58M94mVLMvlPKF2Eh5IvbIMyQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.17.1.tgz",
+ "integrity": "sha512-X4jU/fllJQ8QbjCHUafU4QIHBobyXP3yGBoOcXxUaKlWbLvUs0SQTREM3n6/86m2YyAxwTPG1cn3Xypf42DMAQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-bold": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.14.0.tgz",
- "integrity": "sha512-T4ma6VLoHm9JupglidD3CfZXm89A3HMv99gLplXNizvy1mlr4R3uC3aBqKw6lAP+NoqCqbIgjwc4YYsqZClNwA==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.17.1.tgz",
+ "integrity": "sha512-PZmrljcVBziJkQDXT/QJv4ESxVVQ0iRH+ruTzPda56Kk4h2310cSXGjI33W7rlCikGPoBAAjY/inujm46YB4bw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-bubble-menu": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.14.0.tgz",
- "integrity": "sha512-nraHy+5jumT67J7hWrCuVwVTS2vNj4FpV5kO8epVySBmgEBr/7Pyi4w7mQA1VRVOMdjeN9iypbgQ2rKhpfaoTw==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.17.1.tgz",
+ "integrity": "sha512-z3E8biLiWlzZJwNHnB6j/ZyBdFrJmpl1lqKHc72JqahUHZvidZHdCOYssvR3fc6IaI7MXV13XY1DXUdFbatnaw==",
"license": "MIT",
"dependencies": {
"@floating-ui/dom": "^1.0.0"
@@ -6992,97 +6124,80 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
}
},
"node_modules/@tiptap/extension-bullet-list": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.14.0.tgz",
- "integrity": "sha512-luqPX4u52hiOAHJ95mYsNE+x+9dZxsM461Xny9d/eTXLjAcnwS7MghjrnpljvyYsSXNiwQtxUyEr4uEZZJ5gIQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.17.1.tgz",
+ "integrity": "sha512-2zw17XHruOJQK7ntLVq0PmOLajFhvQ+U4/qTfJnV3VOsHkm+2GPAksFe7I7+X0XmSmDru0pcT339Yywx/6Aykw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.14.0"
+ "@tiptap/extension-list": "^3.17.1"
}
},
"node_modules/@tiptap/extension-code": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.14.0.tgz",
- "integrity": "sha512-Sx9yLorzS+oqNmXID4jt0G5tDnsEgU0HtEXPLD3KNt/ltVxWJU0AXwCsp1/Dg0HIDL868vWpJ2jC1t/4oaf9kA==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.17.1.tgz",
+ "integrity": "sha512-4W0x1ZZqSnIVzQV0/b5VR0bktef2HykH5I/Czzir9yqoZ5zV2cLrMVuLvdFNgRIckU60tQLmHrfKWLF50OY0ew==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-code-block": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.14.0.tgz",
- "integrity": "sha512-hRSdIhhm3Q9JBMQdKaifRVFnAa4sG+M7l1QcTKR3VSYVy2/oR0U+aiOifi5OvMRBUwhaR71Ro+cMT9FH9s26Kg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
- }
- },
- "node_modules/@tiptap/extension-code-block-lowlight": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-3.14.0.tgz",
- "integrity": "sha512-vkiDvPZUadrjAGNzvJYYXl5R+U1XmGALSbm+VlrGCR7iXHgYaMHdkqxHwGZMSqtsF2szPEqcAzLZShlAKl+AkA==",
+ "version": "3.18.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.18.0.tgz",
+ "integrity": "sha512-fCx1oT95ikGfoizw+XCjeglQxlLK4lWgUcB4Dcn5TdaCoFBQMEaZs7Q0jVajxxxULnyArkg60uarc1ac/IF2Hw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/extension-code-block": "^3.14.0",
- "@tiptap/pm": "^3.14.0",
- "highlight.js": "^11",
- "lowlight": "^2 || ^3"
+ "@tiptap/core": "^3.18.0",
+ "@tiptap/pm": "^3.18.0"
}
},
"node_modules/@tiptap/extension-document": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.14.0.tgz",
- "integrity": "sha512-O3D7/GPB3XrWGy0y/b4LMHiY0eTd+dyIbSdiFtmUnbC/E9lqQLw43GiqvD9Gm6AyKhBA+Z45dKMbaOe1c6eTwQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.17.1.tgz",
+ "integrity": "sha512-F7Q5HoAU383HWFa6AXZQ5N6t6lTJzVjYM8z93XrtH/2GzDFwy1UmDSrsXqvgznedBLAOgCNVTNh9PjXpLoOUbg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-dropcursor": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.14.0.tgz",
- "integrity": "sha512-IwHyiZKLjV9WSBlQFS+afMjucIML8wFAKkG8UKCu+CVOe/Qd1ImDGyv6rzPlCmefJkDHIUWS+c2STapJlUD1VQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.17.1.tgz",
+ "integrity": "sha512-EKJYPb7OSk3p9mX1SmHt4ccw89w1P1d55hC8aPtZJ6jxAUd5MSuVwvEEVz7LGldUZD9HZz9WFQ0Sv9U73Bpkmw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extensions": "^3.14.0"
+ "@tiptap/extensions": "^3.17.1"
}
},
"node_modules/@tiptap/extension-floating-menu": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-3.14.0.tgz",
- "integrity": "sha512-+ErwDF74NzX4JV0nXMSIUT9V8FDdo85r0SaBZ8lb2NLmElaA3LDklcNV7SsoKlRcwsAXtFkqQbDwXLNGQLYSPQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-3.17.1.tgz",
+ "integrity": "sha512-zYkoYsxp+cZ8tBDODm4E8hnSaMTdDWKJuCQWY2Ep14oMPkAkSJr8sCLL1tOnNSAnhGwLJQtRLkZ41nvUEP6xKA==",
"license": "MIT",
"funding": {
"type": "github",
@@ -7090,93 +6205,93 @@
},
"peerDependencies": {
"@floating-ui/dom": "^1.0.0",
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
}
},
"node_modules/@tiptap/extension-gapcursor": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.14.0.tgz",
- "integrity": "sha512-hMg2U59+c9FreYtTvzxx5GWKejdZLRITMLEu4OTfrgQok6uF4qkzGEEqmYqPiHk08TBqAg18Y5bbpyqTsuit9A==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.17.1.tgz",
+ "integrity": "sha512-xItmJZTi+Z6UbLBhpBBL9RZDNbDXf+ntWVgblAmxtpyEyNh5k5tkM6IP9SJRhk92uVfnFpH9qkGo66a537I8QA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extensions": "^3.14.0"
+ "@tiptap/extensions": "^3.17.1"
}
},
"node_modules/@tiptap/extension-hard-break": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.14.0.tgz",
- "integrity": "sha512-XKxr8usQp+kFevhDK6Ccmnq1CIkLmPClhKwbt7AClGLKLBtEVAS1qUgcmKudkw8cD8Q2/69twI37LXa23sfuLA==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.17.1.tgz",
+ "integrity": "sha512-28FZPUho1Q2AB3ka5SVEVib5f9dMKbE1kewLZeRIOQ5FuFNholGIPL5X1tKcwGW7G3A7Y0fGxeNmIZJ3hrqhzA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-heading": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.14.0.tgz",
- "integrity": "sha512-4xpahSo3b1dN2nwA0XKXLQVz9nZ/vE443a/Y5QLWeXiu3v9wkcMs/5kQ5ysFeDZRBTfVUWBqhngI7zhvDUx2zQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.17.1.tgz",
+ "integrity": "sha512-rT+Su/YnHdlikg8f78t6RXlc1sVSfp7B0fdJdtFgS2e6BBYJQoDMp5L9nt54RR9Yy953aDW2sko7NArUCb8log==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-horizontal-rule": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.14.0.tgz",
- "integrity": "sha512-65O4T9vPKLUKO1fLowh5jqtfQlH5eaIL7qb/uj5sXMMg8O7TCvBIRkwNuYsFTkJmTk4vBy+fjZ0uwSY3DFkO1g==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.17.1.tgz",
+ "integrity": "sha512-CHG6LBtxV+3qj5EcCRVlpvSW5udKD6KbnXIGhP+Tvy+OabLGzO4HNxz3+duDE0pMR4eKX1libsnqffj0vq7mnQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
}
},
"node_modules/@tiptap/extension-image": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-3.14.0.tgz",
- "integrity": "sha512-lmRU2bhKMDPo+00AiGXZu15jBA9Gmw6QixBWzRrUtsYuFrVAYYCUNIA6mDH7b80935ISqYI+YH1ZlJEmsMptJw==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-3.17.1.tgz",
+ "integrity": "sha512-VbSSZ//5qijm8F0lQQ6K+DGnZgjLKYQY2c+O56QNEoN8BaCFrJlsVgF1ttrSRUmoG4XBNIMlAS07kZXvMZQr0g==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-italic": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.14.0.tgz",
- "integrity": "sha512-Arl5EaG4wdyipwvKjsI7Krlk3OkmqvLfF0YfGwsd5AVDxTiYuiDGgz7RF8J2kttbBeiUTqwME5xpkryQK3F+fg==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.17.1.tgz",
+ "integrity": "sha512-unfRLmvf680Y0UkBToUcrDkSEKO/wAjd3nQ7CNPMfAc8m+ZMReXkcgLpeVvnDEiHNsJ0PlYSW7a45tnQD9HQdg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-link": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.14.0.tgz",
- "integrity": "sha512-xaeJIktD42rJ4t9fbQpKe+yYNZ+YFIK96cp1Kdm0hZHv/8MPMNRiF85TRY+9U1aoyh5uRcspgCj7EKQb2Hs7qg==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.17.1.tgz",
+ "integrity": "sha512-5kdN7vms5hMXtjiophUkgvzy8dNGvGSmol1Sawh30TEPrgXc93Ayj7YyGZlbimInKZcD8q+Od/FFc+wkrof3nA==",
"license": "MIT",
"dependencies": {
"linkifyjs": "^4.3.2"
@@ -7186,146 +6301,146 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
}
},
"node_modules/@tiptap/extension-list": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.14.0.tgz",
- "integrity": "sha512-rsjFH0Vd/4UbDsjwMLay7oz72VVu1r35t8ofAzy5587jn5JAjflaZs05XbRRMD2imUTK41dyajVSh8CqSnDEJw==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.17.1.tgz",
+ "integrity": "sha512-LHKIxmXe5Me+vJZKhiwMBGHlApaBIAduNMRUpm5mkY7ER/m96zKR0VqrJd4LjVVH2iDvck5h1Ka4396MHWlKNg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
}
},
"node_modules/@tiptap/extension-list-item": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.14.0.tgz",
- "integrity": "sha512-19Dcp8HCFdhINmRy0KQLFfz9ZEuVwFWGAAjYG7BvMvkd9k4sJ5vCv5fej59G99rhsc+tCmik77w+SLksOcxwKQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.17.1.tgz",
+ "integrity": "sha512-Qjj4oIa44cTX0E6aw/4+wleqX21t5jMDxeSqP5uQ8Q3IdD1GoR5+yo+41XAHELaeZOXLHLkAIbzIxik3pOqO8w==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.14.0"
+ "@tiptap/extension-list": "^3.17.1"
}
},
"node_modules/@tiptap/extension-list-keymap": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.14.0.tgz",
- "integrity": "sha512-1oPbvNnQjeOxkHZcUbWPx/IY9o4fT3QGk/9A9cIjFrJRD2AHzbYfPDHNHINtg7Bj0jWz74cHvAHcaxP+M27jkA==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.17.1.tgz",
+ "integrity": "sha512-zRidxbkJNe/j3nZpOGLnPeVdyciUM8MM+NHhxcjVKoNDA+/zEBfjXJ1dKC4UBsnSr4AS/3SCWBYHGXOoSqdUaA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.14.0"
+ "@tiptap/extension-list": "^3.17.1"
}
},
"node_modules/@tiptap/extension-ordered-list": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.14.0.tgz",
- "integrity": "sha512-/fXjVL4JajkJQoc213iiput0bCXC4ztUPUpvNuI62VcgFKHcTvX4eYxED1VflotCx0OdkyY9yYD8PtvyO5lkmA==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.17.1.tgz",
+ "integrity": "sha512-pahAXbVajqX0Y51Zge9jKZlCtPV1oiq5Fbzs7gHF80KICIKf44i/AsUvfdJyT2N5/8kZrAMQHEiU/UgTMrhM3w==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.14.0"
+ "@tiptap/extension-list": "^3.17.1"
}
},
"node_modules/@tiptap/extension-paragraph": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.14.0.tgz",
- "integrity": "sha512-NFxk2yNo3Cvh9g8evea+yTLNV48se7MbMcVizTnVhobqtBKv793qsb5FM5Hu30Y72FQPNfH+LRoap4XZyBPfVw==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.17.1.tgz",
+ "integrity": "sha512-Vl+xAlINaPtX8XTPvPmeveYMEIMLs8gA7ItcKpyyo4cCzAfVCY3DKuWzOkQGUf7DKrhyJQZhpgLNMaq+h5sTSw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-placeholder": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-3.14.0.tgz",
- "integrity": "sha512-sBiAs1gumdSZXO0ezMSmOkHnlzZNZ1fttm6GriAMIp5xfCvo/0LD6bHPXtvOAbT9ovLQX8mH5+iPZh2jKta7oQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-3.17.1.tgz",
+ "integrity": "sha512-cE8Rij5/1t4KnWE7GaDewhBek9DKNB+97yrxyggMegILg6v195hOmOkRZkyfnFMYZoBDlrfSAtX9wBvbZBqIsg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extensions": "^3.14.0"
+ "@tiptap/extensions": "^3.17.1"
}
},
"node_modules/@tiptap/extension-strike": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.14.0.tgz",
- "integrity": "sha512-R8BbAhnWpisBml6okMKl98hY4tJjedTTgyTkx8tPabIJ92nS9IURKEk3foWB9uHxdTOBUqTvVT+2ScDf9r6QHg==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.17.1.tgz",
+ "integrity": "sha512-c6fS6YIhxoU55etlJgM0Xqker+jn7I1KC7GVu6ljmda8I00K3/lOLZgvFUNPmgp8EJWtyTctj+3D3D+PaZaFAA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-table": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-3.14.0.tgz",
- "integrity": "sha512-tt1OlzqlsRsTazARGpvwPJmKEu+jiMFuaueNM28V+AADtaIPyE160V6w2bkdeWQeaBWqZjOUGZaMjpsKqWXR+g==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-3.17.1.tgz",
+ "integrity": "sha512-FuAMdmM330tHJUYT5IV2ooFRqtXf+0D8llcE9nIQQCXKL4J0pfGSOIm40LVpunYgx2pV8SSCL51qTBuEmR84tQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
}
},
"node_modules/@tiptap/extension-table-cell": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-3.14.0.tgz",
- "integrity": "sha512-g8u0RfAill2F4DevffYHHeNHAfh3E3Kx/8fhRR6EdhQh5pj+mCuuJoTWB7kJjo6NuXCX7cBRRRB5XUmYu8KuTQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-3.17.1.tgz",
+ "integrity": "sha512-fezen+lLI3uMO/W0yZVRG3VjT9P0MIxf5XUn+WwWqoqFB1Ktuea/9swD8fS917NIMmBD/I1AzCqfoZNhPtZFxw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-table": "^3.14.0"
+ "@tiptap/extension-table": "^3.17.1"
}
},
"node_modules/@tiptap/extension-table-header": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-3.14.0.tgz",
- "integrity": "sha512-dUGtXpfrXGhOvamuukcwhl2W5pEpeYlgNQIUEdR2aFmZeH86KDlHYQYCJ/hq74YLq2cPRla/WljNGut20tjWdw==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-3.17.1.tgz",
+ "integrity": "sha512-jgq5Qjml404IbF2s9DL5jW/r1p/kPxASZrvsfp3pVFfFym6Lw4oZAC9hOrd/6x3Mm4MCJAOcRTmybkwVHvqhjw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-table": "^3.14.0"
+ "@tiptap/extension-table": "^3.17.1"
}
},
"node_modules/@tiptap/extension-table-of-contents": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-of-contents/-/extension-table-of-contents-3.14.0.tgz",
- "integrity": "sha512-m2zRVJzR073QjJiB1H2FVArtl6JeFXSD9ld3f4Bus6MLfRG8suAJEfBhYef+M2eei88vJNC9Cvk28x08Q8vhzA==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-table-of-contents/-/extension-table-of-contents-3.17.1.tgz",
+ "integrity": "sha512-kfMt3YCAIMwwBbXnYoXYb/QqxId5pJyM1UEA9gH/+nqS65BfHfedrKoq4nvSfJIskZYdbUyJlWvvcpFC/Nmn8Q==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"uuid": "^10.0.0"
@@ -7335,119 +6450,106 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
- }
- },
- "node_modules/@tiptap/extension-table-of-contents/node_modules/uuid": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
- "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
- "funding": [
- "https://github.com/sponsors/broofa",
- "https://github.com/sponsors/ctavan"
- ],
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
}
},
"node_modules/@tiptap/extension-table-row": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-3.14.0.tgz",
- "integrity": "sha512-NBkN2Xqc7o+T/RrthD5q+EOmvXryQrR4+whagLe4HFYHwrI/DknkxhNvkdNJLdWxZKG0YKvU2D9Cgp/StOokjg==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-3.17.1.tgz",
+ "integrity": "sha512-H3h6Z/1vV+DewIW0C8lG/DziGoGgs95YBd4EHji+Gyk/KCI30ybGOAypz+RwqtJsiKMzbjKUt/SJcFzseOfUtQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-table": "^3.14.0"
+ "@tiptap/extension-table": "^3.17.1"
}
},
"node_modules/@tiptap/extension-task-item": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-task-item/-/extension-task-item-3.14.0.tgz",
- "integrity": "sha512-hUUNrqqYffEJpPRRvPHidbvzAQgaHZ12c918MUqquWf/AfpmnTDYJplHpbh2gUbtg0nivNFgags7VJdnJeKlVQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-task-item/-/extension-task-item-3.17.1.tgz",
+ "integrity": "sha512-aKCOGNatRLo2m5Qlb2mRxhN7BUE9yNY+yXtLIi+mDH7IUnygffyuz9iCy+rNGihvZdQQKm9vU51dAjVMu5ww+g==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.14.0"
+ "@tiptap/extension-list": "^3.17.1"
}
},
"node_modules/@tiptap/extension-task-list": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-task-list/-/extension-task-list-3.14.0.tgz",
- "integrity": "sha512-uFJkjxF8+yVewU/JR2PWgY2TGKqa0GntMPe/prozyIrKW6felcQ+Pypa6Mr3luk5e8C6GQB8Uh5+cVhLVTjZ/w==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-task-list/-/extension-task-list-3.17.1.tgz",
+ "integrity": "sha512-EiJjlfNioQub9G6SZ83b/1+5VhVtlHStQN7+BTIsA9EhRAeKwge0KtO1oMIzFkDryd9mki9GQx/D+eek2CNsYw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.14.0"
+ "@tiptap/extension-list": "^3.17.1"
}
},
"node_modules/@tiptap/extension-text": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.14.0.tgz",
- "integrity": "sha512-XlpnD87LQ7lLcDcBenHgzxv3uivQzPdVHM16CY4lXR4aKDIp2mxjPZr4twHT+cOnRQHc8VYpRgkEo6LLX6VylA==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.17.1.tgz",
+ "integrity": "sha512-rGml96vokQbvPB+w6L3+WKyYJWwqELaLdFUr1WMgg+py5uNYGJYAExYNAbDb5biWJBrX9GgMlCaNeiJj849L1w==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-typography": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-typography/-/extension-typography-3.14.0.tgz",
- "integrity": "sha512-vqRP6muQI/o95bchhmdGDGFRnJkOVs8zAkzuL5FCc0GmwJAPKy+GHoRP9hfgYlawCqzi8exVDXiY6WkknN87Yg==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-typography/-/extension-typography-3.17.1.tgz",
+ "integrity": "sha512-bEocTrK/gryk3VtthC9Ca03p2kutVIIFnDkVW6iOG8PgQWEspuQRgqE8yPnHxY8pBBDWxiaBzcGTSrp+3U9d5A==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extension-underline": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.14.0.tgz",
- "integrity": "sha512-zmnWlsi2g/tMlThHby0Je9O+v24j4d+qcXF3nuzLUUaDsGCEtOyC9RzwITft59ViK+Nc2PD2W/J14rsB0j+qoQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.17.1.tgz",
+ "integrity": "sha512-6RdBzmkg6DYs0EqPyoqLGkISXzCnPqM/q3A6nh3EmFmORcIDfuNmcidvA6EImebK8KQGmtZKsRhQSnK4CNQ39g==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0"
+ "@tiptap/core": "^3.17.1"
}
},
"node_modules/@tiptap/extensions": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.14.0.tgz",
- "integrity": "sha512-qQBVKqzU4ZVjRn8W0UbdfE4LaaIgcIWHOMrNnJ+PutrRzQ6ZzhmD/kRONvRWBfG9z3DU7pSKGwVYSR2hztsGuQ==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.17.1.tgz",
+ "integrity": "sha512-aQ4WA5bdRpv9yPQ6rRdiqwlMZ1eJw1HyEaNPQhOr2HVhQ0EqSDIOEXF4ymCveGAHxXbxNvtQ+4t1ymQEikGfXA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
}
},
"node_modules/@tiptap/pm": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.14.0.tgz",
- "integrity": "sha512-xrZmqI5jl4yMeAsu8p8gVP9S3An5h2MBi8BQHNnZmpyzkUrlpd40vlT6u13SWIqVi5ZWhBZ6U3rL7mkVLZuRKg==",
+ "version": "3.18.0",
+ "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.18.0.tgz",
+ "integrity": "sha512-8RoI5gW0xBVCsuxahpK8vx7onAw6k2/uR3hbGBBnH+HocDMaAZKot3nTyY546ij8ospIC1mnQ7k4BhVUZesZDQ==",
"license": "MIT",
"dependencies": {
"prosemirror-changeset": "^2.3.0",
@@ -7475,9 +6577,9 @@
}
},
"node_modules/@tiptap/react": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-3.14.0.tgz",
- "integrity": "sha512-Eo/nLyKxHvnLIF4gI2WFhGJiVrqfA6XL9kismVG9NwBNF/NblMDmZZu6Z2SH/ONJQz2Egn7UBPNp3BMq/qZDcg==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-3.17.1.tgz",
+ "integrity": "sha512-Hn/pIP3HG9xYnhI3iGrfVhgQhfIdOaEBSxOFzJ37patqSOlIoP5aZH/b2HZ4vgo5DdRlV56q7WtRC+vLIw4Neg==",
"license": "MIT",
"dependencies": {
"@types/use-sync-external-store": "^0.0.6",
@@ -7489,12 +6591,12 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"optionalDependencies": {
- "@tiptap/extension-bubble-menu": "^3.14.0",
- "@tiptap/extension-floating-menu": "^3.14.0"
+ "@tiptap/extension-bubble-menu": "^3.17.1",
+ "@tiptap/extension-floating-menu": "^3.17.1"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0",
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1",
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
"@types/react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0",
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
@@ -7502,35 +6604,35 @@
}
},
"node_modules/@tiptap/starter-kit": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.14.0.tgz",
- "integrity": "sha512-fHsC4oDVzvMU9btg+IUmu/eqPquapjJ341qaNI7cCeSCKjjE6XJEN6WcONLAVId2OZUwML0IX1Jgl+6gJxU9Jw==",
- "license": "MIT",
- "dependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/extension-blockquote": "^3.14.0",
- "@tiptap/extension-bold": "^3.14.0",
- "@tiptap/extension-bullet-list": "^3.14.0",
- "@tiptap/extension-code": "^3.14.0",
- "@tiptap/extension-code-block": "^3.14.0",
- "@tiptap/extension-document": "^3.14.0",
- "@tiptap/extension-dropcursor": "^3.14.0",
- "@tiptap/extension-gapcursor": "^3.14.0",
- "@tiptap/extension-hard-break": "^3.14.0",
- "@tiptap/extension-heading": "^3.14.0",
- "@tiptap/extension-horizontal-rule": "^3.14.0",
- "@tiptap/extension-italic": "^3.14.0",
- "@tiptap/extension-link": "^3.14.0",
- "@tiptap/extension-list": "^3.14.0",
- "@tiptap/extension-list-item": "^3.14.0",
- "@tiptap/extension-list-keymap": "^3.14.0",
- "@tiptap/extension-ordered-list": "^3.14.0",
- "@tiptap/extension-paragraph": "^3.14.0",
- "@tiptap/extension-strike": "^3.14.0",
- "@tiptap/extension-text": "^3.14.0",
- "@tiptap/extension-underline": "^3.14.0",
- "@tiptap/extensions": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.17.1.tgz",
+ "integrity": "sha512-3vBGqag9mwuQoWTrfQlULtHeoFs7k/2Q8CREf3Y79hv2fqAXTvTOKlWYPSgZhiGVMp6Dti7BDiE9Y1QpvAat2g==",
+ "license": "MIT",
+ "dependencies": {
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/extension-blockquote": "^3.17.1",
+ "@tiptap/extension-bold": "^3.17.1",
+ "@tiptap/extension-bullet-list": "^3.17.1",
+ "@tiptap/extension-code": "^3.17.1",
+ "@tiptap/extension-code-block": "^3.17.1",
+ "@tiptap/extension-document": "^3.17.1",
+ "@tiptap/extension-dropcursor": "^3.17.1",
+ "@tiptap/extension-gapcursor": "^3.17.1",
+ "@tiptap/extension-hard-break": "^3.17.1",
+ "@tiptap/extension-heading": "^3.17.1",
+ "@tiptap/extension-horizontal-rule": "^3.17.1",
+ "@tiptap/extension-italic": "^3.17.1",
+ "@tiptap/extension-link": "^3.17.1",
+ "@tiptap/extension-list": "^3.17.1",
+ "@tiptap/extension-list-item": "^3.17.1",
+ "@tiptap/extension-list-keymap": "^3.17.1",
+ "@tiptap/extension-ordered-list": "^3.17.1",
+ "@tiptap/extension-paragraph": "^3.17.1",
+ "@tiptap/extension-strike": "^3.17.1",
+ "@tiptap/extension-text": "^3.17.1",
+ "@tiptap/extension-underline": "^3.17.1",
+ "@tiptap/extensions": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
},
"funding": {
"type": "github",
@@ -7538,17 +6640,17 @@
}
},
"node_modules/@tiptap/suggestion": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-3.14.0.tgz",
- "integrity": "sha512-B9BQ9Tck8HsISDc6jZmtaSpl8KK69JbKHfU0ntILxgj8aBASElewO+W8WE49JSTxuyJGRgnhGSgaGpM4LhbLAg==",
+ "version": "3.17.1",
+ "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-3.17.1.tgz",
+ "integrity": "sha512-a188uVYjlLsUiwK3Ki7KsaWVWC0u28KsqGEAqCk9ECYmtVY99Hrb+rcAwGpMjA7tn8WAwThOxiLISoMdpuqXwg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.14.0",
- "@tiptap/pm": "^3.14.0"
+ "@tiptap/core": "^3.17.1",
+ "@tiptap/pm": "^3.17.1"
}
},
"node_modules/@types/babel__core": {
@@ -7679,12 +6781,12 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "18.19.130",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz",
- "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
+ "version": "25.0.10",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz",
+ "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==",
"license": "MIT",
"dependencies": {
- "undici-types": "~5.26.4"
+ "undici-types": "~7.16.0"
}
},
"node_modules/@types/node-fetch": {
@@ -7698,9 +6800,9 @@
}
},
"node_modules/@types/react": {
- "version": "19.2.7",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
- "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
+ "version": "19.2.9",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz",
+ "integrity": "sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==",
"license": "MIT",
"peer": true,
"dependencies": {
@@ -7804,9 +6906,9 @@
}
},
"node_modules/@zilliz/milvus2-sdk-node": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/@zilliz/milvus2-sdk-node/-/milvus2-sdk-node-2.6.5.tgz",
- "integrity": "sha512-bHK2gNNpK2Oni4l+3+xbmHWFNpum5dUTSuxio9xG3zmV4mZMS7W5WGhhnjbCy1tYYhme5LGNDY1CGT/Q1ZtxQQ==",
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/@zilliz/milvus2-sdk-node/-/milvus2-sdk-node-2.6.9.tgz",
+ "integrity": "sha512-qOaVIpQ3E4w6Dp4lp9QIIuGedpE5dWRhK9SRX+y9WXcq4EXYvcdfR2aG/Vb5tWBPQwcMrGb5z8gRfFy7/gRbIw==",
"license": "Apache-2.0",
"dependencies": {
"@grpc/grpc-js": "1.7.3",
@@ -7984,9 +7086,9 @@
}
},
"node_modules/apache-arrow/node_modules/@types/node": {
- "version": "20.19.27",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz",
- "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==",
+ "version": "20.19.30",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.30.tgz",
+ "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
@@ -8032,9 +7134,9 @@
"license": "MIT"
},
"node_modules/autoprefixer": {
- "version": "10.4.22",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz",
- "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==",
+ "version": "10.4.23",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz",
+ "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==",
"dev": true,
"funding": [
{
@@ -8052,10 +7154,9 @@
],
"license": "MIT",
"dependencies": {
- "browserslist": "^4.27.0",
- "caniuse-lite": "^1.0.30001754",
+ "browserslist": "^4.28.1",
+ "caniuse-lite": "^1.0.30001760",
"fraction.js": "^5.3.4",
- "normalize-range": "^0.1.2",
"picocolors": "^1.1.1",
"postcss-value-parser": "^4.2.0"
},
@@ -8111,9 +7212,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.9.5",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.5.tgz",
- "integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==",
+ "version": "2.9.18",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz",
+ "integrity": "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -8121,9 +7222,9 @@
}
},
"node_modules/better-sqlite3": {
- "version": "12.5.0",
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.5.0.tgz",
- "integrity": "sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==",
+ "version": "12.6.2",
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.6.2.tgz",
+ "integrity": "sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
@@ -8167,9 +7268,9 @@
}
},
"node_modules/body-parser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz",
- "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz",
+ "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==",
"license": "MIT",
"dependencies": {
"bytes": "^3.1.2",
@@ -8178,7 +7279,7 @@
"http-errors": "^2.0.0",
"iconv-lite": "^0.7.0",
"on-finished": "^2.4.1",
- "qs": "^6.14.0",
+ "qs": "^6.14.1",
"raw-body": "^3.0.1",
"type-is": "^2.0.1"
},
@@ -8329,9 +7430,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001760",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz",
- "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==",
+ "version": "1.0.30001766",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz",
+ "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==",
"dev": true,
"funding": [
{
@@ -8431,9 +7532,9 @@
}
},
"node_modules/cheerio": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz",
- "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
+ "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
"license": "MIT",
"dependencies": {
"cheerio-select": "^2.1.0",
@@ -8441,11 +7542,11 @@
"domhandler": "^5.0.3",
"domutils": "^3.2.2",
"encoding-sniffer": "^0.2.1",
- "htmlparser2": "^10.0.0",
+ "htmlparser2": "^10.1.0",
"parse5": "^7.3.0",
"parse5-htmlparser2-tree-adapter": "^7.1.0",
"parse5-parser-stream": "^7.1.2",
- "undici": "^7.12.0",
+ "undici": "^7.19.0",
"whatwg-mimetype": "^4.0.0"
},
"engines": {
@@ -8538,16 +7639,16 @@
}
},
"node_modules/color": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
- "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz",
+ "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==",
"license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1",
- "color-string": "^1.9.0"
+ "color-convert": "^3.1.3",
+ "color-string": "^2.1.3"
},
"engines": {
- "node": ">=12.5.0"
+ "node": ">=18"
}
},
"node_modules/color-convert": {
@@ -8562,20 +7663,52 @@
"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==",
- "license": "MIT"
- },
- "node_modules/color-string": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
- "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/color-string": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz",
+ "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/color-string/node_modules/color-name": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz",
+ "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/color/node_modules/color-convert": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz",
+ "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.6"
+ }
+ },
+ "node_modules/color/node_modules/color-name": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz",
+ "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==",
"license": "MIT",
- "dependencies": {
- "color-name": "^1.0.0",
- "simple-swizzle": "^0.2.2"
+ "engines": {
+ "node": ">=12.20"
}
},
"node_modules/color2k": {
@@ -8723,9 +7856,9 @@
}
},
"node_modules/cors": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
- "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "version": "2.8.6",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz",
+ "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
"license": "MIT",
"dependencies": {
"object-assign": "^4",
@@ -8733,6 +7866,10 @@
},
"engines": {
"node": ">= 0.10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/crelt": {
@@ -8832,9 +7969,9 @@
"license": "MIT"
},
"node_modules/decode-named-character-reference": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
- "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz",
+ "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==",
"license": "MIT",
"dependencies": {
"character-entities": "^2.0.0"
@@ -9103,9 +8240,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.267",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz",
- "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==",
+ "version": "1.5.278",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz",
+ "integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==",
"dev": true,
"license": "ISC"
},
@@ -9276,12 +8413,12 @@
"license": "MIT"
},
"node_modules/escape-string-regexp": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -9483,9 +8620,9 @@
"license": "BSD-3-Clause"
},
"node_modules/fastq": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
"license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
@@ -9669,14 +8806,14 @@
}
},
"node_modules/framer-motion": {
- "version": "12.23.25",
- "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.25.tgz",
- "integrity": "sha512-gUHGl2e4VG66jOcH0JHhuJQr6ZNwrET9g31ZG0xdXzT0CznP7fHX4P8Bcvuc4MiUB90ysNnWX2ukHRIggkl6hQ==",
+ "version": "12.29.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.29.0.tgz",
+ "integrity": "sha512-1gEFGXHYV2BD42ZPTFmSU9buehppU+bCuOnHU0AD18DKh9j4DuTx47MvqY5ax+NNWRtK32qIcJf1UxKo1WwjWg==",
"license": "MIT",
"peer": true,
"dependencies": {
- "motion-dom": "^12.23.23",
- "motion-utils": "^12.23.6",
+ "motion-dom": "^12.29.0",
+ "motion-utils": "^12.27.2",
"tslib": "^2.4.0"
},
"peerDependencies": {
@@ -9712,9 +8849,9 @@
"license": "MIT"
},
"node_modules/fs-extra": {
- "version": "11.3.2",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
- "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
+ "version": "11.3.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz",
+ "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -9993,6 +9130,16 @@
"react-is": "^16.7.0"
}
},
+ "node_modules/hono": {
+ "version": "4.11.5",
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.5.tgz",
+ "integrity": "sha512-WemPi9/WfyMwZs+ZUXdiwcCh9Y+m7L+8vki9MzDw3jJ+W9Lc+12HGsd368Qc1vZi1xwW8BWMMsnK5efYKPdt4g==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=16.9.0"
+ }
+ },
"node_modules/html-entities": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz",
@@ -10029,9 +9176,9 @@
}
},
"node_modules/htmlparser2": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz",
- "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
+ "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
@@ -10043,14 +9190,14 @@
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
- "domutils": "^3.2.1",
- "entities": "^6.0.0"
+ "domutils": "^3.2.2",
+ "entities": "^7.0.1"
}
},
"node_modules/htmlparser2/node_modules/entities": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
- "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
@@ -10089,9 +9236,9 @@
}
},
"node_modules/i18next": {
- "version": "25.7.2",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.7.2.tgz",
- "integrity": "sha512-58b4kmLpLv1buWUEwegMDUqZVR5J+rT+WTRFaBGL7lxDuJQQ0NrJFrq+eT2N94aYVR1k1Sr13QITNOL88tZCuw==",
+ "version": "25.8.0",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.8.0.tgz",
+ "integrity": "sha512-urrg4HMFFMQZ2bbKRK7IZ8/CTE7D8H4JRlAwqA2ZwDRFfdd0K/4cdbNNLgfn9mo+I/h9wJu61qJzH7jCFAhUZQ==",
"funding": [
{
"type": "individual",
@@ -10129,9 +9276,9 @@
}
},
"node_modules/iconv-lite": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
- "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
+ "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
@@ -10555,6 +9702,12 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"license": "MIT"
},
+ "node_modules/json-schema-typed": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz",
+ "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==",
+ "license": "BSD-2-Clause"
+ },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -10620,9 +9773,9 @@
"license": "MIT"
},
"node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
+ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"license": "MIT"
},
"node_modules/lodash.camelcase": {
@@ -10765,6 +9918,18 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/mdast-util-from-markdown": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
@@ -11917,19 +11082,19 @@
"license": "MIT"
},
"node_modules/motion-dom": {
- "version": "12.23.23",
- "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.23.tgz",
- "integrity": "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==",
+ "version": "12.29.0",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.29.0.tgz",
+ "integrity": "sha512-3eiz9bb32yvY8Q6XNM4AwkSOBPgU//EIKTZwsSWgA9uzbPBhZJeScCVcBuwwYVqhfamewpv7ZNmVKTGp5qnzkA==",
"license": "MIT",
"peer": true,
"dependencies": {
- "motion-utils": "^12.23.6"
+ "motion-utils": "^12.27.2"
}
},
"node_modules/motion-utils": {
- "version": "12.23.6",
- "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz",
- "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==",
+ "version": "12.27.2",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.27.2.tgz",
+ "integrity": "sha512-B55gcoL85Mcdt2IEStY5EEAsrMSVE2sI14xQ/uAdPL+mfQxhKKFaEag9JmfxedJOR4vZpBGoPeC/Gm13I/4g5Q==",
"license": "MIT",
"peer": true
},
@@ -11960,9 +11125,9 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz",
+ "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==",
"funding": [
{
"type": "github",
@@ -11971,10 +11136,10 @@
],
"license": "MIT",
"bin": {
- "nanoid": "bin/nanoid.cjs"
+ "nanoid": "bin/nanoid.js"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^18 || >=20"
}
},
"node_modules/napi-build-utils": {
@@ -11993,9 +11158,9 @@
}
},
"node_modules/node-abi": {
- "version": "3.85.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.85.0.tgz",
- "integrity": "sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==",
+ "version": "3.87.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz",
+ "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==",
"license": "MIT",
"dependencies": {
"semver": "^7.3.5"
@@ -12004,6 +11169,18 @@
"node": ">=10"
}
},
+ "node_modules/node-abi/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/node-domexception": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
@@ -12060,16 +11237,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/nth-check": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
@@ -12161,9 +11328,9 @@
}
},
"node_modules/openai": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/openai/-/openai-6.13.0.tgz",
- "integrity": "sha512-yHbMo+EpNGPG3sRrXvmo0LhUPFN4bAURJw3G17bE+ax1G4tcTFCa9ZjvCWh3cvni0aHY0uWlk2IxcsPH4NR9Ow==",
+ "version": "6.16.0",
+ "resolved": "https://registry.npmjs.org/openai/-/openai-6.16.0.tgz",
+ "integrity": "sha512-fZ1uBqjFUjXzbGc35fFtYKEOxd20kd9fDpFeqWtsOZWiubY8CZ1NAlXHW3iathaFvqmNtCWMIsosCuyeI7Joxg==",
"license": "Apache-2.0",
"bin": {
"openai": "bin/cli"
@@ -12353,14 +11520,14 @@
}
},
"node_modules/platejs": {
- "version": "52.0.11",
- "resolved": "https://registry.npmjs.org/platejs/-/platejs-52.0.11.tgz",
- "integrity": "sha512-yBkx+x5HjDnmEBjaH8SbgX++1e48OVRTTXxPSSHDyhazXJipQuGMTYQ9wnKWjcvz/tlgDTDug95cBwC52X8JSQ==",
+ "version": "52.0.17",
+ "resolved": "https://registry.npmjs.org/platejs/-/platejs-52.0.17.tgz",
+ "integrity": "sha512-vJZijt8coKh6W60RmUG69DFM4ZwLhzNwSfOwfk5SkVWer1iDqqyW34JnGn5nKI8irj+45/sSzx4Nfgw9CR+QYw==",
"license": "MIT",
"dependencies": {
- "@platejs/core": "52.0.11",
+ "@platejs/core": "52.0.17",
"@platejs/slate": "52.0.10",
- "@platejs/utils": "52.0.11",
+ "@platejs/utils": "52.0.17",
"@udecode/react-hotkeys": "52.0.11",
"@udecode/react-utils": "52.0.11",
"@udecode/utils": "52.0.1",
@@ -12508,7 +11675,7 @@
"postcss": "^8.2.14"
}
},
- "node_modules/postcss-selector-parser": {
+ "node_modules/postcss-nested/node_modules/postcss-selector-parser": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
@@ -12521,12 +11688,43 @@
"node": ">=4"
}
},
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"license": "MIT"
},
+ "node_modules/postcss/node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "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/prebuild-install": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
@@ -12648,9 +11846,9 @@
}
},
"node_modules/prosemirror-markdown": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.2.tgz",
- "integrity": "sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==",
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.3.tgz",
+ "integrity": "sha512-3E+Et6cdXIH0EgN2tGYQ+EBT7N4kMiZFsW+hzx+aPtOmADDHWCdd2uUQb7yklJrfUYUOjEEu22BiN6UFgPe4cQ==",
"license": "MIT",
"dependencies": {
"@types/markdown-it": "^14.0.0",
@@ -12711,9 +11909,9 @@
}
},
"node_modules/prosemirror-tables": {
- "version": "1.8.4",
- "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.8.4.tgz",
- "integrity": "sha512-CGr2BK5sLdZx+ARbeLO4HBZYa3qSG3FmwOVmzYs0Zp7n5SkrGqj+1CeNuubFNZEr64yMAQ20SanbFyIyHWZc8w==",
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.8.5.tgz",
+ "integrity": "sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==",
"license": "MIT",
"dependencies": {
"prosemirror-keymap": "^1.2.3",
@@ -12738,31 +11936,19 @@
"prosemirror-view": "^1.33.8"
}
},
- "node_modules/prosemirror-trailing-node/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==",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/prosemirror-transform": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.5.tgz",
- "integrity": "sha512-RPDQCxIDhIBb1o36xxwsaeAvivO8VLJcgBtzmOwQ64bMtsVFh5SSuJ6dWSxO1UsHTiTXPCgQm3PDJt7p6IOLbw==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.11.0.tgz",
+ "integrity": "sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw==",
"license": "MIT",
"dependencies": {
"prosemirror-model": "^1.21.0"
}
},
"node_modules/prosemirror-view": {
- "version": "1.41.4",
- "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.4.tgz",
- "integrity": "sha512-WkKgnyjNncri03Gjaz3IFWvCAE94XoiEgvtr0/r2Xw7R8/IjK3sKLSiDoCHWcsXSAinVaKlGRZDvMCsF1kbzjA==",
+ "version": "1.41.5",
+ "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.5.tgz",
+ "integrity": "sha512-UDQbIPnDrjE8tqUBbPmCOZgtd75htE6W3r0JCmY9bL6W1iemDM37MZEKC49d+tdQ0v/CKx4gjxLoLsfkD2NiZA==",
"license": "MIT",
"dependencies": {
"prosemirror-model": "^1.20.0",
@@ -12839,9 +12025,9 @@
}
},
"node_modules/qs": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
- "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
+ "version": "6.14.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
+ "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==",
"license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.1.0"
@@ -13035,12 +12221,12 @@
}
},
"node_modules/react-i18next": {
- "version": "16.5.0",
- "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-16.5.0.tgz",
- "integrity": "sha512-IMpPTyCTKxEj8klCrLKUTIUa8uYTd851+jcu2fJuUB9Agkk9Qq8asw4omyeHVnOXHrLgQJGTm5zTvn8HpaPiqw==",
+ "version": "16.5.3",
+ "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-16.5.3.tgz",
+ "integrity": "sha512-fo+/NNch37zqxOzlBYrWMx0uy/yInPkRfjSuy4lqKdaecR17nvCHnEUt3QyzA8XjQ2B/0iW/5BhaHR3ZmukpGw==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.27.6",
+ "@babel/runtime": "^7.28.4",
"html-parse-stringify": "^3.0.1",
"use-sync-external-store": "^1.6.0"
},
@@ -13105,9 +12291,9 @@
}
},
"node_modules/react-router": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.11.0.tgz",
- "integrity": "sha512-uI4JkMmjbWCZc01WVP2cH7ZfSzH91JAZUDd7/nIprDgWxBV1TkkmLToFh7EbMTcMak8URFRa2YoBL/W8GWnCTQ==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz",
+ "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==",
"license": "MIT",
"dependencies": {
"cookie": "^1.0.1",
@@ -13127,12 +12313,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.11.0.tgz",
- "integrity": "sha512-e49Ir/kMGRzFOOrYQBdoitq3ULigw4lKbAyKusnvtDu2t4dBX4AGYPrzNvorXmVuOyeakai6FUPW5MmibvVG8g==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.0.tgz",
+ "integrity": "sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==",
"license": "MIT",
"dependencies": {
- "react-router": "7.11.0"
+ "react-router": "7.13.0"
},
"engines": {
"node": ">=20.0.0"
@@ -13421,9 +12607,9 @@
}
},
"node_modules/rollup": {
- "version": "4.53.3",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz",
- "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==",
+ "version": "4.56.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz",
+ "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13437,28 +12623,31 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.53.3",
- "@rollup/rollup-android-arm64": "4.53.3",
- "@rollup/rollup-darwin-arm64": "4.53.3",
- "@rollup/rollup-darwin-x64": "4.53.3",
- "@rollup/rollup-freebsd-arm64": "4.53.3",
- "@rollup/rollup-freebsd-x64": "4.53.3",
- "@rollup/rollup-linux-arm-gnueabihf": "4.53.3",
- "@rollup/rollup-linux-arm-musleabihf": "4.53.3",
- "@rollup/rollup-linux-arm64-gnu": "4.53.3",
- "@rollup/rollup-linux-arm64-musl": "4.53.3",
- "@rollup/rollup-linux-loong64-gnu": "4.53.3",
- "@rollup/rollup-linux-ppc64-gnu": "4.53.3",
- "@rollup/rollup-linux-riscv64-gnu": "4.53.3",
- "@rollup/rollup-linux-riscv64-musl": "4.53.3",
- "@rollup/rollup-linux-s390x-gnu": "4.53.3",
- "@rollup/rollup-linux-x64-gnu": "4.53.3",
- "@rollup/rollup-linux-x64-musl": "4.53.3",
- "@rollup/rollup-openharmony-arm64": "4.53.3",
- "@rollup/rollup-win32-arm64-msvc": "4.53.3",
- "@rollup/rollup-win32-ia32-msvc": "4.53.3",
- "@rollup/rollup-win32-x64-gnu": "4.53.3",
- "@rollup/rollup-win32-x64-msvc": "4.53.3",
+ "@rollup/rollup-android-arm-eabi": "4.56.0",
+ "@rollup/rollup-android-arm64": "4.56.0",
+ "@rollup/rollup-darwin-arm64": "4.56.0",
+ "@rollup/rollup-darwin-x64": "4.56.0",
+ "@rollup/rollup-freebsd-arm64": "4.56.0",
+ "@rollup/rollup-freebsd-x64": "4.56.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.56.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.56.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.56.0",
+ "@rollup/rollup-linux-arm64-musl": "4.56.0",
+ "@rollup/rollup-linux-loong64-gnu": "4.56.0",
+ "@rollup/rollup-linux-loong64-musl": "4.56.0",
+ "@rollup/rollup-linux-ppc64-gnu": "4.56.0",
+ "@rollup/rollup-linux-ppc64-musl": "4.56.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.56.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.56.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.56.0",
+ "@rollup/rollup-linux-x64-gnu": "4.56.0",
+ "@rollup/rollup-linux-x64-musl": "4.56.0",
+ "@rollup/rollup-openbsd-x64": "4.56.0",
+ "@rollup/rollup-openharmony-arm64": "4.56.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.56.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.56.0",
+ "@rollup/rollup-win32-x64-gnu": "4.56.0",
+ "@rollup/rollup-win32-x64-msvc": "4.56.0",
"fsevents": "~2.3.2"
}
},
@@ -13561,52 +12750,54 @@
"license": "MIT"
},
"node_modules/scroll-into-view-if-needed": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz",
- "integrity": "sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
+ "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==",
"license": "MIT",
"dependencies": {
"compute-scroll-into-view": "^3.0.2"
}
},
"node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
}
},
"node_modules/send": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
- "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
+ "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
"license": "MIT",
"dependencies": {
- "debug": "^4.3.5",
+ "debug": "^4.4.3",
"encodeurl": "^2.0.0",
"escape-html": "^1.0.3",
"etag": "^1.8.1",
"fresh": "^2.0.0",
- "http-errors": "^2.0.0",
- "mime-types": "^3.0.1",
+ "http-errors": "^2.0.1",
+ "mime-types": "^3.0.2",
"ms": "^2.1.3",
"on-finished": "^2.4.1",
"range-parser": "^1.2.1",
- "statuses": "^2.0.1"
+ "statuses": "^2.0.2"
},
"engines": {
"node": ">= 18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/serve-static": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
- "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz",
+ "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
"license": "MIT",
"dependencies": {
"encodeurl": "^2.0.0",
@@ -13616,6 +12807,10 @@
},
"engines": {
"node": ">= 18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/set-cookie-parser": {
@@ -13675,6 +12870,19 @@
"@img/sharp-win32-x64": "0.34.5"
}
},
+ "node_modules/sharp/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "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",
@@ -13846,15 +13054,6 @@
"slate": ">=0.99.0"
}
},
- "node_modules/slate-dom/node_modules/scroll-into-view-if-needed": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
- "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==",
- "license": "MIT",
- "dependencies": {
- "compute-scroll-into-view": "^3.0.2"
- }
- },
"node_modules/slate-hyperscript": {
"version": "0.100.0",
"resolved": "https://registry.npmjs.org/slate-hyperscript/-/slate-hyperscript-0.100.0.tgz",
@@ -13887,15 +13086,6 @@
"slate-dom": ">=0.119.0"
}
},
- "node_modules/slate-react/node_modules/scroll-into-view-if-needed": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
- "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==",
- "license": "MIT",
- "dependencies": {
- "compute-scroll-into-view": "^3.0.2"
- }
- },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -14071,9 +13261,9 @@
}
},
"node_modules/tabbable": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.3.0.tgz",
- "integrity": "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==",
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz",
+ "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==",
"license": "MIT"
},
"node_modules/table-layout": {
@@ -14099,9 +13289,9 @@
}
},
"node_modules/tailwind-merge": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz",
- "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz",
+ "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==",
"license": "MIT",
"funding": {
"type": "github",
@@ -14109,9 +13299,9 @@
}
},
"node_modules/tailwind-variants": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.1.1.tgz",
- "integrity": "sha512-ftLXe3krnqkMHsuBTEmaVUXYovXtPyTK7ckEfDRXS8PBZx0bAUas+A0jYxuKA5b8qg++wvQ3d2MQ7l/xeZxbZQ==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz",
+ "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==",
"license": "MIT",
"engines": {
"node": ">=16.x",
@@ -14128,9 +13318,9 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.4.18",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.18.tgz",
- "integrity": "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==",
+ "version": "3.4.19",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz",
+ "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==",
"license": "MIT",
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
@@ -14164,6 +13354,19 @@
"node": ">=14.0.0"
}
},
+ "node_modules/tailwindcss/node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/tar-fs": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
@@ -14443,18 +13646,18 @@
"license": "MIT"
},
"node_modules/undici": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz",
- "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==",
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.19.1.tgz",
+ "integrity": "sha512-Gpq0iNm5M6cQWlyHQv9MV+uOj1jWk7LpkoE5vSp/7zjb4zMdAcUD+VL5y0nH4p9EbUklq00eVIIX/XcDHzu5xg==",
"license": "MIT",
"engines": {
"node": ">=20.18.1"
}
},
"node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
"license": "MIT"
},
"node_modules/unified": {
@@ -14543,9 +13746,9 @@
}
},
"node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz",
+ "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -14590,9 +13793,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz",
- "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==",
+ "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==",
"dev": true,
"funding": [
{
@@ -14713,16 +13916,16 @@
"license": "MIT"
},
"node_modules/uuid": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
- "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
+ "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
"license": "MIT",
"bin": {
- "uuid": "dist/esm/bin/uuid"
+ "uuid": "dist/bin/uuid"
}
},
"node_modules/vary": {
@@ -14759,6 +13962,15 @@
"node": ">=20.x"
}
},
+ "node_modules/vectra/node_modules/@types/node": {
+ "version": "18.19.130",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz",
+ "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
"node_modules/vectra/node_modules/openai": {
"version": "4.104.0",
"resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz",
@@ -14789,6 +14001,25 @@
}
}
},
+ "node_modules/vectra/node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "license": "MIT"
+ },
+ "node_modules/vectra/node_modules/uuid": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
+ "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/esm/bin/uuid"
+ }
+ },
"node_modules/vectra/node_modules/zod": {
"version": "3.25.76",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
@@ -14922,6 +14153,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
"integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+ "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation",
"license": "MIT",
"dependencies": {
"iconv-lite": "0.6.3"
@@ -15149,6 +14381,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/xterm": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz",
+ "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==",
+ "deprecated": "This package is now deprecated. Move to @xterm/xterm instead.",
+ "license": "MIT"
+ },
+ "node_modules/xterm-addon-fit": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.8.0.tgz",
+ "integrity": "sha512-yj3Np7XlvxxhYF/EJ7p3KHaMt6OdwQ+HDu573Vx1lRXsVxOcnVJs51RgjZOouIZOczTsskaS+CpXspK81/DLqw==",
+ "deprecated": "This package is now deprecated. Move to @xterm/addon-fit instead.",
+ "license": "MIT",
+ "peerDependencies": {
+ "xterm": "^5.0.0"
+ }
+ },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
@@ -15193,27 +14442,27 @@
}
},
"node_modules/zod": {
- "version": "4.1.13",
- "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz",
- "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==",
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
+ "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/zod-to-json-schema": {
- "version": "3.25.0",
- "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz",
- "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==",
+ "version": "3.25.1",
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz",
+ "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==",
"license": "ISC",
"peerDependencies": {
"zod": "^3.25 || ^4"
}
},
"node_modules/zustand": {
- "version": "5.0.9",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.9.tgz",
- "integrity": "sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==",
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.10.tgz",
+ "integrity": "sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg==",
"license": "MIT",
"engines": {
"node": ">=12.20.0"
diff --git a/package.json b/package.json
index 4e26781..e0847f3 100644
--- a/package.json
+++ b/package.json
@@ -83,7 +83,7 @@
"@tauri-apps/plugin-clipboard-manager": "^2.3.2",
"@tauri-apps/plugin-shell": "^2.3.3",
"@tiptap/extension-bubble-menu": "^3.14.0",
- "@tiptap/extension-code-block-lowlight": "^3.14.0",
+ "@tiptap/extension-code-block": "^3.18.0",
"@tiptap/extension-floating-menu": "^3.14.0",
"@tiptap/extension-horizontal-rule": "^3.14.0",
"@tiptap/extension-image": "^3.14.0",
@@ -108,6 +108,7 @@
"cors": "^2.8.5",
"express": "^5.0.1",
"fs-extra": "^11.3.2",
+ "highlight.js": "^11.11.1",
"i18next": "^25.7.2",
"i18next-browser-languagedetector": "^8.2.0",
"lowlight": "^3.3.0",
@@ -129,6 +130,8 @@
"remark-toc": "^9.0.0",
"tiptap-markdown": "^0.9.0",
"vectra": "^0.11.1",
+ "xterm": "^5.3.0",
+ "xterm-addon-fit": "^0.8.0",
"zod": "^4.1.13"
},
"devDependencies": {
@@ -142,6 +145,6 @@
"vite": "^5.4.8"
},
"optionalDependencies": {
- "@aicontextlab/core-native": "^0.1.0"
+ "@aicontextlab/core-native": "^0.2.1"
}
}
diff --git a/src-ios/App.js b/src-ios/App.js
new file mode 100644
index 0000000..05870d0
--- /dev/null
+++ b/src-ios/App.js
@@ -0,0 +1,256 @@
+require('react-native-gesture-handler');
+const React = require('react');
+const { Pressable, Text, View, StyleSheet } = require('react-native');
+const { Ionicons } = require('@expo/vector-icons');
+const { GestureHandlerRootView } = require('react-native-gesture-handler');
+const { NavigationContainer } = require('@react-navigation/native');
+const { createBottomTabNavigator } = require('@react-navigation/bottom-tabs');
+const { createNativeStackNavigator } = require('@react-navigation/native-stack');
+const { SafeAreaProvider, useSafeAreaInsets } = require('react-native-safe-area-context');
+const { I18nextProvider, useTranslation } = require('react-i18next');
+const { initI18n } = require('./i18n');
+const { initDb } = require('./db');
+const IdeasScreen = require('./screens/IdeasScreen');
+const SettingsScreen = require('./screens/SettingsScreen');
+const { colors, typography } = require('./theme');
+
+const Tab = createBottomTabNavigator();
+const Stack = createNativeStackNavigator();
+
+function IdeasStack() {
+ return (
+
+
+
+ );
+}
+
+function TabIcon({ name, color, focused }) {
+ return (
+
+ );
+}
+
+function FloatingTabBar({ state, descriptors, navigation }) {
+ const insets = useSafeAreaInsets();
+ const bottomPad = Math.max(insets.bottom - 12, 8);
+ return (
+
+
+ {state.routes.map((route, index) => {
+ const { options } = descriptors[route.key];
+ const label =
+ options.tabBarLabel !== undefined
+ ? options.tabBarLabel
+ : options.title !== undefined
+ ? options.title
+ : route.name;
+ const isFocused = state.index === index;
+ const onPress = () => {
+ const event = navigation.emit({
+ type: 'tabPress',
+ target: route.key,
+ canPreventDefault: true,
+ });
+ if (!isFocused && !event.defaultPrevented) {
+ navigation.navigate(route.name);
+ }
+ };
+ const onLongPress = () => {
+ navigation.emit({
+ type: 'tabLongPress',
+ target: route.key,
+ });
+ };
+ const color = isFocused ? colors.accent : colors.mutedInk;
+ const icon = options.tabBarIcon
+ ? options.tabBarIcon({ focused: isFocused, color, size: 18 })
+ : null;
+ return (
+ [
+ styles.segmentButton,
+ isFocused && styles.segmentButtonActive,
+ pressed && styles.segmentButtonPressed,
+ ]}
+ >
+
+ {icon}
+
+ {label}
+
+
+
+ );
+ })}
+
+
+ );
+}
+
+function RootTabs() {
+ const { t } = useTranslation();
+ return (
+ }
+ >
+ ,
+ }}
+ />
+ ,
+ }}
+ />
+
+ );
+}
+
+function LoadingScreen() {
+ return (
+
+ OpenContext
+
+ );
+}
+
+function AppContainer() {
+ const [ready, setReady] = React.useState(false);
+
+ React.useEffect(() => {
+ let active = true;
+ Promise.all([initI18n(), initDb()]).then(() => {
+ if (active) {
+ setReady(true);
+ }
+ });
+ return () => {
+ active = false;
+ };
+ }, []);
+
+ if (!ready) {
+ return ;
+ }
+
+ return (
+
+
+
+
+
+
+
+ );
+}
+
+function App() {
+ return (
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ root: {
+ flex: 1,
+ },
+ loading: {
+ flex: 1,
+ alignItems: 'center',
+ justifyContent: 'center',
+ backgroundColor: colors.paper,
+ },
+ loadingText: {
+ ...typography.title,
+ },
+ tabBarPlaceholder: {
+ height: 0,
+ backgroundColor: 'transparent',
+ borderTopWidth: 0,
+ },
+ floatingBarWrap: {
+ position: 'absolute',
+ left: 0,
+ right: 0,
+ bottom: 0,
+ paddingTop: 6,
+ paddingHorizontal: 16,
+ alignItems: 'center',
+ zIndex: 20,
+ },
+ floatingBar: {
+ width: '50%',
+ maxWidth: 320,
+ minWidth: 120,
+ padding: 4,
+ flexDirection: 'row',
+ alignItems: 'center',
+ backgroundColor: 'rgba(255, 255, 255, 0.9)',
+ borderRadius: 28,
+ borderWidth: 0,
+ shadowColor: colors.shadow,
+ shadowOpacity: 0.06,
+ shadowRadius: 12,
+ shadowOffset: { width: 0, height: 6 },
+ elevation: 8,
+ },
+ segmentButton: {
+ flex: 1,
+ height: 40,
+ borderRadius: 20,
+ alignItems: 'center',
+ justifyContent: 'center',
+ marginHorizontal: 2,
+ },
+ segmentButtonActive: {
+ backgroundColor: 'rgba(231, 111, 44, 0.14)',
+ },
+ segmentButtonPressed: {
+ backgroundColor: 'rgba(231, 111, 44, 0.2)',
+ },
+ segmentContent: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ segmentLabel: {
+ marginLeft: 6,
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 12,
+ letterSpacing: 0.2,
+ color: colors.mutedInk,
+ },
+ segmentLabelActive: {
+ color: colors.accent,
+ fontWeight: '600',
+ },
+});
+
+module.exports = App;
diff --git a/src-ios/README.md b/src-ios/README.md
new file mode 100644
index 0000000..e1e2e2b
--- /dev/null
+++ b/src-ios/README.md
@@ -0,0 +1,22 @@
+# OpenContext iOS MVP
+
+This folder contains a React Native (Expo) iOS MVP for OpenContext.
+
+## Run
+
+```bash
+cd src-ios
+npm install
+npm run ios
+```
+
+## Notes
+
+- SQLite schema mirrors `crates/opencontext-core/src/lib.rs`.
+- Documents are stored as Markdown files under the app sandbox (editor UI pending).
+- Ideas are stored as Markdown files under `.ideas/`.
+- Settings are stored in AsyncStorage (language only).
+
+## AI Reflection (Ideas)
+
+Configure via Settings > AI.
diff --git a/src-ios/app.json b/src-ios/app.json
new file mode 100644
index 0000000..55bf664
--- /dev/null
+++ b/src-ios/app.json
@@ -0,0 +1,25 @@
+{
+ "expo": {
+ "name": "OpenContext",
+ "slug": "opencontext",
+ "version": "0.1.0",
+ "orientation": "portrait",
+ "userInterfaceStyle": "light",
+ "icon": "./assets/icon.png",
+ "assetBundlePatterns": [
+ "**/*"
+ ],
+ "plugins": [
+ [
+ "expo-image-picker",
+ {
+ "photosPermission": "Allow OpenContext to access your photos to attach images."
+ }
+ ]
+ ],
+ "ios": {
+ "supportsTablet": true,
+ "bundleIdentifier": "com.contextlab.opencontext"
+ }
+ }
+}
diff --git a/src-ios/assets/icon.png b/src-ios/assets/icon.png
new file mode 100644
index 0000000..c31a043
Binary files /dev/null and b/src-ios/assets/icon.png differ
diff --git a/src-ios/babel.config.js b/src-ios/babel.config.js
new file mode 100644
index 0000000..9d89e13
--- /dev/null
+++ b/src-ios/babel.config.js
@@ -0,0 +1,6 @@
+module.exports = function (api) {
+ api.cache(true);
+ return {
+ presets: ['babel-preset-expo'],
+ };
+};
diff --git a/src-ios/components/Card.js b/src-ios/components/Card.js
new file mode 100644
index 0000000..cd586bd
--- /dev/null
+++ b/src-ios/components/Card.js
@@ -0,0 +1,23 @@
+const React = require('react');
+const { View, StyleSheet } = require('react-native');
+const { colors } = require('../theme');
+
+function Card({ children, style }) {
+ return {children} ;
+}
+
+const styles = StyleSheet.create({
+ card: {
+ backgroundColor: colors.card,
+ borderRadius: 18,
+ padding: 16,
+ borderWidth: 1,
+ borderColor: colors.border,
+ shadowColor: colors.shadow,
+ shadowOpacity: 0.08,
+ shadowRadius: 10,
+ shadowOffset: { width: 0, height: 4 },
+ },
+});
+
+module.exports = Card;
diff --git a/src-ios/components/EmptyState.js b/src-ios/components/EmptyState.js
new file mode 100644
index 0000000..097d746
--- /dev/null
+++ b/src-ios/components/EmptyState.js
@@ -0,0 +1,35 @@
+const React = require('react');
+const { View, Text, StyleSheet } = require('react-native');
+const { typography, colors, spacing } = require('../theme');
+
+function EmptyState({ title, body }) {
+ return (
+
+ {title}
+ {body}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ root: {
+ paddingHorizontal: spacing.xl,
+ paddingTop: spacing.xl,
+ paddingBottom: spacing.lg,
+ alignItems: 'center',
+ },
+ title: {
+ ...typography.title,
+ fontSize: 26,
+ fontWeight: '700',
+ textAlign: 'center',
+ },
+ body: {
+ ...typography.subtitle,
+ marginTop: spacing.md,
+ textAlign: 'center',
+ color: colors.mutedInk,
+ },
+});
+
+module.exports = EmptyState;
diff --git a/src-ios/components/FadeInView.js b/src-ios/components/FadeInView.js
new file mode 100644
index 0000000..6e016f5
--- /dev/null
+++ b/src-ios/components/FadeInView.js
@@ -0,0 +1,18 @@
+const React = require('react');
+const { Animated } = require('react-native');
+
+function FadeInView({ children, style }) {
+ const opacity = React.useRef(new Animated.Value(0)).current;
+
+ React.useEffect(() => {
+ Animated.timing(opacity, {
+ toValue: 1,
+ duration: 500,
+ useNativeDriver: true,
+ }).start();
+ }, [opacity]);
+
+ return {children} ;
+}
+
+module.exports = FadeInView;
diff --git a/src-ios/components/FloatingButton.js b/src-ios/components/FloatingButton.js
new file mode 100644
index 0000000..8232a36
--- /dev/null
+++ b/src-ios/components/FloatingButton.js
@@ -0,0 +1,37 @@
+const React = require('react');
+const { Pressable, StyleSheet, Text } = require('react-native');
+const { colors } = require('../theme');
+
+function FloatingButton({ onPress, label }) {
+ return (
+
+ +
+
+ );
+}
+
+const styles = StyleSheet.create({
+ button: {
+ position: 'absolute',
+ right: 20,
+ bottom: 30,
+ backgroundColor: colors.accent,
+ borderRadius: 24,
+ width: 48,
+ height: 48,
+ alignItems: 'center',
+ justifyContent: 'center',
+ shadowColor: colors.shadow,
+ shadowOpacity: 0.18,
+ shadowRadius: 8,
+ shadowOffset: { width: 0, height: 4 },
+ },
+ label: {
+ color: '#fff',
+ fontSize: 28,
+ fontWeight: '500',
+ marginTop: -2,
+ },
+});
+
+module.exports = FloatingButton;
diff --git a/src-ios/components/Screen.js b/src-ios/components/Screen.js
new file mode 100644
index 0000000..346e92f
--- /dev/null
+++ b/src-ios/components/Screen.js
@@ -0,0 +1,33 @@
+const React = require('react');
+const { SafeAreaView, View, StyleSheet } = require('react-native');
+const { LinearGradient } = require('expo-linear-gradient');
+const { colors, spacing } = require('../theme');
+
+function Screen({ children }) {
+ return (
+
+
+ {children}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ root: {
+ flex: 1,
+ },
+ safe: {
+ flex: 1,
+ },
+ inner: {
+ flex: 1,
+ paddingHorizontal: spacing.lg,
+ paddingTop: spacing.lg,
+ },
+});
+
+module.exports = Screen;
diff --git a/src-ios/config.js b/src-ios/config.js
new file mode 100644
index 0000000..caa2d9d
--- /dev/null
+++ b/src-ios/config.js
@@ -0,0 +1,5 @@
+const EDITOR_URL = process.env.EXPO_PUBLIC_EDITOR_URL || 'http://localhost:5173/mobile.html';
+
+module.exports = {
+ EDITOR_URL,
+};
diff --git a/src-ios/db/docs.js b/src-ios/db/docs.js
new file mode 100644
index 0000000..ed64647
--- /dev/null
+++ b/src-ios/db/docs.js
@@ -0,0 +1,124 @@
+const FileSystem = require('expo-file-system');
+const { run, all, DOCS_ROOT } = require('./index');
+const { generateStableId } = require('../utils/uuid');
+const { joinPath } = require('../utils/paths');
+
+async function listDocs() {
+ return all(
+ `SELECT id, name, rel_path, abs_path, description, stable_id, created_at, updated_at
+ FROM docs
+ ORDER BY updated_at DESC`,
+ );
+}
+
+async function getDocById(id) {
+ const rows = await all(
+ `SELECT id, name, rel_path, abs_path, description, stable_id, created_at, updated_at
+ FROM docs
+ WHERE id = ?1`,
+ [id],
+ );
+ return rows[0] || null;
+}
+
+async function getRootFolderId() {
+ const rows = await all('SELECT id FROM folders WHERE rel_path = ?1', ['docs']);
+ return rows[0] ? rows[0].id : null;
+}
+
+async function createDoc({ title, content }) {
+ const folderId = await getRootFolderId();
+ const createdAt = new Date().toISOString();
+ const stableId = generateStableId();
+ const docTitle = normalizeTitle(title);
+ const description = extractDescription(content);
+ const fileName = buildDocFilename(docTitle);
+ const relPath = `docs/${fileName}`;
+ const absPath = joinPath(DOCS_ROOT, fileName);
+
+ await FileSystem.writeAsStringAsync(absPath, content || '', {
+ encoding: FileSystem.EncodingType.UTF8,
+ });
+
+ const result = await run(
+ `INSERT INTO docs (folder_id, name, rel_path, abs_path, description, stable_id, created_at, updated_at)
+ VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)`,
+ [folderId, docTitle, relPath, absPath, description, stableId, createdAt, createdAt],
+ );
+ return getDocById(result.insertId);
+}
+
+async function updateDoc({ id, title, content }) {
+ const doc = await getDocById(id);
+ if (!doc) {
+ return null;
+ }
+ const updatedAt = new Date().toISOString();
+ const nextTitle = normalizeTitle(title || doc.name);
+ const description = extractDescription(content);
+
+ await FileSystem.writeAsStringAsync(doc.abs_path, content || '', {
+ encoding: FileSystem.EncodingType.UTF8,
+ });
+
+ await run(
+ `UPDATE docs SET name = ?1, description = ?2, updated_at = ?3 WHERE id = ?4`,
+ [nextTitle, description, updatedAt, id],
+ );
+
+ return getDocById(id);
+}
+
+async function deleteDoc(id) {
+ const doc = await getDocById(id);
+ if (!doc) {
+ return false;
+ }
+ await run('DELETE FROM docs WHERE id = ?1', [id]);
+ try {
+ await FileSystem.deleteAsync(doc.abs_path, { idempotent: true });
+ } catch (err) {
+ // Ignore file deletion failures; DB is the source of truth.
+ }
+ return true;
+}
+
+async function loadDocContent(doc) {
+ try {
+ return await FileSystem.readAsStringAsync(doc.abs_path, {
+ encoding: FileSystem.EncodingType.UTF8,
+ });
+ } catch (err) {
+ return '';
+ }
+}
+
+function buildDocFilename(title) {
+ const safeTitle = String(title || 'untitled')
+ .trim()
+ .toLowerCase()
+ .replace(/[^a-z0-9]+/g, '-')
+ .replace(/^-|-$/g, '')
+ .slice(0, 40) || 'untitled';
+ return `${safeTitle}-${Date.now().toString(36)}.md`;
+}
+
+function extractDescription(content) {
+ const text = String(content || '').trim();
+ if (!text) return '';
+ const line = text.split('\n').find((l) => l.trim().length > 0);
+ return (line || '').slice(0, 160);
+}
+
+function normalizeTitle(title) {
+ return String(title || '').trim() || 'Untitled';
+}
+
+module.exports = {
+ listDocs,
+ getDocById,
+ createDoc,
+ updateDoc,
+ deleteDoc,
+ loadDocContent,
+};
diff --git a/src-ios/db/index.js b/src-ios/db/index.js
new file mode 100644
index 0000000..4da6099
--- /dev/null
+++ b/src-ios/db/index.js
@@ -0,0 +1,84 @@
+const SQLite = require('expo-sqlite');
+const FileSystem = require('expo-file-system');
+const { ensureSchema } = require('./migrations');
+const { resolveDocPaths } = require('../utils/paths');
+
+const DB_NAME = 'opencontext.db';
+const APP_ROOT = `${FileSystem.documentDirectory}opencontext/`;
+const DOCS_ROOT = `${APP_ROOT}docs/`;
+
+let dbInstance;
+
+async function openDb() {
+ if (!dbInstance) {
+ dbInstance = SQLite.openDatabase(DB_NAME);
+ }
+ return dbInstance;
+}
+
+async function run(sql, params = []) {
+ const db = await openDb();
+ return new Promise((resolve, reject) => {
+ db.transaction((tx) => {
+ tx.executeSql(
+ sql,
+ params,
+ (_, result) => resolve(result),
+ (_, error) => {
+ reject(error);
+ return true;
+ },
+ );
+ });
+ });
+}
+
+async function all(sql, params = []) {
+ const db = await openDb();
+ return new Promise((resolve, reject) => {
+ db.transaction((tx) => {
+ tx.executeSql(
+ sql,
+ params,
+ (_, result) => resolve(result?.rows?._array || []),
+ (_, error) => {
+ reject(error);
+ return true;
+ },
+ );
+ });
+ });
+}
+
+async function initDb() {
+ await FileSystem.makeDirectoryAsync(APP_ROOT, { intermediates: true });
+ await FileSystem.makeDirectoryAsync(DOCS_ROOT, { intermediates: true });
+
+ await ensureSchema({ run, all });
+ await ensureRootFolder();
+}
+
+async function ensureRootFolder() {
+ const rows = await all('SELECT id FROM folders WHERE rel_path = ?1', ['docs']);
+ if (rows && rows.length > 0) {
+ return rows[0].id;
+ }
+
+ const createdAt = new Date().toISOString();
+ const { absPath } = resolveDocPaths({ documentsRoot: DOCS_ROOT, relPath: '' });
+ const result = await run(
+ `INSERT INTO folders (parent_id, name, rel_path, abs_path, description, created_at, updated_at)
+ VALUES (NULL, ?1, ?2, ?3, '', ?4, ?5)`,
+ ['docs', 'docs', absPath, createdAt, createdAt],
+ );
+ return result.insertId;
+}
+
+module.exports = {
+ initDb,
+ run,
+ all,
+ openDb,
+ APP_ROOT,
+ DOCS_ROOT,
+};
diff --git a/src-ios/db/migrations.js b/src-ios/db/migrations.js
new file mode 100644
index 0000000..a6eaeb5
--- /dev/null
+++ b/src-ios/db/migrations.js
@@ -0,0 +1,46 @@
+const { SCHEMA_STATEMENTS } = require('./schema');
+const { generateStableId } = require('../utils/uuid');
+
+async function ensureSchema({ run, all }) {
+ for (const statement of SCHEMA_STATEMENTS) {
+ await run(statement);
+ }
+
+ await ensureStableIdColumn({ run, all });
+ await backfillStableIds({ run, all });
+}
+
+async function ensureStableIdColumn({ run, all }) {
+ const columns = await all('PRAGMA table_info(docs)');
+ const hasStableId = Array.isArray(columns)
+ && columns.some((col) => col && col.name === 'stable_id');
+
+ if (!hasStableId) {
+ await run('ALTER TABLE docs ADD COLUMN stable_id TEXT');
+ }
+
+ await run('CREATE UNIQUE INDEX IF NOT EXISTS idx_docs_stable_id ON docs(stable_id)');
+}
+
+async function backfillStableIds({ run, all }) {
+ const rows = await all(
+ "SELECT id FROM docs WHERE stable_id IS NULL OR stable_id = ''",
+ );
+ if (!Array.isArray(rows) || rows.length === 0) {
+ return;
+ }
+
+ for (const row of rows) {
+ if (!row || typeof row.id !== 'number') {
+ continue;
+ }
+ await run('UPDATE docs SET stable_id = ?1 WHERE id = ?2', [
+ generateStableId(),
+ row.id,
+ ]);
+ }
+}
+
+module.exports = {
+ ensureSchema,
+};
diff --git a/src-ios/db/schema.js b/src-ios/db/schema.js
new file mode 100644
index 0000000..4028f12
--- /dev/null
+++ b/src-ios/db/schema.js
@@ -0,0 +1,29 @@
+const SCHEMA_STATEMENTS = [
+ 'PRAGMA foreign_keys = ON',
+ `CREATE TABLE IF NOT EXISTS folders (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ parent_id INTEGER REFERENCES folders(id) ON DELETE CASCADE,
+ name TEXT NOT NULL,
+ rel_path TEXT NOT NULL UNIQUE,
+ abs_path TEXT NOT NULL,
+ description TEXT DEFAULT '',
+ created_at TEXT NOT NULL,
+ updated_at TEXT NOT NULL
+ )`,
+ `CREATE TABLE IF NOT EXISTS docs (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ folder_id INTEGER NOT NULL REFERENCES folders(id) ON DELETE CASCADE,
+ name TEXT NOT NULL,
+ rel_path TEXT NOT NULL UNIQUE,
+ abs_path TEXT NOT NULL,
+ description TEXT DEFAULT '',
+ stable_id TEXT,
+ created_at TEXT NOT NULL,
+ updated_at TEXT NOT NULL
+ )`,
+ 'CREATE UNIQUE INDEX IF NOT EXISTS idx_docs_stable_id ON docs(stable_id)',
+];
+
+module.exports = {
+ SCHEMA_STATEMENTS,
+};
diff --git a/src-ios/i18n/index.js b/src-ios/i18n/index.js
new file mode 100644
index 0000000..dc830df
--- /dev/null
+++ b/src-ios/i18n/index.js
@@ -0,0 +1,38 @@
+const i18n = require('i18next');
+const { initReactI18next } = require('react-i18next');
+const AsyncStorage = require('@react-native-async-storage/async-storage').default;
+const en = require('./locales/en.json');
+const zh = require('./locales/zh.json');
+
+const LANGUAGE_KEY = '@opencontext/lang';
+
+async function initI18n() {
+ const stored = await AsyncStorage.getItem(LANGUAGE_KEY);
+ const initialLanguage = stored || 'zh';
+
+ await i18n.use(initReactI18next).init({
+ resources: {
+ en: { translation: en },
+ zh: { translation: zh },
+ },
+ lng: initialLanguage,
+ fallbackLng: 'en',
+ compatibilityJSON: 'v3',
+ interpolation: { escapeValue: false },
+ });
+}
+
+async function setLanguage(lang) {
+ await i18n.changeLanguage(lang);
+ await AsyncStorage.setItem(LANGUAGE_KEY, lang);
+}
+
+async function getLanguage() {
+ return AsyncStorage.getItem(LANGUAGE_KEY);
+}
+
+module.exports = {
+ initI18n,
+ setLanguage,
+ getLanguage,
+};
diff --git a/src-ios/i18n/locales/en.json b/src-ios/i18n/locales/en.json
new file mode 100644
index 0000000..40e0ab0
--- /dev/null
+++ b/src-ios/i18n/locales/en.json
@@ -0,0 +1,95 @@
+{
+ "app": {
+ "ideas": "Ideas",
+ "docs": "Documents",
+ "settings": "Settings"
+ },
+ "common": {
+ "save": "Save",
+ "cancel": "Cancel",
+ "delete": "Delete",
+ "hideKeyboard": "Hide",
+ "edit": "Edit",
+ "create": "Create",
+ "title": "Title",
+ "content": "Content",
+ "emptyTitle": "Untitled"
+ },
+ "ideas": {
+ "title": "Ideas",
+ "boxInbox": "Inbox",
+ "boxAdd": "New box",
+ "boxCreateTitle": "New Ideas Box",
+ "boxCreateHint": "Enter box name",
+ "boxRenameTitle": "Rename Ideas Box",
+ "boxRenameHint": "Enter new box name",
+ "boxDeleteTitle": "Delete Ideas Box",
+ "boxDeleteConfirm": "Delete \"{{name}}\"?",
+ "boxNameInvalid": "Name cannot contain / or \\",
+ "boxActionsTitle": "Ideas Box",
+ "boxRename": "Rename",
+ "boxDelete": "Delete",
+ "boxMove": "Move",
+ "boxMoveTitle": "Move to Ideas Box",
+ "boxMoveHint": "Select the destination box",
+ "boxCurrent": "Current",
+ "boxMoveConfirm": "Move",
+ "emptyTitle": "Capture your first idea",
+ "emptyBody": "Quick notes, daily reflections, loose thoughts.",
+ "editorPlaceholder": "What's new on your mind?",
+ "subtitle": "Quick notes, daily reflections, loose thoughts.",
+ "prompt": "What's new on your mind?",
+ "publish": "Post",
+ "addImage": "Image",
+ "continue": "Continue",
+ "continuePlaceholder": "Continue this idea...",
+ "continueContext": "Current idea",
+ "continueHint": "Continue writing here",
+ "entryActionsTitle": "Delete idea",
+ "deleteEntry": "Delete entry",
+ "deleteEntryHint": "This entry will be removed.",
+ "deleteEntryConfirm": "Delete this entry?",
+ "deleteThread": "Delete entire idea",
+ "deleteThreadConfirm": "Delete this entire idea?",
+ "deleteThreadHint": "All entries in this idea will be deleted.",
+ "aiReflect": "AI Reflect",
+ "aiThinking": "AI is thinking...",
+ "aiError": "AI failed to respond. Check configuration or try again.",
+ "aiRetry": "Retry",
+ "aiNotConfigured": "AI is not configured. Set an API key in env.",
+ "aiEmpty": "AI returned empty content.",
+ "aiPlaceholder": "Edit AI content...",
+ "reflectionEditable": "AI content is editable",
+ "imagePermissionTitle": "Photo access needed",
+ "imagePermissionBody": "Allow photo access to add images.",
+ "imageLimit": "You can add up to {{count}} images",
+ "imageImportFailed": "Failed to import image. Please try again."
+ },
+ "docs": {
+ "title": "Documents",
+ "emptyTitle": "No documents yet",
+ "emptyBody": "Create a doc to organize longer writing.",
+ "comingSoon": "Document editor is coming soon."
+ },
+ "settings": {
+ "title": "Settings",
+ "language": "Language",
+ "about": "Local-only MVP for iOS",
+ "aiTitle": "AI Settings",
+ "aiModel": "Model",
+ "aiApiBase": "API Base",
+ "aiApiKey": "API Key",
+ "aiPrompt": "Prompt",
+ "aiPromptPlaceholder": "Describe how AI should respond...",
+ "saving": "Saving...",
+ "saved": "Saved",
+ "saveFailed": "Save failed. Try again."
+ },
+ "time": {
+ "today": "Today",
+ "yesterday": "Yesterday",
+ "justNow": "Just now",
+ "minutesAgo": "{{count}} min ago",
+ "hoursAgo": "{{count}} hr ago"
+ }
+}
diff --git a/src-ios/i18n/locales/zh.json b/src-ios/i18n/locales/zh.json
new file mode 100644
index 0000000..0b3420f
--- /dev/null
+++ b/src-ios/i18n/locales/zh.json
@@ -0,0 +1,95 @@
+{
+ "app": {
+ "ideas": "想法",
+ "docs": "文档",
+ "settings": "设置"
+ },
+ "common": {
+ "save": "保存",
+ "cancel": "取消",
+ "delete": "删除",
+ "hideKeyboard": "收起",
+ "edit": "编辑",
+ "create": "创建",
+ "title": "标题",
+ "content": "内容",
+ "emptyTitle": "未命名"
+ },
+ "ideas": {
+ "title": "想法",
+ "boxInbox": "Inbox",
+ "boxAdd": "新建想法箱",
+ "boxCreateTitle": "新建想法箱",
+ "boxCreateHint": "输入想法箱名称",
+ "boxRenameTitle": "重命名想法箱",
+ "boxRenameHint": "输入新的想法箱名称",
+ "boxDeleteTitle": "删除想法箱",
+ "boxDeleteConfirm": "确定删除「{{name}}」吗?",
+ "boxNameInvalid": "名称不能包含 / 或 \\",
+ "boxActionsTitle": "想法箱",
+ "boxRename": "重命名",
+ "boxDelete": "删除",
+ "boxMove": "移动",
+ "boxMoveTitle": "移动到想法箱",
+ "boxMoveHint": "选择目标想法箱",
+ "boxCurrent": "当前",
+ "boxMoveConfirm": "移动",
+ "emptyTitle": "记录你的第一条想法",
+ "emptyBody": "快速记录、日常反思或灵感片段。",
+ "editorPlaceholder": "有什么新想法?",
+ "subtitle": "快速记录、日常反思或灵感片段。",
+ "prompt": "有什么新想法?",
+ "publish": "发布",
+ "addImage": "图片",
+ "continue": "继续写",
+ "continuePlaceholder": "继续这个想法...",
+ "continueContext": "当前想法",
+ "continueHint": "继续写在这里",
+ "entryActionsTitle": "删除想法",
+ "deleteEntry": "删除这条想法",
+ "deleteEntryHint": "这条想法将被删除。",
+ "deleteEntryConfirm": "删除这条想法?",
+ "deleteThread": "删除整个想法",
+ "deleteThreadConfirm": "删除整个想法?",
+ "deleteThreadHint": "该想法下的所有记录都会被删除。",
+ "aiReflect": "AI 思考",
+ "aiThinking": "AI 正在思考...",
+ "aiError": "AI 思考失败,请检查配置或稍后重试。",
+ "aiRetry": "重试",
+ "aiNotConfigured": "AI 未配置,请在环境变量中设置 API Key。",
+ "aiEmpty": "AI 未返回内容。",
+ "aiPlaceholder": "可编辑 AI 内容...",
+ "reflectionEditable": "可编辑 AI 内容",
+ "imagePermissionTitle": "需要访问照片",
+ "imagePermissionBody": "请允许访问相册以添加图片。",
+ "imageLimit": "最多可添加 {{count}} 张图片",
+ "imageImportFailed": "导入图片失败,请重试。"
+ },
+ "docs": {
+ "title": "文档",
+ "emptyTitle": "暂无文档",
+ "emptyBody": "创建一篇文档来整理更完整的内容。",
+ "comingSoon": "文档编辑即将上线。"
+ },
+ "settings": {
+ "title": "设置",
+ "language": "语言",
+ "about": "仅本地存储的 iOS MVP",
+ "aiTitle": "AI 设置",
+ "aiModel": "模型",
+ "aiApiBase": "API 地址",
+ "aiApiKey": "API Key",
+ "aiPrompt": "提示词",
+ "aiPromptPlaceholder": "你希望 AI 以什么方式回应...",
+ "saving": "保存中...",
+ "saved": "已保存",
+ "saveFailed": "保存失败,请稍后重试。"
+ },
+ "time": {
+ "today": "今天",
+ "yesterday": "昨天",
+ "justNow": "刚刚",
+ "minutesAgo": "{{count}} 分钟前",
+ "hoursAgo": "{{count}} 小时前"
+ }
+}
diff --git a/src-ios/index.js b/src-ios/index.js
new file mode 100644
index 0000000..8e348e7
--- /dev/null
+++ b/src-ios/index.js
@@ -0,0 +1,12 @@
+const { ensureSchema } = require('./db/migrations');
+const { SCHEMA_STATEMENTS } = require('./db/schema');
+const { generateStableId } = require('./utils/uuid');
+const { joinPath, resolveDocPaths } = require('./utils/paths');
+
+module.exports = {
+ ensureSchema,
+ SCHEMA_STATEMENTS,
+ generateStableId,
+ joinPath,
+ resolveDocPaths,
+};
diff --git a/src-ios/ios/.gitignore b/src-ios/ios/.gitignore
new file mode 100644
index 0000000..8beb344
--- /dev/null
+++ b/src-ios/ios/.gitignore
@@ -0,0 +1,30 @@
+# OSX
+#
+.DS_Store
+
+# Xcode
+#
+build/
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+*.xccheckout
+*.moved-aside
+DerivedData
+*.hmap
+*.ipa
+*.xcuserstate
+project.xcworkspace
+.xcode.env.local
+
+# Bundle artifacts
+*.jsbundle
+
+# CocoaPods
+/Pods/
diff --git a/src-ios/ios/.xcode.env b/src-ios/ios/.xcode.env
new file mode 100644
index 0000000..3d5782c
--- /dev/null
+++ b/src-ios/ios/.xcode.env
@@ -0,0 +1,11 @@
+# This `.xcode.env` file is versioned and is used to source the environment
+# used when running script phases inside Xcode.
+# To customize your local environment, you can create an `.xcode.env.local`
+# file that is not versioned.
+
+# NODE_BINARY variable contains the PATH to the node executable.
+#
+# Customize the NODE_BINARY variable here.
+# For example, to use nvm with brew, add the following line
+# . "$(brew --prefix nvm)/nvm.sh" --no-use
+export NODE_BINARY=$(command -v node)
diff --git a/src-ios/ios/OpenContext.xcodeproj/project.pbxproj b/src-ios/ios/OpenContext.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..7052563
--- /dev/null
+++ b/src-ios/ios/OpenContext.xcodeproj/project.pbxproj
@@ -0,0 +1,549 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 54;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
+ 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
+ 96905EF65AED1B983A6B3ABC /* libPods-OpenContext.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-OpenContext.a */; };
+ B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; };
+ BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
+ C37330706E6C4384B98FD950 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 902428C887E84A1AAD9E2687 /* noop-file.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 13B07F961A680F5B00A75B9A /* OpenContext.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenContext.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = OpenContext/AppDelegate.h; sourceTree = ""; };
+ 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = OpenContext/AppDelegate.mm; sourceTree = ""; };
+ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = OpenContext/Images.xcassets; sourceTree = ""; };
+ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = OpenContext/Info.plist; sourceTree = ""; };
+ 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = OpenContext/main.m; sourceTree = ""; };
+ 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-OpenContext.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OpenContext.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6C2E3173556A471DD304B334 /* Pods-OpenContext.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenContext.debug.xcconfig"; path = "Target Support Files/Pods-OpenContext/Pods-OpenContext.debug.xcconfig"; sourceTree = ""; };
+ 7A4D352CD337FB3A3BF06240 /* Pods-OpenContext.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OpenContext.release.xcconfig"; path = "Target Support Files/Pods-OpenContext/Pods-OpenContext.release.xcconfig"; sourceTree = ""; };
+ 902428C887E84A1AAD9E2687 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "OpenContext/noop-file.swift"; sourceTree = ""; };
+ 9DBA34B307AE4CC195FB0DA1 /* OpenContext-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "OpenContext-Bridging-Header.h"; path = "OpenContext/OpenContext-Bridging-Header.h"; sourceTree = ""; };
+ AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = OpenContext/SplashScreen.storyboard; sourceTree = ""; };
+ BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; };
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+ FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-OpenContext/ExpoModulesProvider.swift"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 96905EF65AED1B983A6B3ABC /* libPods-OpenContext.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 13B07FAE1A68108700A75B9A /* OpenContext */ = {
+ isa = PBXGroup;
+ children = (
+ BB2F792B24A3F905000567C9 /* Supporting */,
+ 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
+ 13B07FB01A68108700A75B9A /* AppDelegate.mm */,
+ 13B07FB51A68108700A75B9A /* Images.xcassets */,
+ 13B07FB61A68108700A75B9A /* Info.plist */,
+ 13B07FB71A68108700A75B9A /* main.m */,
+ AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */,
+ 902428C887E84A1AAD9E2687 /* noop-file.swift */,
+ 9DBA34B307AE4CC195FB0DA1 /* OpenContext-Bridging-Header.h */,
+ );
+ name = OpenContext;
+ sourceTree = "";
+ };
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
+ 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-OpenContext.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = Libraries;
+ sourceTree = "";
+ };
+ 83CBB9F61A601CBA00E9B192 = {
+ isa = PBXGroup;
+ children = (
+ 13B07FAE1A68108700A75B9A /* OpenContext */,
+ 832341AE1AAA6A7D00B99B32 /* Libraries */,
+ 83CBBA001A601CBA00E9B192 /* Products */,
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */,
+ D65327D7A22EEC0BE12398D9 /* Pods */,
+ D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */,
+ );
+ indentWidth = 2;
+ sourceTree = "";
+ tabWidth = 2;
+ usesTabs = 0;
+ };
+ 83CBBA001A601CBA00E9B192 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 13B07F961A680F5B00A75B9A /* OpenContext.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 92DBD88DE9BF7D494EA9DA96 /* OpenContext */ = {
+ isa = PBXGroup;
+ children = (
+ FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */,
+ );
+ name = OpenContext;
+ sourceTree = "";
+ };
+ BB2F792B24A3F905000567C9 /* Supporting */ = {
+ isa = PBXGroup;
+ children = (
+ BB2F792C24A3F905000567C9 /* Expo.plist */,
+ );
+ name = Supporting;
+ path = OpenContext/Supporting;
+ sourceTree = "";
+ };
+ D65327D7A22EEC0BE12398D9 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 6C2E3173556A471DD304B334 /* Pods-OpenContext.debug.xcconfig */,
+ 7A4D352CD337FB3A3BF06240 /* Pods-OpenContext.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+ D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = {
+ isa = PBXGroup;
+ children = (
+ 92DBD88DE9BF7D494EA9DA96 /* OpenContext */,
+ );
+ name = ExpoModulesProviders;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 13B07F861A680F5B00A75B9A /* OpenContext */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "OpenContext" */;
+ buildPhases = (
+ 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */,
+ 7B430A05C9CCE54569A31B46 /* [Expo] Configure project */,
+ 13B07F871A680F5B00A75B9A /* Sources */,
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */,
+ 13B07F8E1A680F5B00A75B9A /* Resources */,
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
+ 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */,
+ D0AA5B3601DC2C91ACE146AD /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = OpenContext;
+ productName = OpenContext;
+ productReference = 13B07F961A680F5B00A75B9A /* OpenContext.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 83CBB9F71A601CBA00E9B192 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1130;
+ TargetAttributes = {
+ 13B07F861A680F5B00A75B9A = {
+ LastSwiftMigration = 1250;
+ };
+ };
+ };
+ buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "OpenContext" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 83CBB9F61A601CBA00E9B192;
+ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 13B07F861A680F5B00A75B9A /* OpenContext */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 13B07F8E1A680F5B00A75B9A /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ BB2F792D24A3F905000567C9 /* Expo.plist in Resources */,
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+ 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Bundle React Native code and images";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios relative | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n# Source .xcode.env.updates if it exists to allow\n# SKIP_BUNDLING to be unset if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.updates\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.updates\"\nfi\n# Source local changes to allow overrides\n# if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n";
+ };
+ 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-OpenContext-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 7B430A05C9CCE54569A31B46 /* [Expo] Configure project */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ );
+ name = "[Expo] Configure project";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-OpenContext/expo-configure-project.sh\"\n";
+ };
+ 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-OpenContext/Pods-OpenContext-resources.sh",
+ "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/ExpoFileSystem/ExpoFileSystem_privacy.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/RNCAsyncStorage/RNCAsyncStorage_resources.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoFileSystem_privacy.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNCAsyncStorage_resources.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OpenContext/Pods-OpenContext-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ D0AA5B3601DC2C91ACE146AD /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-OpenContext/Pods-OpenContext-frameworks.sh",
+ "${PODS_XCFRAMEWORKS_BUILD_DIR}/ExpoSQLite/crsqlite.framework/crsqlite",
+ "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/crsqlite.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-OpenContext/Pods-OpenContext-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 13B07F871A680F5B00A75B9A /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
+ 13B07FC11A68108700A75B9A /* main.m in Sources */,
+ B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */,
+ C37330706E6C4384B98FD950 /* noop-file.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 13B07F941A680F5B00A75B9A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-OpenContext.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = OpenContext/OpenContext.entitlements;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = Q63U7U68Y7;
+ ENABLE_BITCODE = NO;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "$(inherited)",
+ "FB_SONARKIT_ENABLED=1",
+ );
+ INFOPLIST_FILE = OpenContext/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
+ PRODUCT_BUNDLE_IDENTIFIER = com.contextlab.opencontext;
+ PRODUCT_NAME = OpenContext;
+ SWIFT_OBJC_BRIDGING_HEADER = "OpenContext/OpenContext-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 13B07F951A680F5B00A75B9A /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-OpenContext.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = OpenContext/OpenContext.entitlements;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = Q63U7U68Y7;
+ INFOPLIST_FILE = OpenContext/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
+ PRODUCT_BUNDLE_IDENTIFIER = com.contextlab.opencontext;
+ PRODUCT_NAME = OpenContext;
+ SWIFT_OBJC_BRIDGING_HEADER = "OpenContext/OpenContext-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+ 83CBBA201A601CBA00E9B192 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++20";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ /usr/lib/swift,
+ "$(inherited)",
+ );
+ LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ OTHER_CFLAGS = "$(inherited)";
+ OTHER_CPLUSPLUSFLAGS = "$(inherited)";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ " ",
+ );
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
+ SDKROOT = iphoneos;
+ USE_HERMES = true;
+ };
+ name = Debug;
+ };
+ 83CBBA211A601CBA00E9B192 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++20";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ /usr/lib/swift,
+ "$(inherited)",
+ );
+ LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ OTHER_CFLAGS = "$(inherited)";
+ OTHER_CPLUSPLUSFLAGS = "$(inherited)";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ " ",
+ );
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
+ SDKROOT = iphoneos;
+ USE_HERMES = true;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "OpenContext" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 13B07F941A680F5B00A75B9A /* Debug */,
+ 13B07F951A680F5B00A75B9A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "OpenContext" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 83CBBA201A601CBA00E9B192 /* Debug */,
+ 83CBBA211A601CBA00E9B192 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
+}
diff --git a/src-ios/ios/OpenContext.xcodeproj/xcshareddata/xcschemes/OpenContext.xcscheme b/src-ios/ios/OpenContext.xcodeproj/xcshareddata/xcschemes/OpenContext.xcscheme
new file mode 100644
index 0000000..1fb859e
--- /dev/null
+++ b/src-ios/ios/OpenContext.xcodeproj/xcshareddata/xcschemes/OpenContext.xcscheme
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-ios/ios/OpenContext.xcworkspace/contents.xcworkspacedata b/src-ios/ios/OpenContext.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..9695830
--- /dev/null
+++ b/src-ios/ios/OpenContext.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/src-ios/ios/OpenContext/AppDelegate.h b/src-ios/ios/OpenContext/AppDelegate.h
new file mode 100644
index 0000000..1658a43
--- /dev/null
+++ b/src-ios/ios/OpenContext/AppDelegate.h
@@ -0,0 +1,7 @@
+#import
+#import
+#import
+
+@interface AppDelegate : EXAppDelegateWrapper
+
+@end
diff --git a/src-ios/ios/OpenContext/AppDelegate.mm b/src-ios/ios/OpenContext/AppDelegate.mm
new file mode 100644
index 0000000..37d415b
--- /dev/null
+++ b/src-ios/ios/OpenContext/AppDelegate.mm
@@ -0,0 +1,62 @@
+#import "AppDelegate.h"
+
+#import
+#import
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ self.moduleName = @"main";
+
+ // You can add your custom initial props in the dictionary below.
+ // They will be passed down to the ViewController used by React Native.
+ self.initialProps = @{};
+
+ return [super application:application didFinishLaunchingWithOptions:launchOptions];
+}
+
+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
+{
+ return [self getBundleURL];
+}
+
+- (NSURL *)getBundleURL
+{
+#if DEBUG
+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"];
+#else
+ return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
+#endif
+}
+
+// Linking API
+- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {
+ return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];
+}
+
+// Universal Links
+- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler {
+ BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
+ return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result;
+}
+
+// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries
+- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
+{
+ return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
+}
+
+// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries
+- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
+{
+ return [super application:application didFailToRegisterForRemoteNotificationsWithError:error];
+}
+
+// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries
+- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
+{
+ return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
+}
+
+@end
diff --git a/src-ios/ios/OpenContext/Images.xcassets/AppIcon.appiconset/Contents.json b/src-ios/ios/OpenContext/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..5bf45d2
--- /dev/null
+++ b/src-ios/ios/OpenContext/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,14 @@
+{
+ "images" : [
+ {
+ "filename" : "icon.png",
+ "idiom" : "universal",
+ "platform" : "ios",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "expo"
+ }
+}
diff --git a/src-ios/ios/OpenContext/Images.xcassets/AppIcon.appiconset/icon.png b/src-ios/ios/OpenContext/Images.xcassets/AppIcon.appiconset/icon.png
new file mode 100644
index 0000000..c31a043
Binary files /dev/null and b/src-ios/ios/OpenContext/Images.xcassets/AppIcon.appiconset/icon.png differ
diff --git a/src-ios/ios/OpenContext/Images.xcassets/Contents.json b/src-ios/ios/OpenContext/Images.xcassets/Contents.json
new file mode 100644
index 0000000..ed285c2
--- /dev/null
+++ b/src-ios/ios/OpenContext/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "expo"
+ }
+}
diff --git a/src-ios/ios/OpenContext/Images.xcassets/SplashScreenBackground.imageset/Contents.json b/src-ios/ios/OpenContext/Images.xcassets/SplashScreenBackground.imageset/Contents.json
new file mode 100644
index 0000000..3cf8489
--- /dev/null
+++ b/src-ios/ios/OpenContext/Images.xcassets/SplashScreenBackground.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images": [
+ {
+ "idiom": "universal",
+ "filename": "image.png",
+ "scale": "1x"
+ },
+ {
+ "idiom": "universal",
+ "scale": "2x"
+ },
+ {
+ "idiom": "universal",
+ "scale": "3x"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "expo"
+ }
+}
\ No newline at end of file
diff --git a/src-ios/ios/OpenContext/Images.xcassets/SplashScreenBackground.imageset/image.png b/src-ios/ios/OpenContext/Images.xcassets/SplashScreenBackground.imageset/image.png
new file mode 100644
index 0000000..33ddf20
Binary files /dev/null and b/src-ios/ios/OpenContext/Images.xcassets/SplashScreenBackground.imageset/image.png differ
diff --git a/src-ios/ios/OpenContext/Info.plist b/src-ios/ios/OpenContext/Info.plist
new file mode 100644
index 0000000..9b14473
--- /dev/null
+++ b/src-ios/ios/OpenContext/Info.plist
@@ -0,0 +1,78 @@
+
+
+
+
+ CADisableMinimumFrameDurationOnPhone
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ OpenContext
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 0.1.0
+ CFBundleSignature
+ ????
+ CFBundleURLTypes
+
+
+ CFBundleURLSchemes
+
+ com.contextlab.opencontext
+
+
+
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+ NSAllowsLocalNetworking
+
+
+ NSCameraUsageDescription
+ Allow $(PRODUCT_NAME) to access your camera
+ NSMicrophoneUsageDescription
+ Allow $(PRODUCT_NAME) to access your microphone
+ NSPhotoLibraryUsageDescription
+ Allow OpenContext to access your photos to attach images.
+ UILaunchStoryboardName
+ SplashScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UIRequiresFullScreen
+
+ UIStatusBarStyle
+ UIStatusBarStyleDefault
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIUserInterfaceStyle
+ Light
+ UIViewControllerBasedStatusBarAppearance
+
+
+
diff --git a/src-ios/ios/OpenContext/OpenContext-Bridging-Header.h b/src-ios/ios/OpenContext/OpenContext-Bridging-Header.h
new file mode 100644
index 0000000..e11d920
--- /dev/null
+++ b/src-ios/ios/OpenContext/OpenContext-Bridging-Header.h
@@ -0,0 +1,3 @@
+//
+// Use this file to import your target's public headers that you would like to expose to Swift.
+//
diff --git a/src-ios/ios/OpenContext/OpenContext.entitlements b/src-ios/ios/OpenContext/OpenContext.entitlements
new file mode 100644
index 0000000..0c67376
--- /dev/null
+++ b/src-ios/ios/OpenContext/OpenContext.entitlements
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src-ios/ios/OpenContext/SplashScreen.storyboard b/src-ios/ios/OpenContext/SplashScreen.storyboard
new file mode 100644
index 0000000..1227a2b
--- /dev/null
+++ b/src-ios/ios/OpenContext/SplashScreen.storyboard
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src-ios/ios/OpenContext/Supporting/Expo.plist b/src-ios/ios/OpenContext/Supporting/Expo.plist
new file mode 100644
index 0000000..540b746
--- /dev/null
+++ b/src-ios/ios/OpenContext/Supporting/Expo.plist
@@ -0,0 +1,14 @@
+
+
+
+
+ EXUpdatesCheckOnLaunch
+ ALWAYS
+ EXUpdatesEnabled
+
+ EXUpdatesLaunchWaitMs
+ 0
+ EXUpdatesSDKVersion
+ 50.0.0
+
+
\ No newline at end of file
diff --git a/src-ios/ios/OpenContext/main.m b/src-ios/ios/OpenContext/main.m
new file mode 100644
index 0000000..25181b6
--- /dev/null
+++ b/src-ios/ios/OpenContext/main.m
@@ -0,0 +1,10 @@
+#import
+
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[]) {
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+ }
+}
+
diff --git a/src-ios/ios/OpenContext/noop-file.swift b/src-ios/ios/OpenContext/noop-file.swift
new file mode 100644
index 0000000..b2ffafb
--- /dev/null
+++ b/src-ios/ios/OpenContext/noop-file.swift
@@ -0,0 +1,4 @@
+//
+// @generated
+// A blank Swift file must be created for native modules with Swift files to work correctly.
+//
diff --git a/src-ios/ios/Podfile b/src-ios/ios/Podfile
new file mode 100644
index 0000000..78cc66c
--- /dev/null
+++ b/src-ios/ios/Podfile
@@ -0,0 +1,90 @@
+require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
+require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
+
+require 'json'
+podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}
+
+ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'
+ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']
+
+platform :ios, podfile_properties['ios.deploymentTarget'] || '13.4'
+install! 'cocoapods',
+ :deterministic_uuids => false
+
+prepare_react_native_project!
+
+# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.
+# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this,
+# you can also exclude `react-native-flipper` in `react-native.config.js`
+#
+# ```js
+# module.exports = {
+# dependencies: {
+# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
+# }
+# }
+# ```
+flipper_config = FlipperConfiguration.disabled
+if ENV['NO_FLIPPER'] == '1' then
+ # Explicitly disabled through environment variables
+ flipper_config = FlipperConfiguration.disabled
+elsif podfile_properties.key?('ios.flipper') then
+ # Configure Flipper in Podfile.properties.json
+ if podfile_properties['ios.flipper'] == 'true' then
+ flipper_config = FlipperConfiguration.enabled(["Debug", "Release"])
+ elsif podfile_properties['ios.flipper'] != 'false' then
+ flipper_config = FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => podfile_properties['ios.flipper'] })
+ end
+end
+
+target 'OpenContext' do
+ use_expo_modules!
+ config = use_native_modules!
+
+ use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
+ use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']
+
+ use_react_native!(
+ :path => config[:reactNativePath],
+ :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',
+ # An absolute path to your application root.
+ :app_path => "#{Pod::Config.instance.installation_root}/..",
+ # Note that if you have use_frameworks! enabled, Flipper will not work if enabled
+ :flipper_configuration => flipper_config
+ )
+
+ post_install do |installer|
+ react_native_post_install(
+ installer,
+ config[:reactNativePath],
+ :mac_catalyst_enabled => false
+ )
+
+ installer.pods_project.targets.each do |target|
+ target.build_configurations.each do |config|
+ if config.name == 'Release'
+ config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf-with-dsym'
+ end
+ end
+ end
+
+ # This is necessary for Xcode 14, because it signs resource bundles by default
+ # when building for devices.
+ installer.target_installation_results.pod_target_installation_results
+ .each do |pod_name, target_installation_result|
+ target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
+ resource_bundle_target.build_configurations.each do |config|
+ config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
+ end
+ end
+ end
+ end
+
+ post_integrate do |installer|
+ begin
+ expo_patch_react_imports!(installer)
+ rescue => e
+ Pod::UI.warn e
+ end
+ end
+end
diff --git a/src-ios/ios/Podfile.properties.json b/src-ios/ios/Podfile.properties.json
new file mode 100644
index 0000000..de9f7b7
--- /dev/null
+++ b/src-ios/ios/Podfile.properties.json
@@ -0,0 +1,4 @@
+{
+ "expo.jsEngine": "hermes",
+ "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true"
+}
diff --git a/src-ios/package-lock.json b/src-ios/package-lock.json
new file mode 100644
index 0000000..0cb6e3c
--- /dev/null
+++ b/src-ios/package-lock.json
@@ -0,0 +1,14358 @@
+{
+ "name": "opencontext-ios",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "opencontext-ios",
+ "version": "0.1.0",
+ "dependencies": {
+ "@react-native-async-storage/async-storage": "^1.23.1",
+ "@react-navigation/bottom-tabs": "^6.6.1",
+ "@react-navigation/native": "^6.1.17",
+ "@react-navigation/native-stack": "^6.10.0",
+ "expo": "~50.0.0",
+ "expo-file-system": "~16.0.5",
+ "expo-image-picker": "~14.7.1",
+ "expo-linear-gradient": "~12.7.1",
+ "expo-sqlite": "~13.4.0",
+ "i18next": "^23.11.5",
+ "react": "18.2.0",
+ "react-i18next": "^14.1.2",
+ "react-native": "0.73.6",
+ "react-native-gesture-handler": "~2.14.0",
+ "react-native-safe-area-context": "4.8.2",
+ "react-native-screens": "~3.29.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+ "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
+ "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
+ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.4",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@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/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "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.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
+ "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.28.5",
+ "@babel/types": "^7.28.5",
+ "@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-annotate-as-pure": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+ "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "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-create-class-features-plugin": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz",
+ "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-member-expression-to-functions": "^7.28.5",
+ "@babel/helper-optimise-call-expression": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+ "@babel/traverse": "^7.28.5",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin/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-create-regexp-features-plugin": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz",
+ "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "regexpu-core": "^6.3.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin/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-define-polyfill-provider": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz",
+ "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "debug": "^4.4.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.22.10"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
+ "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz",
+ "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
+ "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
+ "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz",
+ "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-wrap-function": "^7.27.1",
+ "@babel/traverse": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
+ "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.27.1",
+ "@babel/helper-optimise-call-expression": "^7.27.1",
+ "@babel/traverse": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
+ "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz",
+ "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.3",
+ "@babel/types": "^7.28.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz",
+ "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "license": "MIT"
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.5"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz",
+ "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/traverse": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz",
+ "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz",
+ "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz",
+ "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+ "@babel/plugin-transform-optional-chaining": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz",
+ "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
+ "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-remap-async-to-generator": "^7.18.9",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-class-properties": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
+ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz",
+ "integrity": "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-syntax-decorators": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-export-default-from": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz",
+ "integrity": "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
+ "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-numeric-separator": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
+ "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
+ "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.20.5",
+ "@babel/helper-compilation-targets": "^7.20.7",
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.20.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
+ "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-optional-chaining": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
+ "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
+ "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-decorators": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz",
+ "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-export-default-from": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.27.1.tgz",
+ "integrity": "sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-flow": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz",
+ "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz",
+ "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz",
+ "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
+ "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
+ "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz",
+ "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz",
+ "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-remap-async-to-generator": "^7.27.1",
+ "@babel/traverse": "^7.28.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz",
+ "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-remap-async-to-generator": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz",
+ "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz",
+ "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz",
+ "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz",
+ "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.28.3",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz",
+ "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.27.1",
+ "@babel/traverse": "^7.28.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz",
+ "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/template": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz",
+ "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/traverse": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz",
+ "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz",
+ "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz",
+ "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz",
+ "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-explicit-resource-management": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz",
+ "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-transform-destructuring": "^7.28.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz",
+ "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz",
+ "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-flow-strip-types": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz",
+ "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-syntax-flow": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz",
+ "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz",
+ "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/traverse": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz",
+ "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz",
+ "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz",
+ "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz",
+ "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz",
+ "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
+ "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz",
+ "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz",
+ "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz",
+ "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz",
+ "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz",
+ "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz",
+ "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz",
+ "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-transform-destructuring": "^7.28.0",
+ "@babel/plugin-transform-parameters": "^7.27.7",
+ "@babel/traverse": "^7.28.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz",
+ "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz",
+ "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz",
+ "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.27.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz",
+ "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz",
+ "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz",
+ "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-create-class-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz",
+ "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz",
+ "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz",
+ "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz",
+ "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
+ "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
+ "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz",
+ "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz",
+ "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regexp-modifiers": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz",
+ "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz",
+ "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz",
+ "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "babel-plugin-polyfill-corejs2": "^0.4.14",
+ "babel-plugin-polyfill-corejs3": "^0.13.0",
+ "babel-plugin-polyfill-regenerator": "^0.6.5",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz",
+ "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz",
+ "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz",
+ "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz",
+ "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz",
+ "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz",
+ "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-create-class-features-plugin": "^7.28.5",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+ "@babel/plugin-syntax-typescript": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz",
+ "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz",
+ "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz",
+ "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz",
+ "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz",
+ "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.28.5",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-option": "^7.27.1",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-import-assertions": "^7.27.1",
+ "@babel/plugin-syntax-import-attributes": "^7.27.1",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.27.1",
+ "@babel/plugin-transform-async-generator-functions": "^7.28.0",
+ "@babel/plugin-transform-async-to-generator": "^7.27.1",
+ "@babel/plugin-transform-block-scoped-functions": "^7.27.1",
+ "@babel/plugin-transform-block-scoping": "^7.28.5",
+ "@babel/plugin-transform-class-properties": "^7.27.1",
+ "@babel/plugin-transform-class-static-block": "^7.28.3",
+ "@babel/plugin-transform-classes": "^7.28.4",
+ "@babel/plugin-transform-computed-properties": "^7.27.1",
+ "@babel/plugin-transform-destructuring": "^7.28.5",
+ "@babel/plugin-transform-dotall-regex": "^7.27.1",
+ "@babel/plugin-transform-duplicate-keys": "^7.27.1",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
+ "@babel/plugin-transform-dynamic-import": "^7.27.1",
+ "@babel/plugin-transform-explicit-resource-management": "^7.28.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.28.5",
+ "@babel/plugin-transform-export-namespace-from": "^7.27.1",
+ "@babel/plugin-transform-for-of": "^7.27.1",
+ "@babel/plugin-transform-function-name": "^7.27.1",
+ "@babel/plugin-transform-json-strings": "^7.27.1",
+ "@babel/plugin-transform-literals": "^7.27.1",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.28.5",
+ "@babel/plugin-transform-member-expression-literals": "^7.27.1",
+ "@babel/plugin-transform-modules-amd": "^7.27.1",
+ "@babel/plugin-transform-modules-commonjs": "^7.27.1",
+ "@babel/plugin-transform-modules-systemjs": "^7.28.5",
+ "@babel/plugin-transform-modules-umd": "^7.27.1",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1",
+ "@babel/plugin-transform-new-target": "^7.27.1",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
+ "@babel/plugin-transform-numeric-separator": "^7.27.1",
+ "@babel/plugin-transform-object-rest-spread": "^7.28.4",
+ "@babel/plugin-transform-object-super": "^7.27.1",
+ "@babel/plugin-transform-optional-catch-binding": "^7.27.1",
+ "@babel/plugin-transform-optional-chaining": "^7.28.5",
+ "@babel/plugin-transform-parameters": "^7.27.7",
+ "@babel/plugin-transform-private-methods": "^7.27.1",
+ "@babel/plugin-transform-private-property-in-object": "^7.27.1",
+ "@babel/plugin-transform-property-literals": "^7.27.1",
+ "@babel/plugin-transform-regenerator": "^7.28.4",
+ "@babel/plugin-transform-regexp-modifiers": "^7.27.1",
+ "@babel/plugin-transform-reserved-words": "^7.27.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.27.1",
+ "@babel/plugin-transform-spread": "^7.27.1",
+ "@babel/plugin-transform-sticky-regex": "^7.27.1",
+ "@babel/plugin-transform-template-literals": "^7.27.1",
+ "@babel/plugin-transform-typeof-symbol": "^7.27.1",
+ "@babel/plugin-transform-unicode-escapes": "^7.27.1",
+ "@babel/plugin-transform-unicode-property-regex": "^7.27.1",
+ "@babel/plugin-transform-unicode-regex": "^7.27.1",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.14",
+ "babel-plugin-polyfill-corejs3": "^0.13.0",
+ "babel-plugin-polyfill-regenerator": "^0.6.5",
+ "core-js-compat": "^3.43.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-env/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/preset-flow": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.27.1.tgz",
+ "integrity": "sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-option": "^7.27.1",
+ "@babel/plugin-transform-flow-strip-types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/preset-react": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz",
+ "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-option": "^7.27.1",
+ "@babel/plugin-transform-react-display-name": "^7.28.0",
+ "@babel/plugin-transform-react-jsx": "^7.27.1",
+ "@babel/plugin-transform-react-jsx-development": "^7.27.1",
+ "@babel/plugin-transform-react-pure-annotations": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-typescript": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz",
+ "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-option": "^7.27.1",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/plugin-transform-modules-commonjs": "^7.27.1",
+ "@babel/plugin-transform-typescript": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/register": {
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.28.3.tgz",
+ "integrity": "sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==",
+ "license": "MIT",
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "find-cache-dir": "^2.0.0",
+ "make-dir": "^2.1.0",
+ "pirates": "^4.0.6",
+ "source-map-support": "^0.5.16"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
+ "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template/node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
+ "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.5",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@egjs/hammerjs": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
+ "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hammerjs": "^2.0.36"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@expo/bunyan": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.1.tgz",
+ "integrity": "sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==",
+ "license": "MIT",
+ "dependencies": {
+ "uuid": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@expo/cli": {
+ "version": "0.17.13",
+ "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.17.13.tgz",
+ "integrity": "sha512-n13yxOmI3I0JidzMdFCH68tYKGDtK4XlDFk1vysZX7AIRKeDVRsSbHhma5jCla2bDt25RKmJBHA9KtzielwzAA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.0",
+ "@expo/code-signing-certificates": "0.0.5",
+ "@expo/config": "~8.5.0",
+ "@expo/config-plugins": "~7.9.0",
+ "@expo/devcert": "^1.0.0",
+ "@expo/env": "~0.2.2",
+ "@expo/image-utils": "^0.4.0",
+ "@expo/json-file": "^8.2.37",
+ "@expo/metro-config": "0.17.8",
+ "@expo/osascript": "^2.0.31",
+ "@expo/package-manager": "^1.1.1",
+ "@expo/plist": "^0.1.0",
+ "@expo/prebuild-config": "6.8.1",
+ "@expo/rudder-sdk-node": "1.1.1",
+ "@expo/spawn-async": "1.5.0",
+ "@expo/xcpretty": "^4.3.0",
+ "@react-native/dev-middleware": "^0.73.6",
+ "@urql/core": "2.3.6",
+ "@urql/exchange-retry": "0.3.0",
+ "accepts": "^1.3.8",
+ "arg": "5.0.2",
+ "better-opn": "~3.0.2",
+ "bplist-parser": "^0.3.1",
+ "cacache": "^15.3.0",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.3.0",
+ "connect": "^3.7.0",
+ "debug": "^4.3.4",
+ "env-editor": "^0.4.1",
+ "find-yarn-workspace-root": "~2.0.0",
+ "form-data": "^3.0.1",
+ "freeport-async": "2.0.0",
+ "fs-extra": "~8.1.0",
+ "getenv": "^1.0.0",
+ "glob": "^7.1.7",
+ "graphql": "15.8.0",
+ "graphql-tag": "^2.10.1",
+ "https-proxy-agent": "^5.0.1",
+ "internal-ip": "4.3.0",
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1",
+ "js-yaml": "^3.13.1",
+ "json-schema-deref-sync": "^0.13.0",
+ "lodash.debounce": "^4.0.8",
+ "md5hex": "^1.0.0",
+ "minimatch": "^3.0.4",
+ "minipass": "3.3.6",
+ "node-fetch": "^2.6.7",
+ "node-forge": "^1.3.1",
+ "npm-package-arg": "^7.0.0",
+ "open": "^8.3.0",
+ "ora": "3.4.0",
+ "picomatch": "^3.0.1",
+ "pretty-bytes": "5.6.0",
+ "progress": "2.0.3",
+ "prompts": "^2.3.2",
+ "qrcode-terminal": "0.11.0",
+ "require-from-string": "^2.0.2",
+ "requireg": "^0.2.2",
+ "resolve": "^1.22.2",
+ "resolve-from": "^5.0.0",
+ "resolve.exports": "^2.0.2",
+ "semver": "^7.5.3",
+ "send": "^0.18.0",
+ "slugify": "^1.3.4",
+ "source-map-support": "~0.5.21",
+ "stacktrace-parser": "^0.1.10",
+ "structured-headers": "^0.4.1",
+ "tar": "^6.0.5",
+ "temp-dir": "^2.0.0",
+ "tempy": "^0.7.1",
+ "terminal-link": "^2.1.1",
+ "text-table": "^0.2.0",
+ "url-join": "4.0.0",
+ "wrap-ansi": "^7.0.0",
+ "ws": "^8.12.1"
+ },
+ "bin": {
+ "expo-internal": "build/bin/cli"
+ }
+ },
+ "node_modules/@expo/code-signing-certificates": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz",
+ "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==",
+ "license": "MIT",
+ "dependencies": {
+ "node-forge": "^1.2.1",
+ "nullthrows": "^1.1.1"
+ }
+ },
+ "node_modules/@expo/config": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.5.6.tgz",
+ "integrity": "sha512-wF5awSg6MNn1cb1lIgjnhOn5ov2TEUTnkAVCsOl0QqDwcP+YIerteSFwjn9V52UZvg58L+LKxpCuGbw5IHavbg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "@expo/config-plugins": "~7.9.0",
+ "@expo/config-types": "^50.0.0",
+ "@expo/json-file": "^8.2.37",
+ "getenv": "^1.0.0",
+ "glob": "7.1.6",
+ "require-from-string": "^2.0.2",
+ "resolve-from": "^5.0.0",
+ "semver": "7.5.3",
+ "slugify": "^1.3.4",
+ "sucrase": "3.34.0"
+ }
+ },
+ "node_modules/@expo/config-plugins": {
+ "version": "7.9.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.9.2.tgz",
+ "integrity": "sha512-sRU/OAp7kJxrCUiCTUZqvPMKPdiN1oTmNfnbkG4oPdfWQTpid3jyCH7ZxJEN5SI6jrY/ZsK5B/JPgjDUhuWLBQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/fingerprint": "^0.6.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
+ "@expo/sdk-runtime-versions": "^1.0.0",
+ "@react-native/normalize-color": "^2.0.0",
+ "chalk": "^4.1.2",
+ "debug": "^4.3.1",
+ "find-up": "~5.0.0",
+ "getenv": "^1.0.0",
+ "glob": "7.1.6",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.5.3",
+ "slash": "^3.0.0",
+ "slugify": "^1.6.6",
+ "xcode": "^3.0.1",
+ "xml2js": "0.6.0"
+ }
+ },
+ "node_modules/@expo/config-plugins/node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@expo/config-types": {
+ "version": "50.0.1",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-50.0.1.tgz",
+ "integrity": "sha512-EZHMgzkWRB9SMHO1e9m8s+OMahf92XYTnsCFjxhSfcDrcEoSdFPyJWDJVloHZPMGhxns7Fi2+A+bEVN/hD4NKA==",
+ "license": "MIT"
+ },
+ "node_modules/@expo/config/node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@expo/config/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/config/node_modules/semver": {
+ "version": "7.5.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+ "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/config/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/@expo/devcert": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.1.tgz",
+ "integrity": "sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/sudo-prompt": "^9.3.1",
+ "debug": "^3.1.0"
+ }
+ },
+ "node_modules/@expo/devcert/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/@expo/env": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.2.3.tgz",
+ "integrity": "sha512-a+uJ/e6MAVxPVVN/HbXU5qxzdqrqDwNQYxCfxtAufgmd5VZj54e5f3TJA3LEEUW3pTSZR8xK0H0EtVN297AZnw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "debug": "^4.3.4",
+ "dotenv": "~16.4.5",
+ "dotenv-expand": "~11.0.6",
+ "getenv": "^1.0.0"
+ }
+ },
+ "node_modules/@expo/fingerprint": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.6.1.tgz",
+ "integrity": "sha512-ggLn6unI6qowlA1FihdQwPpLn16VJulYkvYAEL50gaqVahfNEglRQMSH2giZzjD0d6xq2/EQuUdFyHaJfyJwOQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/spawn-async": "^1.5.0",
+ "chalk": "^4.1.2",
+ "debug": "^4.3.4",
+ "find-up": "^5.0.0",
+ "minimatch": "^3.0.4",
+ "p-limit": "^3.1.0",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "fingerprint": "bin/cli.js"
+ }
+ },
+ "node_modules/@expo/image-utils": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.4.2.tgz",
+ "integrity": "sha512-CxP+1QXgRXsNnmv2FAUA2RWwK6kNBFg4QEmVXn2K9iLoEAI+i+1IQXcUgc+J7nTJl9pO7FIu2gIiEYGYffjLWQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/spawn-async": "1.5.0",
+ "chalk": "^4.0.0",
+ "fs-extra": "9.0.0",
+ "getenv": "^1.0.0",
+ "jimp-compact": "0.16.1",
+ "node-fetch": "^2.6.0",
+ "parse-png": "^2.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "7.3.2",
+ "tempy": "0.3.0"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/fs-extra": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
+ "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/jsonfile/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/temp-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
+ "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/tempy": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz",
+ "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "temp-dir": "^1.0.0",
+ "type-fest": "^0.3.1",
+ "unique-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==",
+ "license": "MIT",
+ "dependencies": {
+ "crypto-random-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@expo/image-utils/node_modules/universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/json-file": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz",
+ "integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
+ "node_modules/@expo/metro-config": {
+ "version": "0.17.8",
+ "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.17.8.tgz",
+ "integrity": "sha512-XNjI5Q5bW3k2ieNtQBSX9BnIysRxG4UyNsaWcysv3AzY+rahay6fAp5xzJey8xBOlzs9u7H4AdMoeJsUje3lcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.5",
+ "@babel/parser": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "@expo/config": "~8.5.0",
+ "@expo/env": "~0.2.2",
+ "@expo/json-file": "~8.3.0",
+ "@expo/spawn-async": "^1.7.2",
+ "babel-preset-fbjs": "^3.4.0",
+ "chalk": "^4.1.0",
+ "debug": "^4.3.2",
+ "find-yarn-workspace-root": "~2.0.0",
+ "fs-extra": "^9.1.0",
+ "getenv": "^1.0.0",
+ "glob": "^7.2.3",
+ "jsc-safe-url": "^0.2.4",
+ "lightningcss": "~1.19.0",
+ "postcss": "~8.4.32",
+ "resolve-from": "^5.0.0",
+ "sucrase": "3.34.0"
+ },
+ "peerDependencies": {
+ "@react-native/babel-preset": "*"
+ }
+ },
+ "node_modules/@expo/metro-config/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@expo/metro-config/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@expo/metro-config/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==",
+ "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/@expo/metro-config/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@expo/metro-config/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/metro-config/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==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/metro-config/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/metro-config/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/metro-config/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@expo/osascript": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.3.8.tgz",
+ "integrity": "sha512-/TuOZvSG7Nn0I8c+FcEaoHeBO07yu6vwDgk7rZVvAXoeAK5rkA09jRyjYsZo+0tMEFaToBeywA6pj50Mb3ny9w==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/spawn-async": "^1.7.2",
+ "exec-async": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@expo/osascript/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@expo/osascript/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@expo/osascript/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/osascript/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==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/osascript/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/osascript/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@expo/package-manager": {
+ "version": "1.9.9",
+ "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.9.9.tgz",
+ "integrity": "sha512-Nv5THOwXzPprMJwbnXU01iXSrCp3vJqly9M4EJ2GkKko9Ifer2ucpg7x6OUsE09/lw+npaoUnHMXwkw7gcKxlg==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/json-file": "^10.0.8",
+ "@expo/spawn-async": "^1.7.2",
+ "chalk": "^4.0.0",
+ "npm-package-arg": "^11.0.0",
+ "ora": "^3.4.0",
+ "resolve-workspace-root": "^2.0.0"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/@expo/json-file": {
+ "version": "10.0.8",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.8.tgz",
+ "integrity": "sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.3"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/hosted-git-info": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
+ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/@expo/package-manager/node_modules/npm-package-arg": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz",
+ "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==",
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "proc-log": "^4.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^5.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@expo/package-manager/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/package-manager/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==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/package-manager/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/validate-npm-package-name": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz",
+ "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==",
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@expo/package-manager/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@expo/plist": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz",
+ "integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==",
+ "license": "MIT",
+ "dependencies": {
+ "@xmldom/xmldom": "~0.7.7",
+ "base64-js": "^1.2.3",
+ "xmlbuilder": "^14.0.0"
+ }
+ },
+ "node_modules/@expo/prebuild-config": {
+ "version": "6.8.1",
+ "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.8.1.tgz",
+ "integrity": "sha512-ptK9e0dcj1eYlAWV+fG+QkuAWcLAT1AmtEbj++tn7ZjEj8+LkXRM73LCOEGaF0Er8i8ZWNnaVsgGW4vjgP5ZsA==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/config": "~8.5.0",
+ "@expo/config-plugins": "~7.9.0",
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/image-utils": "^0.4.0",
+ "@expo/json-file": "^8.2.37",
+ "debug": "^4.3.1",
+ "fs-extra": "^9.0.0",
+ "resolve-from": "^5.0.0",
+ "semver": "7.5.3",
+ "xml2js": "0.6.0"
+ },
+ "peerDependencies": {
+ "expo-modules-autolinking": ">=0.8.1"
+ }
+ },
+ "node_modules/@expo/prebuild-config/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==",
+ "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/@expo/prebuild-config/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/semver": {
+ "version": "7.5.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+ "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@expo/prebuild-config/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/@expo/rudder-sdk-node": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz",
+ "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/bunyan": "^4.0.0",
+ "@segment/loosely-validate-event": "^2.0.0",
+ "fetch-retry": "^4.1.1",
+ "md5": "^2.2.1",
+ "node-fetch": "^2.6.1",
+ "remove-trailing-slash": "^0.1.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@expo/sdk-runtime-versions": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz",
+ "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==",
+ "license": "MIT"
+ },
+ "node_modules/@expo/spawn-async": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz",
+ "integrity": "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^6.0.5"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@expo/sudo-prompt": {
+ "version": "9.3.2",
+ "resolved": "https://registry.npmjs.org/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz",
+ "integrity": "sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==",
+ "license": "MIT"
+ },
+ "node_modules/@expo/vector-icons": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-14.1.0.tgz",
+ "integrity": "sha512-7T09UE9h8QDTsUeMGymB4i+iqvtEeaO5VvUjryFB4tugDTG/bkzViWA74hm5pfjjDEhYMXWaX112mcvhccmIwQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "expo-font": "*",
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@expo/websql": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@expo/websql/-/websql-1.0.1.tgz",
+ "integrity": "sha512-H9/t1V7XXyKC343FJz/LwaVBfDhs6IqhDtSYWpt8LNSQDVjf5NvVJLc5wp+KCpRidZx8+0+YeHJN45HOXmqjFA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "argsarray": "^0.0.1",
+ "immediate": "^3.2.2",
+ "noop-fn": "^1.0.0",
+ "pouchdb-collections": "^1.0.1",
+ "tiny-queue": "^0.2.1"
+ }
+ },
+ "node_modules/@expo/xcpretty": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.2.tgz",
+ "integrity": "sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/code-frame": "7.10.4",
+ "chalk": "^4.1.0",
+ "find-up": "^5.0.0",
+ "js-yaml": "^4.1.0"
+ },
+ "bin": {
+ "excpretty": "build/cli.js"
+ }
+ },
+ "node_modules/@expo/xcpretty/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==",
+ "license": "Python-2.0"
+ },
+ "node_modules/@expo/xcpretty/node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@gar/promisify": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
+ "license": "MIT"
+ },
+ "node_modules/@graphql-typed-document-node/core": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
+ "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/topo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+ "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ },
+ "node_modules/@isaacs/ttlcache": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz",
+ "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@jest/create-cache-key-function": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz",
+ "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
+ "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-mock": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
+ "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@sinonjs/fake-timers": "^10.0.2",
+ "@types/node": "*",
+ "jest-message-util": "^29.7.0",
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sinclair/typebox": "^0.27.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.8",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=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/source-map": {
+ "version": "0.3.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
+ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "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/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@npmcli/fs": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
+ "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@gar/promisify": "^1.0.1",
+ "semver": "^7.3.5"
+ }
+ },
+ "node_modules/@npmcli/move-file": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
+ "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+ "deprecated": "This functionality has been moved to @npmcli/fs",
+ "license": "MIT",
+ "dependencies": {
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@react-native-async-storage/async-storage": {
+ "version": "1.24.0",
+ "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.24.0.tgz",
+ "integrity": "sha512-W4/vbwUOYOjco0x3toB8QCr7EjIP6nE9G7o8PMguvvjYT5Awg09lyV4enACRx4s++PPulBiBSjL0KTFx2u0Z/g==",
+ "license": "MIT",
+ "dependencies": {
+ "merge-options": "^3.0.4"
+ },
+ "peerDependencies": {
+ "react-native": "^0.0.0-0 || >=0.60 <1.0"
+ }
+ },
+ "node_modules/@react-native-community/cli": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.6.tgz",
+ "integrity": "sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native-community/cli-clean": "12.3.6",
+ "@react-native-community/cli-config": "12.3.6",
+ "@react-native-community/cli-debugger-ui": "12.3.6",
+ "@react-native-community/cli-doctor": "12.3.6",
+ "@react-native-community/cli-hermes": "12.3.6",
+ "@react-native-community/cli-plugin-metro": "12.3.6",
+ "@react-native-community/cli-server-api": "12.3.6",
+ "@react-native-community/cli-tools": "12.3.6",
+ "@react-native-community/cli-types": "12.3.6",
+ "chalk": "^4.1.2",
+ "commander": "^9.4.1",
+ "deepmerge": "^4.3.0",
+ "execa": "^5.0.0",
+ "find-up": "^4.1.0",
+ "fs-extra": "^8.1.0",
+ "graceful-fs": "^4.1.3",
+ "prompts": "^2.4.2",
+ "semver": "^7.5.2"
+ },
+ "bin": {
+ "react-native": "build/bin.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.6.tgz",
+ "integrity": "sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native-community/cli-tools": "12.3.6",
+ "chalk": "^4.1.2",
+ "execa": "^5.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/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==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-clean/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native-community/cli-config": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.6.tgz",
+ "integrity": "sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native-community/cli-tools": "12.3.6",
+ "chalk": "^4.1.2",
+ "cosmiconfig": "^5.1.0",
+ "deepmerge": "^4.3.0",
+ "glob": "^7.1.3",
+ "joi": "^17.2.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-debugger-ui": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.6.tgz",
+ "integrity": "sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA==",
+ "license": "MIT",
+ "dependencies": {
+ "serve-static": "^1.13.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.6.tgz",
+ "integrity": "sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native-community/cli-config": "12.3.6",
+ "@react-native-community/cli-platform-android": "12.3.6",
+ "@react-native-community/cli-platform-ios": "12.3.6",
+ "@react-native-community/cli-tools": "12.3.6",
+ "chalk": "^4.1.2",
+ "command-exists": "^1.2.8",
+ "deepmerge": "^4.3.0",
+ "envinfo": "^7.10.0",
+ "execa": "^5.0.0",
+ "hermes-profile-transformer": "^0.0.6",
+ "node-stream-zip": "^1.9.1",
+ "ora": "^5.4.1",
+ "semver": "^7.5.2",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1",
+ "yaml": "^2.2.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/ora/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==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-doctor/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native-community/cli-hermes": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.6.tgz",
+ "integrity": "sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native-community/cli-platform-android": "12.3.6",
+ "@react-native-community/cli-tools": "12.3.6",
+ "chalk": "^4.1.2",
+ "hermes-profile-transformer": "^0.0.6"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.6.tgz",
+ "integrity": "sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native-community/cli-tools": "12.3.6",
+ "chalk": "^4.1.2",
+ "execa": "^5.0.0",
+ "fast-xml-parser": "^4.2.4",
+ "glob": "^7.1.3",
+ "logkitty": "^0.7.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/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==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-android/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.6.tgz",
+ "integrity": "sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native-community/cli-tools": "12.3.6",
+ "chalk": "^4.1.2",
+ "execa": "^5.0.0",
+ "fast-xml-parser": "^4.0.12",
+ "glob": "^7.1.3",
+ "ora": "^5.4.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/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==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/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==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native-community/cli-plugin-metro": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.6.tgz",
+ "integrity": "sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg==",
+ "license": "MIT"
+ },
+ "node_modules/@react-native-community/cli-server-api": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.6.tgz",
+ "integrity": "sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native-community/cli-debugger-ui": "12.3.6",
+ "@react-native-community/cli-tools": "12.3.6",
+ "compression": "^1.7.1",
+ "connect": "^3.6.5",
+ "errorhandler": "^1.5.1",
+ "nocache": "^3.0.1",
+ "pretty-format": "^26.6.2",
+ "serve-static": "^1.13.1",
+ "ws": "^7.5.1"
+ }
+ },
+ "node_modules/@react-native-community/cli-server-api/node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@react-native-community/cli-tools": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.6.tgz",
+ "integrity": "sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ==",
+ "license": "MIT",
+ "dependencies": {
+ "appdirsjs": "^1.2.4",
+ "chalk": "^4.1.2",
+ "find-up": "^5.0.0",
+ "mime": "^2.4.1",
+ "node-fetch": "^2.6.0",
+ "open": "^6.2.0",
+ "ora": "^5.4.1",
+ "semver": "^7.5.2",
+ "shell-quote": "^1.7.3",
+ "sudo-prompt": "^9.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-wsl": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/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==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli-types": {
+ "version": "12.3.6",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.6.tgz",
+ "integrity": "sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q==",
+ "license": "MIT",
+ "dependencies": {
+ "joi": "^17.2.1"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/commander": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || >=14"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/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==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native-community/cli/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native/assets-registry": {
+ "version": "0.73.1",
+ "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz",
+ "integrity": "sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/babel-plugin-codegen": {
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz",
+ "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/traverse": "^7.25.3",
+ "@react-native/codegen": "0.83.1"
+ },
+ "engines": {
+ "node": ">= 20.19.4"
+ }
+ },
+ "node_modules/@react-native/babel-preset": {
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz",
+ "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.25.2",
+ "@babel/plugin-proposal-export-default-from": "^7.24.7",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-default-from": "^7.24.7",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.24.7",
+ "@babel/plugin-transform-async-generator-functions": "^7.25.4",
+ "@babel/plugin-transform-async-to-generator": "^7.24.7",
+ "@babel/plugin-transform-block-scoping": "^7.25.0",
+ "@babel/plugin-transform-class-properties": "^7.25.4",
+ "@babel/plugin-transform-classes": "^7.25.4",
+ "@babel/plugin-transform-computed-properties": "^7.24.7",
+ "@babel/plugin-transform-destructuring": "^7.24.8",
+ "@babel/plugin-transform-flow-strip-types": "^7.25.2",
+ "@babel/plugin-transform-for-of": "^7.24.7",
+ "@babel/plugin-transform-function-name": "^7.25.1",
+ "@babel/plugin-transform-literals": "^7.25.2",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.8",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
+ "@babel/plugin-transform-numeric-separator": "^7.24.7",
+ "@babel/plugin-transform-object-rest-spread": "^7.24.7",
+ "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
+ "@babel/plugin-transform-optional-chaining": "^7.24.8",
+ "@babel/plugin-transform-parameters": "^7.24.7",
+ "@babel/plugin-transform-private-methods": "^7.24.7",
+ "@babel/plugin-transform-private-property-in-object": "^7.24.7",
+ "@babel/plugin-transform-react-display-name": "^7.24.7",
+ "@babel/plugin-transform-react-jsx": "^7.25.2",
+ "@babel/plugin-transform-react-jsx-self": "^7.24.7",
+ "@babel/plugin-transform-react-jsx-source": "^7.24.7",
+ "@babel/plugin-transform-regenerator": "^7.24.7",
+ "@babel/plugin-transform-runtime": "^7.24.7",
+ "@babel/plugin-transform-shorthand-properties": "^7.24.7",
+ "@babel/plugin-transform-spread": "^7.24.7",
+ "@babel/plugin-transform-sticky-regex": "^7.24.7",
+ "@babel/plugin-transform-typescript": "^7.25.2",
+ "@babel/plugin-transform-unicode-regex": "^7.24.7",
+ "@babel/template": "^7.25.0",
+ "@react-native/babel-plugin-codegen": "0.83.1",
+ "babel-plugin-syntax-hermes-parser": "0.32.0",
+ "babel-plugin-transform-flow-enums": "^0.0.2",
+ "react-refresh": "^0.14.0"
+ },
+ "engines": {
+ "node": ">= 20.19.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/@react-native/codegen": {
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz",
+ "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.25.2",
+ "@babel/parser": "^7.25.3",
+ "glob": "^7.1.1",
+ "hermes-parser": "0.32.0",
+ "invariant": "^2.2.4",
+ "nullthrows": "^1.1.1",
+ "yargs": "^17.6.2"
+ },
+ "engines": {
+ "node": ">= 20.19.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin": {
+ "version": "0.73.17",
+ "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.17.tgz",
+ "integrity": "sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native-community/cli-server-api": "12.3.6",
+ "@react-native-community/cli-tools": "12.3.6",
+ "@react-native/dev-middleware": "0.73.8",
+ "@react-native/metro-babel-transformer": "0.73.15",
+ "chalk": "^4.0.0",
+ "execa": "^5.1.1",
+ "metro": "^0.80.3",
+ "metro-config": "^0.80.3",
+ "metro-core": "^0.80.3",
+ "node-fetch": "^2.2.0",
+ "readline": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/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==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@react-native/debugger-frontend": {
+ "version": "0.73.3",
+ "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz",
+ "integrity": "sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/dev-middleware": {
+ "version": "0.73.8",
+ "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz",
+ "integrity": "sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@isaacs/ttlcache": "^1.4.1",
+ "@react-native/debugger-frontend": "0.73.3",
+ "chrome-launcher": "^0.15.2",
+ "chromium-edge-launcher": "^1.0.0",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "node-fetch": "^2.2.0",
+ "open": "^7.0.3",
+ "serve-static": "^1.13.1",
+ "temp-dir": "^2.0.0",
+ "ws": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/dev-middleware/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/@react-native/dev-middleware/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/@react-native/dev-middleware/node_modules/open": {
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+ "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native/dev-middleware/node_modules/ws": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz",
+ "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==",
+ "license": "MIT",
+ "dependencies": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "node_modules/@react-native/gradle-plugin": {
+ "version": "0.73.4",
+ "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz",
+ "integrity": "sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/js-polyfills": {
+ "version": "0.73.1",
+ "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz",
+ "integrity": "sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/metro-babel-transformer": {
+ "version": "0.73.15",
+ "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz",
+ "integrity": "sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@react-native/babel-preset": "0.73.21",
+ "hermes-parser": "0.15.0",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-plugin-codegen": {
+ "version": "0.73.4",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz",
+ "integrity": "sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native/codegen": "0.73.3"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-preset": {
+ "version": "0.73.21",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.21.tgz",
+ "integrity": "sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.18.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.20.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.20.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.18.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-async-to-generator": "^7.20.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.20.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.20.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-private-methods": "^7.22.5",
+ "@babel/plugin-transform-private-property-in-object": "^7.22.11",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@react-native/babel-plugin-codegen": "0.73.4",
+ "babel-plugin-transform-flow-enums": "^0.0.2",
+ "react-refresh": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/codegen": {
+ "version": "0.73.3",
+ "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.3.tgz",
+ "integrity": "sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.0",
+ "flow-parser": "^0.206.0",
+ "glob": "^7.1.1",
+ "invariant": "^2.2.4",
+ "jscodeshift": "^0.14.0",
+ "mkdirp": "^0.5.1",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/preset-env": "^7.1.6"
+ }
+ },
+ "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-estree": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz",
+ "integrity": "sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==",
+ "license": "MIT"
+ },
+ "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-parser": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz",
+ "integrity": "sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "hermes-estree": "0.15.0"
+ }
+ },
+ "node_modules/@react-native/metro-babel-transformer/node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/@react-native/normalize-color": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz",
+ "integrity": "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==",
+ "license": "MIT"
+ },
+ "node_modules/@react-native/normalize-colors": {
+ "version": "0.73.2",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz",
+ "integrity": "sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==",
+ "license": "MIT"
+ },
+ "node_modules/@react-native/virtualized-lists": {
+ "version": "0.73.4",
+ "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz",
+ "integrity": "sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==",
+ "license": "MIT",
+ "dependencies": {
+ "invariant": "^2.2.4",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "react-native": "*"
+ }
+ },
+ "node_modules/@react-navigation/bottom-tabs": {
+ "version": "6.6.1",
+ "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.6.1.tgz",
+ "integrity": "sha512-9oD4cypEBjPuaMiu9tevWGiQ4w/d6l3HNhcJ1IjXZ24xvYDSs0mqjUcdt8SWUolCvRrYc/DmNBLlT83bk0bHTw==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.31",
+ "color": "^4.2.3",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-screens": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/core": {
+ "version": "6.4.17",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.17.tgz",
+ "integrity": "sha512-Nd76EpomzChWAosGqWOYE3ItayhDzIEzzZsT7PfGcRFDgW5miHV2t4MZcq9YIK4tzxZjVVpYbIynOOQQd1e0Cg==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-navigation/routers": "^6.1.9",
+ "escape-string-regexp": "^4.0.0",
+ "nanoid": "^3.1.23",
+ "query-string": "^7.1.3",
+ "react-is": "^16.13.0",
+ "use-latest-callback": "^0.2.1"
+ },
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/@react-navigation/elements": {
+ "version": "1.3.31",
+ "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.31.tgz",
+ "integrity": "sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/native": {
+ "version": "6.1.18",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.18.tgz",
+ "integrity": "sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-navigation/core": "^6.4.17",
+ "escape-string-regexp": "^4.0.0",
+ "fast-deep-equal": "^3.1.3",
+ "nanoid": "^3.1.23"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@react-navigation/native-stack": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.11.0.tgz",
+ "integrity": "sha512-U5EcUB9Q2NQspCFwYGGNJm0h6wBCOv7T30QjndmvlawLkNt7S7KWbpWyxS9XBHSIKF57RgWjfxuJNTgTstpXxw==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.31",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-screens": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/routers": {
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.9.tgz",
+ "integrity": "sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==",
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.1.23"
+ }
+ },
+ "node_modules/@segment/loosely-validate-event": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz",
+ "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==",
+ "dependencies": {
+ "component-type": "^1.2.1",
+ "join-component": "^1.1.0"
+ }
+ },
+ "node_modules/@sideway/address": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
+ "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^9.0.0"
+ }
+ },
+ "node_modules/@sideway/formula": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
+ "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@sideway/pinpoint": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
+ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "license": "MIT"
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@sinonjs/commons": "^3.0.0"
+ }
+ },
+ "node_modules/@types/hammerjs": {
+ "version": "2.0.46",
+ "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz",
+ "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "25.0.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz",
+ "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.16.0"
+ }
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.35",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz",
+ "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "license": "MIT"
+ },
+ "node_modules/@urql/core": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz",
+ "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-typed-document-node/core": "^3.1.0",
+ "wonka": "^4.0.14"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/@urql/exchange-retry": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz",
+ "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==",
+ "license": "MIT",
+ "dependencies": {
+ "@urql/core": ">=2.3.1",
+ "wonka": "^4.0.14"
+ },
+ "peerDependencies": {
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0"
+ }
+ },
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.7.13",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz",
+ "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==",
+ "deprecated": "this version is no longer supported, please update to at least 0.8.*",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "license": "MIT",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/anser": {
+ "version": "1.4.10",
+ "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
+ "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==",
+ "license": "MIT"
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-escapes/node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-fragments": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz",
+ "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==",
+ "license": "MIT",
+ "dependencies": {
+ "colorette": "^1.0.7",
+ "slice-ansi": "^2.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "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==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "license": "MIT"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/anymatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/appdirsjs": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz",
+ "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==",
+ "license": "MIT"
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/argsarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/argsarray/-/argsarray-0.0.1.tgz",
+ "integrity": "sha512-u96dg2GcAKtpTrBdDoFIM7PjcBA+6rSP0OR94MOReNRyUECL6MtQt5XXmRr4qrftYaef9+l5hcpO5te7sML1Cg==",
+ "license": "WTFPL"
+ },
+ "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==",
+ "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-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "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/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+ "license": "MIT"
+ },
+ "node_modules/ast-types": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz",
+ "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+ "license": "MIT"
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/babel-core": {
+ "version": "7.0.0-bridge.0",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
+ "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz",
+ "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.7",
+ "@babel/helper-define-polyfill-provider": "^0.6.5",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2/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-plugin-polyfill-corejs3": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz",
+ "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.5",
+ "core-js-compat": "^3.43.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz",
+ "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.5"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-react-native-web": {
+ "version": "0.18.12",
+ "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.12.tgz",
+ "integrity": "sha512-4djr9G6fMdwQoD6LQ7hOKAm39+y12flWgovAqS1k5O8f42YQ3A1FFMyV5kKfetZuGhZO5BmNmOdRRZQ1TixtDw==",
+ "license": "MIT"
+ },
+ "node_modules/babel-plugin-syntax-hermes-parser": {
+ "version": "0.32.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz",
+ "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "hermes-parser": "0.32.0"
+ }
+ },
+ "node_modules/babel-plugin-syntax-trailing-function-commas": {
+ "version": "7.0.0-beta.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz",
+ "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==",
+ "license": "MIT"
+ },
+ "node_modules/babel-plugin-transform-flow-enums": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz",
+ "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/plugin-syntax-flow": "^7.12.1"
+ }
+ },
+ "node_modules/babel-preset-expo": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-10.0.2.tgz",
+ "integrity": "sha512-hg06qdSTK7MjKmFXSiq6cFoIbI3n3uT8a3NI2EZoISWhu+tedCj4DQduwi+3adFuRuYvAwECI0IYn/5iGh5zWQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/plugin-proposal-decorators": "^7.12.9",
+ "@babel/plugin-transform-export-namespace-from": "^7.22.11",
+ "@babel/plugin-transform-object-rest-spread": "^7.12.13",
+ "@babel/plugin-transform-parameters": "^7.22.15",
+ "@babel/preset-env": "^7.20.0",
+ "@babel/preset-react": "^7.22.15",
+ "@react-native/babel-preset": "^0.73.18",
+ "babel-plugin-react-native-web": "~0.18.10",
+ "react-refresh": "0.14.0"
+ }
+ },
+ "node_modules/babel-preset-expo/node_modules/@react-native/babel-plugin-codegen": {
+ "version": "0.73.4",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz",
+ "integrity": "sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native/codegen": "0.73.3"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset": {
+ "version": "0.73.21",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.21.tgz",
+ "integrity": "sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.18.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.20.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.20.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.18.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-async-to-generator": "^7.20.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.20.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.20.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-private-methods": "^7.22.5",
+ "@babel/plugin-transform-private-property-in-object": "^7.22.11",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@react-native/babel-plugin-codegen": "0.73.4",
+ "babel-plugin-transform-flow-enums": "^0.0.2",
+ "react-refresh": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/babel-preset-expo/node_modules/@react-native/codegen": {
+ "version": "0.73.3",
+ "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.3.tgz",
+ "integrity": "sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.0",
+ "flow-parser": "^0.206.0",
+ "glob": "^7.1.1",
+ "invariant": "^2.2.4",
+ "jscodeshift": "^0.14.0",
+ "mkdirp": "^0.5.1",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/preset-env": "^7.1.6"
+ }
+ },
+ "node_modules/babel-preset-expo/node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/babel-preset-expo/node_modules/react-refresh": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/babel-preset-fbjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz",
+ "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
+ "@babel/plugin-syntax-class-properties": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0",
+ "@babel/plugin-transform-for-of": "^7.0.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-member-expression-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-object-super": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-property-literals": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
+ "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "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==",
+ "license": "MIT"
+ },
+ "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==",
+ "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.9.11",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz",
+ "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==",
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.js"
+ }
+ },
+ "node_modules/better-opn": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz",
+ "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==",
+ "license": "MIT",
+ "dependencies": {
+ "open": "^8.0.4"
+ },
+ "engines": {
+ "node": ">=12.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==",
+ "license": "Unlicense",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bl/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==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/blueimp-md5": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
+ "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==",
+ "license": "MIT"
+ },
+ "node_modules/bplist-creator": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz",
+ "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==",
+ "license": "MIT",
+ "dependencies": {
+ "stream-buffers": "2.2.x"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "big-integer": "1.6.x"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
+ "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.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
+ "node-releases": "^2.0.27",
+ "update-browserslist-db": "^1.2.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+ "license": "MIT"
+ },
+ "node_modules/buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
+ "license": "MIT"
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "license": "MIT"
+ },
+ "node_modules/builtins": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+ "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
+ "license": "MIT"
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cacache": {
+ "version": "15.3.0",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
+ "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^1.0.0",
+ "@npmcli/move-file": "^1.0.1",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "glob": "^7.1.4",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^6.0.0",
+ "minipass": "^3.1.1",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.2",
+ "mkdirp": "^1.0.3",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^8.0.1",
+ "tar": "^6.0.2",
+ "unique-filename": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cacache/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "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==",
+ "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==",
+ "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/caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
+ "license": "MIT",
+ "dependencies": {
+ "caller-callsite": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001761",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz",
+ "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==",
+ "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/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "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/charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chrome-launcher": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz",
+ "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0"
+ },
+ "bin": {
+ "print-chrome-path": "bin/print-chrome-path.js"
+ },
+ "engines": {
+ "node": ">=12.13.0"
+ }
+ },
+ "node_modules/chromium-edge-launcher": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz",
+ "integrity": "sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0",
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/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==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "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==",
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/colorette": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+ "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
+ "license": "MIT"
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/command-exists": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "license": "MIT"
+ },
+ "node_modules/component-type": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.2.tgz",
+ "integrity": "sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
+ "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "compressible": "~2.0.18",
+ "debug": "2.6.9",
+ "negotiator": "~0.6.4",
+ "on-headers": "~1.1.0",
+ "safe-buffer": "5.2.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/compression/node_modules/negotiator": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/connect": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
+ "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.2",
+ "parseurl": "~1.3.3",
+ "utils-merge": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/connect/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/connect/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "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",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "license": "MIT"
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.47.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz",
+ "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==",
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "license": "MIT"
+ },
+ "node_modules/cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "license": "MIT",
+ "dependencies": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cross-fetch": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz",
+ "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "node-fetch": "^2.7.0"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz",
+ "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
+ "license": "MIT",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dag-map": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz",
+ "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==",
+ "license": "MIT"
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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/dayjs": {
+ "version": "1.11.19",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
+ "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==",
+ "license": "MIT"
+ },
+ "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/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+ "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "execa": "^1.0.0",
+ "ip-regex": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+ "license": "MIT",
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defaults/node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "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==",
+ "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",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "license": "MIT",
+ "engines": {
+ "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==",
+ "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/del": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
+ "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
+ "license": "MIT",
+ "dependencies": {
+ "globby": "^11.0.1",
+ "graceful-fs": "^4.2.4",
+ "is-glob": "^4.0.1",
+ "is-path-cwd": "^2.2.0",
+ "is-path-inside": "^3.0.2",
+ "p-map": "^4.0.0",
+ "rimraf": "^3.0.2",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/denodeify": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
+ "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==",
+ "license": "MIT"
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/deprecated-react-native-prop-types": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz",
+ "integrity": "sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native/normalize-colors": "^0.73.0",
+ "invariant": "^2.2.4",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "license": "Apache-2.0",
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "16.4.7",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
+ "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/dotenv-expand": {
+ "version": "11.0.7",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz",
+ "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dotenv": "^16.4.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "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==",
+ "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/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.267",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz",
+ "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==",
+ "license": "ISC"
+ },
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/env-editor": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz",
+ "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/envinfo": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz",
+ "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==",
+ "license": "MIT",
+ "bin": {
+ "envinfo": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/error-stack-parser": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+ "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "stackframe": "^1.3.4"
+ }
+ },
+ "node_modules/errorhandler": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz",
+ "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "escape-html": "~1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.24.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz",
+ "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==",
+ "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-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==",
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "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==",
+ "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-to-primitive": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/exec-async": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz",
+ "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==",
+ "license": "MIT"
+ },
+ "node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/expo": {
+ "version": "50.0.21",
+ "resolved": "https://registry.npmjs.org/expo/-/expo-50.0.21.tgz",
+ "integrity": "sha512-lY+HJdQcsTUbEtPhgT3Y2+WwKZdJiYN0Zq5yAOT9293N1TbdLbHCNkOUtFfTmK0JjwgSKbbH4kRlue7a4MJflg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.0",
+ "@expo/cli": "0.17.13",
+ "@expo/config": "8.5.6",
+ "@expo/config-plugins": "7.9.2",
+ "@expo/metro-config": "0.17.8",
+ "@expo/vector-icons": "^14.0.0",
+ "babel-preset-expo": "~10.0.2",
+ "expo-asset": "~9.0.2",
+ "expo-file-system": "~16.0.9",
+ "expo-font": "~11.10.3",
+ "expo-keep-awake": "~12.8.2",
+ "expo-modules-autolinking": "1.10.3",
+ "expo-modules-core": "1.11.14",
+ "fbemitter": "^3.0.0",
+ "whatwg-url-without-unicode": "8.0.0-3"
+ },
+ "bin": {
+ "expo": "bin/cli"
+ }
+ },
+ "node_modules/expo-asset": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-9.0.2.tgz",
+ "integrity": "sha512-PzYKME1MgUOoUvwtdzhAyXkjXOXGiSYqGKG/MsXwWr0Ef5wlBaBm2DCO9V6KYbng5tBPFu6hTjoRNil1tBOSow==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-native/assets-registry": "~0.73.1",
+ "blueimp-md5": "^2.10.0",
+ "expo-constants": "~15.4.0",
+ "expo-file-system": "~16.0.0",
+ "invariant": "^2.2.4",
+ "md5-file": "^3.2.3"
+ }
+ },
+ "node_modules/expo-constants": {
+ "version": "15.4.6",
+ "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-15.4.6.tgz",
+ "integrity": "sha512-vizE69dww2Vl0PTWWvDmK0Jo2/J+WzdcMZlA05YEnEYofQuhKxTVsiuipf79mSOmFavt4UQYC1UnzptzKyfmiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/config": "~8.5.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-file-system": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-16.0.9.tgz",
+ "integrity": "sha512-3gRPvKVv7/Y7AdD9eHMIdfg5YbUn2zbwKofjsloTI5sEC57SLUFJtbLvUCz9Pk63DaSQ7WIE1JM0EASyvuPbuw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-font": {
+ "version": "11.10.3",
+ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.10.3.tgz",
+ "integrity": "sha512-q1Td2zUvmLbCA9GV4OG4nLPw5gJuNY1VrPycsnemN1m8XWTzzs8nyECQQqrcBhgulCgcKZZJJ6U0kC2iuSoQHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "fontfaceobserver": "^2.1.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-image-loader": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-4.6.0.tgz",
+ "integrity": "sha512-RHQTDak7/KyhWUxikn2yNzXL7i2cs16cMp6gEAgkHOjVhoCJQoOJ0Ljrt4cKQ3IowxgCuOrAgSUzGkqs7omj8Q==",
+ "license": "MIT",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-image-picker": {
+ "version": "14.7.1",
+ "resolved": "https://registry.npmjs.org/expo-image-picker/-/expo-image-picker-14.7.1.tgz",
+ "integrity": "sha512-ILQVOJgI3aEzrDmCFGDPtpAepYkn8mot8G7vfQ51BfFdQbzL6N3Wm1fS/ofdWlAZJl/qT2DwaIh5xYmf3SyGZA==",
+ "license": "MIT",
+ "dependencies": {
+ "expo-image-loader": "~4.6.0"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-keep-awake": {
+ "version": "12.8.2",
+ "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.8.2.tgz",
+ "integrity": "sha512-uiQdGbSX24Pt8nGbnmBtrKq6xL/Tm3+DuDRGBk/3ZE/HlizzNosGRIufIMJ/4B4FRw4dw8KU81h2RLuTjbay6g==",
+ "license": "MIT",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-linear-gradient": {
+ "version": "12.7.2",
+ "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-12.7.2.tgz",
+ "integrity": "sha512-Wwb2EF18ywgrlTodcXJ6Yt/UEcKitRMdXPNyP/IokmeKh4emoq9DxZJpZdkXm3HUTLlbRpi6/t32jrFVqXB9AQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/expo-modules-autolinking": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.10.3.tgz",
+ "integrity": "sha512-pn4n2Dl4iRh/zUeiChjRIe1C7EqOw1qhccr85viQV7W6l5vgRpY0osE51ij5LKg/kJmGRcJfs12+PwbdTplbKw==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/config": "~8.5.0",
+ "chalk": "^4.1.0",
+ "commander": "^7.2.0",
+ "fast-glob": "^3.2.5",
+ "find-up": "^5.0.0",
+ "fs-extra": "^9.1.0"
+ },
+ "bin": {
+ "expo-modules-autolinking": "bin/expo-modules-autolinking.js"
+ }
+ },
+ "node_modules/expo-modules-autolinking/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==",
+ "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/expo-modules-autolinking/node_modules/jsonfile": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/expo-modules-autolinking/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/expo-modules-core": {
+ "version": "1.11.14",
+ "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.11.14.tgz",
+ "integrity": "sha512-+W+A/jYJdWzA43KEAixhoArEb0EzTsS6T3tObYkZ1EHk8LaBT3hnFant52CnFTeVY4pqv4mgutBua2UQQMAWFA==",
+ "license": "MIT",
+ "dependencies": {
+ "invariant": "^2.2.4"
+ }
+ },
+ "node_modules/expo-sqlite": {
+ "version": "13.4.0",
+ "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-13.4.0.tgz",
+ "integrity": "sha512-5f7d2EDM+pgerM33KndtX4gWw2nuVaXY68nnqx7PhkiYeyEmeNfZ29bIFtpBzNb/L5l0/DTtRxuSqftxbknFtw==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/websql": "^1.0.1"
+ },
+ "peerDependencies": {
+ "expo": "*"
+ }
+ },
+ "node_modules/exponential-backoff": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
+ "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
+ "license": "Apache-2.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==",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-xml-parser": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz",
+ "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "strnum": "^1.1.1"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/fbemitter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz",
+ "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "fbjs": "^3.0.0"
+ }
+ },
+ "node_modules/fbjs": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz",
+ "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-fetch": "^3.1.5",
+ "fbjs-css-vars": "^1.0.0",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^1.0.35"
+ }
+ },
+ "node_modules/fbjs-css-vars": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz",
+ "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==",
+ "license": "MIT"
+ },
+ "node_modules/fetch-retry": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz",
+ "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==",
+ "license": "MIT"
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/filter-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
+ "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "license": "MIT",
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
+ "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/find-yarn-workspace-root": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
+ "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "micromatch": "^4.0.2"
+ }
+ },
+ "node_modules/flow-enums-runtime": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz",
+ "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==",
+ "license": "MIT"
+ },
+ "node_modules/flow-parser": {
+ "version": "0.206.0",
+ "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz",
+ "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/fontfaceobserver": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz",
+ "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/for-each": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz",
+ "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.35"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/freeport-async": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz",
+ "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "license": "ISC"
+ },
+ "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==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "functions-have-names": "^1.2.3",
+ "hasown": "^2.0.2",
+ "is-callable": "^1.2.7"
+ },
+ "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==",
+ "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==",
+ "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-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "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==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
+ "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/getenv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz",
+ "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "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==",
+ "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/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "license": "MIT",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "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==",
+ "license": "ISC"
+ },
+ "node_modules/graphql": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz",
+ "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/graphql-tag": {
+ "version": "2.12.6",
+ "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz",
+ "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hermes-estree": {
+ "version": "0.32.0",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz",
+ "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/hermes-parser": {
+ "version": "0.32.0",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz",
+ "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "hermes-estree": "0.32.0"
+ }
+ },
+ "node_modules/hermes-profile-transformer": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz",
+ "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
+ "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/html-parse-stringify": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
+ "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
+ "license": "MIT",
+ "dependencies": {
+ "void-elements": "3.1.0"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-errors/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/i18next": {
+ "version": "23.16.8",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz",
+ "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://locize.com"
+ },
+ {
+ "type": "individual",
+ "url": "https://locize.com/i18next.html"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.23.2"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "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": "BSD-3-Clause"
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz",
+ "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==",
+ "license": "MIT",
+ "dependencies": {
+ "queue": "6.0.2"
+ },
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=16.x"
+ }
+ },
+ "node_modules/immediate": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz",
+ "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==",
+ "license": "MIT"
+ },
+ "node_modules/import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
+ "license": "MIT",
+ "dependencies": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "license": "ISC"
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC"
+ },
+ "node_modules/internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+ "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+ "license": "MIT",
+ "dependencies": {
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.2",
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "node_modules/ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "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==",
+ "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-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "license": "MIT"
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "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==",
+ "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==",
+ "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-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.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==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "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==",
+ "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": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-invalid-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz",
+ "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-glob": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-invalid-path/node_modules/is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-invalid-path/node_modules/is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^1.0.0"
+ },
+ "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==",
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
+ "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-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-valid-path": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz",
+ "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==",
+ "license": "MIT",
+ "dependencies": {
+ "is-invalid-path": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
+ "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "^29.7.0",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+ "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^29.6.3",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.7.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
+ "node_modules/jest-mock": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
+ "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-util": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-util/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
+ "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^29.6.3",
+ "leven": "^3.1.0",
+ "pretty-format": "^29.7.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-validate/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
+ "node_modules/jest-worker": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "jest-util": "^29.7.0",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jimp-compact": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz",
+ "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==",
+ "license": "MIT"
+ },
+ "node_modules/joi": {
+ "version": "17.13.3",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz",
+ "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^9.3.0",
+ "@hapi/topo": "^5.1.0",
+ "@sideway/address": "^4.1.5",
+ "@sideway/formula": "^3.0.1",
+ "@sideway/pinpoint": "^2.0.0"
+ }
+ },
+ "node_modules/join-component": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz",
+ "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==",
+ "license": "MIT"
+ },
+ "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/js-yaml": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsc-android": {
+ "version": "250231.0.0",
+ "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz",
+ "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/jsc-safe-url": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz",
+ "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==",
+ "license": "0BSD"
+ },
+ "node_modules/jscodeshift": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz",
+ "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.13.16",
+ "@babel/parser": "^7.13.16",
+ "@babel/plugin-proposal-class-properties": "^7.13.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
+ "@babel/plugin-proposal-optional-chaining": "^7.13.12",
+ "@babel/plugin-transform-modules-commonjs": "^7.13.8",
+ "@babel/preset-flow": "^7.13.13",
+ "@babel/preset-typescript": "^7.13.0",
+ "@babel/register": "^7.13.16",
+ "babel-core": "^7.0.0-bridge.0",
+ "chalk": "^4.1.2",
+ "flow-parser": "0.*",
+ "graceful-fs": "^4.2.4",
+ "micromatch": "^4.0.4",
+ "neo-async": "^2.5.0",
+ "node-dir": "^0.1.17",
+ "recast": "^0.21.0",
+ "temp": "^0.8.4",
+ "write-file-atomic": "^2.3.0"
+ },
+ "bin": {
+ "jscodeshift": "bin/jscodeshift.js"
+ },
+ "peerDependencies": {
+ "@babel/preset-env": "^7.1.6"
+ }
+ },
+ "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/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "license": "MIT"
+ },
+ "node_modules/json-schema-deref-sync": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz",
+ "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==",
+ "license": "MIT",
+ "dependencies": {
+ "clone": "^2.1.2",
+ "dag-map": "~1.0.0",
+ "is-valid-path": "^0.1.1",
+ "lodash": "^4.17.13",
+ "md5": "~2.2.0",
+ "memory-cache": "~0.2.0",
+ "traverse": "~0.6.6",
+ "valid-url": "~1.0.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/json-schema-deref-sync/node_modules/md5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
+ "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "charenc": "~0.0.1",
+ "crypt": "~0.0.1",
+ "is-buffer": "~1.1.1"
+ }
+ },
+ "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": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "license": "MIT",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lighthouse-logger": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz",
+ "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "debug": "^2.6.9",
+ "marky": "^1.2.2"
+ }
+ },
+ "node_modules/lighthouse-logger/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/lighthouse-logger/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/lightningcss": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz",
+ "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "detect-libc": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.19.0",
+ "lightningcss-darwin-x64": "1.19.0",
+ "lightningcss-linux-arm-gnueabihf": "1.19.0",
+ "lightningcss-linux-arm64-gnu": "1.19.0",
+ "lightningcss-linux-arm64-musl": "1.19.0",
+ "lightningcss-linux-x64-gnu": "1.19.0",
+ "lightningcss-linux-x64-musl": "1.19.0",
+ "lightningcss-win32-x64-msvc": "1.19.0"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz",
+ "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz",
+ "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz",
+ "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz",
+ "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz",
+ "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz",
+ "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz",
+ "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz",
+ "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
+ "license": "MIT"
+ },
+ "node_modules/log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/log-symbols/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/log-symbols/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/log-symbols/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/log-symbols/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "license": "MIT"
+ },
+ "node_modules/log-symbols/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/log-symbols/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/log-symbols/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/logkitty": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz",
+ "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-fragments": "^0.2.1",
+ "dayjs": "^1.8.15",
+ "yargs": "^15.1.0"
+ },
+ "bin": {
+ "logkitty": "bin/logkitty.js"
+ }
+ },
+ "node_modules/logkitty/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/logkitty/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/logkitty/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/logkitty/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/logkitty/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/logkitty/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/logkitty/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==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/logkitty/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/logkitty/node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "license": "ISC"
+ },
+ "node_modules/logkitty/node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/logkitty/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "license": "ISC",
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "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/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/marky": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz",
+ "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==",
+ "license": "Apache-2.0"
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
+ }
+ },
+ "node_modules/md5-file": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz",
+ "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-alloc": "^1.1.0"
+ },
+ "bin": {
+ "md5-file": "cli.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/md5hex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz",
+ "integrity": "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==",
+ "license": "MIT"
+ },
+ "node_modules/memoize-one": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
+ "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==",
+ "license": "MIT"
+ },
+ "node_modules/memory-cache": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz",
+ "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/merge-options": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz",
+ "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-obj": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/metro": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.12.tgz",
+ "integrity": "sha512-1UsH5FzJd9quUsD1qY+zUG4JY3jo3YEMxbMYH9jT6NK3j4iORhlwTK8fYTfAUBhDKjgLfKjAh7aoazNE23oIRA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.0",
+ "@babel/parser": "^7.20.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "accepts": "^1.3.7",
+ "chalk": "^4.0.0",
+ "ci-info": "^2.0.0",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "denodeify": "^1.2.1",
+ "error-stack-parser": "^2.0.6",
+ "flow-enums-runtime": "^0.0.6",
+ "graceful-fs": "^4.2.4",
+ "hermes-parser": "0.23.1",
+ "image-size": "^1.0.2",
+ "invariant": "^2.2.4",
+ "jest-worker": "^29.6.3",
+ "jsc-safe-url": "^0.2.2",
+ "lodash.throttle": "^4.1.1",
+ "metro-babel-transformer": "0.80.12",
+ "metro-cache": "0.80.12",
+ "metro-cache-key": "0.80.12",
+ "metro-config": "0.80.12",
+ "metro-core": "0.80.12",
+ "metro-file-map": "0.80.12",
+ "metro-resolver": "0.80.12",
+ "metro-runtime": "0.80.12",
+ "metro-source-map": "0.80.12",
+ "metro-symbolicate": "0.80.12",
+ "metro-transform-plugins": "0.80.12",
+ "metro-transform-worker": "0.80.12",
+ "mime-types": "^2.1.27",
+ "nullthrows": "^1.1.1",
+ "serialize-error": "^2.1.0",
+ "source-map": "^0.5.6",
+ "strip-ansi": "^6.0.0",
+ "throat": "^5.0.0",
+ "ws": "^7.5.10",
+ "yargs": "^17.6.2"
+ },
+ "bin": {
+ "metro": "src/cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-babel-transformer": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.12.tgz",
+ "integrity": "sha512-YZziRs0MgA3pzCkkvOoQRXjIoVjvrpi/yRlJnObyIvMP6lFdtyG4nUGIwGY9VXnBvxmXD6mPY2e+NSw6JAyiRg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "flow-enums-runtime": "^0.0.6",
+ "hermes-parser": "0.23.1",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-babel-transformer/node_modules/hermes-estree": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz",
+ "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==",
+ "license": "MIT"
+ },
+ "node_modules/metro-babel-transformer/node_modules/hermes-parser": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz",
+ "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==",
+ "license": "MIT",
+ "dependencies": {
+ "hermes-estree": "0.23.1"
+ }
+ },
+ "node_modules/metro-cache": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.12.tgz",
+ "integrity": "sha512-p5kNHh2KJ0pbQI/H7ZBPCEwkyNcSz7OUkslzsiIWBMPQGFJ/xArMwkV7I+GJcWh+b4m6zbLxE5fk6fqbVK1xGA==",
+ "license": "MIT",
+ "dependencies": {
+ "exponential-backoff": "^3.1.1",
+ "flow-enums-runtime": "^0.0.6",
+ "metro-core": "0.80.12"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-cache-key": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.12.tgz",
+ "integrity": "sha512-o4BspKnugg/pE45ei0LGHVuBJXwRgruW7oSFAeSZvBKA/sGr0UhOGY3uycOgWInnS3v5yTTfiBA9lHlNRhsvGA==",
+ "license": "MIT",
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-config": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.12.tgz",
+ "integrity": "sha512-4rwOWwrhm62LjB12ytiuR5NgK1ZBNr24/He8mqCsC+HXZ+ATbrewLNztzbAZHtFsrxP4D4GLTGgh96pCpYLSAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "connect": "^3.6.5",
+ "cosmiconfig": "^5.0.5",
+ "flow-enums-runtime": "^0.0.6",
+ "jest-validate": "^29.6.3",
+ "metro": "0.80.12",
+ "metro-cache": "0.80.12",
+ "metro-core": "0.80.12",
+ "metro-runtime": "0.80.12"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-core": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.12.tgz",
+ "integrity": "sha512-QqdJ/yAK+IpPs2HU/h5v2pKEdANBagSsc6DRSjnwSyJsCoHlmyJKCaCJ7KhWGx+N4OHxh37hoA8fc2CuZbx0Fw==",
+ "license": "MIT",
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6",
+ "lodash.throttle": "^4.1.1",
+ "metro-resolver": "0.80.12"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-file-map": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.12.tgz",
+ "integrity": "sha512-sYdemWSlk66bWzW2wp79kcPMzwuG32x1ZF3otI0QZTmrnTaaTiGyhE66P1z6KR4n2Eu5QXiABa6EWbAQv0r8bw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "^3.0.3",
+ "debug": "^2.2.0",
+ "fb-watchman": "^2.0.0",
+ "flow-enums-runtime": "^0.0.6",
+ "graceful-fs": "^4.2.4",
+ "invariant": "^2.2.4",
+ "jest-worker": "^29.6.3",
+ "micromatch": "^4.0.4",
+ "node-abort-controller": "^3.1.1",
+ "nullthrows": "^1.1.1",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/metro-file-map/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/metro-file-map/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/metro-minify-terser": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.12.tgz",
+ "integrity": "sha512-muWzUw3y5k+9083ZoX9VaJLWEV2Jcgi+Oan0Mmb/fBNMPqP9xVDuy4pOMn/HOiGndgfh/MK7s4bsjkyLJKMnXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6",
+ "terser": "^5.15.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-resolver": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.12.tgz",
+ "integrity": "sha512-PR24gYRZnYHM3xT9pg6BdbrGbM/Cu1TcyIFBVlAk7qDAuHkUNQ1nMzWumWs+kwSvtd9eZGzHoucGJpTUEeLZAw==",
+ "license": "MIT",
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-runtime": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.12.tgz",
+ "integrity": "sha512-LIx7+92p5rpI0i6iB4S4GBvvLxStNt6fF0oPMaUd1Weku7jZdfkCZzmrtDD9CSQ6EPb0T9NUZoyXIxlBa3wOCw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.25.0",
+ "flow-enums-runtime": "^0.0.6"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-source-map": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.12.tgz",
+ "integrity": "sha512-o+AXmE7hpvM8r8MKsx7TI21/eerYYy2DCDkWfoBkv+jNkl61khvDHlQn0cXZa6lrcNZiZkl9oHSMcwLLIrFmpw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "flow-enums-runtime": "^0.0.6",
+ "invariant": "^2.2.4",
+ "metro-symbolicate": "0.80.12",
+ "nullthrows": "^1.1.1",
+ "ob1": "0.80.12",
+ "source-map": "^0.5.6",
+ "vlq": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-source-map/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-symbolicate": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.12.tgz",
+ "integrity": "sha512-/dIpNdHksXkGHZXARZpL7doUzHqSNxgQ8+kQGxwpJuHnDhGkENxB5PS2QBaTDdEcmyTMjS53CN1rl9n1gR6fmw==",
+ "license": "MIT",
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6",
+ "invariant": "^2.2.4",
+ "metro-source-map": "0.80.12",
+ "nullthrows": "^1.1.1",
+ "source-map": "^0.5.6",
+ "through2": "^2.0.1",
+ "vlq": "^1.0.0"
+ },
+ "bin": {
+ "metro-symbolicate": "src/index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-symbolicate/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro-transform-plugins": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.12.tgz",
+ "integrity": "sha512-WQWp00AcZvXuQdbjQbx1LzFR31IInlkCDYJNRs6gtEtAyhwpMMlL2KcHmdY+wjDO9RPcliZ+Xl1riOuBecVlPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.20.0",
+ "flow-enums-runtime": "^0.0.6",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-transform-worker": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.12.tgz",
+ "integrity": "sha512-KAPFN1y3eVqEbKLx1I8WOarHPqDMUa8WelWxaJCNKO/yHCP26zELeqTJvhsQup+8uwB6EYi/sp0b6TGoh6lOEA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.0",
+ "@babel/parser": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "flow-enums-runtime": "^0.0.6",
+ "metro": "0.80.12",
+ "metro-babel-transformer": "0.80.12",
+ "metro-cache": "0.80.12",
+ "metro-cache-key": "0.80.12",
+ "metro-minify-terser": "0.80.12",
+ "metro-source-map": "0.80.12",
+ "metro-transform-plugins": "0.80.12",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro/node_modules/ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "license": "MIT"
+ },
+ "node_modules/metro/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/metro/node_modules/hermes-estree": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz",
+ "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==",
+ "license": "MIT"
+ },
+ "node_modules/metro/node_modules/hermes-parser": {
+ "version": "0.23.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz",
+ "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==",
+ "license": "MIT",
+ "dependencies": {
+ "hermes-estree": "0.23.1"
+ }
+ },
+ "node_modules/metro/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/metro/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/metro/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==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/metro/node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+ "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "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/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "license": "MIT"
+ },
+ "node_modules/nested-error-stacks": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz",
+ "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==",
+ "license": "MIT"
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "license": "MIT"
+ },
+ "node_modules/nocache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz",
+ "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/node-abort-controller": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
+ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
+ "license": "MIT"
+ },
+ "node_modules/node-dir": {
+ "version": "0.1.17",
+ "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
+ "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==",
+ "license": "MIT",
+ "dependencies": {
+ "minimatch": "^3.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10.5"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-forge": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz",
+ "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==",
+ "license": "(BSD-3-Clause OR GPL-2.0)",
+ "engines": {
+ "node": ">= 6.13.0"
+ }
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "license": "MIT"
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.27",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
+ "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
+ "license": "MIT"
+ },
+ "node_modules/node-stream-zip": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz",
+ "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/antelle"
+ }
+ },
+ "node_modules/noop-fn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/noop-fn/-/noop-fn-1.0.0.tgz",
+ "integrity": "sha512-pQ8vODlgXt2e7A3mIbFDlizkr46r75V+BJxVAyat8Jl7YmI513gG5cfyRL0FedKraoZ+VAouI1h4/IWpus5pcQ==",
+ "license": "MIT"
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-package-arg": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz",
+ "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==",
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^3.0.2",
+ "osenv": "^0.1.5",
+ "semver": "^5.6.0",
+ "validate-npm-package-name": "^3.0.0"
+ }
+ },
+ "node_modules/npm-package-arg/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/nullthrows": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
+ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==",
+ "license": "MIT"
+ },
+ "node_modules/ob1": {
+ "version": "0.80.12",
+ "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.12.tgz",
+ "integrity": "sha512-VMArClVT6LkhUGpnuEoBuyjG9rzUyEzg4PDkav6wK1cLhOK02gPCYFxoiB4mqVnrMhDpIzJcrGNAMVi9P+hXrw==",
+ "license": "MIT",
+ "dependencies": {
+ "flow-enums-runtime": "^0.0.6"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/on-headers": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
+ "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "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/ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ora/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ora/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ora/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/ora/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "license": "MIT"
+ },
+ "node_modules/ora/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/ora/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ora/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
+ "dependencies": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "node_modules/own-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.6",
+ "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-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "license": "MIT",
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "license": "MIT",
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/parse-png": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz",
+ "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "pngjs": "^3.3.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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": "3.0.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz",
+ "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
+ "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/plist": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
+ "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@xmldom/xmldom": "^0.8.8",
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^15.1.1"
+ },
+ "engines": {
+ "node": ">=10.4.0"
+ }
+ },
+ "node_modules/plist/node_modules/@xmldom/xmldom": {
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz",
+ "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/plist/node_modules/xmlbuilder": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
+ "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+ "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.7",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/pouchdb-collections": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-1.0.1.tgz",
+ "integrity": "sha512-31db6JRg4+4D5Yzc2nqsRqsA2oOkZS8DpFav3jf/qVNBxusKa2ClkEIZ2bJNpaDbMfWtnuSq59p6Bn+CipPMdg==",
+ "license": "Apache 2"
+ },
+ "node_modules/pretty-bytes": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pretty-format": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
+ "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "^26.6.2",
+ "ansi-regex": "^5.0.0",
+ "ansi-styles": "^4.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/pretty-format/node_modules/@jest/types": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
+ "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^15.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 10.14.2"
+ }
+ },
+ "node_modules/pretty-format/node_modules/@types/yargs": {
+ "version": "15.0.20",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.20.tgz",
+ "integrity": "sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/pretty-format/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "license": "MIT"
+ },
+ "node_modules/proc-log": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz",
+ "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==",
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "license": "MIT"
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "license": "MIT",
+ "dependencies": {
+ "asap": "~2.0.3"
+ }
+ },
+ "node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "license": "ISC"
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/pump": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qrcode-terminal": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz",
+ "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==",
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/query-string": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz",
+ "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==",
+ "license": "MIT",
+ "dependencies": {
+ "decode-uri-component": "^0.2.2",
+ "filter-obj": "^1.1.0",
+ "split-on-first": "^1.0.0",
+ "strict-uri-encode": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/queue": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+ "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "~2.0.3"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "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/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-devtools-core": {
+ "version": "4.28.5",
+ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz",
+ "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==",
+ "license": "MIT",
+ "dependencies": {
+ "shell-quote": "^1.6.1",
+ "ws": "^7"
+ }
+ },
+ "node_modules/react-devtools-core/node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-freeze": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz",
+ "integrity": "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": ">=17.0.0"
+ }
+ },
+ "node_modules/react-i18next": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.1.3.tgz",
+ "integrity": "sha512-wZnpfunU6UIAiJ+bxwOiTmBOAaB14ha97MjOEnLGac2RJ+h/maIYXZuTHlmyqQVX1UVHmU1YDTQ5vxLmwfXTjw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.23.9",
+ "html-parse-stringify": "^3.0.1"
+ },
+ "peerDependencies": {
+ "i18next": ">= 23.2.3",
+ "react": ">= 16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "license": "MIT"
+ },
+ "node_modules/react-native": {
+ "version": "0.73.6",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.73.6.tgz",
+ "integrity": "sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/create-cache-key-function": "^29.6.3",
+ "@react-native-community/cli": "12.3.6",
+ "@react-native-community/cli-platform-android": "12.3.6",
+ "@react-native-community/cli-platform-ios": "12.3.6",
+ "@react-native/assets-registry": "0.73.1",
+ "@react-native/codegen": "0.73.3",
+ "@react-native/community-cli-plugin": "0.73.17",
+ "@react-native/gradle-plugin": "0.73.4",
+ "@react-native/js-polyfills": "0.73.1",
+ "@react-native/normalize-colors": "0.73.2",
+ "@react-native/virtualized-lists": "0.73.4",
+ "abort-controller": "^3.0.0",
+ "anser": "^1.4.9",
+ "ansi-regex": "^5.0.0",
+ "base64-js": "^1.5.1",
+ "chalk": "^4.0.0",
+ "deprecated-react-native-prop-types": "^5.0.0",
+ "event-target-shim": "^5.0.1",
+ "flow-enums-runtime": "^0.0.6",
+ "invariant": "^2.2.4",
+ "jest-environment-node": "^29.6.3",
+ "jsc-android": "^250231.0.0",
+ "memoize-one": "^5.0.0",
+ "metro-runtime": "^0.80.3",
+ "metro-source-map": "^0.80.3",
+ "mkdirp": "^0.5.1",
+ "nullthrows": "^1.1.1",
+ "pretty-format": "^26.5.2",
+ "promise": "^8.3.0",
+ "react-devtools-core": "^4.27.7",
+ "react-refresh": "^0.14.0",
+ "react-shallow-renderer": "^16.15.0",
+ "regenerator-runtime": "^0.13.2",
+ "scheduler": "0.24.0-canary-efb381bbf-20230505",
+ "stacktrace-parser": "^0.1.10",
+ "whatwg-fetch": "^3.0.0",
+ "ws": "^6.2.2",
+ "yargs": "^17.6.2"
+ },
+ "bin": {
+ "react-native": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "react": "18.2.0"
+ }
+ },
+ "node_modules/react-native-gesture-handler": {
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.14.1.tgz",
+ "integrity": "sha512-YiM1BApV4aKeuwsM6O4C2ufwewYEKk6VMXOt0YqEZFMwABBFWhXLySFZYjBSNRU2USGppJbfHP1q1DfFQpKhdA==",
+ "license": "MIT",
+ "dependencies": {
+ "@egjs/hammerjs": "^2.0.17",
+ "hoist-non-react-statics": "^3.3.0",
+ "invariant": "^2.2.4",
+ "lodash": "^4.17.21",
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-safe-area-context": {
+ "version": "4.8.2",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.8.2.tgz",
+ "integrity": "sha512-ffUOv8BJQ6RqO3nLml5gxJ6ab3EestPiyWekxdzO/1MQ7NF8fW1Mzh1C5QE9yq573Xefnc7FuzGXjtesZGv7cQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-screens": {
+ "version": "3.29.0",
+ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.29.0.tgz",
+ "integrity": "sha512-yB1GoAMamFAcYf4ku94uBPn0/ani9QG7NdI98beJ5cet2YFESYYzuEIuU+kt+CNRcO8qqKeugxlfgAa3HyTqlg==",
+ "license": "MIT",
+ "dependencies": {
+ "react-freeze": "^1.0.0",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native/node_modules/@react-native/codegen": {
+ "version": "0.73.3",
+ "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.3.tgz",
+ "integrity": "sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.0",
+ "flow-parser": "^0.206.0",
+ "glob": "^7.1.1",
+ "invariant": "^2.2.4",
+ "jscodeshift": "^0.14.0",
+ "mkdirp": "^0.5.1",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/preset-env": "^7.1.6"
+ }
+ },
+ "node_modules/react-native/node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/react-native/node_modules/promise": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
+ "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
+ "license": "MIT",
+ "dependencies": {
+ "asap": "~2.0.6"
+ }
+ },
+ "node_modules/react-native/node_modules/ws": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz",
+ "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==",
+ "license": "MIT",
+ "dependencies": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "node_modules/react-refresh": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
+ "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-shallow-renderer": {
+ "version": "16.15.0",
+ "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
+ "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4.1.1",
+ "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/readable-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "node_modules/readline": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
+ "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==",
+ "license": "BSD"
+ },
+ "node_modules/recast": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz",
+ "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==",
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "0.15.2",
+ "esprima": "~4.0.0",
+ "source-map": "~0.6.1",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/recast/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "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/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "license": "MIT"
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz",
+ "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==",
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "license": "MIT"
+ },
+ "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==",
+ "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/regexpu-core": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz",
+ "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==",
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.2.2",
+ "regjsgen": "^0.8.0",
+ "regjsparser": "^0.13.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
+ "license": "MIT"
+ },
+ "node_modules/regjsparser": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz",
+ "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "jsesc": "~3.1.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/remove-trailing-slash": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz",
+ "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==",
+ "license": "MIT"
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "license": "ISC"
+ },
+ "node_modules/requireg": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz",
+ "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==",
+ "dependencies": {
+ "nested-error-stacks": "~2.0.1",
+ "rc": "~1.2.7",
+ "resolve": "~1.7.1"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/requireg/node_modules/resolve": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
+ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-parse": "^1.0.5"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.11",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
+ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-workspace-root": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.0.tgz",
+ "integrity": "sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==",
+ "license": "MIT"
+ },
+ "node_modules/resolve.exports": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz",
+ "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-array-concat/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT"
+ },
+ "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==",
+ "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/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==",
+ "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-push-apply/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT"
+ },
+ "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==",
+ "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.4.3",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz",
+ "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==",
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/scheduler": {
+ "version": "0.24.0-canary-efb381bbf-20230505",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz",
+ "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/send/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/send/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/send/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/serialize-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
+ "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "1.16.3",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
+ "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "~0.19.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/serve-static/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/serve-static/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/serve-static/node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/serve-static/node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/serve-static/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/serve-static/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/serve-static/node_modules/send": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
+ "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.1",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "~2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "~2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/serve-static/node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "license": "ISC"
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+ "license": "MIT"
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
+ },
+ "node_modules/shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "license": "MIT",
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
+ "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "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.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "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==",
+ "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==",
+ "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",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/simple-plist": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz",
+ "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==",
+ "license": "MIT",
+ "dependencies": {
+ "bplist-creator": "0.1.0",
+ "bplist-parser": "0.3.1",
+ "plist": "^3.0.5"
+ }
+ },
+ "node_modules/simple-plist/node_modules/bplist-parser": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz",
+ "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==",
+ "license": "MIT",
+ "dependencies": {
+ "big-integer": "1.6.x"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz",
+ "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/simple-swizzle/node_modules/is-arrayish": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz",
+ "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==",
+ "license": "MIT"
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "license": "MIT"
+ },
+ "node_modules/slugify": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
+ "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "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/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-on-first": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
+ "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stackframe": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
+ "license": "MIT"
+ },
+ "node_modules/stacktrace-parser": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz",
+ "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.7.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "internal-slot": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/stream-buffers": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+ "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==",
+ "license": "Unlicense",
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/strict-uri-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
+ "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string_decoder/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "license": "MIT"
+ },
+ "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==",
+ "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/string-width/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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width/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==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-data-property": "^1.1.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-object-atoms": "^1.0.0",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "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==",
+ "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": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strnum": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
+ "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/structured-headers": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz",
+ "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==",
+ "license": "MIT"
+ },
+ "node_modules/sucrase": {
+ "version": "3.34.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
+ "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "7.1.6",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sudo-prompt": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
+ "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tar": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
+ "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/temp": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz",
+ "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==",
+ "license": "MIT",
+ "dependencies": {
+ "rimraf": "~2.6.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/temp-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
+ "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/temp/node_modules/rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/tempy": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz",
+ "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==",
+ "license": "MIT",
+ "dependencies": {
+ "del": "^6.0.0",
+ "is-stream": "^2.0.0",
+ "temp-dir": "^2.0.0",
+ "type-fest": "^0.16.0",
+ "unique-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tempy/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tempy/node_modules/type-fest": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
+ "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.44.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz",
+ "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.15.0",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "license": "MIT"
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "license": "MIT"
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/throat": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
+ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
+ "license": "MIT"
+ },
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/tiny-queue": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tiny-queue/-/tiny-queue-0.2.1.tgz",
+ "integrity": "sha512-EijGsv7kzd9I9g0ByCl6h42BWNGUZrlCSejfrb3AKeHC33SGbASu1VDf5O3rRiiUOhAC9CHdZxFPbZu0HmR70A==",
+ "license": "Apache 2"
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
+ },
+ "node_modules/traverse": {
+ "version": "0.6.11",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.11.tgz",
+ "integrity": "sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==",
+ "license": "MIT",
+ "dependencies": {
+ "gopd": "^1.2.0",
+ "typedarray.prototype.slice": "^1.0.5",
+ "which-typed-array": "^1.1.18"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "license": "Apache-2.0"
+ },
+ "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/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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.7",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typedarray.prototype.slice": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.5.tgz",
+ "integrity": "sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.9",
+ "es-errors": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "math-intrinsics": "^1.1.0",
+ "typed-array-buffer": "^1.0.3",
+ "typed-array-byte-offset": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ua-parser-js": {
+ "version": "1.0.41",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz",
+ "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/faisalman"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "ua-parser-js": "script/cli.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "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==",
+ "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": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "license": "MIT"
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+ "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "license": "MIT",
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz",
+ "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz",
+ "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "license": "MIT",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.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/url-join": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz",
+ "integrity": "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==",
+ "license": "MIT"
+ },
+ "node_modules/use-latest-callback": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz",
+ "integrity": "sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/valid-url": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
+ "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA=="
+ },
+ "node_modules/validate-npm-package-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
+ "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+ "license": "ISC",
+ "dependencies": {
+ "builtins": "^1.0.3"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vlq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
+ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==",
+ "license": "MIT"
+ },
+ "node_modules/void-elements": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
+ "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "makeerror": "1.0.12"
+ }
+ },
+ "node_modules/warn-once": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz",
+ "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==",
+ "license": "MIT"
+ },
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "license": "MIT",
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/whatwg-fetch": {
+ "version": "3.6.20",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
+ "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==",
+ "license": "MIT"
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/whatwg-url-without-unicode": {
+ "version": "8.0.0-3",
+ "resolved": "https://registry.npmjs.org/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz",
+ "integrity": "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer": "^5.4.3",
+ "punycode": "^2.1.1",
+ "webidl-conversions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "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==",
+ "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==",
+ "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-builtin-type/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT"
+ },
+ "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==",
+ "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-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
+ "license": "ISC"
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
+ "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "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/wonka": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz",
+ "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==",
+ "license": "MIT"
+ },
+ "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==",
+ "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/wrap-ansi/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==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
+ },
+ "node_modules/write-file-atomic": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+ "license": "ISC",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xcode": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz",
+ "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "simple-plist": "^1.1.0",
+ "uuid": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/xcode/node_modules/uuid": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
+ "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==",
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/xml2js": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz",
+ "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==",
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz",
+ "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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/yaml": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
+ "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/src-ios/package.json b/src-ios/package.json
new file mode 100644
index 0000000..85ad4dd
--- /dev/null
+++ b/src-ios/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "opencontext-ios",
+ "version": "0.1.0",
+ "private": true,
+ "main": "node_modules/expo/AppEntry.js",
+ "scripts": {
+ "start": "npx expo start",
+ "ios": "expo run:ios",
+ "android": "expo run:android",
+ "web": "npx expo start --web"
+ },
+ "dependencies": {
+ "@react-native-async-storage/async-storage": "^1.23.1",
+ "@react-navigation/bottom-tabs": "^6.6.1",
+ "@react-navigation/native": "^6.1.17",
+ "@react-navigation/native-stack": "^6.10.0",
+ "expo": "~50.0.0",
+ "expo-file-system": "~16.0.5",
+ "expo-image-picker": "~14.7.1",
+ "expo-linear-gradient": "~12.7.1",
+ "expo-sqlite": "~13.4.0",
+ "i18next": "^23.11.5",
+ "react": "18.2.0",
+ "react-i18next": "^14.1.2",
+ "react-native": "0.73.6",
+ "react-native-gesture-handler": "~2.14.0",
+ "react-native-safe-area-context": "4.8.2",
+ "react-native-screens": "~3.29.0"
+ }
+}
diff --git a/src-ios/screens/DocEditorScreen.js b/src-ios/screens/DocEditorScreen.js
new file mode 100644
index 0000000..2551b83
--- /dev/null
+++ b/src-ios/screens/DocEditorScreen.js
@@ -0,0 +1,123 @@
+const React = require('react');
+const { View, Text, TextInput, StyleSheet, Pressable, Alert } = require('react-native');
+const { useTranslation } = require('react-i18next');
+const Screen = require('../components/Screen');
+const EditorWebView = require('../components/EditorWebView');
+const { createDoc, updateDoc, deleteDoc, loadDocContent } = require('../db/docs');
+const { typography, spacing, colors } = require('../theme');
+
+function DocEditorScreen({ navigation, route }) {
+ const { t } = useTranslation();
+ const { mode, doc } = route.params || { mode: 'create' };
+ const [title, setTitle] = React.useState(doc?.name || '');
+ const [content, setContent] = React.useState('');
+
+ React.useEffect(() => {
+ let mounted = true;
+ if (doc) {
+ loadDocContent(doc).then((text) => {
+ if (mounted) {
+ setContent(text || '');
+ }
+ });
+ }
+ return () => {
+ mounted = false;
+ };
+ }, [doc]);
+
+ const handleSave = async () => {
+ if (mode === 'create') {
+ await createDoc({ title, content });
+ } else {
+ await updateDoc({ id: doc.id, title, content });
+ }
+ navigation.goBack();
+ };
+
+ const handleDelete = async () => {
+ if (mode !== 'edit') return;
+ Alert.alert(t('common.delete'), t('common.delete'), [
+ { text: t('common.cancel'), style: 'cancel' },
+ {
+ text: t('common.delete'),
+ style: 'destructive',
+ onPress: async () => {
+ await deleteDoc(doc.id);
+ navigation.goBack();
+ },
+ },
+ ]);
+ };
+
+ return (
+
+
+ {t('docs.title')}
+
+ {mode === 'edit' ? (
+
+ {t('common.delete')}
+
+ ) : null}
+
+ {t('common.save')}
+
+
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ marginBottom: spacing.lg,
+ },
+ heading: {
+ ...typography.title,
+ },
+ actions: {
+ flexDirection: 'row',
+ gap: spacing.md,
+ },
+ save: {
+ ...typography.body,
+ color: colors.accent,
+ fontWeight: '600',
+ },
+ delete: {
+ ...typography.body,
+ color: '#b42318',
+ },
+ editorCard: {
+ flex: 1,
+ },
+ titleInput: {
+ ...typography.body,
+ fontSize: 18,
+ marginBottom: spacing.sm,
+ borderBottomWidth: 1,
+ borderBottomColor: colors.border,
+ paddingBottom: spacing.sm,
+ },
+ contentInput: {
+ ...typography.body,
+ flex: 1,
+ marginTop: spacing.sm,
+ },
+});
+
+module.exports = DocEditorScreen;
diff --git a/src-ios/screens/DocsScreen.js b/src-ios/screens/DocsScreen.js
new file mode 100644
index 0000000..6e16dd5
--- /dev/null
+++ b/src-ios/screens/DocsScreen.js
@@ -0,0 +1,96 @@
+const React = require('react');
+const { View, Text, StyleSheet, FlatList } = require('react-native');
+const { useTranslation } = require('react-i18next');
+const Screen = require('../components/Screen');
+const Card = require('../components/Card');
+const EmptyState = require('../components/EmptyState');
+const FadeInView = require('../components/FadeInView');
+const { listDocs } = require('../db/docs');
+const { typography, spacing, colors } = require('../theme');
+const { formatDate } = require('../utils/date');
+
+function DocsScreen({ navigation }) {
+ const { t, i18n } = useTranslation();
+ const [docs, setDocs] = React.useState([]);
+
+ const loadDocs = React.useCallback(async () => {
+ const data = await listDocs();
+ setDocs(data);
+ }, []);
+
+ React.useEffect(() => {
+ const unsubscribe = navigation.addListener('focus', loadDocs);
+ return unsubscribe;
+ }, [navigation, loadDocs]);
+
+ const renderItem = ({ item }) => (
+
+ {item.name}
+
+ {item.description || t('docs.emptyBody')}
+
+ {formatDate(item.updated_at, i18n.language)}
+
+ );
+
+ return (
+
+
+ {t('docs.title')}
+ {docs.length > 0 ? {t('docs.emptyBody')} : null}
+
+
+ {docs.length === 0 ? (
+
+ ) : (
+ String(item.id)}
+ renderItem={renderItem}
+ contentContainerStyle={styles.list}
+ />
+ )}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ marginBottom: spacing.md,
+ },
+ heading: {
+ ...typography.title,
+ fontSize: 28,
+ fontWeight: '700',
+ },
+ subhead: {
+ ...typography.subtitle,
+ marginTop: spacing.xs,
+ },
+ listWrapper: {
+ flex: 1,
+ },
+ list: {
+ gap: spacing.md,
+ paddingBottom: spacing.xl,
+ },
+ card: {
+ marginBottom: spacing.md,
+ },
+ title: {
+ ...typography.body,
+ fontWeight: '600',
+ marginBottom: spacing.xs,
+ },
+ preview: {
+ ...typography.subtitle,
+ color: colors.mutedInk,
+ },
+ meta: {
+ ...typography.label,
+ marginTop: spacing.sm,
+ },
+});
+
+module.exports = DocsScreen;
diff --git a/src-ios/screens/IdeasScreen.js b/src-ios/screens/IdeasScreen.js
new file mode 100644
index 0000000..fbef2d9
--- /dev/null
+++ b/src-ios/screens/IdeasScreen.js
@@ -0,0 +1,1993 @@
+const React = require('react');
+const {
+ View,
+ Text,
+ StyleSheet,
+ SectionList,
+ Modal,
+ ScrollView,
+ TextInput,
+ InputAccessoryView,
+ Image,
+ Pressable,
+ Alert,
+ ActionSheetIOS,
+ Animated,
+ Easing,
+ ActivityIndicator,
+ KeyboardAvoidingView,
+ Keyboard,
+ Platform,
+} = require('react-native');
+const { Swipeable } = require('react-native-gesture-handler');
+const { useTranslation } = require('react-i18next');
+const ImagePicker = require('expo-image-picker');
+const { Ionicons } = require('@expo/vector-icons');
+const Screen = require('../components/Screen');
+const EmptyState = require('../components/EmptyState');
+const FadeInView = require('../components/FadeInView');
+const {
+ listThreads,
+ listBoxes,
+ createThread,
+ continueThread,
+ deleteEntry,
+ deleteThread,
+ createBox,
+ renameBox,
+ deleteBox,
+ moveThread,
+} = require('../services/ideas');
+const { importImageAsset } = require('../services/images');
+const { loadAIConfig, isAIAvailable, generateReflection } = require('../services/ai');
+const { typography, spacing, colors } = require('../theme');
+const { formatDateDisplay, formatRelativeTime, formatDateKey } = require('../utils/ideaTime');
+
+function IdeasScreen({ navigation }) {
+ const { t, i18n } = useTranslation();
+ const DEFAULT_BOX = 'inbox';
+ const COMPOSER_MIN_HEIGHT = 40;
+ const COMPOSER_PADDING = spacing.xs;
+ const MAX_IMAGES = 6;
+ const [threads, setThreads] = React.useState([]);
+ const [boxes, setBoxes] = React.useState([DEFAULT_BOX]);
+ const [selectedBox, setSelectedBox] = React.useState(DEFAULT_BOX);
+ const [isMoveModalOpen, setIsMoveModalOpen] = React.useState(false);
+ const [moveThreadId, setMoveThreadId] = React.useState(null);
+ const [inputText, setInputText] = React.useState('');
+ const [composerHeight, setComposerHeight] = React.useState(COMPOSER_MIN_HEIGHT);
+ const [inputImages, setInputImages] = React.useState([]);
+ const [replyingThreadId, setReplyingThreadId] = React.useState(null);
+ const [replyText, setReplyText] = React.useState('');
+ const [replyImages, setReplyImages] = React.useState([]);
+ const [isReplyModalOpen, setIsReplyModalOpen] = React.useState(false);
+ const [isKeyboardVisible, setIsKeyboardVisible] = React.useState(false);
+ const [isReplying, setIsReplying] = React.useState(false);
+ const [reflectingThreadId, setReflectingThreadId] = React.useState(null);
+ const [reflectionError, setReflectionError] = React.useState('');
+ const [isReflecting, setIsReflecting] = React.useState(false);
+ const [reflectionText, setReflectionText] = React.useState('');
+ const [isSavingReflection, setIsSavingReflection] = React.useState(false);
+ const [lastAddedEntryId, setLastAddedEntryId] = React.useState(null);
+ const inputRef = React.useRef(null);
+ const replyInputRef = React.useRef(null);
+ const clearAnimRef = React.useRef(null);
+ const moveAnimRef = React.useRef(new Animated.Value(0));
+ const moveAnim = moveAnimRef.current;
+
+ const normalizeBoxes = React.useCallback((items = []) => {
+ const unique = Array.from(new Set([DEFAULT_BOX, ...items].filter(Boolean)));
+ const rest = unique.filter((box) => box !== DEFAULT_BOX).sort();
+ return [DEFAULT_BOX, ...rest];
+ }, [DEFAULT_BOX]);
+
+ const loadIdeas = React.useCallback(async (boxToLoad) => {
+ const targetBox = boxToLoad || selectedBox || DEFAULT_BOX;
+ const [threadData, boxData] = await Promise.all([
+ listThreads({ box: targetBox }),
+ listBoxes(),
+ ]);
+ const nextBoxes = normalizeBoxes(boxData);
+ setBoxes(nextBoxes);
+ if (!nextBoxes.includes(targetBox)) {
+ const fallback = nextBoxes[0] || DEFAULT_BOX;
+ setSelectedBox(fallback);
+ const fallbackThreads = await listThreads({ box: fallback });
+ setThreads(fallbackThreads);
+ return;
+ }
+ setThreads(threadData);
+ }, [DEFAULT_BOX, listThreads, listBoxes, normalizeBoxes, selectedBox]);
+
+ React.useEffect(() => {
+ loadIdeas(selectedBox);
+ }, [loadIdeas, selectedBox]);
+
+ React.useEffect(() => {
+ const unsubscribe = navigation.addListener('focus', () => loadIdeas(selectedBox));
+ return unsubscribe;
+ }, [navigation, loadIdeas, selectedBox]);
+
+ const handleCreate = async () => {
+ const text = inputText.trim();
+ if (!text && inputImages.length === 0) return;
+ const thread = await createThread({ content: text, images: inputImages, box: selectedBox });
+ setInputText('');
+ setInputImages([]);
+ setComposerHeight(COMPOSER_MIN_HEIGHT);
+ if (inputRef.current) {
+ inputRef.current.blur();
+ }
+ Keyboard.dismiss();
+ const entryId = thread?.entries?.[0]?.id;
+ if (entryId) {
+ setLastAddedEntryId(entryId);
+ if (clearAnimRef.current) {
+ clearTimeout(clearAnimRef.current);
+ }
+ clearAnimRef.current = setTimeout(() => {
+ setLastAddedEntryId(null);
+ }, 600);
+ }
+ loadIdeas(selectedBox);
+ };
+
+ React.useEffect(() => {
+ if (isReplyModalOpen && replyInputRef.current) {
+ replyInputRef.current.focus();
+ }
+ }, [isReplyModalOpen]);
+
+ React.useEffect(() => {
+ const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';
+ const hideEvent = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide';
+ const showSub = Keyboard.addListener(showEvent, () => setIsKeyboardVisible(true));
+ const hideSub = Keyboard.addListener(hideEvent, () => setIsKeyboardVisible(false));
+ return () => {
+ showSub.remove();
+ hideSub.remove();
+ };
+ }, []);
+
+ const handleStartContinue = (threadId) => {
+ setReflectingThreadId(null);
+ setReflectionError('');
+ setReflectionText('');
+ setReplyingThreadId(threadId);
+ setReplyText('');
+ setReplyImages([]);
+ setIsReplyModalOpen(true);
+ };
+
+ const handleCancelContinue = () => {
+ setIsReplyModalOpen(false);
+ setReplyingThreadId(null);
+ setReplyText('');
+ setReplyImages([]);
+ if (replyInputRef.current) {
+ replyInputRef.current.blur();
+ }
+ Keyboard.dismiss();
+ };
+
+ const handleSubmitContinue = async () => {
+ const text = replyText.trim();
+ if ((!text && replyImages.length === 0) || !replyingThreadId || isReplying) return;
+ setIsReplying(true);
+ try {
+ const entry = await continueThread({ threadId: replyingThreadId, content: text, images: replyImages });
+ let updated = false;
+ setThreads((prev) =>
+ prev.map((thread) => {
+ if (thread.id !== replyingThreadId) {
+ return thread;
+ }
+ updated = true;
+ return {
+ ...thread,
+ updatedAt: entry?.createdAt || thread.updatedAt,
+ entries: [...thread.entries, entry],
+ };
+ }),
+ );
+ setReplyingThreadId(null);
+ setReplyText('');
+ setReplyImages([]);
+ setIsReplyModalOpen(false);
+ if (replyInputRef.current) {
+ replyInputRef.current.blur();
+ }
+ Keyboard.dismiss();
+ if (!updated) {
+ loadIdeas();
+ }
+ } finally {
+ setIsReplying(false);
+ }
+ };
+
+ const handleStartReflect = async (threadId) => {
+ if (isReflecting) return;
+ const config = await loadAIConfig();
+ if (!isAIAvailable(config)) {
+ Alert.alert(t('ideas.aiNotConfigured'));
+ return;
+ }
+ setIsReplyModalOpen(false);
+ setReplyingThreadId(null);
+ setReflectionError('');
+ setReflectionText('');
+ setReflectingThreadId(threadId);
+ setIsReflecting(true);
+ try {
+ const thread = threads.find((t) => t.id === threadId);
+ const entries = thread?.entries || [];
+ const text = await generateReflection(entries, { language: i18n.language, config });
+ if (!text) {
+ throw new Error(t('ideas.aiEmpty'));
+ }
+ setReflectionText(text);
+ } catch (err) {
+ setReflectionError(err?.message || t('ideas.aiError'));
+ } finally {
+ setIsReflecting(false);
+ }
+ };
+
+ const handleSaveReflection = async () => {
+ if (!reflectionText.trim() || !reflectingThreadId || isSavingReflection) return;
+ setIsSavingReflection(true);
+ try {
+ const entry = await continueThread({
+ threadId: reflectingThreadId,
+ content: reflectionText.trim(),
+ isAI: true,
+ });
+ setThreads((prev) =>
+ prev.map((threadItem) => {
+ if (threadItem.id !== reflectingThreadId) return threadItem;
+ return {
+ ...threadItem,
+ updatedAt: entry?.createdAt || threadItem.updatedAt,
+ entries: [...threadItem.entries, entry],
+ };
+ }),
+ );
+ setReflectingThreadId(null);
+ setReflectionText('');
+ setReflectionError('');
+ } finally {
+ setIsSavingReflection(false);
+ }
+ };
+
+ const handleRetryReflect = () => {
+ if (!reflectingThreadId) return;
+ handleStartReflect(reflectingThreadId);
+ };
+
+ const handleCancelReflect = () => {
+ setReflectingThreadId(null);
+ setReflectionError('');
+ setIsReflecting(false);
+ setReflectionText('');
+ };
+
+ const pickImages = React.useCallback(async (target) => {
+ const currentImages = target === 'main' ? inputImages : replyImages;
+ const remaining = MAX_IMAGES - currentImages.length;
+ if (remaining <= 0) {
+ Alert.alert(t('ideas.imageLimit', { count: MAX_IMAGES }));
+ return;
+ }
+ const permission = await ImagePicker.requestMediaLibraryPermissionsAsync();
+ if (!permission.granted) {
+ Alert.alert(t('ideas.imagePermissionTitle'), t('ideas.imagePermissionBody'));
+ return;
+ }
+ const result = await ImagePicker.launchImageLibraryAsync({
+ mediaTypes: ImagePicker.MediaTypeOptions.Images,
+ allowsMultipleSelection: remaining > 1,
+ selectionLimit: remaining,
+ quality: 0.9,
+ });
+ if (result.canceled) return;
+ const assets = result.assets || [];
+ try {
+ const stored = [];
+ for (const asset of assets) {
+ const uri = await importImageAsset(asset);
+ if (uri) stored.push(uri);
+ }
+ if (stored.length === 0) return;
+ if (target === 'main') {
+ setInputImages((prev) => [...prev, ...stored]);
+ } else {
+ setReplyImages((prev) => [...prev, ...stored]);
+ }
+ } catch (error) {
+ Alert.alert(t('ideas.imageImportFailed'));
+ }
+ }, [inputImages, replyImages, MAX_IMAGES, t]);
+
+ const removeImage = React.useCallback((target, index) => {
+ if (target === 'main') {
+ setInputImages((prev) => prev.filter((_, idx) => idx !== index));
+ } else {
+ setReplyImages((prev) => prev.filter((_, idx) => idx !== index));
+ }
+ }, []);
+
+ const clearThreadState = React.useCallback((threadId) => {
+ if (replyingThreadId === threadId) {
+ setIsReplyModalOpen(false);
+ setReplyingThreadId(null);
+ setReplyText('');
+ setReplyImages([]);
+ }
+ if (reflectingThreadId === threadId) {
+ setReflectingThreadId(null);
+ setReflectionError('');
+ setReflectionText('');
+ setIsReflecting(false);
+ }
+ }, [reflectingThreadId, replyingThreadId]);
+
+ const confirmDeleteEntry = React.useCallback((entry) => {
+ Alert.alert(
+ t('ideas.deleteEntryConfirm'),
+ t('ideas.deleteEntryHint'),
+ [
+ { text: t('common.cancel'), style: 'cancel' },
+ {
+ text: t('common.delete'),
+ style: 'destructive',
+ onPress: async () => {
+ await deleteEntry({ threadId: entry.threadId, entryId: entry.id });
+ loadIdeas(selectedBox);
+ },
+ },
+ ],
+ );
+ }, [deleteEntry, loadIdeas, selectedBox, t]);
+
+ const confirmDeleteThread = React.useCallback((threadId) => {
+ Alert.alert(
+ t('ideas.deleteThreadConfirm'),
+ t('ideas.deleteThreadHint'),
+ [
+ { text: t('common.cancel'), style: 'cancel' },
+ {
+ text: t('common.delete'),
+ style: 'destructive',
+ onPress: async () => {
+ await deleteThread(threadId);
+ clearThreadState(threadId);
+ loadIdeas(selectedBox);
+ },
+ },
+ ],
+ );
+ }, [clearThreadState, deleteThread, loadIdeas, selectedBox, t]);
+
+ const handleEntryActions = React.useCallback((entry) => {
+ const thread = threads.find((item) => item.id === entry.threadId);
+ const canDeleteThread = (thread?.entries?.length || 0) > 1;
+ const options = [
+ t('ideas.deleteEntry'),
+ ...(canDeleteThread ? [t('ideas.deleteThread')] : []),
+ t('common.cancel'),
+ ];
+ const cancelButtonIndex = options.length - 1;
+ const destructiveButtonIndex = canDeleteThread ? 1 : 0;
+
+ if (Platform.OS === 'ios') {
+ ActionSheetIOS.showActionSheetWithOptions(
+ {
+ options,
+ cancelButtonIndex,
+ destructiveButtonIndex,
+ title: t('ideas.entryActionsTitle'),
+ },
+ (buttonIndex) => {
+ if (buttonIndex === 0) {
+ confirmDeleteEntry(entry);
+ } else if (canDeleteThread && buttonIndex === 1) {
+ confirmDeleteThread(entry.threadId);
+ }
+ },
+ );
+ return;
+ }
+
+ Alert.alert(
+ t('ideas.entryActionsTitle'),
+ undefined,
+ [
+ {
+ text: t('ideas.deleteEntry'),
+ style: 'destructive',
+ onPress: () => confirmDeleteEntry(entry),
+ },
+ canDeleteThread
+ ? {
+ text: t('ideas.deleteThread'),
+ style: 'destructive',
+ onPress: () => confirmDeleteThread(entry.threadId),
+ }
+ : null,
+ { text: t('common.cancel'), style: 'cancel' },
+ ].filter(Boolean),
+ );
+ }, [confirmDeleteEntry, confirmDeleteThread, threads, t]);
+
+ const renderSwipeActions = React.useCallback((entry, progress) => {
+ const opacity = progress.interpolate({
+ inputRange: [0, 0.4, 1],
+ outputRange: [0, 0.7, 1],
+ extrapolate: 'clamp',
+ });
+ const translateX = progress.interpolate({
+ inputRange: [0, 1],
+ outputRange: [12, 0],
+ extrapolate: 'clamp',
+ });
+ const scale = progress.interpolate({
+ inputRange: [0, 1],
+ outputRange: [0.96, 1],
+ extrapolate: 'clamp',
+ });
+
+ return (
+
+ handleEntryActions(entry)}
+ >
+
+ {t('common.delete')}
+
+
+
+ );
+ }, [handleEntryActions, t]);
+
+ const validateBoxName = React.useCallback((value) => {
+ const name = String(value || '').trim();
+ if (!name) return null;
+ if (name.includes('/') || name.includes('\\')) {
+ Alert.alert(t('ideas.boxNameInvalid'));
+ return null;
+ }
+ return name;
+ }, [t]);
+
+ const promptForBoxName = React.useCallback((title, message, actionLabel, initialValue, onSubmit) => {
+ if (Platform.OS !== 'ios') {
+ Alert.alert(title, message || '');
+ return;
+ }
+ Alert.prompt(
+ title,
+ message,
+ [
+ { text: t('common.cancel'), style: 'cancel' },
+ {
+ text: actionLabel,
+ onPress: (value) => {
+ const name = validateBoxName(value);
+ if (!name) return;
+ onSubmit(name);
+ },
+ },
+ ],
+ 'plain-text',
+ initialValue,
+ );
+ }, [t, validateBoxName]);
+
+ const handleCreateBox = React.useCallback(() => {
+ promptForBoxName(
+ t('ideas.boxCreateTitle'),
+ t('ideas.boxCreateHint'),
+ t('common.create'),
+ '',
+ async (name) => {
+ const box = await createBox(name);
+ setSelectedBox(box);
+ loadIdeas(box);
+ },
+ );
+ }, [createBox, loadIdeas, promptForBoxName, t]);
+
+ const handleRenameBox = React.useCallback((box) => {
+ if (box === DEFAULT_BOX) return;
+ promptForBoxName(
+ t('ideas.boxRenameTitle'),
+ t('ideas.boxRenameHint'),
+ t('common.save'),
+ box,
+ async (name) => {
+ const nextBox = await renameBox(box, name);
+ if (box === selectedBox) {
+ setSelectedBox(nextBox);
+ }
+ loadIdeas(nextBox);
+ },
+ );
+ }, [DEFAULT_BOX, loadIdeas, promptForBoxName, renameBox, selectedBox, t]);
+
+ const handleDeleteBox = React.useCallback((box) => {
+ if (box === DEFAULT_BOX) return;
+ Alert.alert(
+ t('ideas.boxDeleteTitle'),
+ t('ideas.boxDeleteConfirm', { name: box }),
+ [
+ { text: t('common.cancel'), style: 'cancel' },
+ {
+ text: t('common.delete'),
+ style: 'destructive',
+ onPress: async () => {
+ await deleteBox(box);
+ const nextBox = box === selectedBox ? DEFAULT_BOX : selectedBox;
+ setSelectedBox(nextBox);
+ loadIdeas(nextBox);
+ },
+ },
+ ],
+ );
+ }, [DEFAULT_BOX, deleteBox, loadIdeas, selectedBox, t]);
+
+ const handleBoxActions = React.useCallback((box) => {
+ if (box === DEFAULT_BOX) return;
+ Alert.alert(
+ t('ideas.boxActionsTitle'),
+ box,
+ [
+ { text: t('ideas.boxRename'), onPress: () => handleRenameBox(box) },
+ { text: t('ideas.boxDelete'), style: 'destructive', onPress: () => handleDeleteBox(box) },
+ { text: t('common.cancel'), style: 'cancel' },
+ ],
+ );
+ }, [DEFAULT_BOX, handleDeleteBox, handleRenameBox, t]);
+
+ const openMoveModal = React.useCallback((threadId) => {
+ setMoveThreadId(threadId);
+ setIsMoveModalOpen(true);
+ moveAnim.setValue(0);
+ Animated.timing(moveAnim, {
+ toValue: 1,
+ duration: 220,
+ easing: Easing.out(Easing.cubic),
+ useNativeDriver: true,
+ }).start();
+ }, [moveAnim]);
+
+ const closeMoveModal = React.useCallback(() => {
+ Animated.timing(moveAnim, {
+ toValue: 0,
+ duration: 180,
+ easing: Easing.in(Easing.cubic),
+ useNativeDriver: true,
+ }).start(({ finished }) => {
+ if (!finished) return;
+ setIsMoveModalOpen(false);
+ setMoveThreadId(null);
+ });
+ }, [moveAnim]);
+
+ const handleMoveThread = React.useCallback(async (targetBox) => {
+ if (!moveThreadId) return;
+ await moveThread({ threadId: moveThreadId, targetBox });
+ closeMoveModal();
+ loadIdeas(selectedBox);
+ }, [closeMoveModal, loadIdeas, moveThread, moveThreadId, selectedBox]);
+
+ const canPublish = inputText.trim().length > 0 || inputImages.length > 0;
+ const canReplyPublish = replyText.trim().length > 0 || replyImages.length > 0;
+ const sections = React.useMemo(() => buildSections(threads), [threads]);
+ const replyThread = React.useMemo(
+ () => threads.find((thread) => thread.id === replyingThreadId),
+ [threads, replyingThreadId],
+ );
+ const mainAccessoryId = 'main-accessory';
+ const replyAccessoryId = 'reply-accessory';
+ const contextEntries = React.useMemo(() => {
+ const entries = replyThread?.entries || [];
+ const maxItems = isKeyboardVisible ? 1 : 2;
+ return entries.slice(-maxItems);
+ }, [replyThread, isKeyboardVisible]);
+
+ const getEntryPreview = React.useCallback(
+ (entry) => {
+ const text = entry?.content?.trim();
+ if (text) return text;
+ if (entry?.images?.length) return t('ideas.addImage');
+ return t('common.emptyTitle');
+ },
+ [t],
+ );
+
+ const handleDismissKeyboard = React.useCallback((target) => {
+ if (target === 'main' && inputRef.current) {
+ inputRef.current.blur();
+ }
+ if (target === 'reply' && replyInputRef.current) {
+ replyInputRef.current.blur();
+ }
+ Keyboard.dismiss();
+ }, []);
+
+ return (
+
+
+
+
+ {t('ideas.title')}
+
+ +
+
+
+
+ {boxes.map((box) => {
+ const isActive = box === selectedBox;
+ const label = box === DEFAULT_BOX ? t('ideas.boxInbox') : box;
+ return (
+ setSelectedBox(box)}
+ onLongPress={() => handleBoxActions(box)}
+ style={[styles.boxChip, isActive && styles.boxChipActive]}
+ >
+
+ {label}
+
+
+ );
+ })}
+
+ {t('ideas.boxAdd')}
+
+
+
+
+ {
+ const nextHeight = Math.max(
+ COMPOSER_MIN_HEIGHT,
+ event.nativeEvent.contentSize.height + COMPOSER_PADDING * 2,
+ );
+ setComposerHeight((prev) => (prev === nextHeight ? prev : nextHeight));
+ }}
+ multiline
+ scrollEnabled={false}
+ textAlignVertical="top"
+ placeholderTextColor={colors.mutedInk}
+ inputAccessoryViewID={Platform.OS === 'ios' ? mainAccessoryId : undefined}
+ />
+ {inputImages.length > 0 ? (
+
+ {inputImages.map((uri, index) => (
+
+
+ removeImage('main', index)}
+ >
+ ×
+
+
+ ))}
+
+ ) : null}
+
+ pickImages('main')}
+ accessibilityLabel={t('ideas.addImage')}
+ >
+
+
+
+ {t('ideas.publish')}
+
+
+
+
+ {sections.length === 0 ? (
+
+ ) : (
+ item.id}
+ keyboardShouldPersistTaps="handled"
+ showsVerticalScrollIndicator={false}
+ stickySectionHeadersEnabled={false}
+ renderSectionHeader={({ section }) => (
+
+
+ {formatDateDisplay(section.dateKey, t)}
+
+
+
+ )}
+ renderItem={({ item }) => {
+ const isReflectingEntry = item.isLastInThread && reflectingThreadId === item.threadId;
+ return (
+
+ renderSwipeActions(item, progress)}
+ overshootRight={false}
+ >
+
+
+
+ {!item.isFirstInThread && (
+
+ )}
+ {!item.isLastInThread
+ || replyingThreadId === item.threadId
+ || reflectingThreadId === item.threadId ? (
+
+ ) : null}
+
+ {item.isAI ? : null}
+
+
+
+
+
+
+ {item.content}
+
+ {item.images?.length ? (
+
+ {item.images.map((uri, index) => (
+
+ ))}
+
+ ) : null}
+ {item.isLastInThread && replyingThreadId !== item.threadId && reflectingThreadId !== item.threadId ? (
+
+ handleStartContinue(item.threadId)}
+ style={styles.continueButton}
+ >
+ {t('ideas.continue')}
+
+ handleStartReflect(item.threadId)}
+ style={styles.aiButton}
+ >
+ {t('ideas.aiReflect')}
+
+ openMoveModal(item.threadId)}
+ style={styles.moveButton}
+ >
+ {t('ideas.boxMove')}
+
+
+ ) : null}
+
+
+
+ {formatRelativeTime(item.createdAt, t)}
+
+
+
+
+
+
+
+
+ {isReflectingEntry ? (
+
+
+
+
+
+
+
+
+
+
+
+ {isReflecting ? (
+
+
+ {t('ideas.aiThinking')}
+
+ ) : reflectionError ? (
+
+ {reflectionError}
+
+
+ {t('common.cancel')}
+
+
+ {t('ideas.aiRetry')}
+
+
+
+ ) : (
+
+
+
+ {t('ideas.reflectionEditable')}
+
+
+ {t('common.cancel')}
+
+
+ {t('common.save')}
+
+
+
+
+ )}
+
+
+
+
+
+ ) : null}
+
+ );
+ }}
+ contentContainerStyle={styles.list}
+ />
+ )}
+
+
+
+
+
+
+
+ {t('common.cancel')}
+
+ {t('ideas.continue')}
+
+
+ {isReplying ? t('common.save') : t('ideas.publish')}
+
+
+
+
+
+ {contextEntries.map((entry, index) => {
+ const isFirst = index === 0;
+ const isLast = index === contextEntries.length - 1;
+ return (
+
+
+
+ {!isFirst ? : null}
+ {!isLast ? : null}
+
+ {entry.isAI ? : null}
+
+
+
+
+
+
+ {getEntryPreview(entry)}
+
+ {entry?.images?.length ? (
+
+ {entry.images.map((uri, imageIndex) => (
+
+ ))}
+
+ ) : null}
+
+
+ {formatRelativeTime(entry.createdAt, t)}
+
+
+
+
+
+ );
+ })}
+
+
+
+
+
+
+ {replyImages.length > 0 ? (
+
+ {replyImages.map((uri, index) => (
+
+
+ removeImage('reply', index)}
+ >
+ ×
+
+
+ ))}
+
+ ) : null}
+ {Platform.OS !== 'ios' || !isKeyboardVisible ? (
+
+ pickImages('reply')}
+ accessibilityLabel={t('ideas.addImage')}
+ >
+
+
+
+ ) : null}
+
+
+
+
+
+ {Platform.OS === 'ios' ? (
+ <>
+
+
+ handleDismissKeyboard('main')}
+ >
+
+ {t('common.hideKeyboard')}
+
+
+
+
+
+ pickImages('reply')}
+ accessibilityLabel={t('ideas.addImage')}
+ >
+
+
+ handleDismissKeyboard('reply')}
+ >
+
+ {t('common.hideKeyboard')}
+
+
+
+ >
+ ) : null}
+
+
+
+
+
+ {t('ideas.boxMoveTitle')}
+ {t('ideas.boxMoveHint')}
+
+
+ {[...boxes].sort((a, b) => {
+ if (a === selectedBox) return -1;
+ if (b === selectedBox) return 1;
+ if (a === DEFAULT_BOX) return -1;
+ if (b === DEFAULT_BOX) return 1;
+ return a.localeCompare(b);
+ }).map((box, index) => {
+ const isCurrent = box === selectedBox;
+ const label = box === DEFAULT_BOX ? t('ideas.boxInbox') : box;
+ return (
+ handleMoveThread(box)}
+ disabled={isCurrent}
+ style={[
+ styles.modalItem,
+ index === 0 && styles.modalItemFirst,
+ isCurrent && styles.modalItemDisabled,
+ ]}
+ >
+
+
+ {label}
+
+ {isCurrent ? (
+
+ {t('ideas.boxCurrent')}
+
+ ) : null}
+
+
+ );
+ })}
+
+
+
+ {t('common.cancel')}
+
+
+
+
+
+ );
+}
+
+function buildSections(threads) {
+ const threadsWithLatest = threads.map((thread) => {
+ const latestEntry = thread.entries[thread.entries.length - 1];
+ return {
+ ...thread,
+ latestTime: latestEntry?.createdAt ? new Date(latestEntry.createdAt).getTime() : 0,
+ };
+ });
+
+ const sortedThreads = [...threadsWithLatest].sort((a, b) => b.latestTime - a.latestTime);
+ const entriesByDate = new Map();
+
+ sortedThreads.forEach((thread) => {
+ const firstEntry = thread.entries[0];
+ const date = formatDateKey(firstEntry?.createdAt || new Date());
+ if (!entriesByDate.has(date)) {
+ entriesByDate.set(date, []);
+ }
+ thread.entries.forEach((entry, index) => {
+ entriesByDate.get(date).push({
+ ...entry,
+ threadId: thread.id,
+ threadTitle: thread.title,
+ isFirstInThread: index === 0,
+ isLastInThread: index === thread.entries.length - 1,
+ type: entry.isAI ? 'ai' : 'user',
+ });
+ });
+ });
+
+ return Array.from(entriesByDate.entries())
+ .sort((a, b) => (a[0] < b[0] ? 1 : -1))
+ .map(([dateKey, data]) => ({
+ dateKey,
+ data,
+ }));
+}
+
+function AiSparkle() {
+ return (
+
+
+
+
+
+
+ );
+}
+
+function ImageIcon() {
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+function AnimatedEntry({ isActive, children }) {
+ const opacity = React.useRef(new Animated.Value(isActive ? 0 : 1)).current;
+ const translateY = React.useRef(new Animated.Value(isActive ? 10 : 0)).current;
+ const hasAnimatedRef = React.useRef(false);
+
+ React.useEffect(() => {
+ if (!isActive || hasAnimatedRef.current) return;
+ hasAnimatedRef.current = true;
+ opacity.setValue(0);
+ translateY.setValue(10);
+ Animated.timing(opacity, {
+ toValue: 1,
+ duration: 360,
+ easing: Easing.out(Easing.cubic),
+ useNativeDriver: true,
+ }).start();
+ Animated.timing(translateY, {
+ toValue: 0,
+ duration: 360,
+ easing: Easing.out(Easing.cubic),
+ useNativeDriver: true,
+ }).start();
+ }, [isActive, opacity, translateY]);
+
+ return (
+
+ {children}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ flex: {
+ flex: 1,
+ },
+ header: {
+ marginBottom: spacing.md,
+ },
+ headerRow: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ marginBottom: spacing.sm,
+ },
+ heading: {
+ ...typography.title,
+ fontSize: 28,
+ fontWeight: '700',
+ },
+ boxRowContent: {
+ flexDirection: 'row',
+ gap: spacing.sm,
+ paddingBottom: spacing.xs,
+ },
+ boxChip: {
+ paddingHorizontal: spacing.md,
+ paddingVertical: 6,
+ borderRadius: 999,
+ backgroundColor: '#f4f1ed',
+ borderWidth: 1,
+ borderColor: 'transparent',
+ },
+ boxChipActive: {
+ backgroundColor: colors.paper,
+ borderColor: colors.accent,
+ },
+ boxChipText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 12,
+ color: colors.mutedInk,
+ },
+ boxChipTextActive: {
+ color: colors.ink,
+ fontWeight: '600',
+ },
+ boxAddButton: {
+ width: 28,
+ height: 28,
+ borderRadius: 14,
+ borderWidth: 1,
+ borderColor: colors.border,
+ alignItems: 'center',
+ justifyContent: 'center',
+ backgroundColor: colors.paper,
+ },
+ boxAddText: {
+ fontSize: 16,
+ color: colors.mutedInk,
+ fontWeight: '600',
+ },
+ boxAddChip: {
+ paddingHorizontal: spacing.md,
+ paddingVertical: 6,
+ borderRadius: 999,
+ borderWidth: 1,
+ borderColor: colors.border,
+ backgroundColor: colors.paper,
+ },
+ boxAddChipText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 12,
+ color: colors.mutedInk,
+ },
+ subhead: {
+ ...typography.subtitle,
+ marginTop: spacing.xs,
+ },
+ composer: {
+ marginBottom: spacing.lg,
+ paddingVertical: spacing.xs,
+ },
+ prompt: {
+ ...typography.subtitle,
+ color: colors.mutedInk,
+ marginBottom: spacing.xs,
+ },
+ input: {
+ ...typography.body,
+ lineHeight: 24,
+ paddingVertical: spacing.xs,
+ },
+ imageRow: {
+ flexDirection: 'row',
+ flexWrap: 'wrap',
+ marginTop: spacing.sm,
+ },
+ imageItem: {
+ marginRight: spacing.sm,
+ marginBottom: spacing.sm,
+ },
+ imageThumb: {
+ width: 84,
+ height: 84,
+ borderRadius: 12,
+ backgroundColor: '#f3f4f6',
+ },
+ imageRemove: {
+ position: 'absolute',
+ top: -6,
+ right: -6,
+ width: 20,
+ height: 20,
+ borderRadius: 10,
+ backgroundColor: '#ffffff',
+ borderWidth: 1,
+ borderColor: '#e5e7eb',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ imageRemoveText: {
+ fontSize: 12,
+ color: colors.mutedInk,
+ fontWeight: '600',
+ },
+ composerActions: {
+ marginTop: spacing.sm,
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ },
+ imageButton: {
+ alignSelf: 'flex-start',
+ paddingHorizontal: spacing.sm,
+ paddingVertical: spacing.sm,
+ borderRadius: 999,
+ backgroundColor: '#f2f0ed',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ imageIcon: {
+ width: 18,
+ height: 18,
+ },
+ imageIconFrame: {
+ position: 'absolute',
+ top: 2,
+ left: 2,
+ width: 14,
+ height: 12,
+ borderWidth: 1.4,
+ borderColor: colors.mutedInk,
+ borderRadius: 3,
+ },
+ imageIconSun: {
+ position: 'absolute',
+ width: 3,
+ height: 3,
+ borderRadius: 1.5,
+ backgroundColor: colors.mutedInk,
+ top: 5,
+ left: 5,
+ },
+ imageIconHillLeft: {
+ position: 'absolute',
+ width: 7,
+ height: 1.4,
+ backgroundColor: colors.mutedInk,
+ left: 5,
+ bottom: 6,
+ transform: [{ rotate: '-25deg' }],
+ },
+ imageIconHillRight: {
+ position: 'absolute',
+ width: 6,
+ height: 1.4,
+ backgroundColor: colors.mutedInk,
+ left: 9,
+ bottom: 6,
+ transform: [{ rotate: '25deg' }],
+ },
+ imageIconBadge: {
+ position: 'absolute',
+ right: 0,
+ bottom: 0,
+ width: 8,
+ height: 8,
+ borderRadius: 4,
+ backgroundColor: colors.accent,
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ imageIconPlusH: {
+ position: 'absolute',
+ width: 4,
+ height: 1.2,
+ backgroundColor: '#ffffff',
+ borderRadius: 1,
+ },
+ imageIconPlusV: {
+ position: 'absolute',
+ width: 1.2,
+ height: 4,
+ backgroundColor: '#ffffff',
+ borderRadius: 1,
+ },
+ publishButtonDisabled: {
+ opacity: 0.5,
+ },
+ publishButton: {
+ backgroundColor: '#f2f0ed',
+ paddingHorizontal: spacing.md,
+ paddingVertical: spacing.sm,
+ borderRadius: 999,
+ },
+ publishText: {
+ ...typography.subtitle,
+ fontWeight: '600',
+ color: '#8b5a3c',
+ },
+ listWrapper: {
+ flex: 1,
+ },
+ list: {
+ paddingBottom: spacing.xl,
+ paddingTop: spacing.sm,
+ paddingRight: spacing.md,
+ },
+ sectionHeader: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: spacing.sm,
+ marginBottom: spacing.md,
+ paddingTop: spacing.xs,
+ paddingBottom: spacing.sm,
+ },
+ sectionTitle: {
+ ...typography.label,
+ color: colors.mutedInk,
+ },
+ sectionLine: {
+ flex: 1,
+ height: 1,
+ backgroundColor: colors.border,
+ },
+ entryRow: {
+ flexDirection: 'row',
+ gap: spacing.md,
+ },
+ entryBlockLast: {
+ marginBottom: spacing.md,
+ },
+ leftCol: {
+ width: 24,
+ alignItems: 'center',
+ position: 'relative',
+ },
+ lineTop: {
+ position: 'absolute',
+ top: 0,
+ height: 4,
+ width: 2,
+ left: 11,
+ },
+ lineBottom: {
+ position: 'absolute',
+ top: 28,
+ bottom: 0,
+ width: 2,
+ left: 11,
+ },
+ lineUser: {
+ backgroundColor: '#d6d3d1',
+ },
+ ball: {
+ width: 16,
+ height: 16,
+ borderRadius: 8,
+ marginTop: 6,
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ ballUser: {
+ backgroundColor: '#f59e7a',
+ },
+ ballAi: {
+ backgroundColor: '#fed7aa',
+ },
+ ballReply: {
+ backgroundColor: '#f59e7a',
+ },
+ aiSparkle: {
+ width: 8,
+ height: 8,
+ },
+ sparkleLine: {
+ position: 'absolute',
+ backgroundColor: '#ffffff',
+ borderRadius: 1,
+ },
+ sparkleLineH: {
+ width: 8,
+ height: 1,
+ top: 3.5,
+ left: 0,
+ },
+ sparkleLineV: {
+ width: 1,
+ height: 8,
+ left: 3.5,
+ top: 0,
+ },
+ sparkleLineD1: {
+ width: 6,
+ height: 1,
+ left: 1,
+ top: 3.5,
+ transform: [{ rotate: '45deg' }],
+ },
+ sparkleLineD2: {
+ width: 6,
+ height: 1,
+ left: 1,
+ top: 3.5,
+ transform: [{ rotate: '-45deg' }],
+ },
+ entryRight: {
+ flex: 1,
+ paddingBottom: spacing.lg,
+ paddingTop: 2,
+ },
+ entryHeader: {
+ flexDirection: 'row',
+ alignItems: 'flex-start',
+ gap: spacing.md,
+ },
+ entryBody: {
+ flex: 1,
+ },
+ entryImages: {
+ flexDirection: 'row',
+ flexWrap: 'wrap',
+ marginTop: spacing.sm,
+ },
+ entryImage: {
+ width: 140,
+ height: 140,
+ borderRadius: 14,
+ marginRight: spacing.sm,
+ marginBottom: spacing.sm,
+ backgroundColor: '#f3f4f6',
+ },
+ entryText: {
+ ...typography.body,
+ lineHeight: 24,
+ color: '#111827',
+ },
+ entryTextAi: {
+ ...typography.subtitle,
+ color: '#6b7280',
+ },
+ entryMetaRow: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: spacing.xs,
+ },
+ entryMeta: {
+ ...typography.label,
+ },
+ continueText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 11,
+ color: '#c4551a',
+ },
+ continueButton: {
+ alignSelf: 'flex-start',
+ paddingHorizontal: 10,
+ paddingVertical: 4,
+ borderRadius: 999,
+ backgroundColor: '#fff1e6',
+ },
+ actionRow: {
+ flexDirection: 'row',
+ gap: spacing.sm,
+ marginTop: spacing.sm,
+ alignItems: 'center',
+ },
+ swipeActions: {
+ width: 80,
+ justifyContent: 'stretch',
+ alignItems: 'stretch',
+ paddingLeft: spacing.sm,
+ },
+ swipeDelete: {
+ flex: 1,
+ alignItems: 'center',
+ justifyContent: 'center',
+ backgroundColor: '#ff3b30',
+ },
+ swipeDeletePressable: {
+ flex: 1,
+ },
+ swipeDeleteText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 12,
+ color: '#ffffff',
+ fontWeight: '600',
+ },
+ aiButton: {
+ alignSelf: 'flex-start',
+ paddingHorizontal: 10,
+ paddingVertical: 4,
+ borderRadius: 999,
+ backgroundColor: '#f2f0ed',
+ },
+ aiText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 11,
+ color: '#8b5a3c',
+ },
+ moveButton: {
+ alignSelf: 'flex-start',
+ paddingHorizontal: 10,
+ paddingVertical: 4,
+ borderRadius: 999,
+ backgroundColor: '#eef2f7',
+ },
+ moveText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 11,
+ color: colors.mutedInk,
+ },
+ modalOverlay: {
+ flex: 1,
+ backgroundColor: 'rgba(15, 23, 42, 0.35)',
+ justifyContent: 'flex-end',
+ },
+ modalContainer: {
+ paddingHorizontal: spacing.md,
+ paddingBottom: spacing.lg,
+ },
+ modalSheet: {
+ backgroundColor: colors.paper,
+ borderRadius: 18,
+ paddingTop: spacing.md,
+ overflow: 'hidden',
+ },
+ modalTitle: {
+ ...typography.subtitle,
+ fontSize: 15,
+ fontWeight: '600',
+ color: colors.ink,
+ textAlign: 'center',
+ },
+ modalSubtitle: {
+ ...typography.subtitle,
+ marginTop: 4,
+ marginBottom: spacing.sm,
+ textAlign: 'center',
+ },
+ modalDivider: {
+ height: StyleSheet.hairlineWidth,
+ backgroundColor: colors.border,
+ },
+ modalList: {
+ maxHeight: 260,
+ },
+ modalListContent: {
+ paddingBottom: spacing.xs,
+ },
+ modalItem: {
+ paddingVertical: spacing.sm + 2,
+ paddingHorizontal: spacing.lg,
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ backgroundColor: colors.paper,
+ borderTopWidth: StyleSheet.hairlineWidth,
+ borderColor: colors.border,
+ },
+ modalItemFirst: {
+ borderTopWidth: 0,
+ },
+ modalItemRow: {
+ flex: 1,
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ gap: spacing.sm,
+ },
+ modalItemDisabled: {
+ opacity: 0.5,
+ },
+ modalItemText: {
+ ...typography.body,
+ fontSize: 15,
+ color: colors.ink,
+ },
+ modalItemTextDisabled: {
+ color: colors.mutedInk,
+ },
+ modalBadge: {
+ paddingHorizontal: 8,
+ paddingVertical: 2,
+ borderRadius: 999,
+ backgroundColor: '#f1f5f9',
+ },
+ modalBadgeText: {
+ ...typography.label,
+ fontSize: 10,
+ color: colors.mutedInk,
+ letterSpacing: 0.4,
+ },
+ modalItemSecondary: {
+ ...typography.body,
+ fontSize: 15,
+ color: colors.accent,
+ fontWeight: '600',
+ },
+ modalCancelSheet: {
+ marginTop: spacing.sm,
+ backgroundColor: colors.paper,
+ borderRadius: 18,
+ alignItems: 'center',
+ paddingVertical: spacing.sm + 2,
+ },
+ modalCancelText: {
+ ...typography.body,
+ fontSize: 16,
+ color: colors.ink,
+ fontWeight: '600',
+ },
+ replyModalRoot: {
+ flex: 1,
+ },
+ replyModalHeader: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ marginBottom: spacing.sm,
+ },
+ replyModalCancel: {
+ paddingHorizontal: 6,
+ paddingVertical: 4,
+ },
+ replyModalCancelText: {
+ ...typography.subtitle,
+ fontSize: 12,
+ color: colors.mutedInk,
+ },
+ replyModalTitle: {
+ ...typography.subtitle,
+ fontSize: 15,
+ fontWeight: '600',
+ color: colors.ink,
+ },
+ replyModalPublish: {
+ paddingHorizontal: 12,
+ paddingVertical: 6,
+ borderRadius: 999,
+ backgroundColor: '#fce8db',
+ },
+ replyModalPublishDisabled: {
+ opacity: 0.5,
+ },
+ replyModalPublishText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 11,
+ color: colors.accent,
+ fontWeight: '600',
+ },
+ replyModalBody: {
+ flex: 1,
+ },
+ replyModalContext: {
+ flexGrow: 0,
+ maxHeight: 220,
+ },
+ replyModalContextCompact: {
+ maxHeight: 120,
+ },
+ replyModalContextContent: {
+ paddingBottom: spacing.xs,
+ },
+ replyModalDivider: {
+ height: 0,
+ backgroundColor: 'transparent',
+ },
+ replyContextItem: {
+ paddingBottom: 0,
+ },
+ replyContextRow: {
+ flexDirection: 'row',
+ gap: spacing.sm,
+ },
+ replyContextLeft: {
+ width: 24,
+ alignItems: 'center',
+ position: 'relative',
+ },
+ replyContextRight: {
+ flex: 1,
+ paddingTop: 2,
+ paddingBottom: spacing.lg,
+ },
+ replyContextRightLast: {
+ paddingBottom: spacing.sm,
+ },
+ replyContextHeader: {
+ flexDirection: 'row',
+ alignItems: 'flex-start',
+ gap: spacing.sm,
+ },
+ replyContextBody: {
+ flex: 1,
+ },
+ replyContextText: {
+ ...typography.body,
+ color: colors.ink,
+ lineHeight: 22,
+ },
+ replyContextImages: {
+ flexDirection: 'row',
+ flexWrap: 'wrap',
+ marginTop: spacing.sm,
+ },
+ replyContextImage: {
+ width: 96,
+ height: 96,
+ borderRadius: 14,
+ backgroundColor: '#f3f4f6',
+ marginRight: spacing.sm,
+ marginBottom: spacing.sm,
+ },
+ replyContextMeta: {
+ ...typography.label,
+ color: colors.mutedInk,
+ },
+ replyModalComposer: {
+ flex: 1,
+ paddingTop: spacing.xs,
+ },
+ replyModalInputWrap: {
+ flex: 1,
+ backgroundColor: '#f7f4f1',
+ borderRadius: 16,
+ paddingHorizontal: spacing.md,
+ paddingVertical: spacing.sm,
+ },
+ replyModalInput: {
+ ...typography.body,
+ minHeight: 200,
+ flex: 1,
+ lineHeight: 22,
+ paddingVertical: 0,
+ textAlignVertical: 'top',
+ },
+ replyModalActions: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ marginTop: spacing.sm,
+ },
+ accessoryBar: {
+ paddingHorizontal: spacing.lg,
+ paddingVertical: spacing.sm,
+ borderTopWidth: 1,
+ borderTopColor: colors.border,
+ backgroundColor: colors.paper,
+ flexDirection: 'row',
+ justifyContent: 'flex-end',
+ alignItems: 'center',
+ },
+ accessoryDone: {
+ paddingHorizontal: 10,
+ paddingVertical: 4,
+ borderRadius: 10,
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: 4,
+ },
+ accessoryDoneText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 12,
+ color: colors.accent,
+ fontWeight: '600',
+ },
+ replyAccessoryBar: {
+ paddingHorizontal: spacing.lg,
+ paddingVertical: spacing.sm,
+ borderTopWidth: 1,
+ borderTopColor: colors.border,
+ backgroundColor: colors.paper,
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ },
+ replyRow: {
+ flexDirection: 'row',
+ gap: spacing.md,
+ paddingBottom: spacing.lg,
+ },
+ replyBody: {
+ flex: 1,
+ },
+ replyInput: {
+ ...typography.body,
+ minHeight: 72,
+ lineHeight: 22,
+ paddingVertical: spacing.sm,
+ },
+ replyFooter: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ marginTop: spacing.xs,
+ },
+ replyActions: {
+ flexDirection: 'row',
+ justifyContent: 'flex-end',
+ gap: spacing.md,
+ },
+ replyButtonGhost: {
+ paddingHorizontal: 12,
+ paddingVertical: 6,
+ borderRadius: 999,
+ backgroundColor: '#f4f1ed',
+ },
+ replyCancel: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 11,
+ color: colors.mutedInk,
+ },
+ replyButtonPrimary: {
+ paddingHorizontal: 12,
+ paddingVertical: 6,
+ borderRadius: 999,
+ backgroundColor: '#fce8db',
+ },
+ replySubmit: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 11,
+ color: colors.accent,
+ fontWeight: '600',
+ },
+ aiThinkingRow: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: spacing.sm,
+ marginTop: 2,
+ },
+ aiThinkingText: {
+ ...typography.subtitle,
+ color: colors.mutedInk,
+ },
+ aiErrorBox: {
+ paddingVertical: spacing.sm,
+ },
+ aiErrorText: {
+ ...typography.subtitle,
+ color: '#b42318',
+ },
+ aiErrorActions: {
+ flexDirection: 'row',
+ gap: spacing.md,
+ marginTop: spacing.sm,
+ },
+ reflectionInput: {
+ ...typography.body,
+ minHeight: 90,
+ lineHeight: 22,
+ paddingVertical: spacing.sm,
+ },
+ reflectionFooter: {
+ marginTop: spacing.sm,
+ },
+ reflectionHint: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 10,
+ color: colors.mutedInk,
+ marginBottom: spacing.xs,
+ },
+});
+
+module.exports = IdeasScreen;
diff --git a/src-ios/screens/SettingsScreen.js b/src-ios/screens/SettingsScreen.js
new file mode 100644
index 0000000..155f82a
--- /dev/null
+++ b/src-ios/screens/SettingsScreen.js
@@ -0,0 +1,343 @@
+const React = require('react');
+const {
+ View,
+ Text,
+ StyleSheet,
+ Pressable,
+ TextInput,
+ ScrollView,
+ KeyboardAvoidingView,
+ Keyboard,
+ Platform,
+ Alert,
+} = require('react-native');
+const { useTranslation } = require('react-i18next');
+const { useFocusEffect } = require('@react-navigation/native');
+const Screen = require('../components/Screen');
+const Card = require('../components/Card');
+const { setLanguage, getLanguage } = require('../i18n');
+const { loadAIConfig, saveAIConfig } = require('../services/ai');
+const { typography, spacing, colors } = require('../theme');
+
+function SettingsScreen() {
+ const { t, i18n } = useTranslation();
+ const [lang, setLang] = React.useState(i18n.language);
+ const [aiConfig, setAiConfig] = React.useState({
+ apiBase: '',
+ model: '',
+ apiKey: '',
+ prompt: '',
+ });
+ const [isEditingAI, setIsEditingAI] = React.useState(false);
+ const [saving, setSaving] = React.useState(false);
+ const [saveStatus, setSaveStatus] = React.useState('idle');
+ const saveTimeoutRef = React.useRef(null);
+
+ React.useEffect(() => {
+ getLanguage().then((value) => {
+ if (value) {
+ setLang(value);
+ }
+ });
+ loadAIConfig().then((config) => {
+ setAiConfig(config);
+ });
+ }, []);
+
+ useFocusEffect(
+ React.useCallback(() => {
+ Keyboard.dismiss();
+ return undefined;
+ }, []),
+ );
+
+ const renderReadonlyValue = (value, placeholder, opts = {}) => {
+ const text = value && value.length > 0 ? value : placeholder;
+ return (
+
+ {text}
+
+ );
+ };
+
+ const changeLang = async (value) => {
+ await setLanguage(value);
+ setLang(value);
+ };
+
+ const handleSaveAI = async () => {
+ setSaving(true);
+ try {
+ const next = await saveAIConfig(aiConfig);
+ setAiConfig(next);
+ setSaveStatus('saved');
+ setIsEditingAI(false);
+ Keyboard.dismiss();
+ if (saveTimeoutRef.current) {
+ clearTimeout(saveTimeoutRef.current);
+ }
+ saveTimeoutRef.current = setTimeout(() => {
+ setSaveStatus('idle');
+ }, 1200);
+ } catch (err) {
+ Alert.alert(t('settings.saveFailed'));
+ } finally {
+ setSaving(false);
+ }
+ };
+
+ return (
+
+
+ Keyboard.dismiss()}
+ showsVerticalScrollIndicator={false}
+ >
+ {t('settings.title')}
+
+ {t('settings.language')}
+
+ changeLang('zh')} style={lang === 'zh' ? styles.active : styles.inactive}>
+ 中文
+
+ changeLang('en')} style={lang === 'en' ? styles.active : styles.inactive}>
+ English
+
+
+
+
+
+ {t('settings.aiTitle')}
+ {!isEditingAI ? (
+ setIsEditingAI(true)}>
+ {t('common.edit')}
+
+ ) : null}
+
+
+ {t('settings.aiModel')}
+ {isEditingAI ? (
+ setAiConfig((prev) => ({ ...prev, model: value }))}
+ placeholder="gpt-4o"
+ style={styles.input}
+ autoCapitalize="none"
+ />
+ ) : (
+
+ {renderReadonlyValue(aiConfig.model, 'gpt-4o')}
+
+ )}
+
+
+ {t('settings.aiApiBase')}
+ {isEditingAI ? (
+ setAiConfig((prev) => ({ ...prev, apiBase: value }))}
+ placeholder="https://api.openai.com/v1"
+ style={styles.input}
+ autoCapitalize="none"
+ />
+ ) : (
+
+ {renderReadonlyValue(aiConfig.apiBase, 'https://api.openai.com/v1')}
+
+ )}
+
+
+ {t('settings.aiApiKey')}
+ {isEditingAI ? (
+ setAiConfig((prev) => ({ ...prev, apiKey: value }))}
+ placeholder="sk-..."
+ style={styles.input}
+ autoCapitalize="none"
+ secureTextEntry
+ />
+ ) : (
+
+ {renderReadonlyValue(aiConfig.apiKey ? '••••••••••' : '', 'sk-...')}
+
+ )}
+
+
+ {t('settings.aiPrompt')}
+ {isEditingAI ? (
+ setAiConfig((prev) => ({ ...prev, prompt: value }))}
+ placeholder={t('settings.aiPromptPlaceholder')}
+ style={styles.textarea}
+ multiline
+ textAlignVertical="top"
+ />
+ ) : (
+
+ {renderReadonlyValue(aiConfig.prompt, t('settings.aiPromptPlaceholder'), { isMultiline: true })}
+
+ )}
+
+ {isEditingAI ? (
+
+
+ {saving ? t('settings.saving') : saveStatus === 'saved' ? t('settings.saved') : t('common.save')}
+
+
+ ) : null}
+
+
+ OpenContext
+ {t('settings.about')}
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ flex: {
+ flex: 1,
+ },
+ scrollContent: {
+ paddingBottom: spacing.xl,
+ },
+ heading: {
+ ...typography.title,
+ marginBottom: spacing.lg,
+ },
+ card: {
+ marginBottom: spacing.md,
+ },
+ cardFlat: {
+ shadowColor: 'transparent',
+ shadowOpacity: 0,
+ shadowRadius: 0,
+ shadowOffset: { width: 0, height: 0 },
+ elevation: 0,
+ },
+ label: {
+ ...typography.label,
+ marginBottom: spacing.sm,
+ },
+ cardHeader: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ marginBottom: spacing.sm,
+ },
+ cardHeaderLabel: {
+ marginBottom: 0,
+ },
+ editButton: {
+ paddingHorizontal: 12,
+ paddingVertical: 6,
+ borderRadius: 999,
+ backgroundColor: '#f4f1ed',
+ },
+ editButtonText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 11,
+ color: colors.mutedInk,
+ },
+ row: {
+ flexDirection: 'row',
+ gap: spacing.sm,
+ },
+ field: {
+ marginBottom: spacing.md,
+ },
+ fieldLabel: {
+ ...typography.subtitle,
+ color: colors.mutedInk,
+ marginBottom: spacing.xs,
+ },
+ input: {
+ ...typography.body,
+ borderWidth: 1,
+ borderColor: colors.border,
+ borderRadius: 12,
+ paddingHorizontal: spacing.md,
+ paddingVertical: spacing.sm,
+ backgroundColor: colors.paper,
+ },
+ textarea: {
+ ...typography.body,
+ borderWidth: 1,
+ borderColor: colors.border,
+ borderRadius: 12,
+ paddingHorizontal: spacing.md,
+ paddingVertical: spacing.sm,
+ minHeight: 90,
+ backgroundColor: colors.paper,
+ },
+ readonlyField: {
+ borderRadius: 12,
+ paddingHorizontal: spacing.md,
+ paddingVertical: spacing.sm,
+ backgroundColor: '#f4f1ed',
+ },
+ readonlyFieldMultiline: {
+ minHeight: 90,
+ justifyContent: 'flex-start',
+ },
+ readonlyText: {
+ ...typography.body,
+ color: colors.ink,
+ },
+ readonlyPlaceholder: {
+ color: colors.mutedInk,
+ },
+ readonlyMultiline: {
+ lineHeight: 20,
+ },
+ saveButton: {
+ alignSelf: 'flex-start',
+ paddingHorizontal: spacing.md,
+ paddingVertical: spacing.sm,
+ borderRadius: 999,
+ backgroundColor: '#fce8db',
+ },
+ saveText: {
+ fontFamily: typography.subtitle.fontFamily,
+ fontSize: 12,
+ color: colors.accent,
+ fontWeight: '600',
+ },
+ option: {
+ ...typography.body,
+ },
+ active: {
+ paddingVertical: spacing.sm,
+ paddingHorizontal: spacing.md,
+ borderRadius: 12,
+ backgroundColor: colors.paper,
+ borderWidth: 1,
+ borderColor: colors.accent,
+ },
+ inactive: {
+ paddingVertical: spacing.sm,
+ paddingHorizontal: spacing.md,
+ borderRadius: 12,
+ borderWidth: 1,
+ borderColor: colors.border,
+ },
+ about: {
+ ...typography.subtitle,
+ },
+});
+
+module.exports = SettingsScreen;
diff --git a/src-ios/services/ai.js b/src-ios/services/ai.js
new file mode 100644
index 0000000..6e691f6
--- /dev/null
+++ b/src-ios/services/ai.js
@@ -0,0 +1,95 @@
+const AsyncStorage = require('@react-native-async-storage/async-storage').default;
+
+const CONFIG_KEY = '@opencontext/aiConfig';
+const DEFAULT_PROMPT =
+ 'You are an AI within a journaling app. Your job is to help the user reflect on their thoughts in a thoughtful and kind manner. The user can never directly address you or directly respond to you. Try not to repeat what the user said, instead try to seed new ideas, encourage or debate. Keep your responses concise, but meaningful.';
+
+const DEFAULT_CONFIG = {
+ apiBase: 'https://api.openai.com/v1',
+ model: 'gpt-4o',
+ apiKey: '',
+ prompt: DEFAULT_PROMPT,
+};
+
+async function loadAIConfig() {
+ const raw = await AsyncStorage.getItem(CONFIG_KEY);
+ if (!raw) return { ...DEFAULT_CONFIG };
+ try {
+ const parsed = JSON.parse(raw);
+ return { ...DEFAULT_CONFIG, ...parsed };
+ } catch {
+ return { ...DEFAULT_CONFIG };
+ }
+}
+
+async function saveAIConfig(updates) {
+ const current = await loadAIConfig();
+ const next = { ...current, ...updates };
+ await AsyncStorage.setItem(CONFIG_KEY, JSON.stringify(next));
+ return next;
+}
+
+function isAIAvailable(config) {
+ if (!config) return false;
+ return Boolean(config.apiKey);
+}
+
+function resolveLanguageLabel(lang) {
+ if (!lang) return 'English';
+ if (lang.startsWith('zh')) return 'Chinese (简体中文)';
+ if (lang.startsWith('en')) return 'English';
+ return lang;
+}
+
+function buildMessages(entries, config, lang) {
+ const language = resolveLanguageLabel(lang);
+ const messages = [
+ { role: 'system', content: config.prompt },
+ { role: 'system', content: 'You can only respond in plaintext, do NOT use HTML or Markdown formatting.' },
+ { role: 'system', content: `IMPORTANT: You MUST respond in ${language}. This is the user's preferred language.` },
+ ];
+
+ entries.forEach((entry) => {
+ const text = entry?.content || entry?.text || '';
+ messages.push({ role: 'user', content: text });
+ });
+
+ return messages;
+}
+
+async function generateReflection(entries, options = {}) {
+ const config = options.config || await loadAIConfig();
+ if (!isAIAvailable(config)) {
+ throw new Error('AI not configured');
+ }
+
+ const messages = buildMessages(entries, config, options.language);
+ const res = await fetch(`${config.apiBase}/chat/completions`, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: config.apiKey ? `Bearer ${config.apiKey}` : undefined,
+ },
+ body: JSON.stringify({
+ model: config.model,
+ messages,
+ temperature: 0.7,
+ }),
+ });
+
+ if (!res.ok) {
+ const detail = await res.text();
+ throw new Error(detail || `AI request failed (${res.status})`);
+ }
+
+ const data = await res.json();
+ const content = data?.choices?.[0]?.message?.content || '';
+ return content.trim();
+}
+
+module.exports = {
+ loadAIConfig,
+ saveAIConfig,
+ isAIAvailable,
+ generateReflection,
+};
diff --git a/src-ios/services/ideas.js b/src-ios/services/ideas.js
new file mode 100644
index 0000000..9e4a17c
--- /dev/null
+++ b/src-ios/services/ideas.js
@@ -0,0 +1,466 @@
+const FileSystem = require('expo-file-system');
+const { generateStableId } = require('../utils/uuid');
+const { joinPath } = require('../utils/paths');
+
+const APP_ROOT = `${FileSystem.documentDirectory}opencontext/`;
+const IDEAS_ROOT = `${APP_ROOT}.ideas/`;
+const DEFAULT_BOX = 'inbox';
+const ENTRY_MARKER_REGEX = /^\[\/\/\]: # \(idea:id=([a-f0-9-]+) created_at=([^\s)]+)(?:\s+is_ai=(\w+))?\)\s*$/;
+
+async function ensureIdeasRoot() {
+ try {
+ await FileSystem.makeDirectoryAsync(IDEAS_ROOT, { intermediates: true });
+ } catch {
+ // ignore
+ }
+ try {
+ await FileSystem.makeDirectoryAsync(joinPath(IDEAS_ROOT, DEFAULT_BOX), { intermediates: true });
+ } catch {
+ // ignore
+ }
+}
+
+function sanitizeBoxName(name) {
+ const value = String(name || '').trim();
+ if (!value) return DEFAULT_BOX;
+ if (value.includes('/') || value.includes('\\')) return DEFAULT_BOX;
+ return value;
+}
+
+function stripIdeasRoot(path) {
+ if (!path) return '';
+ return path.startsWith('.ideas/') ? path.slice('.ideas/'.length) : path;
+}
+
+function isLegacyThreadPath(relPath) {
+ const normalized = stripIdeasRoot(relPath);
+ const first = normalized.split('/').filter(Boolean)[0] || '';
+ return /^\d{4}$/.test(first);
+}
+
+function extractBoxFromPath(relPath) {
+ const normalized = stripIdeasRoot(relPath);
+ const parts = normalized.split('/').filter(Boolean);
+ if (!parts.length) return DEFAULT_BOX;
+ if (/^\d{4}$/.test(parts[0])) return DEFAULT_BOX;
+ return parts[0];
+}
+
+function generateEntryId() {
+ return generateStableId();
+}
+
+function createEntryMarker(id, createdAt, isAI = false) {
+ const base = `[//]: # (idea:id=${id} created_at=${createdAt}`;
+ return isAI ? `${base} is_ai=true)` : `${base})`;
+}
+
+function parseEntryMarker(line) {
+ const match = line.match(ENTRY_MARKER_REGEX);
+ if (!match) return null;
+ return {
+ id: match[1],
+ createdAt: match[2],
+ isAI: match[3] === 'true',
+ };
+}
+
+function extractImagesFromContent(content) {
+ if (!content) return { text: '', images: [] };
+ const images = [];
+ const imgRegex = /!\[[^\]]*\]\(([^)]+)\)/g;
+ let match;
+ while ((match = imgRegex.exec(content)) !== null) {
+ images.push(match[1]);
+ }
+ const text = content.replace(/!\[[^\]]*\]\([^)]+\)\n?/g, '').trim();
+ return { text, images };
+}
+
+function addImagesToContent(text, images) {
+ if (!images || images.length === 0) return text;
+ const imageMarkdown = images.map((img, idx) => ``).join('\n');
+ return text ? `${text}\n\n${imageMarkdown}` : imageMarkdown;
+}
+
+function parseThreadDocument(content) {
+ if (!content) return [];
+ const lines = content.split('\n');
+ const entries = [];
+ let currentEntry = null;
+ let contentLines = [];
+
+ for (const line of lines) {
+ const marker = parseEntryMarker(line);
+ if (marker) {
+ if (currentEntry) {
+ const rawContent = contentLines.join('\n').trim();
+ const { text, images } = extractImagesFromContent(rawContent);
+ currentEntry.content = text;
+ currentEntry.images = images;
+ entries.push(currentEntry);
+ }
+ currentEntry = {
+ id: marker.id,
+ createdAt: marker.createdAt,
+ content: '',
+ images: [],
+ isAI: marker.isAI || false,
+ };
+ contentLines = [];
+ } else if (currentEntry) {
+ contentLines.push(line);
+ }
+ }
+
+ if (currentEntry) {
+ const rawContent = contentLines.join('\n').trim();
+ const { text, images } = extractImagesFromContent(rawContent);
+ currentEntry.content = text;
+ currentEntry.images = images;
+ entries.push(currentEntry);
+ }
+
+ if (entries.length === 0 && content.trim()) {
+ entries.push({
+ id: generateEntryId(),
+ createdAt: new Date().toISOString(),
+ content: content.trim(),
+ images: [],
+ isAI: false,
+ });
+ }
+
+ return entries;
+}
+
+function serializeThreadDocument(entries) {
+ if (!entries || entries.length === 0) return '';
+ return entries
+ .map((entry) => {
+ const marker = createEntryMarker(entry.id, entry.createdAt, entry.isAI);
+ const contentWithImages = addImagesToContent(entry.content, entry.images);
+ return `${marker}\n${contentWithImages}`;
+ })
+ .join('\n\n');
+}
+
+function formatDateKey(dateInput) {
+ const d = dateInput instanceof Date ? dateInput : new Date(dateInput);
+ const year = d.getFullYear();
+ const month = String(d.getMonth() + 1).padStart(2, '0');
+ const day = String(d.getDate()).padStart(2, '0');
+ return `${year}-${month}-${day}`;
+}
+
+function slugify(text) {
+ return text
+ .toLowerCase()
+ .replace(/[^\w\u4e00-\u9fa5\s-]/g, '')
+ .replace(/\s+/g, '-')
+ .replace(/-+/g, '-')
+ .replace(/^-|-$/g, '')
+ .slice(0, 30) || 'thread';
+}
+
+function generateThreadPath(title, date = new Date(), box = DEFAULT_BOX) {
+ const d = date instanceof Date ? date : new Date(date);
+ const year = d.getFullYear();
+ const month = String(d.getMonth() + 1).padStart(2, '0');
+ const day = String(d.getDate()).padStart(2, '0');
+ const datePrefix = `${year}${month}${day}`;
+ const slug = slugify(title || '');
+ const timestamp = Date.now().toString(36);
+ const safeBox = sanitizeBoxName(box);
+ return `${safeBox}/${year}/${month}/${datePrefix}-${slug}-${timestamp}.md`;
+}
+
+function extractTitleFromPath(relPath) {
+ const filename = relPath.split('/').pop().replace('.md', '');
+ const parts = filename.split('-');
+ if (parts.length > 2) {
+ return parts.slice(1, -1).join(' ');
+ }
+ return filename;
+}
+
+function extractDateFromPath(relPath) {
+ const filename = relPath.split('/').pop().replace('.md', '');
+ const dateMatch = filename.match(/^(\d{4})(\d{2})(\d{2})/);
+ if (dateMatch) {
+ return `${dateMatch[1]}-${dateMatch[2]}-${dateMatch[3]}`;
+ }
+ return null;
+}
+
+async function listMarkdownFiles(dir, prefix = '') {
+ const items = await FileSystem.readDirectoryAsync(dir);
+ const result = [];
+
+ for (const name of items) {
+ const absPath = joinPath(dir, name);
+ const info = await FileSystem.getInfoAsync(absPath);
+ if (info.isDirectory) {
+ const nestedPrefix = joinPath(prefix, name);
+ const nested = await listMarkdownFiles(absPath, nestedPrefix);
+ result.push(...nested);
+ } else if (name.endsWith('.md')) {
+ result.push(joinPath(prefix, name));
+ }
+ }
+
+ return result;
+}
+
+async function migrateLegacyThreads() {
+ const files = await listMarkdownFiles(IDEAS_ROOT);
+ for (const relPath of files) {
+ if (!isLegacyThreadPath(relPath)) continue;
+ const fromPath = joinPath(IDEAS_ROOT, relPath);
+ const destRelPath = joinPath(DEFAULT_BOX, relPath);
+ const destPath = joinPath(IDEAS_ROOT, destRelPath);
+ const destFolder = destPath.split('/').slice(0, -1).join('/');
+ try {
+ await FileSystem.makeDirectoryAsync(destFolder, { intermediates: true });
+ await FileSystem.moveAsync({ from: fromPath, to: destPath });
+ } catch {
+ // ignore failed migration
+ }
+ }
+}
+
+async function listBoxes() {
+ await ensureIdeasRoot();
+ const items = await FileSystem.readDirectoryAsync(IDEAS_ROOT);
+ const boxes = [];
+ for (const name of items) {
+ if (!name) continue;
+ const info = await FileSystem.getInfoAsync(joinPath(IDEAS_ROOT, name));
+ if (!info.isDirectory) continue;
+ if (/^\d{4}$/.test(name)) continue;
+ boxes.push(name);
+ }
+ const unique = Array.from(new Set([DEFAULT_BOX, ...boxes]));
+ const rest = unique.filter((box) => box !== DEFAULT_BOX).sort();
+ return [DEFAULT_BOX, ...rest];
+}
+
+function resolveThreadPaths(threadId) {
+ const relPath = stripIdeasRoot(threadId);
+ const absPath = joinPath(IDEAS_ROOT, relPath);
+ return { relPath, absPath, threadId: `.ideas/${relPath}` };
+}
+
+async function listThreads(options = {}) {
+ const { box } = options;
+ await ensureIdeasRoot();
+ await migrateLegacyThreads();
+ const files = await listMarkdownFiles(IDEAS_ROOT);
+ const threads = [];
+
+ for (const relPath of files) {
+ const threadBox = extractBoxFromPath(relPath);
+ if (box && threadBox !== box) continue;
+ const absPath = joinPath(IDEAS_ROOT, relPath);
+ const content = await FileSystem.readAsStringAsync(absPath, {
+ encoding: FileSystem.EncodingType.UTF8,
+ });
+ const entries = parseThreadDocument(content);
+ const threadId = `.ideas/${relPath}`;
+ const entriesWithThreadId = entries.map((entry) => ({
+ ...entry,
+ threadId,
+ }));
+ const firstEntry = entriesWithThreadId[0];
+ const lastEntry = entriesWithThreadId[entriesWithThreadId.length - 1];
+ const createdAt = firstEntry?.createdAt || new Date().toISOString();
+ const updatedAt = lastEntry?.createdAt || createdAt;
+
+ threads.push({
+ id: threadId,
+ title: extractTitleFromPath(relPath),
+ createdAt,
+ updatedAt,
+ entries: entriesWithThreadId,
+ _path: threadId,
+ _date: extractDateFromPath(relPath) || formatDateKey(createdAt),
+ _box: threadBox,
+ });
+ }
+
+ return threads;
+}
+
+async function getThread(threadId) {
+ const { absPath, threadId: normalizedId } = resolveThreadPaths(threadId);
+ try {
+ const content = await FileSystem.readAsStringAsync(absPath, {
+ encoding: FileSystem.EncodingType.UTF8,
+ });
+ const entries = parseThreadDocument(content).map((entry) => ({
+ ...entry,
+ threadId: normalizedId,
+ }));
+ const firstEntry = entries[0];
+ const lastEntry = entries[entries.length - 1];
+ const createdAt = firstEntry?.createdAt || new Date().toISOString();
+ const updatedAt = lastEntry?.createdAt || createdAt;
+ const relPath = stripIdeasRoot(normalizedId);
+ return {
+ id: normalizedId,
+ title: extractTitleFromPath(relPath),
+ createdAt,
+ updatedAt,
+ entries,
+ _path: normalizedId,
+ _date: extractDateFromPath(relPath) || formatDateKey(createdAt),
+ _box: extractBoxFromPath(relPath),
+ };
+ } catch (err) {
+ return null;
+ }
+}
+
+async function createThread({ content, title, isAI = false, images = [], box = DEFAULT_BOX }) {
+ await ensureIdeasRoot();
+ const now = new Date().toISOString();
+ const entryId = generateEntryId();
+ const threadRelPath = generateThreadPath(title || content.slice(0, 20), new Date(), box);
+ const absPath = joinPath(IDEAS_ROOT, threadRelPath);
+ const folderPath = absPath.split('/').slice(0, -1).join('/');
+
+ await FileSystem.makeDirectoryAsync(folderPath, { intermediates: true });
+
+ const threadId = `.ideas/${threadRelPath}`;
+ const firstEntry = {
+ id: entryId,
+ threadId,
+ content,
+ images,
+ isAI,
+ createdAt: now,
+ };
+
+ const docContent = serializeThreadDocument([firstEntry]);
+ await FileSystem.writeAsStringAsync(absPath, docContent, {
+ encoding: FileSystem.EncodingType.UTF8,
+ });
+
+ return {
+ id: threadId,
+ title: extractTitleFromPath(threadRelPath),
+ createdAt: now,
+ updatedAt: now,
+ entries: [firstEntry],
+ _path: threadId,
+ _date: formatDateKey(now),
+ _box: extractBoxFromPath(threadRelPath),
+ };
+}
+
+async function continueThread({ threadId, content, isAI = false, images = [] }) {
+ const { absPath, threadId: normalizedId } = resolveThreadPaths(threadId);
+ const thread = await getThread(normalizedId);
+ if (!thread) {
+ throw new Error(`Thread not found: ${threadId}`);
+ }
+
+ const now = new Date().toISOString();
+ const entryId = generateEntryId();
+ const newEntry = {
+ id: entryId,
+ threadId: normalizedId,
+ content,
+ images,
+ isAI,
+ createdAt: now,
+ };
+
+ const updatedEntries = [...thread.entries, newEntry];
+ const docContent = serializeThreadDocument(updatedEntries);
+ await FileSystem.writeAsStringAsync(absPath, docContent, {
+ encoding: FileSystem.EncodingType.UTF8,
+ });
+
+ return newEntry;
+}
+
+async function deleteEntry({ threadId, entryId }) {
+ const { absPath, threadId: normalizedId } = resolveThreadPaths(threadId);
+ const thread = await getThread(normalizedId);
+ if (!thread) return false;
+
+ const updatedEntries = thread.entries.filter((entry) => entry.id !== entryId);
+ if (updatedEntries.length === 0) {
+ await FileSystem.deleteAsync(absPath, { idempotent: true });
+ return true;
+ }
+
+ const docContent = serializeThreadDocument(updatedEntries);
+ await FileSystem.writeAsStringAsync(absPath, docContent, {
+ encoding: FileSystem.EncodingType.UTF8,
+ });
+ return true;
+}
+
+async function deleteThread(threadId) {
+ const { absPath } = resolveThreadPaths(threadId);
+ await FileSystem.deleteAsync(absPath, { idempotent: true });
+ return true;
+}
+
+async function createBox(name) {
+ const safeName = sanitizeBoxName(name);
+ await ensureIdeasRoot();
+ await FileSystem.makeDirectoryAsync(joinPath(IDEAS_ROOT, safeName), { intermediates: true });
+ return safeName;
+}
+
+async function renameBox(oldName, newName) {
+ const safeName = sanitizeBoxName(newName);
+ if (!oldName || oldName === safeName || oldName === DEFAULT_BOX) return oldName;
+ await ensureIdeasRoot();
+ const fromPath = joinPath(IDEAS_ROOT, oldName);
+ const toPath = joinPath(IDEAS_ROOT, safeName);
+ await FileSystem.moveAsync({ from: fromPath, to: toPath });
+ return safeName;
+}
+
+async function deleteBox(name) {
+ if (!name || name === DEFAULT_BOX) return false;
+ const target = joinPath(IDEAS_ROOT, name);
+ await FileSystem.deleteAsync(target, { idempotent: true });
+ return true;
+}
+
+async function moveThread({ threadId, targetBox }) {
+ const safeBox = sanitizeBoxName(targetBox);
+ const { relPath, absPath } = resolveThreadPaths(threadId);
+ const currentBox = extractBoxFromPath(relPath);
+ if (currentBox === safeBox) {
+ return `.ideas/${relPath}`;
+ }
+ const restPath = isLegacyThreadPath(relPath)
+ ? relPath
+ : relPath.split('/').slice(1).join('/');
+ const destRelPath = joinPath(safeBox, restPath);
+ const destPath = joinPath(IDEAS_ROOT, destRelPath);
+ const destFolder = destPath.split('/').slice(0, -1).join('/');
+ await FileSystem.makeDirectoryAsync(destFolder, { intermediates: true });
+ await FileSystem.moveAsync({ from: absPath, to: destPath });
+ return `.ideas/${destRelPath}`;
+}
+
+module.exports = {
+ listBoxes,
+ listThreads,
+ getThread,
+ createThread,
+ continueThread,
+ deleteEntry,
+ deleteThread,
+ createBox,
+ renameBox,
+ deleteBox,
+ moveThread,
+};
diff --git a/src-ios/services/images.js b/src-ios/services/images.js
new file mode 100644
index 0000000..15bdbd1
--- /dev/null
+++ b/src-ios/services/images.js
@@ -0,0 +1,32 @@
+const FileSystem = require('expo-file-system');
+const { generateStableId } = require('../utils/uuid');
+
+const APP_ROOT = `${FileSystem.documentDirectory}opencontext/`;
+const IMAGES_ROOT = `${APP_ROOT}images/`;
+
+async function ensureImagesRoot() {
+ await FileSystem.makeDirectoryAsync(IMAGES_ROOT, { intermediates: true });
+}
+
+function inferExtension(asset) {
+ const source = asset?.fileName || asset?.uri || '';
+ const match = source.match(/\.([a-z0-9]+)(?:\?|$)/i);
+ if (match) {
+ return match[1].toLowerCase();
+ }
+ return 'jpg';
+}
+
+async function importImageAsset(asset) {
+ if (!asset?.uri) return null;
+ await ensureImagesRoot();
+ const ext = inferExtension(asset);
+ const name = `${Date.now().toString(36)}-${generateStableId().slice(0, 8)}.${ext}`;
+ const dest = `${IMAGES_ROOT}${name}`;
+ await FileSystem.copyAsync({ from: asset.uri, to: dest });
+ return dest;
+}
+
+module.exports = {
+ importImageAsset,
+};
diff --git a/src-ios/theme.js b/src-ios/theme.js
new file mode 100644
index 0000000..c5f13b6
--- /dev/null
+++ b/src-ios/theme.js
@@ -0,0 +1,52 @@
+const colors = {
+ paper: '#ffffff',
+ ink: '#1f1e1b',
+ mutedInk: '#6b7280',
+ accent: '#e76f2c',
+ border: '#e7e5e4',
+ card: '#ffffff',
+ shadow: '#000000',
+ gradientA: '#ffffff',
+ gradientB: '#ffffff',
+ gradientC: '#ffffff',
+};
+
+const spacing = {
+ xs: 6,
+ sm: 10,
+ md: 16,
+ lg: 24,
+ xl: 32,
+};
+
+const typography = {
+ title: {
+ fontFamily: 'Georgia',
+ fontSize: 24,
+ fontWeight: '600',
+ color: colors.ink,
+ },
+ subtitle: {
+ fontFamily: 'Avenir',
+ fontSize: 14,
+ color: colors.mutedInk,
+ },
+ body: {
+ fontFamily: 'Avenir',
+ fontSize: 16,
+ color: colors.ink,
+ },
+ label: {
+ fontFamily: 'Avenir',
+ fontSize: 12,
+ letterSpacing: 0.6,
+ textTransform: 'uppercase',
+ color: colors.mutedInk,
+ },
+};
+
+module.exports = {
+ colors,
+ spacing,
+ typography,
+};
diff --git a/src-ios/utils/date.js b/src-ios/utils/date.js
new file mode 100644
index 0000000..034aa09
--- /dev/null
+++ b/src-ios/utils/date.js
@@ -0,0 +1,15 @@
+function formatDate(iso, locale = 'zh') {
+ try {
+ const date = new Date(iso);
+ return new Intl.DateTimeFormat(locale, {
+ month: 'short',
+ day: 'numeric',
+ }).format(date);
+ } catch (err) {
+ return '';
+ }
+}
+
+module.exports = {
+ formatDate,
+};
diff --git a/src-ios/utils/ideaTime.js b/src-ios/utils/ideaTime.js
new file mode 100644
index 0000000..3848728
--- /dev/null
+++ b/src-ios/utils/ideaTime.js
@@ -0,0 +1,41 @@
+function formatDateKey(date) {
+ const d = new Date(date);
+ if (Number.isNaN(d.getTime())) return '';
+ const year = d.getFullYear();
+ const month = String(d.getMonth() + 1).padStart(2, '0');
+ const day = String(d.getDate()).padStart(2, '0');
+ return `${year}-${month}-${day}`;
+}
+
+function formatDateDisplay(dateKey, t) {
+ if (!dateKey) return t('time.today', 'Today');
+ const today = formatDateKey(new Date());
+ const yesterday = formatDateKey(new Date(Date.now() - 86400000));
+ if (dateKey === today) return t('time.today', 'Today');
+ if (dateKey === yesterday) return t('time.yesterday', 'Yesterday');
+ try {
+ const date = new Date(dateKey);
+ return new Intl.DateTimeFormat(undefined, { month: 'short', day: 'numeric' }).format(date);
+ } catch (err) {
+ return dateKey;
+ }
+}
+
+function formatRelativeTime(dateStr, t) {
+ const now = Date.now();
+ const date = new Date(dateStr).getTime();
+ if (!date) return '';
+ const diffMs = now - date;
+ const diffMins = Math.floor(diffMs / 60000);
+ const diffHours = Math.floor(diffMins / 60);
+ if (diffMins < 1) return t('time.justNow', 'Just now');
+ if (diffMins < 60) return t('time.minutesAgo', { count: diffMins });
+ if (diffHours < 24) return t('time.hoursAgo', { count: diffHours });
+ return formatDateDisplay(formatDateKey(dateStr), t);
+}
+
+module.exports = {
+ formatDateKey,
+ formatDateDisplay,
+ formatRelativeTime,
+};
diff --git a/src-ios/utils/paths.js b/src-ios/utils/paths.js
new file mode 100644
index 0000000..2b5e8db
--- /dev/null
+++ b/src-ios/utils/paths.js
@@ -0,0 +1,25 @@
+function joinPath(...parts) {
+ return parts
+ .filter((part) => typeof part === 'string' && part.length > 0)
+ .map((part, index) => {
+ if (index === 0) {
+ return part.replace(/\/+$/g, '');
+ }
+ return part.replace(/^\/+/g, '').replace(/\/+$/g, '');
+ })
+ .join('/');
+}
+
+function resolveDocPaths({ documentsRoot, relPath }) {
+ const safeRelPath = String(relPath || '').replace(/^\/+/g, '');
+ const absPath = joinPath(documentsRoot, safeRelPath);
+ return {
+ relPath: safeRelPath,
+ absPath,
+ };
+}
+
+module.exports = {
+ joinPath,
+ resolveDocPaths,
+};
diff --git a/src-ios/utils/uuid.js b/src-ios/utils/uuid.js
new file mode 100644
index 0000000..6cce0df
--- /dev/null
+++ b/src-ios/utils/uuid.js
@@ -0,0 +1,37 @@
+function generateStableId() {
+ const bytes = randomBytes(16);
+ // UUID v4 variant/version bits
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
+ const hex = bytesToHex(bytes);
+ return (
+ `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-`
+ + `${hex.slice(16, 20)}-${hex.slice(20, 32)}`
+ );
+}
+
+function randomBytes(length) {
+ const bytes = new Uint8Array(length);
+ const cryptoObj = typeof globalThis !== 'undefined' ? globalThis.crypto : null;
+ if (cryptoObj && typeof cryptoObj.getRandomValues === 'function') {
+ cryptoObj.getRandomValues(bytes);
+ return bytes;
+ }
+ for (let i = 0; i < length; i += 1) {
+ bytes[i] = Math.floor(Math.random() * 256);
+ }
+ return bytes;
+}
+
+function bytesToHex(bytes) {
+ let hex = '';
+ for (let i = 0; i < bytes.length; i += 1) {
+ const v = bytes[i].toString(16);
+ hex += v.length === 1 ? `0${v}` : v;
+ }
+ return hex;
+}
+
+module.exports = {
+ generateStableId,
+};
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index 1ccea4b..8e4fc5f 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -9,7 +9,7 @@ edition = "2021"
tauri-build = { version = "2", features = [] }
[dependencies]
-tauri = { version = "2", features = [] }
+tauri = { version = "2", features = ["image-png", "tray-icon"] }
tauri-plugin-shell = "2"
tauri-plugin-clipboard-manager = "2"
serde = { version = "1", features = ["derive"] }
@@ -19,6 +19,7 @@ tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync"] }
opencontext-core = { path = "../crates/opencontext-core", features = ["search"] }
reqwest = { version = "0.12", features = ["json", "stream"] }
futures = "0.3"
+portable-pty = "0.8"
[profile.release]
panic = "abort"
@@ -26,4 +27,3 @@ codegen-units = 1
lto = true
opt-level = "s"
strip = true
-
diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json
index dfb5406..9d50cf9 100644
--- a/src-tauri/capabilities/default.json
+++ b/src-tauri/capabilities/default.json
@@ -6,6 +6,31 @@
"permissions": [
"core:default",
"shell:allow-open",
+ {
+ "identifier": "shell:allow-spawn",
+ "allow": [
+ {
+ "name": "terminal-shell",
+ "cmd": "bash",
+ "args": true
+ },
+ {
+ "name": "terminal-sh",
+ "cmd": "sh",
+ "args": true
+ },
+ {
+ "name": "terminal-cmd",
+ "cmd": "cmd",
+ "args": true
+ },
+ {
+ "name": "terminal-powershell",
+ "cmd": "powershell",
+ "args": true
+ }
+ ]
+ },
"clipboard-manager:allow-write-text",
"clipboard-manager:allow-read-text",
"core:window:default",
@@ -17,7 +42,7 @@
"core:window:allow-unmaximize",
"core:window:allow-toggle-maximize",
"core:window:allow-set-size",
- "core:window:allow-set-position"
+ "core:window:allow-set-position",
+ "core:window:allow-set-theme"
]
}
-
diff --git a/src-tauri/icons/about-icon.png b/src-tauri/icons/about-icon.png
new file mode 100644
index 0000000..2db8790
Binary files /dev/null and b/src-tauri/icons/about-icon.png differ
diff --git a/src-tauri/icons/tray-icon-32.png b/src-tauri/icons/tray-icon-32.png
new file mode 100644
index 0000000..af4d93e
Binary files /dev/null and b/src-tauri/icons/tray-icon-32.png differ
diff --git a/src-tauri/icons/tray-icon-template-36.png b/src-tauri/icons/tray-icon-template-36.png
new file mode 100644
index 0000000..533e9aa
Binary files /dev/null and b/src-tauri/icons/tray-icon-template-36.png differ
diff --git a/src-tauri/icons/tray-icon-template-64.png b/src-tauri/icons/tray-icon-template-64.png
new file mode 100644
index 0000000..20fb7bb
Binary files /dev/null and b/src-tauri/icons/tray-icon-template-64.png differ
diff --git a/src-tauri/src/agent_rpc.rs b/src-tauri/src/agent_rpc.rs
new file mode 100644
index 0000000..3c9667a
--- /dev/null
+++ b/src-tauri/src/agent_rpc.rs
@@ -0,0 +1,38 @@
+use std::collections::HashMap;
+use std::sync::{Arc, Mutex};
+
+#[derive(Clone, Copy, PartialEq, Eq)]
+pub(crate) enum AgentRpcKind {
+ CodexMcp,
+ ClaudeAcp,
+ OpenCodeAcp,
+}
+
+pub(crate) struct AgentRpcSession {
+ pub(crate) kind: AgentRpcKind,
+ #[allow(dead_code)]
+ pub(crate) child: Arc>,
+ pub(crate) stdin: Arc>,
+ pub(crate) state: Arc>,
+ pub(crate) next_id: std::sync::atomic::AtomicU64,
+}
+
+pub(crate) struct AgentRpcState {
+ pub(crate) pending_responses:
+ HashMap>>,
+ pub(crate) request_map: HashMap,
+ pub(crate) active_request: Option,
+ #[allow(dead_code)]
+ pub(crate) session_id: Option,
+ pub(crate) model: Option,
+ pub(crate) cwd: Option,
+ pub(crate) conversation_id: Option,
+ #[allow(dead_code)]
+ pub(crate) initialized: bool,
+ pub(crate) codex_session_started: bool,
+ pub(crate) codex_received_delta: bool,
+ pub(crate) codex_elicitation_map: HashMap,
+ pub(crate) codex_patch_changes: HashMap,
+ pub(crate) acp_permission_map: HashMap,
+ pub(crate) startup_error: Option,
+}
diff --git a/src-tauri/src/chat.rs b/src-tauri/src/chat.rs
new file mode 100644
index 0000000..6996f7d
--- /dev/null
+++ b/src-tauri/src/chat.rs
@@ -0,0 +1,104 @@
+use serde::{Deserialize, Serialize};
+
+#[derive(Deserialize, Serialize, Clone)]
+pub(crate) struct ChatMessage {
+ pub(crate) role: String,
+ pub(crate) content: serde_json::Value,
+}
+
+pub(crate) fn flatten_message_content(value: &serde_json::Value) -> String {
+ if value.is_null() {
+ return String::new();
+ }
+ if let Some(s) = value.as_str() {
+ return s.to_string();
+ }
+ if let Some(arr) = value.as_array() {
+ let mut parts: Vec = Vec::new();
+ for item in arr {
+ if let Some(s) = item.as_str() {
+ parts.push(s.to_string());
+ continue;
+ }
+ if let Some(obj) = item.as_object() {
+ if let Some(text) = obj.get("text").and_then(|t| t.as_str()) {
+ parts.push(text.to_string());
+ continue;
+ }
+ if let Some(text_obj) = obj.get("text").and_then(|t| t.as_object()) {
+ if let Some(val) = text_obj.get("value").and_then(|v| v.as_str()) {
+ parts.push(val.to_string());
+ continue;
+ }
+ }
+ if let Some(content) = obj.get("content") {
+ let flattened = flatten_message_content(content);
+ if !flattened.is_empty() {
+ parts.push(flattened);
+ continue;
+ }
+ }
+ if let Some(text) = obj.get("message").and_then(|t| t.as_str()) {
+ parts.push(text.to_string());
+ }
+ }
+ }
+ return parts.join("");
+ }
+ if let Some(obj) = value.as_object() {
+ if let Some(text) = obj.get("text").and_then(|t| t.as_str()) {
+ return text.to_string();
+ }
+ if let Some(content) = obj.get("content") {
+ return flatten_message_content(content);
+ }
+ }
+ value.to_string()
+}
+
+pub(crate) fn build_cli_prompt(messages: &[ChatMessage]) -> String {
+ let mut lines: Vec = Vec::new();
+ for msg in messages {
+ let content = flatten_message_content(&msg.content);
+ if content.trim().is_empty() {
+ continue;
+ }
+ lines.push(format!(
+ "{}: {}",
+ msg.role.to_uppercase(),
+ content.trim()
+ ));
+ }
+ lines.join("\n\n")
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use serde_json::json;
+
+ #[test]
+ fn flatten_message_content_handles_nested_arrays() {
+ let value = json!([
+ { "text": "Hello" },
+ { "content": [{ "text": " " }, { "text": "World" }] },
+ { "content": { "text": "!" } }
+ ]);
+ assert_eq!(flatten_message_content(&value), "Hello World!");
+ }
+
+ #[test]
+ fn build_cli_prompt_formats_roles() {
+ let messages = vec![
+ ChatMessage {
+ role: "user".to_string(),
+ content: json!("Hi"),
+ },
+ ChatMessage {
+ role: "assistant".to_string(),
+ content: json!("Ok"),
+ },
+ ];
+ assert_eq!(build_cli_prompt(&messages), "USER: Hi\n\nASSISTANT: Ok");
+ }
+}
diff --git a/src-tauri/src/commands/agent.rs b/src-tauri/src/commands/agent.rs
new file mode 100644
index 0000000..7b0e389
--- /dev/null
+++ b/src-tauri/src/commands/agent.rs
@@ -0,0 +1,2133 @@
+use crate::agent_rpc::{AgentRpcKind, AgentRpcSession, AgentRpcState};
+use crate::chat::build_cli_prompt;
+use crate::utils::{map_err, CmdResult};
+use crate::AppState;
+use opencontext_core::search::SearchConfig;
+use serde::{Deserialize, Serialize};
+use std::collections::HashMap;
+use std::io::{BufRead, BufReader, ErrorKind, Write};
+use std::path::PathBuf;
+use std::process::{Command, Stdio};
+use std::sync::atomic::{AtomicU64, Ordering};
+use std::sync::{mpsc, Arc, Mutex};
+use std::time::{Duration, Instant};
+use tauri::{Emitter, Manager, State};
+
+static AGENT_COUNTER: AtomicU64 = AtomicU64::new(1);
+const AGENT_SESSIONS_FILE: &str = "agent-sessions.json";
+const DEFAULT_CODEX_MODELS: [&str; 4] = [
+ "gpt-5.2-codex",
+ "gpt-5.1-codex-max",
+ "gpt-5.1-codex-mini",
+ "gpt-5.2",
+];
+const DEFAULT_AGENTS_MD: &str = r#"# OpenContext Agent
+
+You are the OpenContext dedicated coding agent.
+
+Guidelines:
+- Prefer using `oc` CLI commands to create/search/iterate OpenContext content.
+- Avoid editing user files directly unless explicitly requested.
+- When reading or writing files, ask for permission if required.
+- Be concise, actionable, and follow OpenContext workflows.
+"#;
+
+#[derive(Serialize, Clone, Default)]
+pub(crate) struct AgentStreamEvent {
+ #[serde(skip_serializing_if = "Option::is_none")]
+ content: Option,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ done: Option,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ error: Option,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ status: Option,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ reasoning: Option,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ permission: Option,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ tool: Option,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ models: Option,
+}
+
+fn agent_sessions_path(app: &tauri::AppHandle) -> CmdResult {
+ let base_dir = app.path().app_data_dir().map_err(map_err)?;
+ Ok(base_dir.join(AGENT_SESSIONS_FILE))
+}
+
+fn emit_agent_event(app: &tauri::AppHandle, request_id: &str, payload: AgentStreamEvent) {
+ let event_name = format!("agent-stream-{}", request_id);
+ let _ = app.emit(&event_name, payload);
+}
+
+fn emit_agent_error(app: &tauri::AppHandle, request_id: &str, message: String) {
+ emit_agent_event(
+ app,
+ request_id,
+ AgentStreamEvent {
+ content: None,
+ done: Some(true),
+ error: Some(message),
+ ..Default::default()
+ },
+ );
+}
+
+fn emit_agent_status(app: &tauri::AppHandle, request_id: &str, status: &str) {
+ emit_agent_event(
+ app,
+ request_id,
+ AgentStreamEvent {
+ status: Some(status.to_string()),
+ ..Default::default()
+ },
+ );
+}
+
+fn detect_codex_mcp_args() -> Vec {
+ let output = Command::new("codex")
+ .arg("--version")
+ .output()
+ .ok()
+ .and_then(|out| String::from_utf8(out.stdout).ok())
+ .unwrap_or_default();
+
+ parse_codex_mcp_args(&output)
+}
+
+pub(crate) fn parse_codex_mcp_args(output: &str) -> Vec {
+ let mut major = 0;
+ let mut minor = 0;
+
+ for token in output.split_whitespace() {
+ let trimmed = token.trim_start_matches('v');
+ let mut parts = trimmed.split('.').filter_map(|p| p.parse::().ok());
+ if let (Some(mj), Some(mn)) = (parts.next(), parts.next()) {
+ major = mj;
+ minor = mn;
+ break;
+ }
+ }
+
+ if major > 0 || minor >= 40 {
+ return vec!["mcp-server".to_string()];
+ }
+ if major == 0 && minor == 0 {
+ return vec!["mcp-server".to_string()];
+ }
+ vec!["mcp".to_string(), "serve".to_string()]
+}
+
+fn strip_ansi(input: &str) -> String {
+ let mut out = String::new();
+ let mut chars = input.chars().peekable();
+ while let Some(ch) = chars.next() {
+ if ch == '\u{1b}' {
+ if matches!(chars.peek(), Some('[')) {
+ chars.next();
+ while let Some(next) = chars.next() {
+ if next.is_ascii_alphabetic() {
+ break;
+ }
+ }
+ continue;
+ }
+ }
+ out.push(ch);
+ }
+ out
+}
+
+fn extract_error_detail(message: &str) -> String {
+ let cleaned = strip_ansi(message);
+ let lower = cleaned.to_lowercase();
+ if let Some(pos) = lower.find("error=") {
+ return cleaned[pos + 6..].trim().to_string();
+ }
+ if let Some(pos) = lower.find("error:") {
+ return cleaned[pos + 6..].trim().to_string();
+ }
+ cleaned.trim().to_string()
+}
+
+fn classify_http_error(message: &str, label: &str) -> Option {
+ let lower = message.to_lowercase();
+ if lower.contains("error=http")
+ || lower.contains("http 4")
+ || lower.contains("http 5")
+ || lower.contains("too many requests")
+ || lower.contains("rate limit")
+ || lower.contains("usage_not_included")
+ || lower.contains("quota")
+ {
+ let detail = extract_error_detail(message);
+ return Some(format!("{} request failed: {}", label, detail));
+ }
+ None
+}
+
+fn classify_codex_error(message: &str) -> Option {
+ let cleaned = strip_ansi(message);
+ let lower = cleaned.to_lowercase();
+ if lower.contains("command not found") || lower.contains("not recognized") {
+ return Some(
+ "Codex CLI not found. Please ensure 'codex' is installed and in PATH.".to_string(),
+ );
+ }
+ if lower.contains("permission denied") {
+ return Some(format!("Permission denied when starting Codex: {}", cleaned));
+ }
+ if lower.contains("authentication") || lower.contains("login") {
+ return Some("Codex authentication required. Please run 'codex auth' first.".to_string());
+ }
+ if lower.contains("unknown flag")
+ || lower.contains("invalid option")
+ || lower.contains("unrecognized")
+ {
+ return Some(format!("Invalid Codex CLI arguments: {}", cleaned));
+ }
+ if lower.contains("timed out") || lower.contains("timeout") {
+ return Some("Codex initialization timed out. Please check Codex auth status and network.".to_string());
+ }
+ if let Some(error) = classify_http_error(&cleaned, "Codex") {
+ return Some(error);
+ }
+ None
+}
+
+fn classify_acp_error(message: &str, kind: AgentRpcKind) -> Option {
+ let label = match kind {
+ AgentRpcKind::ClaudeAcp => "Claude",
+ AgentRpcKind::OpenCodeAcp => "OpenCode",
+ _ => "ACP",
+ };
+ let cleaned = strip_ansi(message);
+ let lower = cleaned.to_lowercase();
+ if lower.contains("command not found") || lower.contains("not recognized") {
+ return Some(format!(
+ "{} CLI not found. Please ensure the CLI is installed and in PATH.",
+ label
+ ));
+ }
+ if lower.contains("permission denied") {
+ return Some(format!("Permission denied when starting {}.", label));
+ }
+ if lower.contains("authentication") || lower.contains("unauthorized") || lower.contains("login") {
+ let hint = match kind {
+ AgentRpcKind::ClaudeAcp => "Please run `claude /login`.",
+ AgentRpcKind::OpenCodeAcp => "Please run `opencode auth login`.",
+ _ => "",
+ };
+ let suffix = if hint.is_empty() { "".to_string() } else { format!(" {}", hint) };
+ return Some(format!("{} authentication required.{}", label, suffix));
+ }
+ if lower.contains("timed out") || lower.contains("timeout") {
+ return Some(format!("{} request timed out. Please check network and auth.", label));
+ }
+ if let Some(error) = classify_http_error(&cleaned, label) {
+ return Some(error);
+ }
+ None
+}
+
+fn codex_preflight(app: &tauri::AppHandle, session: &AgentRpcSession, request_id: &str) -> CmdResult<()> {
+ emit_agent_status(app, request_id, "connecting");
+ if let Some(err) = session
+ .state
+ .lock()
+ .ok()
+ .and_then(|state| state.startup_error.clone())
+ {
+ emit_agent_status(app, request_id, "error");
+ return Err(err);
+ }
+
+ wait_for_codex_ready(session, 10, 250);
+
+ let already_initialized = session
+ .state
+ .lock()
+ .map(|state| state.initialized)
+ .unwrap_or(false);
+ if already_initialized {
+ emit_agent_status(app, request_id, "session_active");
+ return Ok(());
+ }
+
+ emit_agent_status(app, request_id, "authenticating");
+ let client_name = app.package_info().name.clone();
+ let client_version = app.package_info().version.to_string();
+ let init_params = serde_json::json!({
+ "protocolVersion": "1.0.0",
+ "capabilities": {},
+ "clientInfo": {
+ "name": client_name,
+ "version": client_version,
+ }
+ });
+
+ let init_result = send_rpc_request(session, "initialize", init_params, None, true, 15);
+ let init_ok = init_result.is_ok();
+ if !init_ok {
+ let tools_result = send_rpc_request(session, "tools/list", serde_json::json!({}), None, true, 10);
+ if let Err(err) = tools_result {
+ let message = classify_codex_error(&err).unwrap_or(err);
+ emit_agent_status(app, request_id, "error");
+ return Err(message);
+ }
+ }
+
+ if let Ok(mut state) = session.state.lock() {
+ state.initialized = true;
+ }
+ emit_agent_status(app, request_id, "authenticated");
+ emit_agent_status(app, request_id, "session_active");
+ Ok(())
+}
+
+fn run_cli_login(command: &str, args: &[&str]) -> CmdResult<()> {
+ let mut child = Command::new(command)
+ .args(args)
+ .stdin(Stdio::null())
+ .stdout(Stdio::null())
+ .stderr(Stdio::null())
+ .spawn()
+ .map_err(map_err)?;
+ let start = Instant::now();
+ let timeout = Duration::from_secs(70);
+ loop {
+ if let Some(status) = child.try_wait().map_err(map_err)? {
+ if status.success() {
+ return Ok(());
+ }
+ return Err(format!("Login command failed with status: {}", status));
+ }
+ if start.elapsed() > timeout {
+ let _ = child.kill();
+ return Err("Login command timed out".to_string());
+ }
+ std::thread::sleep(Duration::from_millis(200));
+ }
+}
+
+fn attempt_acp_login(kind: AgentRpcKind) -> CmdResult<()> {
+ match kind {
+ AgentRpcKind::ClaudeAcp => {
+ if run_cli_login("claude", &["/login"]).is_ok() {
+ return Ok(());
+ }
+ run_cli_login("npx", &["@anthropic-ai/claude-code", "/login"])?;
+ }
+ AgentRpcKind::OpenCodeAcp => {
+ run_cli_login("opencode", &["auth", "login"])?;
+ }
+ _ => {}
+ }
+ Ok(())
+}
+
+fn probe_acp_auth(session: &AgentRpcSession, session_id: &str, kind: AgentRpcKind) -> CmdResult<()> {
+ let params = serde_json::json!({
+ "sessionId": session_id,
+ "prompt": [{ "type": "text", "text": "ping" }]
+ });
+ let result = send_rpc_request(session, "session/prompt", params, None, true, 8);
+ match result {
+ Ok(_) => Ok(()),
+ Err(err) => {
+ let lower = err.to_lowercase();
+ if lower.contains("timed out") || lower.contains("timeout") {
+ return Ok(());
+ }
+ Err(classify_acp_error(&err, kind).unwrap_or(err))
+ }
+ }
+}
+
+fn acp_preflight(
+ app: &tauri::AppHandle,
+ session: &AgentRpcSession,
+ request_id: &str,
+ kind: AgentRpcKind,
+ cwd: Option,
+) -> CmdResult {
+ emit_agent_status(app, request_id, "connecting");
+ if let Some(err) = session
+ .state
+ .lock()
+ .ok()
+ .and_then(|state| state.startup_error.clone())
+ {
+ emit_agent_status(app, request_id, "error");
+ return Err(err);
+ }
+
+ let existing_session_id = session
+ .state
+ .lock()
+ .ok()
+ .and_then(|state| state.session_id.clone());
+ if let Some(session_id) = existing_session_id {
+ if let Some(resolved) = resolve_agent_cwd(cwd) {
+ if let Ok(mut state) = session.state.lock() {
+ state.cwd = Some(resolved);
+ }
+ }
+ emit_agent_status(app, request_id, "session_active");
+ return Ok(session_id);
+ }
+
+ let init_params = serde_json::json!({
+ "protocolVersion": 1,
+ "clientCapabilities": {
+ "fs": {
+ "readTextFile": true,
+ "writeTextFile": true,
+ }
+ }
+ });
+
+ let init_result = send_rpc_request(session, "initialize", init_params, None, true, 60);
+ let init_value = match init_result {
+ Ok(value) => value,
+ Err(err) => {
+ let message = classify_acp_error(&err, kind).unwrap_or(err);
+ emit_agent_status(app, request_id, "error");
+ return Err(message);
+ }
+ };
+ emit_agent_status(app, request_id, "connected");
+
+ let has_auth_methods = init_value
+ .as_ref()
+ .and_then(|val| val.get("authMethods"))
+ .and_then(|val| val.as_array())
+ .map(|methods| !methods.is_empty())
+ .unwrap_or(false);
+
+ if has_auth_methods {
+ let auth_method_id = init_value
+ .as_ref()
+ .and_then(|val| val.get("authMethods"))
+ .and_then(|val| val.as_array())
+ .and_then(|methods| {
+ methods.iter().find_map(|method| {
+ method
+ .get("methodId")
+ .or_else(|| method.get("id"))
+ .or_else(|| method.get("type"))
+ .and_then(|value| value.as_str())
+ .map(|value| value.to_string())
+ })
+ });
+ let auth_params = auth_method_id
+ .map(|method_id| serde_json::json!({ "methodId": method_id }))
+ .unwrap_or_else(|| serde_json::json!({}));
+ let auth_result = send_rpc_request(session, "authenticate", auth_params.clone(), None, true, 60);
+ if let Err(err) = auth_result {
+ let lower = err.to_lowercase();
+ let can_ignore = lower.contains("method not found")
+ || lower.contains("unknown method")
+ || lower.contains("no such method")
+ || lower.contains("not implemented");
+ if !can_ignore {
+ let _ = attempt_acp_login(kind);
+ let retry = send_rpc_request(session, "authenticate", auth_params, None, true, 60);
+ if let Err(err) = retry {
+ let message = classify_acp_error(&err, kind).unwrap_or(err);
+ emit_agent_status(app, request_id, "error");
+ return Err(message);
+ }
+ }
+ }
+ }
+
+ let cwd_value = resolve_agent_cwd(cwd).unwrap_or_else(|| ".".to_string());
+ let session_params = serde_json::json!({ "cwd": cwd_value, "mcpServers": [] });
+ let session_result = send_rpc_request(session, "session/new", session_params, None, true, 60);
+ let session_value = match session_result {
+ Ok(value) => value,
+ Err(err) => {
+ if has_auth_methods {
+ let _ = attempt_acp_login(kind);
+ let retry_params = serde_json::json!({ "cwd": cwd_value, "mcpServers": [] });
+ let retry_result =
+ send_rpc_request(session, "session/new", retry_params, None, true, 60);
+ match retry_result {
+ Ok(value) => value,
+ Err(err) => {
+ let message = classify_acp_error(&err, kind).unwrap_or(err);
+ emit_agent_status(app, request_id, "error");
+ return Err(message);
+ }
+ }
+ } else {
+ let message = classify_acp_error(&err, kind).unwrap_or(err);
+ emit_agent_status(app, request_id, "error");
+ return Err(message);
+ }
+ }
+ };
+
+ if let Some(models) = session_value
+ .as_ref()
+ .and_then(|val| val.get("models"))
+ .cloned()
+ {
+ emit_agent_event(
+ app,
+ request_id,
+ AgentStreamEvent {
+ models: Some(models),
+ ..Default::default()
+ },
+ );
+ }
+
+ let Some(session_id) = session_value
+ .as_ref()
+ .and_then(|val| val.get("sessionId").and_then(|v| v.as_str()).map(|s| s.to_string()))
+ else {
+ emit_agent_status(app, request_id, "error");
+ return Err("ACP session did not return a sessionId".to_string());
+ };
+
+ if let Ok(mut state) = session.state.lock() {
+ state.session_id = Some(session_id.clone());
+ state.cwd = Some(cwd_value.clone());
+ state.initialized = true;
+ }
+
+ if matches!(kind, AgentRpcKind::ClaudeAcp | AgentRpcKind::OpenCodeAcp) {
+ if let Err(err) = probe_acp_auth(session, &session_id, kind) {
+ emit_agent_status(app, request_id, "error");
+ if let Ok(mut state) = session.state.lock() {
+ state.session_id = None;
+ state.initialized = false;
+ }
+ return Err(err);
+ }
+ }
+
+ emit_agent_status(app, request_id, "authenticated");
+ emit_agent_status(app, request_id, "session_active");
+ Ok(session_id)
+}
+
+fn wait_for_codex_ready(session: &AgentRpcSession, attempts: u32, delay_ms: u64) {
+ for _ in 0..attempts {
+ if send_rpc_request(
+ session,
+ "ping",
+ serde_json::json!({}),
+ None,
+ true,
+ 3,
+ )
+ .is_ok()
+ {
+ return;
+ }
+ std::thread::sleep(Duration::from_millis(delay_ms));
+ }
+}
+
+fn spawn_agent_rpc_session(
+ app: tauri::AppHandle,
+ kind: AgentRpcKind,
+ cwd: Option,
+ model: Option,
+) -> CmdResult> {
+ let mut cmd = match kind {
+ AgentRpcKind::CodexMcp => {
+ let mut cmd = Command::new("codex");
+ for arg in detect_codex_mcp_args() {
+ cmd.arg(arg);
+ }
+ if let Some(model) = model.as_ref() {
+ let trimmed = model.trim();
+ if !trimmed.is_empty() {
+ cmd.arg("-c").arg(format!("model=\"{}\"", trimmed));
+ }
+ }
+ cmd.env("CODEX_NO_INTERACTIVE", "1")
+ .env("CODEX_AUTO_CONTINUE", "1");
+ cmd
+ }
+ AgentRpcKind::ClaudeAcp => {
+ let mut cmd = Command::new("npx");
+ cmd.arg("@zed-industries/claude-code-acp");
+ cmd
+ }
+ AgentRpcKind::OpenCodeAcp => {
+ let mut cmd = Command::new("opencode");
+ cmd.arg("acp");
+ cmd
+ }
+ };
+
+ if let Some(cwd) = cwd.as_ref() {
+ if !cwd.trim().is_empty() {
+ cmd.current_dir(cwd);
+ }
+ }
+
+ cmd.stdin(Stdio::piped())
+ .stdout(Stdio::piped())
+ .stderr(Stdio::piped());
+
+ let mut child = cmd.spawn().map_err(|err| {
+ match kind {
+ AgentRpcKind::CodexMcp => match err.kind() {
+ ErrorKind::NotFound => {
+ return "Codex CLI not found. Please ensure 'codex' is installed and in PATH."
+ .to_string();
+ }
+ ErrorKind::PermissionDenied => {
+ return "Permission denied when starting Codex.".to_string();
+ }
+ _ => {}
+ },
+ AgentRpcKind::ClaudeAcp => match err.kind() {
+ ErrorKind::NotFound => {
+ return "npx not found. Please install Node.js/npm to run Claude ACP."
+ .to_string();
+ }
+ ErrorKind::PermissionDenied => {
+ return "Permission denied when starting Claude ACP.".to_string();
+ }
+ _ => {}
+ },
+ AgentRpcKind::OpenCodeAcp => match err.kind() {
+ ErrorKind::NotFound => {
+ return "OpenCode CLI not found. Please ensure 'opencode' is installed and in PATH."
+ .to_string();
+ }
+ ErrorKind::PermissionDenied => {
+ return "Permission denied when starting OpenCode ACP.".to_string();
+ }
+ _ => {}
+ },
+ }
+ map_err(err)
+ })?;
+ let stdin = child
+ .stdin
+ .take()
+ .ok_or_else(|| "Failed to capture stdin".to_string())?;
+ let stdout = child
+ .stdout
+ .take()
+ .ok_or_else(|| "Failed to capture stdout".to_string())?;
+ let stderr = child.stderr.take();
+
+ let session = Arc::new(AgentRpcSession {
+ kind,
+ child: Arc::new(Mutex::new(child)),
+ stdin: Arc::new(Mutex::new(stdin)),
+ state: Arc::new(Mutex::new(AgentRpcState {
+ pending_responses: HashMap::new(),
+ request_map: HashMap::new(),
+ active_request: None,
+ session_id: None,
+ model: model.clone(),
+ cwd: None,
+ conversation_id: None,
+ initialized: false,
+ codex_session_started: false,
+ codex_received_delta: false,
+ codex_elicitation_map: HashMap::new(),
+ codex_patch_changes: HashMap::new(),
+ acp_permission_map: HashMap::new(),
+ startup_error: None,
+ })),
+ next_id: AtomicU64::new(1),
+ });
+
+ let app_for_stdout = app.clone();
+ let state_for_stdout = session.state.clone();
+ let stdin_for_stdout = session.stdin.clone();
+ let kind_for_stdout = session.kind;
+
+ if let Some(stderr) = stderr {
+ let app_for_stderr = app.clone();
+ let state_for_stderr = session.state.clone();
+ std::thread::spawn(move || {
+ let reader = BufReader::new(stderr);
+ for line in reader.lines().flatten() {
+ match kind_for_stdout {
+ AgentRpcKind::CodexMcp => {
+ eprintln!("[codex mcp] {}", line);
+ if let Some(message) = classify_codex_error(&line) {
+ let active_request = state_for_stderr
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone());
+ if let Some(request_id) = active_request {
+ emit_agent_error(&app_for_stderr, &request_id, message);
+ if let Ok(mut state) = state_for_stderr.lock() {
+ state.active_request = None;
+ }
+ } else if let Ok(mut state) = state_for_stderr.lock() {
+ state.startup_error = Some(message);
+ }
+ }
+ }
+ AgentRpcKind::ClaudeAcp => {
+ eprintln!("[claude acp] {}", line);
+ if let Some(message) = classify_acp_error(&line, AgentRpcKind::ClaudeAcp) {
+ let active_request = state_for_stderr
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone());
+ if let Some(request_id) = active_request {
+ emit_agent_error(&app_for_stderr, &request_id, message);
+ if let Ok(mut state) = state_for_stderr.lock() {
+ state.active_request = None;
+ }
+ } else if let Ok(mut state) = state_for_stderr.lock() {
+ state.startup_error = Some(message);
+ }
+ }
+ }
+ AgentRpcKind::OpenCodeAcp => {
+ eprintln!("[opencode acp] {}", line);
+ if let Some(message) = classify_acp_error(&line, AgentRpcKind::OpenCodeAcp) {
+ let active_request = state_for_stderr
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone());
+ if let Some(request_id) = active_request {
+ emit_agent_error(&app_for_stderr, &request_id, message);
+ if let Ok(mut state) = state_for_stderr.lock() {
+ state.active_request = None;
+ }
+ } else if let Ok(mut state) = state_for_stderr.lock() {
+ state.startup_error = Some(message);
+ }
+ }
+ }
+ }
+ }
+ });
+ }
+
+ std::thread::spawn(move || {
+ let reader = BufReader::new(stdout);
+ for line in reader.lines().flatten() {
+ let trimmed = line.trim();
+ if trimmed.is_empty() {
+ continue;
+ }
+
+ let parsed = serde_json::from_str::(trimmed).ok();
+ if parsed.is_none() {
+ if kind_for_stdout == AgentRpcKind::CodexMcp {
+ if trimmed.contains("Press Enter to continue")
+ || trimmed.contains("Launching Codex CLI")
+ {
+ if let Ok(mut stdin) = stdin_for_stdout.lock() {
+ let _ = stdin.write_all(b"\n");
+ stdin.flush().ok();
+ }
+ }
+ }
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone())
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ content: Some(trimmed.to_string()),
+ ..Default::default()
+ },
+ );
+ }
+ continue;
+ }
+ let value = parsed.unwrap();
+
+ let response_id = value.get("id").and_then(|v| v.as_u64());
+ let is_response = response_id.is_some()
+ && (value.get("result").is_some() || value.get("error").is_some());
+ if let Some(id) = response_id {
+ if is_response {
+ if let Some(tx) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|mut state| state.pending_responses.remove(&id))
+ {
+ let result = if value.get("error").is_some() {
+ Err(value["error"].to_string())
+ } else {
+ Ok(value.get("result").cloned().unwrap_or(serde_json::Value::Null))
+ };
+ let _ = tx.send(result);
+ }
+
+ let request_id = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|mut state| state.request_map.remove(&id));
+ if let Some(request_id) = request_id {
+ // 对于所有 Agent 类型,如果收到错误响应,都需要发送错误事件
+ let has_error = value.get("error").is_some();
+ if has_error {
+ let error_msg = value.get("error")
+ .map(|e| {
+ // 尝试提取更有意义的错误信息
+ if let Some(msg) = e.get("message").and_then(|m| m.as_str()) {
+ msg.to_string()
+ } else {
+ e.to_string()
+ }
+ })
+ .unwrap_or_else(|| "Unknown error".to_string());
+ emit_agent_error(&app_for_stdout, &request_id, error_msg);
+ if let Ok(mut state) = state_for_stdout.lock() {
+ state.active_request = None;
+ }
+ } else if kind_for_stdout != AgentRpcKind::CodexMcp {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ done: Some(true),
+ ..Default::default()
+ },
+ );
+ if let Ok(mut state) = state_for_stdout.lock() {
+ state.active_request = None;
+ }
+ }
+ }
+ continue;
+ }
+ }
+
+ if let Some(method) = value.get("method").and_then(|v| v.as_str()) {
+ match (kind_for_stdout, method) {
+ (AgentRpcKind::ClaudeAcp | AgentRpcKind::OpenCodeAcp, "session/request_permission") => {
+ let request_id = value.get("id").and_then(|v| v.as_u64());
+ let params = value.get("params");
+ let call_id = params
+ .and_then(|p| p.get("toolCall"))
+ .and_then(|t| {
+ t.get("toolCallId")
+ .or_else(|| t.get("tool_call_id"))
+ .or_else(|| t.get("call_id"))
+ .or_else(|| t.get("id"))
+ })
+ .and_then(|v| v.as_str())
+ .map(|s| s.to_string());
+ if let (Some(request_id), Some(call_id)) = (request_id, call_id.clone()) {
+ if let Ok(mut state) = state_for_stdout.lock() {
+ state.acp_permission_map.insert(call_id.clone(), request_id);
+ }
+ }
+ if let (Some(call_id), Some(active_request)) = (
+ call_id,
+ state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone()),
+ ) {
+ emit_agent_event(
+ &app_for_stdout,
+ &active_request,
+ AgentStreamEvent {
+ permission: Some(serde_json::json!({
+ "source": "acp",
+ "callId": call_id,
+ "toolCall": params.and_then(|p| p.get("toolCall")).cloned(),
+ "options": params.and_then(|p| p.get("options")).cloned(),
+ })),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ (AgentRpcKind::ClaudeAcp | AgentRpcKind::OpenCodeAcp, "fs/read_text_file") => {
+ if let Some(request_id) = response_id {
+ let cwd = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.cwd.clone());
+ let result = handle_fs_read(value.get("params"), cwd);
+ let _ = send_rpc_response(&stdin_for_stdout, request_id, result);
+ }
+ }
+ (AgentRpcKind::ClaudeAcp | AgentRpcKind::OpenCodeAcp, "fs/write_text_file") => {
+ if let Some(request_id) = response_id {
+ let cwd = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.cwd.clone());
+ let result = handle_fs_write(value.get("params"), cwd);
+ let _ = send_rpc_response(&stdin_for_stdout, request_id, result);
+ }
+ }
+ (AgentRpcKind::CodexMcp, "codex/event") => {
+ if let Some(msg) = value.get("params").and_then(|p| p.get("msg")) {
+ if let Some(msg_type) = msg.get("type").and_then(|t| t.as_str()) {
+ if msg_type == "agent_message_delta" {
+ if let Some(delta) = msg.get("delta").and_then(|d| d.as_str()) {
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|mut state| {
+ state.codex_received_delta = true;
+ state.active_request.clone()
+ })
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ content: Some(delta.to_string()),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ }
+
+ if msg_type == "agent_reasoning_delta" {
+ if let Some(delta) = msg.get("delta").and_then(|d| d.as_str()) {
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone())
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ reasoning: Some(delta.to_string()),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ }
+
+ if msg_type == "task_started" {
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone())
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ status: Some("task_started".to_string()),
+ ..Default::default()
+ },
+ );
+ }
+ }
+
+ if msg_type == "exec_approval_request"
+ || msg_type == "apply_patch_approval_request"
+ {
+ let call_id = msg
+ .get("call_id")
+ .and_then(|v| v.as_str())
+ .or_else(|| msg.get("codex_call_id").and_then(|v| v.as_str()))
+ .map(|s| s.to_string());
+
+ if let Some(call_id) = call_id.clone() {
+ if let Some(req_id) = response_id {
+ if let Ok(mut state) = state_for_stdout.lock() {
+ state.codex_elicitation_map.insert(call_id.clone(), req_id);
+ }
+ }
+
+ if msg_type == "apply_patch_approval_request" {
+ if let Some(changes) = msg
+ .get("changes")
+ .or_else(|| msg.get("codex_changes"))
+ .cloned()
+ {
+ if let Ok(mut state) = state_for_stdout.lock() {
+ state.codex_patch_changes.insert(call_id.clone(), changes);
+ }
+ }
+ }
+
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone())
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ permission: Some(serde_json::json!({
+ "type": msg_type,
+ "callId": call_id,
+ "data": msg,
+ })),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ }
+
+ if msg_type == "exec_command_begin"
+ || msg_type == "exec_command_output_delta"
+ || msg_type == "exec_command_end"
+ || msg_type == "patch_apply_begin"
+ || msg_type == "patch_apply_end"
+ || msg_type == "mcp_tool_call_begin"
+ || msg_type == "mcp_tool_call_end"
+ {
+ if let Some(call_id) = msg
+ .get("call_id")
+ .and_then(|v| v.as_str())
+ .or_else(|| msg.get("codex_call_id").and_then(|v| v.as_str()))
+ {
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone())
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ tool: Some(serde_json::json!({
+ "type": msg_type,
+ "callId": call_id,
+ "data": msg,
+ })),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ }
+
+ if msg_type == "agent_message" {
+ if let Some(message) = msg.get("message").and_then(|m| m.as_str()) {
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| {
+ if state.codex_received_delta {
+ None
+ } else {
+ state.active_request.clone()
+ }
+ })
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ content: Some(message.to_string()),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ }
+
+ if msg_type == "task_complete" {
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|mut state| {
+ state.codex_received_delta = false;
+ state.active_request.clone()
+ })
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ done: Some(true),
+ ..Default::default()
+ },
+ );
+ if let Ok(mut state) = state_for_stdout.lock() {
+ state.active_request = None;
+ }
+ }
+ }
+
+ if msg_type == "session_configured" {
+ if let Some(session_id) = msg.get("session_id").and_then(|s| s.as_str()) {
+ if let Ok(mut state) = state_for_stdout.lock() {
+ state.conversation_id = Some(session_id.to_string());
+ state.codex_session_started = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ (AgentRpcKind::ClaudeAcp, "session/update")
+ | (AgentRpcKind::OpenCodeAcp, "session/update") => {
+ if let Some(update) = value.get("params") {
+ if let Some(session_update) = update
+ .get("update")
+ .and_then(|u| u.get("sessionUpdate"))
+ .and_then(|u| u.as_str())
+ {
+ if session_update == "agent_message_chunk" {
+ if let Some(text) = update
+ .get("update")
+ .and_then(|u| u.get("content"))
+ .and_then(|c| c.get("text"))
+ .and_then(|t| t.as_str())
+ {
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone())
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ content: Some(text.to_string()),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ } else if session_update == "agent_thought_chunk" {
+ if let Some(text) = update
+ .get("update")
+ .and_then(|u| u.get("content"))
+ .and_then(|c| c.get("text"))
+ .and_then(|t| t.as_str())
+ {
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone())
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ reasoning: Some(text.to_string()),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ } else if session_update == "tool_call" || session_update == "tool_call_update" {
+ if let Some(call_id) = update
+ .get("update")
+ .and_then(|u| {
+ u.get("toolCallId")
+ .or_else(|| u.get("tool_call_id"))
+ .or_else(|| u.get("call_id"))
+ .or_else(|| u.get("id"))
+ })
+ .and_then(|v| v.as_str())
+ {
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone())
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ tool: Some(serde_json::json!({
+ "type": session_update,
+ "callId": call_id,
+ "data": update,
+ })),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ }
+ }
+ }
+ }
+ _ => {}
+ }
+ }
+ }
+
+ if let Some(request_id) = state_for_stdout
+ .lock()
+ .ok()
+ .and_then(|state| state.active_request.clone())
+ {
+ emit_agent_event(
+ &app_for_stdout,
+ &request_id,
+ AgentStreamEvent {
+ done: Some(true),
+ ..Default::default()
+ },
+ );
+ }
+ });
+
+ Ok(session)
+}
+
+fn send_rpc_request(
+ session: &AgentRpcSession,
+ method: &str,
+ params: serde_json::Value,
+ request_id: Option,
+ wait_response: bool,
+ timeout_secs: u64,
+) -> CmdResult> {
+ let id = session.next_id.fetch_add(1, Ordering::Relaxed);
+ let payload = serde_json::json!({
+ "jsonrpc": "2.0",
+ "id": id,
+ "method": method,
+ "params": params,
+ });
+ let line = format!("{}\n", payload.to_string());
+
+ let mut rx = None;
+ if wait_response {
+ let (tx, receiver) = mpsc::channel();
+ if let Ok(mut state) = session.state.lock() {
+ state.pending_responses.insert(id, tx);
+ }
+ rx = Some(receiver);
+ }
+
+ if let Some(request_id) = request_id {
+ if let Ok(mut state) = session.state.lock() {
+ state.request_map.insert(id, request_id.clone());
+ state.active_request = Some(request_id);
+ state.codex_received_delta = false;
+ }
+ }
+
+ {
+ let mut stdin = session.stdin.lock().map_err(map_err)?;
+ stdin.write_all(line.as_bytes()).map_err(map_err)?;
+ stdin.flush().ok();
+ }
+
+ if let Some(receiver) = rx {
+ let result = receiver
+ .recv_timeout(Duration::from_secs(timeout_secs))
+ .map_err(|_| "RPC request timed out".to_string())?;
+ return result.map(Some).map_err(|e| e);
+ }
+
+ Ok(None)
+}
+
+fn send_rpc_response(
+ stdin: &Arc>,
+ id: u64,
+ result: Result,
+) -> CmdResult<()> {
+ let payload = match result {
+ Ok(value) => serde_json::json!({
+ "jsonrpc": "2.0",
+ "id": id,
+ "result": value,
+ }),
+ Err(message) => serde_json::json!({
+ "jsonrpc": "2.0",
+ "id": id,
+ "error": {
+ "code": -32603,
+ "message": message,
+ }
+ }),
+ };
+ let line = format!("{}\n", payload);
+ let mut stdin = stdin.lock().map_err(map_err)?;
+ stdin.write_all(line.as_bytes()).map_err(map_err)?;
+ stdin.flush().map_err(map_err)?;
+ Ok(())
+}
+
+fn handle_fs_read(
+ params: Option<&serde_json::Value>,
+ cwd: Option,
+) -> Result {
+ let params = params.ok_or_else(|| "Missing params".to_string())?;
+ let path = params
+ .get("path")
+ .and_then(|v| v.as_str())
+ .ok_or_else(|| "Missing path".to_string())?;
+ let line = params.get("line").and_then(|v| v.as_u64()).unwrap_or(1) as usize;
+ let limit = params.get("limit").and_then(|v| v.as_u64()).map(|v| v as usize);
+ let resolved = resolve_fs_path(cwd, path);
+ let content = std::fs::read_to_string(&resolved).map_err(map_err)?;
+ if line <= 1 && limit.is_none() {
+ return Ok(serde_json::json!({ "content": content }));
+ }
+ let lines: Vec<&str> = content.lines().collect();
+ let start = line.saturating_sub(1);
+ let end = limit.map(|l| start.saturating_add(l)).unwrap_or(lines.len());
+ let slice = if start >= lines.len() {
+ String::new()
+ } else {
+ lines[start..std::cmp::min(end, lines.len())].join("\n")
+ };
+ Ok(serde_json::json!({ "content": slice }))
+}
+
+fn handle_fs_write(
+ params: Option<&serde_json::Value>,
+ cwd: Option,
+) -> Result {
+ let params = params.ok_or_else(|| "Missing params".to_string())?;
+ let path = params
+ .get("path")
+ .and_then(|v| v.as_str())
+ .ok_or_else(|| "Missing path".to_string())?;
+ let content = params
+ .get("content")
+ .and_then(|v| v.as_str())
+ .ok_or_else(|| "Missing content".to_string())?;
+ let resolved = resolve_fs_path(cwd, path);
+ if let Some(parent) = resolved.parent() {
+ std::fs::create_dir_all(parent).map_err(map_err)?;
+ }
+ std::fs::write(&resolved, content).map_err(map_err)?;
+ Ok(serde_json::json!({}))
+}
+
+fn resolve_fs_path(cwd: Option, path: &str) -> PathBuf {
+ let input = PathBuf::from(path);
+ if input.is_absolute() {
+ return input;
+ }
+ if let Some(cwd) = cwd {
+ return PathBuf::from(cwd).join(input);
+ }
+ std::env::current_dir()
+ .unwrap_or_else(|_| PathBuf::from("."))
+ .join(input)
+}
+
+fn default_agent_cwd() -> Option {
+ let home = std::env::var("HOME").ok()?;
+ let path = PathBuf::from(home).join(".opencontext");
+ if std::fs::create_dir_all(&path).is_err() {
+ return None;
+ }
+ let agents_path = path.join("AGENTS.md");
+ if !agents_path.exists() {
+ let _ = std::fs::write(&agents_path, DEFAULT_AGENTS_MD);
+ }
+ Some(path.to_string_lossy().to_string())
+}
+
+fn resolve_agent_cwd(cwd: Option) -> Option {
+ let trimmed = cwd.as_deref().map(str::trim).unwrap_or("");
+ if !trimmed.is_empty() {
+ return Some(trimmed.to_string());
+ }
+ default_agent_cwd()
+}
+
+fn try_set_acp_model(
+ session: &AgentRpcSession,
+ session_id: &str,
+ model: &str,
+) -> CmdResult<()> {
+ let params = serde_json::json!({
+ "sessionId": session_id,
+ "modelId": model,
+ });
+ if let Err(err) = send_rpc_request(session, "session/set_model", params, None, true, 30) {
+ let lower = err.to_lowercase();
+ let can_ignore = lower.contains("method not found")
+ || lower.contains("unknown method")
+ || lower.contains("no such method")
+ || lower.contains("not implemented");
+ if !can_ignore {
+ return Err(err);
+ }
+ }
+ Ok(())
+}
+
+fn respond_elicitation(session: &AgentRpcSession, call_id: &str, decision: &str) -> CmdResult<()> {
+ let normalized = call_id
+ .trim_start_matches("patch_")
+ .trim_start_matches("elicitation_")
+ .to_string();
+ let req_id = {
+ let mut state = session.state.lock().map_err(map_err)?;
+ state
+ .codex_elicitation_map
+ .remove(call_id)
+ .or_else(|| state.codex_elicitation_map.remove(&normalized))
+ };
+
+ let Some(req_id) = req_id else {
+ return Ok(());
+ };
+
+ let payload = serde_json::json!({
+ "jsonrpc": "2.0",
+ "id": req_id,
+ "result": {
+ "decision": decision,
+ }
+ });
+ let line = format!("{}\n", payload.to_string());
+
+ let mut stdin = session.stdin.lock().map_err(map_err)?;
+ stdin.write_all(line.as_bytes()).map_err(map_err)?;
+ stdin.flush().ok();
+ Ok(())
+}
+
+fn parse_model_list(value: Option<&serde_json::Value>) -> Vec {
+ match value {
+ Some(serde_json::Value::Array(items)) => items
+ .iter()
+ .filter_map(|item| item.as_str())
+ .map(|item| item.trim().to_string())
+ .filter(|item| !item.is_empty())
+ .collect(),
+ Some(serde_json::Value::String(text)) => text
+ .lines()
+ .flat_map(|line| line.split(','))
+ .map(|item| item.trim().to_string())
+ .filter(|item| !item.is_empty())
+ .collect(),
+ _ => Vec::new(),
+ }
+}
+
+fn set_model_list_key(
+ config: &mut HashMap,
+ key: &str,
+ models: Option>,
+) {
+ let models = models.unwrap_or_default();
+ let cleaned: Vec = models
+ .into_iter()
+ .map(|item| item.trim().to_string())
+ .filter(|item| !item.is_empty())
+ .collect();
+ if cleaned.is_empty() {
+ config.remove(key);
+ } else {
+ config.insert(
+ key.to_string(),
+ serde_json::Value::Array(cleaned.into_iter().map(serde_json::Value::String).collect()),
+ );
+ }
+}
+
+fn get_or_create_rpc_session(
+ app: tauri::AppHandle,
+ state: State,
+ session_id: &str,
+ kind: AgentRpcKind,
+ cwd: Option,
+ model: Option,
+) -> CmdResult> {
+ let existing = {
+ let sessions = state.agent_rpc_sessions.lock().map_err(map_err)?;
+ sessions.get(session_id).cloned()
+ };
+
+ if let Some(session) = existing {
+ let desired = model
+ .as_ref()
+ .map(|m| m.trim().to_string())
+ .filter(|m| !m.is_empty());
+ if matches!(kind, AgentRpcKind::CodexMcp) {
+ let current = session
+ .state
+ .lock()
+ .ok()
+ .and_then(|state| state.model.clone());
+ if let Some(desired_model) = desired {
+ if current.as_deref() != Some(desired_model.as_str()) {
+ if let Ok(mut child) = session.child.lock() {
+ let _ = child.kill();
+ let _ = child.wait();
+ }
+ let mut sessions = state.agent_rpc_sessions.lock().map_err(map_err)?;
+ sessions.remove(session_id);
+ } else {
+ return Ok(session);
+ }
+ } else {
+ return Ok(session);
+ }
+ } else {
+ return Ok(session);
+ }
+ }
+
+ let session = spawn_agent_rpc_session(app, kind, cwd, model)?;
+ let mut sessions = state.agent_rpc_sessions.lock().map_err(map_err)?;
+ sessions.insert(session_id.to_string(), session.clone());
+ Ok(session)
+}
+
+fn stop_rpc_stream(app: tauri::AppHandle, state: State, session_id: &str) -> CmdResult<()> {
+ let session = {
+ let sessions = state.agent_rpc_sessions.lock().map_err(map_err)?;
+ sessions.get(session_id).cloned()
+ };
+
+ if let Some(session) = session {
+ if let Ok(mut state) = session.state.lock() {
+ if let Some(request_id) = state.active_request.take() {
+ state.request_map.retain(|_, v| v != &request_id);
+ state.codex_received_delta = false;
+ state.acp_permission_map.clear();
+ emit_agent_event(
+ &app,
+ &request_id,
+ AgentStreamEvent {
+ done: Some(true),
+ status: Some("stopped".to_string()),
+ ..Default::default()
+ },
+ );
+ }
+ }
+ }
+
+ Ok(())
+}
+
+#[derive(Deserialize)]
+pub(crate) struct CodexExecOptions {
+ messages: Vec,
+ #[serde(rename = "requestId")]
+ request_id: Option,
+ #[serde(rename = "sessionId")]
+ session_id: String,
+ model: Option,
+ cwd: Option,
+}
+
+#[tauri::command]
+pub(crate) fn codex_exec(
+ app: tauri::AppHandle,
+ state: State,
+ options: CodexExecOptions,
+) -> CmdResult {
+ let request_id = options.request_id.unwrap_or_else(|| {
+ format!(
+ "agent-{}",
+ AGENT_COUNTER.fetch_add(1, Ordering::Relaxed)
+ )
+ });
+
+ let session_id = options.session_id.clone();
+ let cwd = resolve_agent_cwd(options.cwd.clone());
+ let model = options.model.clone();
+
+ let session = get_or_create_rpc_session(
+ app.clone(),
+ state,
+ &session_id,
+ AgentRpcKind::CodexMcp,
+ cwd.clone(),
+ model,
+ )?;
+
+ let app_clone = app.clone();
+ let request_id_clone = request_id.clone();
+
+ std::thread::spawn(move || {
+ if let Err(err) = codex_preflight(&app_clone, &session, &request_id_clone) {
+ emit_agent_error(&app_clone, &request_id_clone, err);
+ return;
+ }
+ let prompt = build_cli_prompt(&options.messages);
+ let (conversation_id, use_reply) = {
+ let mut state = session.state.lock().unwrap_or_else(|err| err.into_inner());
+ let conversation_id = state
+ .conversation_id
+ .clone()
+ .unwrap_or_else(|| {
+ let id = session_id.clone();
+ state.conversation_id = Some(id.clone());
+ id
+ });
+ let use_reply = state.codex_session_started;
+ if !state.codex_session_started {
+ state.codex_session_started = true;
+ }
+ (conversation_id, use_reply)
+ };
+
+ let mut args = serde_json::Map::new();
+ args.insert("prompt".to_string(), serde_json::Value::String(prompt));
+ if let Some(cwd) = cwd.clone() {
+ if !cwd.trim().is_empty() {
+ args.insert("cwd".to_string(), serde_json::Value::String(cwd));
+ }
+ }
+
+ let params = if use_reply {
+ args.insert(
+ "conversationId".to_string(),
+ serde_json::Value::String(conversation_id.clone()),
+ );
+ serde_json::json!({
+ "name": "codex-reply",
+ "arguments": serde_json::Value::Object(args),
+ })
+ } else {
+ serde_json::json!({
+ "name": "codex",
+ "arguments": serde_json::Value::Object(args),
+ "config": {
+ "conversationId": conversation_id,
+ }
+ })
+ };
+
+ if let Err(err) = send_rpc_request(
+ &session,
+ "tools/call",
+ params,
+ Some(request_id_clone.clone()),
+ false,
+ 600,
+ ) {
+ emit_agent_error(&app_clone, &request_id_clone, err);
+ }
+ });
+
+ Ok(serde_json::json!({ "requestId": request_id }))
+}
+
+#[derive(Deserialize)]
+pub(crate) struct CodexKillOptions {
+ #[serde(rename = "sessionId")]
+ session_id: String,
+}
+
+#[tauri::command]
+pub(crate) fn codex_kill(
+ app: tauri::AppHandle,
+ state: State,
+ options: CodexKillOptions,
+) -> CmdResult<()> {
+ stop_rpc_stream(app, state, &options.session_id)
+}
+
+#[derive(Deserialize)]
+pub(crate) struct ClaudeExecOptions {
+ messages: Vec,
+ #[serde(rename = "requestId")]
+ request_id: Option,
+ #[serde(rename = "sessionId")]
+ session_id: String,
+ model: Option,
+ cwd: Option,
+}
+
+#[tauri::command]
+pub(crate) fn claude_exec(
+ app: tauri::AppHandle,
+ state: State,
+ options: ClaudeExecOptions,
+) -> CmdResult {
+ let request_id = options.request_id.unwrap_or_else(|| {
+ format!(
+ "agent-{}",
+ AGENT_COUNTER.fetch_add(1, Ordering::Relaxed)
+ )
+ });
+
+ let session_id = options.session_id.clone();
+ let cwd = resolve_agent_cwd(options.cwd.clone());
+ let model = options.model.clone();
+
+ let session = get_or_create_rpc_session(
+ app.clone(),
+ state,
+ &session_id,
+ AgentRpcKind::ClaudeAcp,
+ cwd.clone(),
+ None,
+ )?;
+
+ let app_clone = app.clone();
+ let request_id_clone = request_id.clone();
+
+ std::thread::spawn(move || {
+ let session_id = match acp_preflight(&app_clone, &session, &request_id_clone, AgentRpcKind::ClaudeAcp, cwd.clone()) {
+ Ok(id) => id,
+ Err(err) => {
+ emit_agent_error(&app_clone, &request_id_clone, err);
+ return;
+ }
+ };
+
+ if let Some(model) = model {
+ let trimmed = model.trim().to_string();
+ if !trimmed.is_empty() {
+ let _ = try_set_acp_model(&session, &session_id, &trimmed);
+ }
+ }
+
+ let prompt = build_cli_prompt(&options.messages);
+ let params = serde_json::json!({
+ "sessionId": session_id,
+ "prompt": [
+ { "type": "text", "text": prompt }
+ ]
+ });
+
+ if let Err(err) = send_rpc_request(
+ &session,
+ "session/prompt",
+ params,
+ Some(request_id_clone.clone()),
+ false,
+ 300,
+ ) {
+ emit_agent_error(&app_clone, &request_id_clone, err);
+ }
+ });
+
+ Ok(serde_json::json!({ "requestId": request_id }))
+}
+
+#[derive(Deserialize)]
+pub(crate) struct ClaudeKillOptions {
+ #[serde(rename = "sessionId")]
+ session_id: String,
+}
+
+#[tauri::command]
+pub(crate) fn claude_kill(
+ app: tauri::AppHandle,
+ state: State,
+ options: ClaudeKillOptions,
+) -> CmdResult<()> {
+ stop_rpc_stream(app, state, &options.session_id)
+}
+
+#[derive(Deserialize)]
+pub(crate) struct OpenCodeRunOptions {
+ messages: Vec,
+ #[serde(rename = "requestId")]
+ request_id: Option,
+ #[serde(rename = "sessionId")]
+ session_id: String,
+ model: Option,
+ cwd: Option,
+}
+
+#[tauri::command]
+pub(crate) fn opencode_run(
+ app: tauri::AppHandle,
+ state: State,
+ options: OpenCodeRunOptions,
+) -> CmdResult {
+ let request_id = options.request_id.unwrap_or_else(|| {
+ format!(
+ "agent-{}",
+ AGENT_COUNTER.fetch_add(1, Ordering::Relaxed)
+ )
+ });
+
+ let session_id = options.session_id.clone();
+ let cwd = resolve_agent_cwd(options.cwd.clone());
+ let model = options.model.clone();
+
+ let session = get_or_create_rpc_session(
+ app.clone(),
+ state,
+ &session_id,
+ AgentRpcKind::OpenCodeAcp,
+ cwd.clone(),
+ None,
+ )?;
+
+ let app_clone = app.clone();
+ let request_id_clone = request_id.clone();
+
+ std::thread::spawn(move || {
+ let session_id = match acp_preflight(&app_clone, &session, &request_id_clone, AgentRpcKind::OpenCodeAcp, cwd.clone()) {
+ Ok(id) => id,
+ Err(err) => {
+ emit_agent_error(&app_clone, &request_id_clone, err);
+ return;
+ }
+ };
+
+ if let Some(model) = model {
+ let trimmed = model.trim().to_string();
+ if !trimmed.is_empty() {
+ let _ = try_set_acp_model(&session, &session_id, &trimmed);
+ }
+ }
+
+ let prompt = build_cli_prompt(&options.messages);
+ let params = serde_json::json!({
+ "sessionId": session_id,
+ "prompt": [
+ { "type": "text", "text": prompt }
+ ]
+ });
+
+ if let Err(err) = send_rpc_request(
+ &session,
+ "session/prompt",
+ params,
+ Some(request_id_clone.clone()),
+ false,
+ 300,
+ ) {
+ emit_agent_error(&app_clone, &request_id_clone, err);
+ }
+ });
+
+ Ok(serde_json::json!({ "requestId": request_id }))
+}
+
+#[derive(Deserialize)]
+pub(crate) struct OpenCodeKillOptions {
+ #[serde(rename = "sessionId")]
+ session_id: String,
+}
+
+#[tauri::command]
+pub(crate) fn opencode_kill(
+ app: tauri::AppHandle,
+ state: State,
+ options: OpenCodeKillOptions,
+) -> CmdResult<()> {
+ stop_rpc_stream(app, state, &options.session_id)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct AgentPreflightOptions {
+ session_id: String,
+ agent_id: String,
+ model: Option,
+ cwd: Option,
+}
+
+#[tauri::command]
+pub(crate) fn agent_preflight(
+ app: tauri::AppHandle,
+ state: State,
+ options: AgentPreflightOptions,
+) -> CmdResult {
+ let kind = match options.agent_id.as_str() {
+ "codex" => AgentRpcKind::CodexMcp,
+ "claude" => AgentRpcKind::ClaudeAcp,
+ "opencode" => AgentRpcKind::OpenCodeAcp,
+ other => return Err(format!("Unsupported agent: {}", other)),
+ };
+
+ let resolved_cwd = resolve_agent_cwd(options.cwd.clone());
+ let session = get_or_create_rpc_session(
+ app.clone(),
+ state,
+ &options.session_id,
+ kind,
+ resolved_cwd.clone(),
+ options.model.clone(),
+ )?;
+ let request_id = format!("preflight-{}", options.session_id);
+ let cwd = resolved_cwd.clone();
+ let app_clone = app.clone();
+
+ std::thread::spawn(move || {
+ let result = match kind {
+ AgentRpcKind::CodexMcp => codex_preflight(&app_clone, &session, &request_id).map(|_| None),
+ AgentRpcKind::ClaudeAcp | AgentRpcKind::OpenCodeAcp => {
+ acp_preflight(&app_clone, &session, &request_id, kind, cwd).map(Some)
+ }
+ };
+
+ match result {
+ Ok(session_id) => {
+ if let Some(model) = options.model.clone() {
+ let trimmed = model.trim().to_string();
+ if !trimmed.is_empty() {
+ if let Some(session_id) = session_id.as_ref() {
+ let _ = try_set_acp_model(&session, session_id, &trimmed);
+ }
+ }
+ }
+ emit_agent_event(
+ &app_clone,
+ &request_id,
+ AgentStreamEvent {
+ done: Some(true),
+ ..Default::default()
+ },
+ );
+ }
+ Err(err) => {
+ emit_agent_error(&app_clone, &request_id, err);
+ }
+ }
+ });
+
+ Ok(true)
+}
+
+#[tauri::command]
+pub(crate) fn agent_models_get() -> CmdResult {
+ let config_path = SearchConfig::json_config_path();
+ if !config_path.exists() {
+ return Ok(serde_json::json!({
+ "codex": DEFAULT_CODEX_MODELS,
+ "claude": []
+ }));
+ }
+ let content = std::fs::read_to_string(&config_path).map_err(map_err)?;
+ let config: serde_json::Value = serde_json::from_str(&content).map_err(map_err)?;
+ let codex = {
+ let parsed = parse_model_list(config.get("AGENT_MODELS_CODEX"));
+ if parsed.is_empty() {
+ DEFAULT_CODEX_MODELS.iter().map(|item| item.to_string()).collect()
+ } else {
+ parsed
+ }
+ };
+ let claude = parse_model_list(config.get("AGENT_MODELS_CLAUDE"));
+ Ok(serde_json::json!({ "codex": codex, "claude": claude }))
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct AgentModelsSaveOptions {
+ codex: Option>,
+ claude: Option>,
+}
+
+#[tauri::command]
+pub(crate) fn agent_models_save(
+ options: AgentModelsSaveOptions,
+) -> CmdResult {
+ let config_path = SearchConfig::json_config_path();
+ let mut config: HashMap = if config_path.exists() {
+ let content = std::fs::read_to_string(&config_path).map_err(map_err)?;
+ serde_json::from_str(&content).map_err(map_err)?
+ } else {
+ HashMap::new()
+ };
+
+ set_model_list_key(&mut config, "AGENT_MODELS_CODEX", options.codex);
+ set_model_list_key(&mut config, "AGENT_MODELS_CLAUDE", options.claude);
+
+ if let Some(parent) = config_path.parent() {
+ std::fs::create_dir_all(parent).map_err(map_err)?;
+ }
+ let content = serde_json::to_string_pretty(&config).map_err(map_err)?;
+ std::fs::write(&config_path, content).map_err(map_err)?;
+ Ok(serde_json::json!({ "config_path": config_path.to_string_lossy() }))
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct OcExecOptions {
+ args: Vec,
+ cwd: Option,
+}
+
+#[tauri::command]
+pub(crate) fn oc_exec(options: OcExecOptions) -> CmdResult {
+ if options.args.is_empty() {
+ return Err("Missing oc command arguments".to_string());
+ }
+ let mut cmd = Command::new("oc");
+ cmd.args(&options.args);
+ if let Some(cwd) = resolve_agent_cwd(options.cwd) {
+ cmd.current_dir(cwd);
+ }
+ let output = cmd.output().map_err(map_err)?;
+ let stdout = String::from_utf8_lossy(&output.stdout).to_string();
+ let stderr = String::from_utf8_lossy(&output.stderr).to_string();
+ let code = output.status.code().unwrap_or(-1);
+ Ok(serde_json::json!({
+ "stdout": stdout,
+ "stderr": stderr,
+ "code": code
+ }))
+}
+
+#[derive(Deserialize)]
+pub(crate) struct CodexPermissionResponseOptions {
+ #[serde(rename = "sessionId")]
+ session_id: String,
+ #[serde(rename = "callId")]
+ call_id: String,
+ #[serde(rename = "type")]
+ permission_type: String,
+ approved: bool,
+}
+
+#[tauri::command]
+pub(crate) fn codex_permission_response(
+ state: State,
+ options: CodexPermissionResponseOptions,
+) -> CmdResult<()> {
+ let session = {
+ let sessions = state.agent_rpc_sessions.lock().map_err(map_err)?;
+ sessions.get(&options.session_id).cloned()
+ };
+
+ let Some(session) = session else {
+ return Err("Codex session not found".to_string());
+ };
+
+ if options.permission_type == "apply_patch_approval_request" {
+ let normalized = options
+ .call_id
+ .trim_start_matches("patch_")
+ .trim_start_matches("elicitation_")
+ .to_string();
+ let changes = {
+ let mut state = session.state.lock().map_err(map_err)?;
+ state
+ .codex_patch_changes
+ .remove(&options.call_id)
+ .or_else(|| state.codex_patch_changes.remove(&normalized))
+ .unwrap_or_else(|| serde_json::json!({}))
+ };
+
+ let params = serde_json::json!({
+ "call_id": options.call_id,
+ "approved": options.approved,
+ "changes": changes,
+ });
+ let _ = send_rpc_request(&session, "apply_patch_approval_response", params, None, false, 30)?;
+ let _ = session.state.lock().map(|mut state| {
+ state.codex_elicitation_map.remove(&options.call_id);
+ state.codex_elicitation_map.remove(&normalized);
+ });
+ } else {
+ let decision = if options.approved { "approved" } else { "denied" };
+ respond_elicitation(&session, &options.call_id, decision)?;
+ }
+
+ Ok(())
+}
+
+#[derive(Deserialize)]
+pub(crate) struct AcpPermissionResponseOptions {
+ #[serde(rename = "sessionId")]
+ session_id: String,
+ #[serde(rename = "callId")]
+ call_id: String,
+ #[serde(rename = "optionId")]
+ option_id: Option,
+}
+
+#[tauri::command]
+pub(crate) fn acp_permission_response(
+ state: State,
+ options: AcpPermissionResponseOptions,
+) -> CmdResult<()> {
+ let session = {
+ let sessions = state.agent_rpc_sessions.lock().map_err(map_err)?;
+ sessions.get(&options.session_id).cloned()
+ };
+
+ let Some(session) = session else {
+ return Err("ACP session not found".to_string());
+ };
+
+ let request_id = {
+ let mut state = session.state.lock().map_err(map_err)?;
+ state.acp_permission_map.remove(&options.call_id)
+ };
+
+ let Some(request_id) = request_id else {
+ return Err("ACP permission request not found".to_string());
+ };
+
+ let result = if let Some(option_id) = options.option_id {
+ serde_json::json!({
+ "outcome": {
+ "outcome": "selected",
+ "optionId": option_id,
+ }
+ })
+ } else {
+ serde_json::json!({
+ "outcome": {
+ "outcome": "cancelled"
+ }
+ })
+ };
+
+ send_rpc_response(&session.stdin, request_id, Ok(result))?;
+ Ok(())
+}
+
+#[tauri::command]
+pub(crate) fn agent_sessions_load(app: tauri::AppHandle) -> CmdResult> {
+ let path = agent_sessions_path(&app)?;
+ if !path.exists() {
+ return Ok(None);
+ }
+ let content = std::fs::read_to_string(&path).map_err(map_err)?;
+ let payload = serde_json::from_str(&content).map_err(map_err)?;
+ Ok(Some(payload))
+}
+
+#[tauri::command]
+pub(crate) fn agent_sessions_save(
+ app: tauri::AppHandle,
+ payload: serde_json::Value,
+) -> CmdResult {
+ let path = agent_sessions_path(&app)?;
+ if let Some(parent) = path.parent() {
+ std::fs::create_dir_all(parent).map_err(map_err)?;
+ }
+ let content = serde_json::to_string(&payload).map_err(map_err)?;
+ std::fs::write(&path, content).map_err(map_err)?;
+ Ok(true)
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn parse_codex_mcp_args_prefers_mcp_server_for_new_versions() {
+ let args = parse_codex_mcp_args("codex v0.40.1");
+ assert_eq!(args, vec!["mcp-server".to_string()]);
+ }
+
+ #[test]
+ fn parse_codex_mcp_args_uses_legacy_for_old_versions() {
+ let args = parse_codex_mcp_args("codex version 0.39.0");
+ assert_eq!(args, vec!["mcp".to_string(), "serve".to_string()]);
+ }
+
+ #[test]
+ fn parse_codex_mcp_args_defaults_to_mcp_server() {
+ let args = parse_codex_mcp_args("");
+ assert_eq!(args, vec!["mcp-server".to_string()]);
+ }
+}
diff --git a/src-tauri/src/commands/ai.rs b/src-tauri/src/commands/ai.rs
new file mode 100644
index 0000000..8620b12
--- /dev/null
+++ b/src-tauri/src/commands/ai.rs
@@ -0,0 +1,438 @@
+use crate::chat::ChatMessage;
+use crate::utils::{map_err, CmdResult};
+use futures::StreamExt;
+use opencontext_core::search::SearchConfig;
+use serde::{Deserialize, Serialize};
+use tauri::Emitter;
+
+const DEFAULT_AI_PROMPT: &str = "You are an AI within a journaling app. Your job is to help the user reflect on their thoughts in a thoughtful and kind manner. The user can never directly address you or directly respond to you. Try not to repeat what the user said, instead try to seed new ideas, encourage or debate. Keep your responses concise, but meaningful. Respond in the same language as the user.";
+
+fn get_config_value(key: &str) -> Option {
+ let config_path = SearchConfig::json_config_path();
+ if !config_path.exists() {
+ return None;
+ }
+ let content = std::fs::read_to_string(&config_path).ok()?;
+ let config: serde_json::Value = serde_json::from_str(&content).ok()?;
+ config
+ .get(key)
+ .and_then(|v| v.as_str())
+ .map(|s| s.to_string())
+}
+
+#[tauri::command]
+pub(crate) fn get_ai_config() -> CmdResult {
+ let provider = get_config_value("AI_PROVIDER").unwrap_or_else(|| "openai".to_string());
+ let api_key = get_config_value("AI_API_KEY");
+ let api_base =
+ get_config_value("AI_API_BASE").unwrap_or_else(|| "https://api.openai.com/v1".to_string());
+ let model = get_config_value("AI_MODEL").unwrap_or_else(|| "gpt-4o".to_string());
+ let prompt = get_config_value("AI_PROMPT").unwrap_or_else(|| DEFAULT_AI_PROMPT.to_string());
+
+ let api_key_masked = api_key.as_ref().map(|key| {
+ if key.len() > 7 {
+ format!("{}...{}", &key[..3], &key[key.len() - 4..])
+ } else {
+ "****".to_string()
+ }
+ });
+
+ Ok(serde_json::json!({
+ "provider": provider,
+ "model": model,
+ "api_base": api_base,
+ "api_key_masked": api_key_masked,
+ "has_api_key": api_key.is_some() && !api_key.as_ref().unwrap().is_empty(),
+ "prompt": prompt,
+ "default_prompt": DEFAULT_AI_PROMPT
+ }))
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct SaveAIConfigOptions {
+ provider: Option,
+ api_key: Option,
+ api_base: Option,
+ model: Option,
+ prompt: Option,
+}
+
+#[tauri::command]
+pub(crate) fn save_ai_config(options: SaveAIConfigOptions) -> CmdResult {
+ use std::collections::HashMap;
+
+ let config_path = SearchConfig::json_config_path();
+
+ let mut config: HashMap = if config_path.exists() {
+ let content = std::fs::read_to_string(&config_path).map_err(map_err)?;
+ serde_json::from_str(&content).unwrap_or_default()
+ } else {
+ HashMap::new()
+ };
+
+ if let Some(provider) = options.provider {
+ config.insert(
+ "AI_PROVIDER".to_string(),
+ serde_json::Value::String(provider),
+ );
+ }
+ if let Some(key) = options.api_key {
+ if !key.is_empty() {
+ config.insert("AI_API_KEY".to_string(), serde_json::Value::String(key));
+ }
+ }
+ if let Some(base) = options.api_base {
+ config.insert("AI_API_BASE".to_string(), serde_json::Value::String(base));
+ }
+ if let Some(model) = options.model {
+ config.insert("AI_MODEL".to_string(), serde_json::Value::String(model));
+ }
+ if let Some(prompt) = options.prompt {
+ config.insert("AI_PROMPT".to_string(), serde_json::Value::String(prompt));
+ }
+
+ if let Some(parent) = config_path.parent() {
+ std::fs::create_dir_all(parent).map_err(map_err)?;
+ }
+
+ let content = serde_json::to_string_pretty(&config).map_err(map_err)?;
+ std::fs::write(&config_path, content).map_err(map_err)?;
+
+ Ok(serde_json::json!({
+ "success": true,
+ "config_path": config_path.to_string_lossy()
+ }))
+}
+
+#[derive(Deserialize)]
+pub(crate) struct AIChatOptions {
+ messages: Vec,
+ #[serde(rename = "requestId")]
+ request_id: Option,
+ model: Option,
+}
+
+#[derive(Serialize, Clone)]
+pub(crate) struct AIStreamEvent {
+ content: Option,
+ done: Option,
+ error: Option,
+}
+
+pub(crate) fn extract_stream_content(value: &serde_json::Value) -> Option {
+ if let Some(s) = value.as_str() {
+ return Some(s.to_string());
+ }
+ if let Some(arr) = value.as_array() {
+ let mut parts: Vec = Vec::new();
+ for item in arr {
+ if let Some(s) = item.as_str() {
+ parts.push(s.to_string());
+ continue;
+ }
+ if let Some(obj) = item.as_object() {
+ if let Some(text) = obj.get("text").and_then(|t| t.as_str()) {
+ parts.push(text.to_string());
+ continue;
+ }
+ if let Some(text_obj) = obj.get("text").and_then(|t| t.as_object()) {
+ if let Some(val) = text_obj.get("value").and_then(|v| v.as_str()) {
+ parts.push(val.to_string());
+ continue;
+ }
+ }
+ if let Some(content) = obj.get("content").and_then(|t| t.as_str()) {
+ parts.push(content.to_string());
+ continue;
+ }
+ if let Some(content_obj) = obj.get("content").and_then(|t| t.as_object()) {
+ if let Some(val) = content_obj.get("value").and_then(|v| v.as_str()) {
+ parts.push(val.to_string());
+ continue;
+ }
+ }
+ }
+ }
+ if !parts.is_empty() {
+ return Some(parts.join(""));
+ }
+ }
+ None
+}
+
+pub(crate) fn content_for_ollama(content: &serde_json::Value) -> (String, Vec) {
+ if let Some(s) = content.as_str() {
+ return (s.to_string(), Vec::new());
+ }
+ if let Some(arr) = content.as_array() {
+ let mut text_parts: Vec = Vec::new();
+ let mut images: Vec = Vec::new();
+ for item in arr {
+ if let Some(obj) = item.as_object() {
+ if let Some(t) = obj.get("text").and_then(|v| v.as_str()) {
+ text_parts.push(t.to_string());
+ }
+ if let Some(url) = obj
+ .get("image_url")
+ .and_then(|v| v.get("url"))
+ .and_then(|v| v.as_str())
+ {
+ if let Some(encoded) = url.split("base64,").nth(1) {
+ images.push(encoded.to_string());
+ }
+ }
+ }
+ }
+ return (text_parts.join("\n"), images);
+ }
+ (String::new(), Vec::new())
+}
+
+#[tauri::command]
+pub(crate) async fn ai_chat(window: tauri::Window, options: AIChatOptions) -> CmdResult<()> {
+ let provider = get_config_value("AI_PROVIDER").unwrap_or_else(|| "openai".to_string());
+ let api_key = get_config_value("AI_API_KEY");
+ let api_base =
+ get_config_value("AI_API_BASE").unwrap_or_else(|| "https://api.openai.com/v1".to_string());
+ let model = options
+ .model
+ .clone()
+ .filter(|value| !value.trim().is_empty())
+ .unwrap_or_else(|| get_config_value("AI_MODEL").unwrap_or_else(|| "gpt-4o".to_string()));
+
+ let event_name = match &options.request_id {
+ Some(id) => format!("ai-stream-{}", id),
+ None => "ai-stream".to_string(),
+ };
+
+ let client = reqwest::Client::new();
+
+ if provider == "ollama" {
+ let ollama_url = if api_base.contains("ollama") || api_base.contains("11434") {
+ api_base.clone()
+ } else {
+ "http://localhost:11434/api".to_string()
+ };
+
+ let messages: Vec = options
+ .messages
+ .iter()
+ .map(|m| {
+ let (text, images) = content_for_ollama(&m.content);
+ let mut msg = serde_json::json!({
+ "role": m.role,
+ "content": text
+ });
+ if !images.is_empty() {
+ msg["images"] = serde_json::Value::Array(
+ images.into_iter().map(serde_json::Value::String).collect(),
+ );
+ }
+ msg
+ })
+ .collect();
+
+ let response = client
+ .post(format!("{}/chat", ollama_url))
+ .header("Content-Type", "application/json")
+ .json(&serde_json::json!({
+ "model": model,
+ "messages": messages,
+ "stream": true
+ }))
+ .send()
+ .await
+ .map_err(map_err)?;
+
+ if !response.status().is_success() {
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: None,
+ done: None,
+ error: Some(format!("Ollama error: {}", response.status())),
+ },
+ );
+ return Ok(());
+ }
+
+ let mut stream = response.bytes_stream();
+ while let Some(chunk_result) = stream.next().await {
+ match chunk_result {
+ Ok(chunk) => {
+ let text = String::from_utf8_lossy(&chunk);
+ for line in text.lines() {
+ if line.trim().is_empty() {
+ continue;
+ }
+ if let Ok(json) = serde_json::from_str::(line) {
+ if let Some(content) = json
+ .get("message")
+ .and_then(|m| m.get("content"))
+ .and_then(|c| c.as_str())
+ {
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: Some(content.to_string()),
+ done: None,
+ error: None,
+ },
+ );
+ }
+ if json.get("done").and_then(|d| d.as_bool()).unwrap_or(false) {
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: None,
+ done: Some(true),
+ error: None,
+ },
+ );
+ }
+ }
+ }
+ }
+ Err(e) => {
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: None,
+ done: None,
+ error: Some(format!("Ollama error: {}", e)),
+ },
+ );
+ return Ok(());
+ }
+ }
+ }
+
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: None,
+ done: Some(true),
+ error: None,
+ },
+ );
+ return Ok(());
+ }
+
+ let api_key = api_key.ok_or_else(|| "OpenAI API key not configured".to_string())?;
+
+ let response = client
+ .post(format!("{}/chat/completions", api_base))
+ .header("Content-Type", "application/json")
+ .header("Authorization", format!("Bearer {}", api_key))
+ .json(&serde_json::json!({
+ "model": model,
+ "messages": options.messages,
+ "stream": true
+ }))
+ .send()
+ .await
+ .map_err(map_err)?;
+
+ if !response.status().is_success() {
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: None,
+ done: None,
+ error: Some(format!("OpenAI error: {}", response.status())),
+ },
+ );
+ return Ok(());
+ }
+
+ let mut stream = response.bytes_stream();
+ while let Some(chunk_result) = stream.next().await {
+ match chunk_result {
+ Ok(chunk) => {
+ let text = String::from_utf8_lossy(&chunk);
+ for line in text.lines() {
+ if !line.starts_with("data: ") {
+ continue;
+ }
+ let content = line.trim_start_matches("data: ").trim();
+ if content == "[DONE]" {
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: None,
+ done: Some(true),
+ error: None,
+ },
+ );
+ return Ok(());
+ }
+ if let Ok(json) = serde_json::from_str::(content) {
+ let text_chunk = json
+ .get("choices")
+ .and_then(|c| c.get(0))
+ .and_then(|c| c.get("delta"))
+ .and_then(|d| d.get("content"))
+ .and_then(|c| extract_stream_content(c));
+ if let Some(token) = text_chunk {
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: Some(token),
+ done: None,
+ error: None,
+ },
+ );
+ }
+ }
+ }
+ }
+ Err(e) => {
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: None,
+ done: None,
+ error: Some(format!("OpenAI error: {}", e)),
+ },
+ );
+ return Ok(());
+ }
+ }
+ }
+
+ let _ = window.emit(
+ &event_name,
+ AIStreamEvent {
+ content: None,
+ done: Some(true),
+ error: None,
+ },
+ );
+ Ok(())
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use serde_json::json;
+
+ #[test]
+ fn extract_stream_content_handles_text_shapes() {
+ assert_eq!(extract_stream_content(&json!("ping")), Some("ping".to_string()));
+ assert_eq!(
+ extract_stream_content(&json!([{ "text": "a" }, { "content": { "value": "b" } }])),
+ Some("ab".to_string())
+ );
+ }
+
+ #[test]
+ fn content_for_ollama_extracts_images() {
+ let (text, images) = content_for_ollama(&json!([
+ { "text": "Hello" },
+ { "image_url": { "url": "data:image/png;base64,ABC123" } }
+ ]));
+ assert_eq!(text, "Hello");
+ assert_eq!(images, vec!["ABC123".to_string()]);
+ }
+}
diff --git a/src-tauri/src/commands/context.rs b/src-tauri/src/commands/context.rs
new file mode 100644
index 0000000..427e80e
--- /dev/null
+++ b/src-tauri/src/commands/context.rs
@@ -0,0 +1,383 @@
+use crate::utils::{map_err, CmdResult};
+use crate::AppState;
+use opencontext_core::search::SearchConfig;
+use serde::{Deserialize, Serialize};
+use tauri::State;
+
+// ===== Folder Commands =====
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct ListFoldersOptions {
+ all: Option,
+}
+
+#[tauri::command]
+pub(crate) fn list_folders(
+ state: State,
+ options: Option,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let folders = ctx
+ .list_folders(options.and_then(|o| o.all).unwrap_or(false))
+ .map_err(map_err)?;
+ serde_json::to_value(&folders).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct CreateFolderOptions {
+ path: String,
+ description: Option,
+}
+
+#[tauri::command]
+pub(crate) fn create_folder(
+ state: State,
+ options: CreateFolderOptions,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let folder = ctx
+ .create_folder(&options.path, options.description.as_deref())
+ .map_err(map_err)?;
+ serde_json::to_value(&folder).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct RenameFolderOptions {
+ path: String,
+ new_name: String,
+}
+
+#[tauri::command]
+pub(crate) fn rename_folder(
+ state: State,
+ options: RenameFolderOptions,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let folder = ctx
+ .rename_folder(&options.path, &options.new_name)
+ .map_err(map_err)?;
+ serde_json::to_value(&folder).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct MoveFolderOptions {
+ path: String,
+ dest_folder_path: String,
+}
+
+#[tauri::command]
+pub(crate) fn move_folder(
+ state: State,
+ options: MoveFolderOptions,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let folder = ctx
+ .move_folder(&options.path, &options.dest_folder_path)
+ .map_err(map_err)?;
+ serde_json::to_value(&folder).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct RemoveFolderOptions {
+ path: String,
+ force: Option,
+}
+
+#[tauri::command]
+pub(crate) fn remove_folder(state: State, options: RemoveFolderOptions) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ ctx.remove_folder(&options.path, options.force.unwrap_or(false))
+ .map_err(map_err)?;
+ Ok(true)
+}
+
+// ===== Document Commands =====
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct ListDocsOptions {
+ folder_path: String,
+ recursive: Option,
+}
+
+#[tauri::command]
+pub(crate) fn list_docs(state: State, options: ListDocsOptions) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let docs = ctx
+ .list_docs(&options.folder_path, options.recursive.unwrap_or(false))
+ .map_err(map_err)?;
+ serde_json::to_value(&docs).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct CreateDocOptions {
+ folder_path: String,
+ name: String,
+ description: Option,
+}
+
+#[tauri::command]
+pub(crate) fn create_doc(state: State, options: CreateDocOptions) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let doc = ctx
+ .create_doc(&options.folder_path, &options.name, options.description.as_deref())
+ .map_err(map_err)?;
+ serde_json::to_value(&doc).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct MoveDocOptions {
+ doc_path: String,
+ dest_folder_path: String,
+}
+
+#[tauri::command]
+pub(crate) fn move_doc(state: State, options: MoveDocOptions) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let doc = ctx
+ .move_doc(&options.doc_path, &options.dest_folder_path)
+ .map_err(map_err)?;
+ serde_json::to_value(&doc).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct RenameDocOptions {
+ doc_path: String,
+ new_name: String,
+}
+
+#[tauri::command]
+pub(crate) fn rename_doc(state: State, options: RenameDocOptions) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let doc = ctx
+ .rename_doc(&options.doc_path, &options.new_name)
+ .map_err(map_err)?;
+ serde_json::to_value(&doc).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct RemoveDocOptions {
+ doc_path: String,
+}
+
+#[tauri::command]
+pub(crate) fn remove_doc(state: State, options: RemoveDocOptions) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ ctx.remove_doc(&options.doc_path).map_err(map_err)?;
+ Ok(true)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct SetDescriptionOptions {
+ doc_path: String,
+ description: String,
+}
+
+#[tauri::command]
+pub(crate) fn set_doc_description(
+ state: State,
+ options: SetDescriptionOptions,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let doc = ctx
+ .set_doc_description(&options.doc_path, &options.description)
+ .map_err(map_err)?;
+ serde_json::to_value(&doc).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct GetDocContentOptions {
+ path: String,
+}
+
+#[derive(Serialize)]
+pub(crate) struct DocContentResponse {
+ content: String,
+}
+
+#[tauri::command]
+pub(crate) fn get_doc_content(
+ state: State,
+ options: GetDocContentOptions,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let content = ctx.get_doc_content(&options.path).map_err(map_err)?;
+ Ok(DocContentResponse { content })
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct SaveDocOptions {
+ path: String,
+ content: String,
+ description: Option,
+}
+
+#[tauri::command]
+pub(crate) fn save_doc_content(
+ state: State,
+ options: SaveDocOptions,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let doc = ctx
+ .save_doc_content(
+ &options.path,
+ &options.content,
+ options.description.as_deref(),
+ )
+ .map_err(map_err)?;
+ serde_json::to_value(&doc).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct GetDocByIdOptions {
+ stable_id: String,
+}
+
+#[tauri::command]
+pub(crate) fn get_doc_by_id(
+ state: State,
+ options: GetDocByIdOptions,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let doc = ctx
+ .get_doc_by_stable_id(&options.stable_id)
+ .map_err(map_err)?;
+ serde_json::to_value(&doc).map_err(map_err)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct GetDocMetaOptions {
+ path: String,
+}
+
+#[tauri::command]
+pub(crate) fn get_doc_meta(
+ state: State,
+ options: GetDocMetaOptions,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let doc = ctx.get_doc_meta(&options.path).map_err(map_err)?;
+ serde_json::to_value(&doc).map_err(map_err)
+}
+
+// ===== Manifest Command =====
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct ManifestOptions {
+ folder_path: String,
+ limit: Option,
+}
+
+#[tauri::command]
+pub(crate) fn generate_manifest(
+ state: State,
+ options: ManifestOptions,
+) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let manifest = ctx
+ .generate_manifest(&options.folder_path, options.limit.map(|v| v as usize))
+ .map_err(map_err)?;
+ serde_json::to_value(&manifest).map_err(map_err)
+}
+
+// ===== Environment Info Command =====
+
+#[tauri::command]
+pub(crate) fn get_env_info(state: State) -> CmdResult {
+ let ctx = state.ctx.lock().map_err(map_err)?;
+ let base_info = ctx.env_info();
+ let config = &state.search_config;
+
+ let masked_api_key = config.embedding.api_key.as_ref().map(|key| {
+ if key.len() > 4 {
+ format!("{}...{}", &key[..3], &key[key.len() - 4..])
+ } else {
+ "****".to_string()
+ }
+ });
+
+ let info = serde_json::json!({
+ "contexts_root": base_info.contexts_root,
+ "db_path": base_info.db_path,
+ "embedding_model": config.embedding.model,
+ "embedding_api_base": config.embedding.api_base,
+ "api_key_masked": masked_api_key,
+ "has_api_key": config.embedding.api_key.is_some() && !config.embedding.api_key.as_ref().unwrap().is_empty(),
+ "config_path": SearchConfig::json_config_path().to_string_lossy(),
+ "dimensions": config.embedding.dimensions,
+ });
+
+ Ok(info)
+}
+
+#[derive(Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub(crate) struct SaveConfigOptions {
+ api_key: Option,
+ api_base: Option,
+ model: Option,
+}
+
+#[tauri::command]
+pub(crate) fn save_config(options: SaveConfigOptions) -> CmdResult {
+ use std::collections::HashMap;
+
+ let config_path = SearchConfig::json_config_path();
+
+ let mut config: HashMap