From 13237b3d001d0f111c9f23af75ae11fedbeb3989 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 22 Feb 2026 10:41:01 +0100 Subject: [PATCH 1/9] Bump version to 0.6.0 and improve installation docs across all READMEs Update workspace version and all inter-crate dependency versions from 0.5.0 to 0.6.0. Add clear installation instructions (crates.io, from source, verify) to all CLI tool READMEs and `cargo add` sections to library crate READMEs. Reorganize root README Getting Started with explicit install paths and add tap-mcp to CLI tools listing. Co-Authored-By: Claude Opus 4.6 --- Cargo.toml | 2 +- README.md | 130 +++++++++++++++++++++++++---------------- tap-agent/Cargo.toml | 4 +- tap-agent/README.md | 17 ++++++ tap-caip/README.md | 6 ++ tap-cli/Cargo.toml | 8 +-- tap-cli/README.md | 22 ++++++- tap-http/Cargo.toml | 10 ++-- tap-http/README.md | 41 +++++++++++++ tap-ivms101/Cargo.toml | 2 +- tap-ivms101/README.md | 6 ++ tap-mcp/Cargo.toml | 8 +-- tap-mcp/README.md | 32 +++++----- tap-msg/Cargo.toml | 4 +- tap-msg/README.md | 14 +++-- tap-node/Cargo.toml | 8 +-- tap-node/README.md | 6 ++ tap-ts/package.json | 2 +- tap-wasm/Cargo.toml | 6 +- 19 files changed, 229 insertions(+), 99 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 969a03f6..972266c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ members = [ resolver = "2" [workspace.package] -version = "0.5.0" +version = "0.6.0" edition = "2021" authors = ["Pelle Braendgaard "] description = "Rust implementation of the Transaction Authorization Protocol (TAP)" diff --git a/README.md b/README.md index 4401da34..fcdc083c 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ This repository contains a Rust implementation of the Transaction Authorization Protocol (TAP), a decentralized protocol for securely authorizing blockchain transactions before they are submitted on-chain. TAP-RS targets payment-related use cases, Travel Rule compliance, and secure transaction coordination. -**New in v0.5.0**: -- PayTo URI support (RFC 8905) for traditional payment systems (IBAN, ACH, BIC, UPI) -- Fallback settlement addresses for flexible payment options -- Schema.org Product attributes for invoice line items -- Enhanced Agent and Party structures with Organization fields +**New in v0.6.0**: +- External decision executable support for pluggable authorization workflows +- Poll mode for decision management via MCP tools +- `tap-cli` command-line interface for full TAP agent operations +- `did:web` DID document hosting in `tap-http` ## Project Structure @@ -52,38 +52,46 @@ This project has successfully implemented all core TAP message types and flows a ### Prerequisites -- Rust 1.71.0 or later -- Cargo +- [Rust](https://www.rust-lang.org/tools/install) 1.71.0 or later (includes Cargo) -### Building +### Installing Command-line Tools -```bash -# Clone the repository -git clone https://github.com/notabene/tap-rs.git -cd tap-rs +The quickest way to get started is to install the CLI tools. No need to clone the repository. -# Build all crates -cargo build +#### From crates.io (recommended) -# Run tests -cargo test +```bash +# Install all CLI tools at once +cargo install tap-cli tap-http tap-agent + +# Or install only what you need: +cargo install tap-cli # Full-featured TAP CLI (agents, transactions, customers, DIDs) +cargo install tap-http # HTTP DIDComm server + payment simulator +cargo install tap-agent # Low-level DID/key management + message packing +cargo install tap-mcp # MCP server for AI/LLM integration ``` -### Installing Command-line Tools - -TAP-RS includes several useful command-line tools that can be installed from crates.io or from source: +#### From source ```bash -# Install tools from crates.io -cargo install tap-agent tap-http tap-cli +git clone https://github.com/TransactionAuthorizationProtocol/tap-rs.git +cd tap-rs +cargo install --path tap-cli +cargo install --path tap-http +cargo install --path tap-agent +cargo install --path tap-mcp +``` -# Or install from the repository -cargo install --path tap-rs/tap-agent -cargo install --path tap-rs/tap-http -cargo install --path tap-rs/tap-cli +#### Verify installation + +```bash +tap-cli --help +tap-http --help +tap-agent-cli --help +tap-mcp --help ``` -Available command-line tools: +### Available CLI Tools 1. **tap-cli**: Full-featured CLI for TAP Agent operations ```bash @@ -159,8 +167,46 @@ Available command-line tools: tap-payment-simulator --url http://localhost:8000/didcomm --did ``` +5. **tap-mcp**: MCP server for AI/LLM integration (Claude Desktop, etc.) + ```bash + # Run as MCP server (communicates via stdin/stdout) + tap-mcp + + # With custom settings + tap-mcp --tap-root /path/to/data --debug + ``` + See individual tool READMEs for detailed usage instructions. +### Using as Rust Libraries + +Add any TAP crate to your project: + +```bash +cargo add tap-msg # Core message types and validation +cargo add tap-agent # Agent identity, key management, message packing +cargo add tap-caip # CAIP-2/10/19 blockchain identifier parsing +cargo add tap-node # Node orchestration, storage, event handling +cargo add tap-ivms101 # IVMS 101.2023 Travel Rule data structures +``` + +### TypeScript / JavaScript SDK + +```bash +npm install @taprsvp/agent +``` + +See the [tap-ts README](./tap-ts/README.md) for complete documentation. + +### Building from Source + +```bash +git clone https://github.com/TransactionAuthorizationProtocol/tap-rs.git +cd tap-rs +cargo build +cargo test +``` + ## Key Features - **Complete TAP Implementation**: Support for all TAP message types (Transfer, Payment, Connect, Escrow, Exchange, Quote, Authorize, Reject, Settle, Cancel, Revert, AddAgents, RemoveAgent, ReplaceAgent, UpdatePolicies, and more) @@ -229,7 +275,7 @@ let message = transfer.to_didcomm_with_route( See the [tap-msg README](./tap-msg/README.md) for more detailed examples. -## New in v0.5.0: Settlement Address Flexibility +## Settlement Address Flexibility TAP-RS now supports both blockchain and traditional payment settlement addresses: @@ -488,31 +534,13 @@ Comprehensive documentation for TAP-RS is available in the [docs](./docs) direct ## Build Commands -The following commands are available for working with the codebase: - ```bash -# Build all crates -cargo build - -# Run tests for all crates -cargo test - -# Run tests for a specific crate -cargo test --package tap-msg - -# Run benchmarks -cargo bench - -# Format code -cargo fmt - -# Lint code -cargo clippy - -# Install command-line tools -cargo install --path tap-agent -cargo install --path tap-http -cargo install --path tap-cli +cargo build # Build all crates +cargo test # Run all tests +cargo test --package tap-msg # Run tests for a specific crate +cargo bench # Run benchmarks +cargo fmt # Format code +cargo clippy # Lint code ``` ## CLI Tools Reference diff --git a/tap-agent/Cargo.toml b/tap-agent/Cargo.toml index 7899c9f3..be5d05f3 100644 --- a/tap-agent/Cargo.toml +++ b/tap-agent/Cargo.toml @@ -9,8 +9,8 @@ license.workspace = true readme = "README.md" [dependencies] -tap-msg = { version = "0.5.0", path = "../tap-msg" } -tap-caip = { version = "0.5.0", path = "../tap-caip" } +tap-msg = { version = "0.6.0", path = "../tap-msg" } +tap-caip = { version = "0.6.0", path = "../tap-caip" } async-trait = { workspace = true } thiserror = "1.0" serde = { workspace = true } diff --git a/tap-agent/README.md b/tap-agent/README.md index 5716d8e9..10d481fb 100644 --- a/tap-agent/README.md +++ b/tap-agent/README.md @@ -2,6 +2,23 @@ The `tap-agent` crate implements the agent functionality for the Transaction Authorization Protocol (TAP), providing a secure and extensible framework for handling TAP messages, managing cryptographic operations, and resolving decentralized identifiers (DIDs). +## Installation + +### As a library + +```bash +cargo add tap-agent +``` + +### As a CLI tool + +The `tap-agent` crate also includes the `tap-agent-cli` binary for DID generation, key management, and DIDComm message packing/unpacking: + +```bash +cargo install tap-agent +tap-agent-cli --help +``` + ## Overview The TAP Agent serves as the foundation for secure communication in the TAP ecosystem, enabling entities to: diff --git a/tap-caip/README.md b/tap-caip/README.md index b9099d24..bc414a83 100644 --- a/tap-caip/README.md +++ b/tap-caip/README.md @@ -2,6 +2,12 @@ Implementation of Chain Agnostic Identifier Standards for the Transaction Authorization Protocol (TAP). +## Installation + +```bash +cargo add tap-caip +``` + ## Features - **CAIP-2**: Support for Chain IDs in namespace:reference format diff --git a/tap-cli/Cargo.toml b/tap-cli/Cargo.toml index c9837698..ec8ec7f9 100644 --- a/tap-cli/Cargo.toml +++ b/tap-cli/Cargo.toml @@ -19,10 +19,10 @@ path = "src/lib.rs" [dependencies] # TAP ecosystem dependencies -tap-node = { version = "0.5.0", path = "../tap-node" } -tap-agent = { version = "0.5.0", path = "../tap-agent" } -tap-msg = { version = "0.5.0", path = "../tap-msg" } -tap-caip = { version = "0.5.0", path = "../tap-caip" } +tap-node = { version = "0.6.0", path = "../tap-node" } +tap-agent = { version = "0.6.0", path = "../tap-agent" } +tap-msg = { version = "0.6.0", path = "../tap-msg" } +tap-caip = { version = "0.6.0", path = "../tap-caip" } # Async runtime and I/O tokio = { version = "1.0", features = ["full"] } diff --git a/tap-cli/README.md b/tap-cli/README.md index 32182a39..8c91e39b 100644 --- a/tap-cli/README.md +++ b/tap-cli/README.md @@ -4,14 +4,30 @@ Command-line interface for TAP Agent operations. `tap-cli` enables you to manage ## Installation +### From crates.io (recommended) + +```bash +cargo install tap-cli +``` + +### From source + ```bash -# Install from the repository +git clone https://github.com/TransactionAuthorizationProtocol/tap-rs.git +cd tap-rs cargo install --path tap-cli +``` + +### Verify installation -# Or build and run directly -cargo run --bin tap-cli -- --help +```bash +tap-cli --help ``` +### Prerequisites + +- [Rust](https://www.rust-lang.org/tools/install) 1.71.0 or later + ## Quick Start ```bash diff --git a/tap-http/Cargo.toml b/tap-http/Cargo.toml index a45a00d5..153f904a 100644 --- a/tap-http/Cargo.toml +++ b/tap-http/Cargo.toml @@ -9,10 +9,10 @@ description = "HTTP server for the Transaction Authorization Protocol (TAP)" readme = "README.md" [dependencies] -tap-msg = { version = "0.5.0", path = "../tap-msg" } -tap-node = { version = "0.5.0", path = "../tap-node", features = ["storage"] } -tap-agent = { version = "0.5.0", path = "../tap-agent" } -tap-caip = { version = "0.5.0", path = "../tap-caip" } +tap-msg = { version = "0.6.0", path = "../tap-msg" } +tap-node = { version = "0.6.0", path = "../tap-node", features = ["storage"] } +tap-agent = { version = "0.6.0", path = "../tap-agent" } +tap-caip = { version = "0.6.0", path = "../tap-caip" } warp = "0.3" tokio = { workspace = true, features = ["full"] } serde = { workspace = true } @@ -36,7 +36,7 @@ base64 = { workspace = true } multibase = { workspace = true } dirs = "6.0" -tap-mcp = { version = "0.5.0", path = "../tap-mcp" } +tap-mcp = { version = "0.6.0", path = "../tap-mcp" } tracing-subscriber = "0.3" [dev-dependencies] diff --git a/tap-http/README.md b/tap-http/README.md index 3648541b..0822f31b 100644 --- a/tap-http/README.md +++ b/tap-http/README.md @@ -2,6 +2,47 @@ HTTP DIDComm server implementation for the Transaction Authorization Protocol (TAP), providing secure message exchange via standard HTTP endpoints. +## Installation + +### From crates.io (recommended) + +```bash +cargo install tap-http +``` + +This installs two binaries: +- `tap-http` - The TAP HTTP DIDComm server +- `tap-payment-simulator` - A tool for testing TAP payment flows + +### From source + +```bash +git clone https://github.com/TransactionAuthorizationProtocol/tap-rs.git +cd tap-rs +cargo install --path tap-http +``` + +### Verify installation + +```bash +tap-http --help +tap-payment-simulator --help +``` + +### Prerequisites + +- [Rust](https://www.rust-lang.org/tools/install) 1.71.0 or later + +### Quick start + +```bash +# Start the server (creates an ephemeral agent automatically) +tap-http + +# In another terminal, test with the payment simulator +tap-payment-simulator --url http://localhost:8000/didcomm --did +``` + ## Features - **DIDComm HTTP Endpoint**: Exposes a secure HTTP endpoint for DIDComm messaging diff --git a/tap-ivms101/Cargo.toml b/tap-ivms101/Cargo.toml index 14f62668..bb63dc19 100644 --- a/tap-ivms101/Cargo.toml +++ b/tap-ivms101/Cargo.toml @@ -16,7 +16,7 @@ chrono = { version = "0.4", features = ["serde"] } thiserror = "1.0" iso_currency = "0.4" regex = "1.5" -tap-msg = { version = "0.5.0", path = "../tap-msg" } +tap-msg = { version = "0.6.0", path = "../tap-msg" } [dev-dependencies] tokio = { version = "1.39", features = ["full"] } diff --git a/tap-ivms101/README.md b/tap-ivms101/README.md index d5550e8f..73745e70 100644 --- a/tap-ivms101/README.md +++ b/tap-ivms101/README.md @@ -6,6 +6,12 @@ A complete implementation of the IVMS 101.2023 data model for the Travel Asset Protocol (TAP). +## Installation + +```bash +cargo add tap-ivms101 +``` + ## Overview This crate provides a comprehensive implementation of the interVASP Messaging Standard (IVMS) 101.2023, which is used for Travel Rule compliance in virtual asset transfers. IVMS 101 is the global standard for exchanging required originator and beneficiary information between Virtual Asset Service Providers (VASPs) to comply with FATF Recommendation 16. diff --git a/tap-mcp/Cargo.toml b/tap-mcp/Cargo.toml index 272ecb20..c87372ba 100644 --- a/tap-mcp/Cargo.toml +++ b/tap-mcp/Cargo.toml @@ -19,10 +19,10 @@ path = "src/main.rs" [dependencies] # TAP ecosystem dependencies -tap-node = { version = "0.5.0", path = "../tap-node" } -tap-agent = { version = "0.5.0", path = "../tap-agent" } -tap-msg = { version = "0.5.0", path = "../tap-msg" } -tap-caip = { version = "0.5.0", path = "../tap-caip" } +tap-node = { version = "0.6.0", path = "../tap-node" } +tap-agent = { version = "0.6.0", path = "../tap-agent" } +tap-msg = { version = "0.6.0", path = "../tap-msg" } +tap-caip = { version = "0.6.0", path = "../tap-caip" } # Async runtime and I/O tokio = { version = "1.0", features = ["full"] } diff --git a/tap-mcp/README.md b/tap-mcp/README.md index d019fe7c..1b0c2075 100644 --- a/tap-mcp/README.md +++ b/tap-mcp/README.md @@ -23,26 +23,30 @@ Key design principles: ## Installation -### Prerequisites +### From crates.io (recommended) -- Rust 1.70+ with Cargo -- SQLite 3.0+ -- TAP ecosystem components (tap-node, tap-agent, tap-msg) +```bash +cargo install tap-mcp +``` -### Build from Source +### From source ```bash -# Clone the repository -git clone https://github.com/notabene-id/tap-rs.git -cd tap-rs/tap-mcp +git clone https://github.com/TransactionAuthorizationProtocol/tap-rs.git +cd tap-rs +cargo install --path tap-mcp +``` -# Build the project -cargo build --release +### Verify installation -# Install globally (optional) -cargo install --path . +```bash +tap-mcp --help ``` +### Prerequisites + +- [Rust](https://www.rust-lang.org/tools/install) 1.70+ with Cargo + ## Quick Start ### 1. Basic Usage @@ -820,7 +824,7 @@ tap://deliveries/123 # Specific delivery record by ID ``` ### `tap://database-schema` -**New in v0.5.0** - Access to database schema information for agent storage. +Access to database schema information for agent storage. ``` tap://database-schema?agent_did=did:key:z6Mk... # Complete schema for agent's database (required) @@ -847,7 +851,7 @@ tap://schemas/Settle # Specific schema for Settle message type tap://schemas/Cancel # Specific schema for Cancel message type ``` -**Enhanced in v0.5.0** with individual schema lookup: +Enhanced with individual schema lookup: - Access specific message schemas by name (e.g., `Transfer`, `Authorize`) - Search by message type URL (e.g., `https://tap.rsvp/schema/1.0#Transfer`) - Includes comprehensive JSON schemas for all TAIP message types diff --git a/tap-msg/Cargo.toml b/tap-msg/Cargo.toml index 57354cdc..e47dd786 100644 --- a/tap-msg/Cargo.toml +++ b/tap-msg/Cargo.toml @@ -14,7 +14,7 @@ serde = { workspace = true } serde_json = { workspace = true } # Chain Agnostic Identifiers -tap-caip = { version = "0.5.0", path = "../tap-caip" } +tap-caip = { version = "0.6.0", path = "../tap-caip" } # Date and time chrono = { workspace = true } @@ -36,7 +36,7 @@ uuid = { workspace = true } tracing = { workspace = true } # Derive macro for TAP messages -tap-msg-derive = { version = "0.5.0", path = "../tap-msg-derive" } +tap-msg-derive = { version = "0.6.0", path = "../tap-msg-derive" } # WASM support wasm-bindgen = { workspace = true, optional = true } diff --git a/tap-msg/README.md b/tap-msg/README.md index c3b5f7bf..9512586e 100644 --- a/tap-msg/README.md +++ b/tap-msg/README.md @@ -2,6 +2,14 @@ Core message processing for the Transaction Authorization Protocol (TAP) providing secure message types and validation. +## Installation + +Add to your `Cargo.toml`: + +```bash +cargo add tap-msg +``` + ## Features - **TAP Message Types**: Complete implementation of all TAP message types @@ -120,8 +128,7 @@ payment_request.invoice = Some(InvoiceReference::Invoice(invoice)); payment_request.validate()?; ``` -### Settlement Address Support (New in v0.5.0) - +### Settlement Address Support TAP-RS now supports both blockchain and traditional payment system addresses: ```rust @@ -159,8 +166,7 @@ let payment = Payment::builder() .build(); ``` -### Enhanced Metadata (New in v0.5.0) - +### Enhanced Metadata Agents, Parties, and LineItems now support rich schema.org metadata: ```rust diff --git a/tap-node/Cargo.toml b/tap-node/Cargo.toml index 6646aefd..fe257ca4 100644 --- a/tap-node/Cargo.toml +++ b/tap-node/Cargo.toml @@ -10,10 +10,10 @@ readme = "README.md" [dependencies] # Internal dependencies -tap-msg = { version = "0.5.0", path = "../tap-msg" } -tap-agent = { version = "0.5.0", path = "../tap-agent" } -tap-caip = { version = "0.5.0", path = "../tap-caip" } -tap-ivms101 = { version = "0.5.0", path = "../tap-ivms101" } +tap-msg = { version = "0.6.0", path = "../tap-msg" } +tap-agent = { version = "0.6.0", path = "../tap-agent" } +tap-caip = { version = "0.6.0", path = "../tap-caip" } +tap-ivms101 = { version = "0.6.0", path = "../tap-ivms101" } # Async runtime tokio = { workspace = true } diff --git a/tap-node/README.md b/tap-node/README.md index 1639fe69..b56186ce 100644 --- a/tap-node/README.md +++ b/tap-node/README.md @@ -2,6 +2,12 @@ A high-performance, asynchronous node implementation for the Transaction Authorization Protocol (TAP). This crate provides a complete node infrastructure for managing TAP agents, routing messages, and coordinating secure financial transactions. +## Installation + +```bash +cargo add tap-node +``` + ## Overview The TAP Node acts as a central hub for TAP communications, managing multiple agents, processing messages, and coordinating the transaction lifecycle. It is designed for high-throughput environments, with support for concurrent message processing, event-driven architecture, and robust error handling. diff --git a/tap-ts/package.json b/tap-ts/package.json index 9951dc66..eb5806ef 100644 --- a/tap-ts/package.json +++ b/tap-ts/package.json @@ -1,6 +1,6 @@ { "name": "@taprsvp/agent", - "version": "0.5.0", + "version": "0.6.0", "type": "module", "description": "TypeScript wrapper for TAP WASM Agent - Browser-optimized message packing/unpacking with flexible key management", "keywords": [ diff --git a/tap-wasm/Cargo.toml b/tap-wasm/Cargo.toml index b0d0849c..4c192823 100644 --- a/tap-wasm/Cargo.toml +++ b/tap-wasm/Cargo.toml @@ -21,13 +21,13 @@ serde_json = "1.0.96" uuid = { workspace = true } console_error_panic_hook = { version = "0.1.7", optional = true } wee_alloc = { version = "0.4.5", optional = true } -tap-caip = { version = "0.5.0", path = "../tap-caip" } +tap-caip = { version = "0.6.0", path = "../tap-caip" } # Add tap-agent with wasm feature enabled and default features disabled -tap-agent = { version = "0.5.0", path = "../tap-agent", default-features = false, features = [ +tap-agent = { version = "0.6.0", path = "../tap-agent", default-features = false, features = [ "wasm", "crypto-ed25519", ] } -tap-msg = { version = "0.5.0", path = "../tap-msg", default-features = false, features = [ +tap-msg = { version = "0.6.0", path = "../tap-msg", default-features = false, features = [ "wasm", ] } web-sys = { version = "0.3.64", features = ["console"] } From 9c47861eb9b21bc2b4eecccee5aefa41d0ee34b7 Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 22 Feb 2026 11:01:07 +0100 Subject: [PATCH 2/9] Add crypto-p256 and crypto-secp256k1 to tap-agent default features Co-Authored-By: Claude Opus 4.6 --- tap-agent/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tap-agent/Cargo.toml b/tap-agent/Cargo.toml index be5d05f3..c52f045b 100644 --- a/tap-agent/Cargo.toml +++ b/tap-agent/Cargo.toml @@ -70,7 +70,7 @@ name = "agent_benchmark" harness = false [features] -default = ["native", "crypto-ed25519"] +default = ["native", "crypto-ed25519", "crypto-p256", "crypto-secp256k1"] native = ["reqwest"] test-utils = ["tempfile"] examples = ["tempfile"] From cfe81a8229eeb05b92060d395f64dce8058a1f5c Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 22 Feb 2026 12:24:50 +0100 Subject: [PATCH 3/9] Add comprehensive 0.6.0 changelog entries Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 69 +++++++++++++++++++++++++++++++++++++++++++++ tap-ts/CHANGELOG.md | 23 +++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e0a2224..e2d9c624 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,75 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.6.0] - 2026-02-22 + +### Added + +#### New Crate: tap-cli +- Full-featured command-line interface for all TAP agent operations +- Agent management (`agent create`, `agent list`) +- Transaction creation for all message types (`transfer`, `payment`, `connect`, `escrow`, `capture`) +- Transaction lifecycle actions (`authorize`, `reject`, `cancel`, `settle`, `revert`) +- Customer management with IVMS101 data generation (`customer create`, `customer ivms101`) +- Message delivery tracking and received message inspection +- DID operations (`did generate`, `did lookup`, `did keys`) +- Communication commands (`comm ping`, `comm message`) +- JSON and text output formats with `--format` flag + +#### Transaction State Machine (tap-node) +- Formal finite state machine (`TransactionFsm`) for TAP transaction lifecycle +- 8 states: Received, PolicyRequired, PartiallyAuthorized, ReadyToSettle, Settled, Rejected, Cancelled, Reverted +- 3 explicit decision points: AuthorizationRequired, PolicySatisfactionRequired, SettlementRequired +- Configurable decision modes: AutoApprove, EventBus, Custom handler + +#### External Decision Support (tap-http, tap-node, tap-mcp) +- `--decision-mode poll`: decisions logged to `decision_log` SQLite table for external polling +- `--decision-exec`: spawn a long-running child process communicating via JSON-RPC 2.0 over stdin/stdout +- `DecisionLogHandler` and `DecisionStateHandler` for durable decision management +- Process lifecycle management with health monitoring, restart with backoff, and graceful shutdown +- Decision replay on process reconnect for crash recovery +- Auto-resolve: action tools (`tap_authorize`, `tap_reject`, `tap_settle`, `tap_cancel`, `tap_revert`) automatically resolve matching pending decisions +- New MCP tools: `tap_list_pending_decisions`, `tap_resolve_decision` + +#### did:web Hosting (tap-http) +- Optional `/.well-known/did.json` endpoint for serving did:web DID documents +- Derives DID from HTTP Host header with RFC 1035 domain validation +- Auto-creates agents with Ed25519 keys and DIDCommMessaging service endpoint +- Enabled via `--enable-web-did` flag or `TAP_ENABLE_WEB_DID` env var + +#### WASM Agent v2 (tap-wasm, tap-ts) +- Complete rewrite of WASM bindings with browser-first design +- Real Ed25519 cryptographic key generation replacing UUID-based DID generation +- End-to-end message signing and verification working in browser +- TypeScript SDK (`@taprsvp/agent`) with full DIDComm v2 support +- Pluggable DID resolver interface for JavaScript delegation +- Multiple key types: Ed25519, P-256, secp256k1 +- Optimized bundle: 272KB WASM gzipped, 3.72KB TypeScript gzipped +- Verified Veramo interoperability with 15+ integration tests + +#### Docker Support (tap-http) +- Multi-stage Dockerfile for containerized deployment +- docker-compose.yml with persistent volume at `/data/tap` +- Single volume for keys, databases, and logs + +### Changed +- `tap-agent` default features now include all three crypto backends (`crypto-ed25519`, `crypto-p256`, `crypto-secp256k1`) +- `Complete` message type removed per updated TAIP specifications +- Improved installation documentation across all README files with explicit `cargo install` and `cargo add` instructions + +### Security +- Replace insecure XOR-based key wrapping with AES-KW (RFC 3394) +- Implement Concat KDF (NIST SP 800-56A) for ECDH key derivation +- Fix `encrypt_to_jwk` to use real ECDH-ES+A256KW encryption +- Fix `verify_jws` to perform actual cryptographic signature verification +- Add bounds checking to prevent panics on malformed DID and PayTo URI input +- JWE messages encrypted with old XOR method are no longer decryptable (intentional — the old method provided no security) + +### Breaking Changes +- `Complete` message type removed +- JWE encryption format changed (AES-KW replaces XOR key wrapping) +- `AuthorizationRequired` field `url` renamed to `authorizationUrl` (from 0.5.0) + ## [0.5.0] - 2025-08-14 ### Added diff --git a/tap-ts/CHANGELOG.md b/tap-ts/CHANGELOG.md index f6dca9ab..f235c6f9 100644 --- a/tap-ts/CHANGELOG.md +++ b/tap-ts/CHANGELOG.md @@ -5,6 +5,29 @@ All notable changes to @taprsvp/agent will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.6.0] - 2026-02-22 + +### Added +- Complete rewrite of WASM bindings with browser-first design +- Real Ed25519 cryptographic key generation replacing UUID-based DID generation +- End-to-end message signing and verification working in browser +- Pluggable DID resolver interface for JavaScript delegation +- Multiple key types: Ed25519, P-256, secp256k1 + +### Changed +- `Complete` message type removed per updated TAIP specifications +- Updated `@taprsvp/types` dependency to ^1.9.0 + +### Security +- Replace insecure XOR-based key wrapping with AES-KW (RFC 3394) +- Implement Concat KDF (NIST SP 800-56A) for ECDH key derivation +- Fix `encrypt_to_jwk` to use real ECDH-ES+A256KW encryption +- Fix `verify_jws` to perform actual cryptographic signature verification + +### Breaking Changes +- `Complete` message type removed +- JWE encryption format changed (AES-KW replaces XOR key wrapping) + ## [0.5.0] - 2024-12-19 ### Added From e1008dfa8cb371a97110660a89292520ae1f67ba Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 22 Feb 2026 12:27:49 +0100 Subject: [PATCH 4/9] Add release documentation update requirements to CLAUDE.md Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 445fe8eb..ee0d383e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -107,7 +107,14 @@ When done run the linter and formatter, then mark each individual task as done w - Do a full `cargo build` - Commit and push to GitHub, creating a new PR - Publish each crate one by one -- When doing a release please review git history and add a comprehensive changelog to CHANGELOG.md + +### Documentation Updates (required for every minor/major release) +- **CHANGELOG.md** (root): Add a comprehensive entry covering all changes since the last release, organized by Added/Changed/Fixed/Security/Breaking Changes +- **tap-ts/CHANGELOG.md**: Update with TypeScript/WASM-specific changes for the release +- **README.md** (root): Update version references, feature highlights, and Getting Started instructions +- **Crate-level README.md files**: Update version numbers, installation instructions (`cargo install`, `cargo add`), and feature documentation for any crate that changed +- **CLAUDE.md files**: Update build commands, feature lists, test counts, and any structural changes in both the root and crate-level CLAUDE.md files +- Review git history (`git log`) to ensure no changes are missed in the changelog ## Security - IMPORTANT!! Always perform real encryption, decryption, signing and signature verification. Never use simplified placeholders. Always use well tested cryptography libraries. From 471f49a72bad95607f8316f3ae793d1de4262aad Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 22 Feb 2026 13:41:34 +0100 Subject: [PATCH 5/9] Update changelogs with TAIP-18, TAIP-15, TAIP-3 and decision CLI changes Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ tap-ts/CHANGELOG.md | 4 ++++ 2 files changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2d9c624..f3751cf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Optimized bundle: 272KB WASM gzipped, 3.72KB TypeScript gzipped - Verified Veramo interoperability with 15+ integration tests +#### Asset Exchange & Quote Messages (TAIP-18) +- New `Exchange` message type for initiating asset exchanges between parties +- New `Quote` message type for responding to exchange requests with pricing +- Full validation, builders, CLI subcommands, and MCP tools for both message types + +#### Transfer & Payment Enhancements (TAIP-3, TAIP-14) +- `transactionValue` and `expiry` fields on Transfer messages (TAIP-3) +- Flexible asset pricing in Payment via `SupportedAsset` enum with Simple and Priced variants (TAIP-14) +- `expiry`, `invoice`, and `fallbackSettlementAddresses` exposed in Payment MCP tools and CLI + +#### Connect Message Restructure (TAIP-15) +- `requester`, `agents`, `agreement`, and `expiry` fields on Connect messages +- Expanded `TransactionLimits` with per-day/week/month/year limits +- Expanded `ConnectionConstraints` with `allowedBeneficiaries`, `allowedSettlementAddresses`, `allowedAssets` + +#### Agent Management CLI Commands (TAIP-5, TAIP-7) +- `agent-mgmt add-agents` subcommand for adding agents to transactions +- `agent-mgmt remove-agent` and `agent-mgmt replace-agent` subcommands +- `agent-mgmt update-policies` subcommand (TAIP-7) + +#### Decision Management CLI Commands (tap-cli) +- `decision list` and `decision resolve` subcommands matching tap-mcp's decision tools +- Auto-resolve on all action commands (`authorize`, `reject`, `cancel`, `settle`, `revert`) +- Detailed `--help` text with decision type references and auto-resolve mapping + #### Docker Support (tap-http) - Multi-stage Dockerfile for containerized deployment - docker-compose.yml with persistent volume at `/data/tap` @@ -73,6 +98,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `Complete` message type removed - JWE encryption format changed (AES-KW replaces XOR key wrapping) - `AuthorizationRequired` field `url` renamed to `authorizationUrl` (from 0.5.0) +- Connect message restructured with new `requester`, `agents`, `agreement`, `expiry` fields (TAIP-15) +- Transfer message gains `transactionValue` and `expiry` fields (TAIP-3) ## [0.5.0] - 2025-08-14 diff --git a/tap-ts/CHANGELOG.md b/tap-ts/CHANGELOG.md index f235c6f9..e4ab2267 100644 --- a/tap-ts/CHANGELOG.md +++ b/tap-ts/CHANGELOG.md @@ -13,10 +13,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - End-to-end message signing and verification working in browser - Pluggable DID resolver interface for JavaScript delegation - Multiple key types: Ed25519, P-256, secp256k1 +- Support for new Exchange and Quote message types (TAIP-18) +- Support for Transfer `transactionValue` and `expiry` fields (TAIP-3) +- Support for restructured Connect message with `requester`, `agents`, `agreement`, `expiry` (TAIP-15) ### Changed - `Complete` message type removed per updated TAIP specifications - Updated `@taprsvp/types` dependency to ^1.9.0 +- Connect message structure updated per TAIP-15 ### Security - Replace insecure XOR-based key wrapping with AES-KW (RFC 3394) From dc5319758b4726eb8eddf009d1889570861ecf1a Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 22 Feb 2026 13:48:37 +0100 Subject: [PATCH 6/9] Update happy-dom to v20 to fix critical VM escape vulnerability Co-Authored-By: Claude Opus 4.6 --- prds/taips | 2 +- tap-ts/package-lock.json | 5610 +++++++++++++++++++------------------- tap-ts/package.json | 2 +- 3 files changed, 2792 insertions(+), 2822 deletions(-) diff --git a/prds/taips b/prds/taips index 3d7ea3e5..e24811e9 160000 --- a/prds/taips +++ b/prds/taips @@ -1 +1 @@ -Subproject commit 3d7ea3e55bffe51be14345b824c08bd45b5e0cca +Subproject commit e24811e93552a97b237f9482e5fdd8a9994adcd7 diff --git a/tap-ts/package-lock.json b/tap-ts/package-lock.json index bbf0133f..494fbaaa 100644 --- a/tap-ts/package-lock.json +++ b/tap-ts/package-lock.json @@ -1,16 +1,15 @@ { "name": "@taprsvp/agent", - "version": "0.5.0", + "version": "0.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@taprsvp/agent", - "version": "0.5.0", + "version": "0.6.0", "license": "MIT", "dependencies": { - "@taprsvp/types": "^1.9.0", - "tap-wasm": "file:../tap-wasm/pkg" + "@taprsvp/types": "^1.9.0" }, "devDependencies": { "@types/node": "^24.3.0", @@ -27,7 +26,7 @@ "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", "eslint": "^9.33.0", - "happy-dom": "^18.0.1", + "happy-dom": "^20.7.0", "key-did-resolver": "^4.0.0", "tap-wasm": "file:../tap-wasm/pkg", "typescript": "^5.9.0", @@ -37,7 +36,7 @@ "vitest": "^3.2.4" }, "engines": { - "node": ">=16" + "node": ">=20" } }, "../tap-wasm/pkg": { @@ -53,7 +52,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" }, @@ -91,105 +89,31 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/compat-data": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", - "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", - "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.3", - "@babel/parser": "^7.28.3", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.3", - "@babel/types": "^7.28.2", - "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==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "optional": true, - "peer": true, - "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/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "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", - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -205,7 +129,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/types": "^7.27.3" }, @@ -214,15 +137,14 @@ } }, "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", "optional": true, - "peer": true, "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", @@ -239,7 +161,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "yallist": "^3.0.2" } @@ -251,7 +172,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -262,24 +182,22 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", - "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@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-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.3", + "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "engines": { @@ -296,7 +214,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -308,7 +225,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "regexpu-core": "^6.2.0", @@ -328,7 +244,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -340,7 +255,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", @@ -359,55 +273,51 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "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==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@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==", + "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", "optional": true, - "peer": true, "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", "optional": true, - "peer": true, "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" @@ -423,7 +333,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/types": "^7.27.1" }, @@ -432,13 +341,12 @@ } }, "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", "optional": true, - "peer": true, "engines": { "node": ">=6.9.0" } @@ -450,7 +358,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-wrap-function": "^7.27.1", @@ -464,17 +371,16 @@ } }, "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==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -490,7 +396,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" @@ -510,9 +415,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -526,7 +431,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6.9.0" } @@ -538,7 +442,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.3", @@ -549,16 +452,15 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz", - "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", + "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", "optional": true, - "peer": true, "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -571,7 +473,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "chalk": "^2.4.2", @@ -589,7 +490,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -604,7 +504,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -621,7 +520,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -632,8 +530,7 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -642,7 +539,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.8.0" } @@ -654,7 +550,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4" } @@ -665,8 +560,7 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", @@ -675,7 +569,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -684,13 +577,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", - "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.2" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -706,7 +599,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -726,7 +618,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -744,7 +635,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -759,7 +649,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -774,7 +663,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -789,7 +677,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -807,7 +694,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -825,7 +711,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -840,7 +725,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -858,7 +742,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -876,7 +759,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -894,7 +776,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -909,7 +790,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -924,7 +804,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -942,7 +821,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -957,7 +835,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -972,7 +849,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -987,7 +863,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1002,7 +877,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1017,7 +891,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1032,7 +905,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1050,7 +922,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1068,7 +939,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1086,7 +956,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1104,7 +973,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-remap-async-to-generator": "^7.27.1", @@ -1124,7 +992,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -1144,7 +1011,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1162,7 +1028,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1174,6 +1039,24 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-transform-classes": { "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.3.tgz", @@ -1181,7 +1064,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-compilation-targets": "^7.27.2", @@ -1198,16 +1080,15 @@ } }, "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==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/template": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1217,16 +1098,15 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", - "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1242,7 +1122,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1260,7 +1139,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-syntax-flow": "^7.27.1" @@ -1279,7 +1157,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -1298,7 +1175,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -1318,7 +1194,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1330,15 +1205,14 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", - "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1354,7 +1228,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1373,7 +1246,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1392,7 +1264,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1404,15 +1275,14 @@ } }, "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==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1422,19 +1292,18 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", - "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1450,7 +1319,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1468,7 +1336,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -1487,7 +1354,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1505,7 +1371,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1524,7 +1389,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-create-class-features-plugin": "^7.27.1", @@ -1544,7 +1408,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1562,7 +1425,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-module-imports": "^7.27.1", @@ -1584,7 +1446,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/plugin-transform-react-jsx": "^7.27.1" }, @@ -1602,7 +1463,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1620,7 +1480,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1638,7 +1497,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1657,7 +1515,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1675,7 +1532,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -1698,7 +1554,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -1710,7 +1565,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1722,15 +1576,14 @@ } }, "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==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -1747,7 +1600,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1765,7 +1617,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.27.1", @@ -1787,7 +1638,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1806,7 +1656,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", @@ -1829,7 +1678,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", @@ -1845,44 +1693,41 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", - "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "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", "optional": true, - "peer": true, "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/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==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -1896,24 +1741,22 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@babel/traverse": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", - "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.3", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -1928,7 +1771,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -1949,7 +1791,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -1965,19 +1806,17 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "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==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -1991,18 +1830,17 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@babel/types": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", - "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2019,9 +1857,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", "cpu": [ "ppc64" ], @@ -2036,9 +1874,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", "cpu": [ "arm" ], @@ -2053,9 +1891,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", "cpu": [ "arm64" ], @@ -2070,9 +1908,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", "cpu": [ "x64" ], @@ -2087,9 +1925,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", "cpu": [ "arm64" ], @@ -2104,9 +1942,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", "cpu": [ "x64" ], @@ -2121,9 +1959,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", "cpu": [ "arm64" ], @@ -2138,9 +1976,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", "cpu": [ "x64" ], @@ -2155,9 +1993,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", "cpu": [ "arm" ], @@ -2172,9 +2010,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", "cpu": [ "arm64" ], @@ -2189,9 +2027,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", "cpu": [ "ia32" ], @@ -2206,9 +2044,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", "cpu": [ "loong64" ], @@ -2223,9 +2061,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", "cpu": [ "mips64el" ], @@ -2240,9 +2078,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", "cpu": [ "ppc64" ], @@ -2257,9 +2095,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", "cpu": [ "riscv64" ], @@ -2274,9 +2112,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", "cpu": [ "s390x" ], @@ -2291,9 +2129,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", "cpu": [ "x64" ], @@ -2308,9 +2146,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", "cpu": [ "arm64" ], @@ -2325,9 +2163,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", "cpu": [ "x64" ], @@ -2342,9 +2180,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", "cpu": [ "arm64" ], @@ -2359,9 +2197,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", "cpu": [ "x64" ], @@ -2376,9 +2214,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", "cpu": [ "arm64" ], @@ -2393,9 +2231,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", "cpu": [ "x64" ], @@ -2410,9 +2248,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", "cpu": [ "arm64" ], @@ -2427,9 +2265,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", "cpu": [ "ia32" ], @@ -2444,9 +2282,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", "cpu": [ "x64" ], @@ -2461,9 +2299,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2480,9 +2318,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -2490,13 +2328,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.6", + "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -2516,9 +2354,9 @@ } }, "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -2529,19 +2367,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", - "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", - "engines": { + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2552,9 +2393,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2564,7 +2405,7 @@ "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, @@ -2597,9 +2438,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -2610,9 +2451,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", - "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", + "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", "dev": true, "license": "MIT", "engines": { @@ -2623,9 +2464,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2633,622 +2474,686 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.2", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@expo/cli": { - "version": "0.24.20", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.24.20.tgz", - "integrity": "sha512-uF1pOVcd+xizNtVTuZqNGzy7I6IJon5YMmQidsURds1Ww96AFDxrR/NEACqeATNAmY60m8wy1VZZpSg5zLNkpw==", + "node_modules/@expo/devcert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.1.tgz", + "integrity": "sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@0no-co/graphql.web": "^1.0.8", - "@babel/runtime": "^7.20.0", - "@expo/code-signing-certificates": "^0.0.5", - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/devcert": "^1.1.2", - "@expo/env": "~1.0.7", - "@expo/image-utils": "^0.7.6", - "@expo/json-file": "^9.1.5", - "@expo/metro-config": "~0.20.17", - "@expo/osascript": "^2.2.5", - "@expo/package-manager": "^1.8.6", - "@expo/plist": "^0.3.5", - "@expo/prebuild-config": "^9.0.11", - "@expo/spawn-async": "^1.7.2", - "@expo/ws-tunnel": "^1.0.1", - "@expo/xcpretty": "^4.3.0", - "@react-native/dev-middleware": "0.79.5", - "@urql/core": "^5.0.6", - "@urql/exchange-retry": "^1.3.0", - "accepts": "^1.3.8", - "arg": "^5.0.2", - "better-opn": "~3.0.2", - "bplist-creator": "0.1.0", - "bplist-parser": "^0.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.3.0", - "compression": "^1.7.4", - "connect": "^3.7.0", - "debug": "^4.3.4", - "env-editor": "^0.4.1", - "freeport-async": "^2.0.0", - "getenv": "^2.0.0", - "glob": "^10.4.2", - "lan-network": "^0.1.6", - "minimatch": "^9.0.0", - "node-forge": "^1.3.1", - "npm-package-arg": "^11.0.0", - "ora": "^3.4.0", - "picomatch": "^3.0.1", - "pretty-bytes": "^5.6.0", - "pretty-format": "^29.7.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.3", - "semver": "^7.6.0", - "send": "^0.19.0", - "slugify": "^1.3.4", - "source-map-support": "~0.5.21", - "stacktrace-parser": "^0.1.10", - "structured-headers": "^0.4.1", - "tar": "^7.4.3", - "terminal-link": "^2.1.1", - "undici": "^6.18.2", - "wrap-ansi": "^7.0.0", - "ws": "^8.12.1" - }, - "bin": { - "expo-internal": "build/bin/cli" + "@expo/sudo-prompt": "^9.3.1", + "debug": "^3.1.0" } }, - "node_modules/@expo/cli/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==", + "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==", "dev": true, "license": "MIT", "optional": true, - "peer": true, - "engines": { - "node": ">=8" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/@expo/cli/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@expo/cli/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==", + "node_modules/@expo/devtools": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-0.1.8.tgz", + "integrity": "sha512-SVLxbuanDjJPgc0sy3EfXUMLb/tXzp6XIHkhtPVmTWJAp+FOr6+5SeiCfJrCzZFet0Ifyke2vX3sFcKwEvCXwQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, - "engines": { - "node": ">=10" + "dependencies": { + "chalk": "^4.1.2" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@expo/cli/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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + } } }, - "node_modules/@expo/cli/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==", + "node_modules/@expo/fingerprint": { + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.15.4.tgz", + "integrity": "sha512-eYlxcrGdR2/j2M6pEDXo9zU9KXXF1vhP+V+Tl+lyY+bU8lnzrN6c637mz6Ye3em2ANy8hhUR03Raf8VsT9Ogng==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@expo/spawn-async": "^1.7.2", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "minimatch": "^9.0.0", + "p-limit": "^3.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" }, - "engines": { - "node": ">=8" + "bin": { + "fingerprint": "bin/cli.js" } }, - "node_modules/@expo/cli/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==", + "node_modules/@expo/fingerprint/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "optional": true, - "peer": true, "dependencies": { - "ansi-regex": "^5.0.1" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/cli/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==", + "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "optional": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/@expo/fingerprint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "node-forge": "^1.2.1", - "nullthrows": "^1.1.1" + "engines": { + "node": ">= 4" } }, - "node_modules/@expo/config": { - "version": "11.0.13", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-11.0.13.tgz", - "integrity": "sha512-TnGb4u/zUZetpav9sx/3fWK71oCPaOjZHoVED9NaEncktAd0Eonhq5NUghiJmkUGt3gGSjRAEBXiBbbY9/B1LA==", + "node_modules/@expo/fingerprint/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "optional": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~10.1.2", - "@expo/config-types": "^53.0.5", - "@expo/json-file": "^9.1.5", - "deepmerge": "^4.3.1", - "getenv": "^2.0.0", - "glob": "^10.4.2", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "resolve-workspace-root": "^2.0.0", - "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "3.35.0" + "engines": { + "node": "20 || >=22" } }, - "node_modules/@expo/config-plugins": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-10.1.2.tgz", - "integrity": "sha512-IMYCxBOcnuFStuK0Ay+FzEIBKrwW8OVUMc65+v0+i7YFIIe8aL342l7T4F8lR4oCfhXn7d6M5QPgXvjtc/gAcw==", + "node_modules/@expo/fingerprint/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "optional": true, - "peer": true, "dependencies": { - "@expo/config-types": "^53.0.5", - "@expo/json-file": "~9.1.5", - "@expo/plist": "^0.3.5", - "@expo/sdk-runtime-versions": "^1.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.5", - "getenv": "^2.0.0", - "glob": "^10.4.2", - "resolve-from": "^5.0.0", - "semver": "^7.5.4", - "slash": "^3.0.0", - "slugify": "^1.6.6", - "xcode": "^3.0.1", - "xml2js": "0.6.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/config-plugins/node_modules/resolve-from": { + "node_modules/@expo/fingerprint/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==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/@expo/config-types": { - "version": "53.0.5", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-53.0.5.tgz", - "integrity": "sha512-kqZ0w44E+HEGBjy+Lpyn0BVL5UANg/tmNixxaRMLS6nf37YsDrLk2VMAmeKMMk5CKG0NmOdVv3ngeUjRQMsy9g==", + "node_modules/@expo/metro": { + "version": "54.2.0", + "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.2.0.tgz", + "integrity": "sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==", "dev": true, "license": "MIT", "optional": true, - "peer": true + "dependencies": { + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3" + } }, - "node_modules/@expo/config/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==", + "node_modules/@expo/metro/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/@expo/devcert": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.0.tgz", - "integrity": "sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==", + "node_modules/@expo/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==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@expo/sudo-prompt": "^9.3.1", - "debug": "^3.1.0", - "glob": "^10.4.2" - } + "optional": true }, - "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==", + "node_modules/@expo/metro/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==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } + "optional": true }, - "node_modules/@expo/env": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-1.0.7.tgz", - "integrity": "sha512-qSTEnwvuYJ3umapO9XJtrb1fAqiPlmUUg78N0IZXXGwQRt+bkp0OBls+Y5Mxw/Owj8waAM0Z3huKKskRADR5ow==", + "node_modules/@expo/metro/node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "chalk": "^4.0.0", - "debug": "^4.3.4", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", - "getenv": "^2.0.0" + "hermes-estree": "0.32.0" } }, - "node_modules/@expo/fingerprint": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.13.4.tgz", - "integrity": "sha512-MYfPYBTMfrrNr07DALuLhG6EaLVNVrY/PXjEzsjWdWE4ZFn0yqI0IdHNkJG7t1gePT8iztHc7qnsx+oo/rDo6w==", + "node_modules/@expo/metro/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==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@expo/metro/node_modules/metro": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", + "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@expo/spawn-async": "^1.7.2", - "arg": "^5.0.2", - "chalk": "^4.1.2", - "debug": "^4.3.4", - "find-up": "^5.0.0", - "getenv": "^2.0.0", - "glob": "^10.4.2", - "ignore": "^5.3.1", - "minimatch": "^9.0.0", - "p-limit": "^3.1.0", - "resolve-from": "^5.0.0", - "semver": "^7.6.0" + "@babel/code-frame": "^7.24.7", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "@babel/types": "^7.25.2", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.32.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3", + "mime-types": "^2.1.27", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" }, "bin": { - "fingerprint": "bin/cli.js" + "metro": "src/cli.js" + }, + "engines": { + "node": ">=20.19.4" } }, - "node_modules/@expo/fingerprint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/@expo/metro/node_modules/metro-babel-transformer": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", + "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", "dev": true, "license": "MIT", "optional": true, - "peer": true, + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.32.0", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">= 4" + "node": ">=20.19.4" } }, - "node_modules/@expo/fingerprint/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==", + "node_modules/@expo/metro/node_modules/metro-cache": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", + "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", "dev": true, "license": "MIT", "optional": true, - "peer": true, + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "https-proxy-agent": "^7.0.5", + "metro-core": "0.83.3" + }, "engines": { - "node": ">=8" + "node": ">=20.19.4" } }, - "node_modules/@expo/image-utils": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.7.6.tgz", - "integrity": "sha512-GKnMqC79+mo/1AFrmAcUcGfbsXXTRqOMNS1umebuevl3aaw+ztsYEFEiuNhHZW7PQ3Xs3URNT513ZxKhznDscw==", + "node_modules/@expo/metro/node_modules/metro-cache-key": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", + "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.0.0", - "getenv": "^2.0.0", - "jimp-compact": "0.16.1", - "parse-png": "^2.1.0", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "temp-dir": "~2.0.0", - "unique-string": "~2.0.0" + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" } }, - "node_modules/@expo/image-utils/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==", + "node_modules/@expo/metro/node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, "engines": { - "node": ">=8" + "node": ">=20.19.4" } }, - "node_modules/@expo/json-file": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.1.5.tgz", - "integrity": "sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==", + "node_modules/@expo/metro/node_modules/metro-core": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", + "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.3" + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.83.3" + }, + "engines": { + "node": ">=20.19.4" } }, - "node_modules/@expo/metro-config": { - "version": "0.20.17", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.20.17.tgz", - "integrity": "sha512-lpntF2UZn5bTwrPK6guUv00Xv3X9mkN3YYla+IhEHiYXWyG7WKOtDU0U4KR8h3ubkZ6SPH3snDyRyAzMsWtZFA==", + "node_modules/@expo/metro/node_modules/metro-file-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", + "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.5", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "@expo/config": "~11.0.12", - "@expo/env": "~1.0.7", - "@expo/json-file": "~9.1.5", - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.1.0", - "debug": "^4.3.2", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", - "getenv": "^2.0.0", - "glob": "^10.4.2", - "jsc-safe-url": "^0.2.4", - "lightningcss": "~1.27.0", - "minimatch": "^9.0.0", - "postcss": "~8.4.32", - "resolve-from": "^5.0.0" + "debug": "^4.4.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=20.19.4" } }, - "node_modules/@expo/metro-config/node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "node_modules/@expo/metro/node_modules/metro-minify-terser": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", + "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", "dev": true, - "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", "optional": true, - "peer": true, "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=20.19.4" } }, - "node_modules/@expo/metro-config/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==", + "node_modules/@expo/metro/node_modules/metro-resolver": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", + "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, "engines": { - "node": ">=8" + "node": ">=20.19.4" } }, - "node_modules/@expo/osascript": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.2.5.tgz", - "integrity": "sha512-Bpp/n5rZ0UmpBOnl7Li3LtM7la0AR3H9NNesqL+ytW5UiqV/TbonYW3rDZY38u4u/lG7TnYflVIVQPD+iqZJ5w==", + "node_modules/@expo/metro/node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@expo/spawn-async": "^1.7.2", - "exec-async": "^2.2.0" + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=12" + "node": ">=20.19.4" } }, - "node_modules/@expo/package-manager": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.8.6.tgz", - "integrity": "sha512-gcdICLuL+nHKZagPIDC5tX8UoDDB8vNA5/+SaQEqz8D+T2C4KrEJc2Vi1gPAlDnKif834QS6YluHWyxjk0yZlQ==", + "node_modules/@expo/metro/node_modules/metro-source-map": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", + "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@expo/json-file": "^9.1.5", - "@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" + "@babel/traverse": "^7.25.3", + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.83.3", + "nullthrows": "^1.1.1", + "ob1": "0.83.3", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=20.19.4" } }, - "node_modules/@expo/plist": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.3.5.tgz", - "integrity": "sha512-9RYVU1iGyCJ7vWfg3e7c/NVyMFs8wbl+dMWZphtFtsqyN9zppGREU3ctlD3i8KUE0sCUTVnLjCWr+VeUIDep2g==", + "node_modules/@expo/metro/node_modules/metro-symbolicate": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", + "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.2.3", - "xmlbuilder": "^15.1.1" + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.83.3", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=20.19.4" } }, - "node_modules/@expo/prebuild-config": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-9.0.11.tgz", - "integrity": "sha512-0DsxhhixRbCCvmYskBTq8czsU0YOBsntYURhWPNpkl0IPVpeP9haE5W4OwtHGzXEbmHdzaoDwNmVcWjS/mqbDw==", + "node_modules/@expo/metro/node_modules/metro-transform-plugins": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", + "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/config-types": "^53.0.5", - "@expo/image-utils": "^0.7.6", - "@expo/json-file": "^9.1.5", - "@react-native/normalize-colors": "0.79.5", - "debug": "^4.3.1", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "xml2js": "0.6.0" + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.3", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" } }, - "node_modules/@expo/prebuild-config/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==", + "node_modules/@expo/metro/node_modules/metro-transform-worker": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", + "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/types": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-source-map": "0.83.3", + "metro-transform-plugins": "0.83.3", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">=8" + "node": ">=20.19.4" } }, - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "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==", + "node_modules/@expo/metro/node_modules/ob1": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", + "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "cross-spawn": "^7.0.3" + "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=12" + "node": ">=20.19.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==", + "node_modules/@expo/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==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "optional": true, - "peer": true - }, - "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@expo/metro/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "optional": true, + "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/@expo/osascript": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.3.8.tgz", + "integrity": "sha512-/TuOZvSG7Nn0I8c+FcEaoHeBO07yu6vwDgk7rZVvAXoeAK5rkA09jRyjYsZo+0tMEFaToBeywA6pj50Mb3ny9w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "exec-async": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.9.10.tgz", + "integrity": "sha512-axJm+NOj3jVxep49va/+L3KkF3YW/dkV+RwzqUJedZrv4LeTqOG4rhrCaCPXHTvLqCTDKu6j0Xyd28N7mnxsGA==", + "dev": true, + "license": "MIT", + "optional": true, + "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==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/schema-utils": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.8.tgz", + "integrity": "sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==", + "dev": true, + "license": "MIT", + "optional": true + }, + "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==", + "dev": true, + "license": "MIT", + "optional": true + }, + "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==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@expo/vector-icons": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.0.3.tgz", + "integrity": "sha512-SBUyYKphmlfUBqxSfDdJ3jAdEVSALS2VUPOUyqn48oZmb2TL/O7t7/PQm5v4NQujYEPLPMTLn9KVw6H7twwbTA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "peerDependencies": { - "expo-font": "*", + "expo-font": ">=14.0.4", "react": "*", "react-native": "*" } @@ -3259,8 +3164,7 @@ "integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@expo/xcpretty": { "version": "4.3.2", @@ -3269,7 +3173,6 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "dependencies": { "@babel/code-frame": "7.10.4", "chalk": "^4.1.0", @@ -3360,29 +3263,6 @@ "npm": ">=7.0.0" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -3408,7 +3288,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "minipass": "^7.0.4" }, @@ -3423,7 +3302,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "engines": { "node": ">=12" } @@ -3435,7 +3313,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -3454,7 +3331,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -3466,7 +3342,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3476,13 +3351,12 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "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==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3498,7 +3372,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -3513,7 +3386,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "p-try": "^2.0.0" }, @@ -3531,7 +3403,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -3546,7 +3417,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -3568,7 +3438,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/types": "^29.6.3" }, @@ -3583,7 +3452,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -3601,7 +3469,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -3621,7 +3488,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -3636,7 +3502,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -3665,7 +3530,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -3689,6 +3553,18 @@ "@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==", + "dev": true, + "license": "MIT", + "optional": true, + "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", @@ -3706,7 +3582,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -3731,21 +3606,22 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.52.10", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.52.10.tgz", - "integrity": "sha512-LhKytJM5ZJkbHQVfW/3o747rZUNs/MGg6j/wt/9qwwqEOfvUDTYXXxIBuMgrRXhJ528p41iyz4zjBVHZU74Odg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@microsoft/api-extractor-model": "7.30.7", - "@microsoft/tsdoc": "~0.15.1", - "@microsoft/tsdoc-config": "~0.17.1", - "@rushstack/node-core-library": "5.14.0", - "@rushstack/rig-package": "0.5.3", - "@rushstack/terminal": "0.15.4", - "@rushstack/ts-command-line": "5.0.2", - "lodash": "~4.17.15", - "minimatch": "10.0.3", + "version": "7.57.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.2.tgz", + "integrity": "sha512-Dih58xLlG+M6k2qVSksk9xJx8HvmJEyK3LcHrcqXE7eK/U7pg/8cTT8j1TKijU4P4639wvCy1zhDuvtjRy+02Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor-model": "7.33.1", + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.0", + "@rushstack/node-core-library": "5.20.1", + "@rushstack/rig-package": "0.7.1", + "@rushstack/terminal": "0.22.1", + "@rushstack/ts-command-line": "5.3.1", + "diff": "~8.0.2", + "lodash": "~4.17.23", + "minimatch": "10.2.1", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", @@ -3756,15 +3632,15 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.30.7", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.30.7.tgz", - "integrity": "sha512-TBbmSI2/BHpfR9YhQA7nH0nqVmGgJ0xH0Ex4D99/qBDAUpnhA2oikGmdXanbw9AWWY/ExBYIpkmY8dBHdla3YQ==", + "version": "7.33.1", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.1.tgz", + "integrity": "sha512-KX0LI6xzI0gcBOXXmr5mnnbdhsK2W93pqvJo8OgJgWvRRh+wMEp0Ccj38h1XKeJ29E1tuAZKSUOfHUQ1WA8fZg==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "~0.15.1", - "@microsoft/tsdoc-config": "~0.17.1", - "@rushstack/node-core-library": "5.14.0" + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.0", + "@rushstack/node-core-library": "5.20.1" } }, "node_modules/@microsoft/api-extractor/node_modules/lru-cache": { @@ -3781,13 +3657,13 @@ } }, "node_modules/@microsoft/api-extractor/node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -3827,20 +3703,20 @@ } }, "node_modules/@microsoft/tsdoc": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", - "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", + "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", "dev": true, "license": "MIT" }, "node_modules/@microsoft/tsdoc-config": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz", - "integrity": "sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.0.tgz", + "integrity": "sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "0.15.1", + "@microsoft/tsdoc": "0.16.0", "ajv": "~8.12.0", "jju": "~1.4.0", "resolve": "~1.22.2" @@ -3925,6 +3801,7 @@ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3939,6 +3816,7 @@ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">= 8" } @@ -3949,6 +3827,7 @@ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -4025,41 +3904,38 @@ "license": "MIT" }, "node_modules/@react-native/assets-registry": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.0.tgz", - "integrity": "sha512-rZs8ziQ1YRV3Z5Mw5AR7YcgI3q1Ya9NIx6nyuZAT9wDSSjspSi+bww+Hargh/a4JfV2Ajcxpn9X9UiFJr1ddPw==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.84.0.tgz", + "integrity": "sha512-YiU9h1IN0pvvZsHbd03MaD7mE2q+ySaKMlE9tWK+3iiwtbEaMQOsMUuSJ1er2LU6ERMWfhfvCYgWpKRGOMeN8A==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.5.tgz", - "integrity": "sha512-Rt/imdfqXihD/sn0xnV4flxxb1aLLjPtMF1QleQjEhJsTUPpH4TFlfOpoCvsrXoDl4OIcB1k4FVM24Ez92zf5w==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.5.tgz", + "integrity": "sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.79.5" + "@react-native/codegen": "0.81.5" }, "engines": { - "node": ">=18" + "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-preset": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.79.5.tgz", - "integrity": "sha512-GDUYIWslMLbdJHEgKNfrOzXk8EDKxKzbwmBXUugoiSlr6TyepVZsj3GZDLEFarOcTwH1EXXHJsixihk8DCRQDA==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.5.tgz", + "integrity": "sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/plugin-proposal-export-default-from": "^7.24.7", @@ -4102,35 +3978,36 @@ "@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.79.5", - "babel-plugin-syntax-hermes-parser": "0.25.1", + "@react-native/babel-plugin-codegen": "0.81.5", + "babel-plugin-syntax-hermes-parser": "0.29.1", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, "engines": { - "node": ">=18" + "node": ">= 20.19.4" }, "peerDependencies": { "@babel/core": "*" } }, "node_modules/@react-native/codegen": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.79.5.tgz", - "integrity": "sha512-FO5U1R525A1IFpJjy+KVznEinAgcs3u7IbnbRJUG9IH/MBXi2lEU2LtN+JarJ81MCfW4V2p0pg6t/3RGHFRrlQ==", + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", + "integrity": "sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", "glob": "^7.1.1", - "hermes-parser": "0.25.1", + "hermes-parser": "0.29.1", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "yargs": "^17.6.2" }, "engines": { - "node": ">=18" + "node": ">= 20.19.4" }, "peerDependencies": { "@babel/core": "*" @@ -4143,7 +4020,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4153,11 +4029,10 @@ "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", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4174,13 +4049,12 @@ } }, "node_modules/@react-native/codegen/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4189,20 +4063,19 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.0.tgz", - "integrity": "sha512-n04ACkCaLR54NmA/eWiDpjC16pHr7+yrbjQ6OEdRoXbm5EfL8FEre2kDAci7pfFdiSMpxdRULDlKpfQ+EV/GAQ==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.84.0.tgz", + "integrity": "sha512-uYoLBHnAzod4E5dA5rPPQeny2A5RD0PiIJQ4r+2F7cvA+5bZ8+znxw4TdaSiEk8uhN+clffI4d2bl9V4+xEK+Q==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@react-native/dev-middleware": "0.81.0", + "@react-native/dev-middleware": "0.84.0", "debug": "^4.4.0", "invariant": "^2.2.4", - "metro": "^0.83.1", - "metro-config": "^0.83.1", - "metro-core": "^0.83.1", + "metro": "^0.83.3", + "metro-config": "^0.83.3", + "metro-core": "^0.83.3", "semver": "^7.1.3" }, "engines": { @@ -4215,32 +4088,34 @@ "peerDependenciesMeta": { "@react-native-community/cli": { "optional": true + }, + "@react-native/metro-config": { + "optional": true } } }, "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.0.tgz", - "integrity": "sha512-N/8uL2CGQfwiQRYFUNfmaYxRDSoSeOmFb56rb0PDnP3XbS5+X9ee7X4bdnukNHLGfkRdH7sVjlB8M5zE8XJOhw==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.84.0.tgz", + "integrity": "sha512-n7JKYVDCbA2aj8/5/OD1IK7nuiAYj5l/Z6yhGf7GG4EGaeQdthqdb0LZbseaRPyZK/7tLfdnLdqlqdTQC6/UTQ==", "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.0.tgz", - "integrity": "sha512-J/HeC/+VgRyGECPPr9rAbe5S0OL6MCIrvrC/kgNKSME5+ZQLCiTpt3pdAoAMXwXiF9a02Nmido0DnyM1acXTIA==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.84.0.tgz", + "integrity": "sha512-c0o7YW39AUI1FSLV/TFSszr87kQGmaePAQK0ygIRnwZ2fAGDnQ5Iu/tk3u9O5lVH6nTjfAwTKJ3El9YeEWDeEQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.81.0", + "@react-native/debugger-frontend": "0.84.0", + "@react-native/debugger-shell": "0.84.0", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", @@ -4249,368 +4124,89 @@ "nullthrows": "^1.1.1", "open": "^7.0.3", "serve-static": "^1.16.2", - "ws": "^6.2.3" + "ws": "^7.5.10" }, "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/community-cli-plugin/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.79.5.tgz", - "integrity": "sha512-WQ49TRpCwhgUYo5/n+6GGykXmnumpOkl4Lr2l2o2buWU9qPOwoiBqJAtmWEXsAug4ciw3eLiVfthn5ufs0VB0A==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, "engines": { - "node": ">=18" + "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/dev-middleware": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.79.5.tgz", - "integrity": "sha512-U7r9M/SEktOCP/0uS6jXMHmYjj4ESfYCkNAenBjFjjsRWekiHE+U/vRMeO+fG9gq4UCcBAUISClkQCowlftYBw==", + "node_modules/@react-native/debugger-shell": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.84.0.tgz", + "integrity": "sha512-5t/NvQLYk/d0kWlGOMNobkjfimqBc+/LYRmSOkgKm+pyOhxjygCLSnRjAUkeRALSZ8h6MKGTz1Wc4pbmJr7T0Q==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.79.5", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^6.2.3" + "cross-spawn": "^7.0.6", + "debug": "^4.4.0", + "fb-dotslash": "0.5.8" }, "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "async-limiter": "~1.0.0" + "node": ">= 20.19.4" } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.0.tgz", - "integrity": "sha512-LGNtPXO1RKLws5ORRb4Q4YULi2qxM4qZRuARtwqM/1f2wyZVggqapoV0OXlaXaz+GiEd2ll3ROE4CcLN6J93jg==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.84.0.tgz", + "integrity": "sha512-j8g/I4Z+SAdh2NXOVng4rmfYgPoeJBZwAKoGPpSe/wB/9XDLh9IRGUTg8dGS5BWUy2471xBUoGZPwHb6QMJmVw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/js-polyfills": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.81.0.tgz", - "integrity": "sha512-whXZWIogzoGpqdyTjqT89M6DXmlOkWqNpWoVOAwVi8XFCMO+L7WTk604okIgO6gdGZcP1YtFpQf9JusbKrv/XA==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.84.0.tgz", + "integrity": "sha512-xaxmzYWLgHH+2uAZQ0owEkDE58hOTWmuBKD/Gl+cDFD3mFfSK4lZpin/3hiXtE5LB4BwgqICsPN07zCAqx6Fpg==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 20.19.4" } }, - "node_modules/@react-native/metro-babel-transformer": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.81.0.tgz", - "integrity": "sha512-Mwovr4jJ3JTnbHEQLhdcMvS82LjijpqCydXl1aH2N16WVCrE5oSNFiqTt6NpZBw9zkJX7nijsY+xeCy6m+KK3Q==", + "node_modules/@react-native/virtualized-lists": { + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.84.0.tgz", + "integrity": "sha512-ugwSj0Gb4MYrcm8uQrQw8qHPx5RKGDLuZRAP/AuwneFizHx8YCLBEFbOYRGWgxHBRtkJ70D1o+jpIx3CK3p5lw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.81.0", - "hermes-parser": "0.29.1", + "invariant": "^2.2.4", "nullthrows": "^1.1.1" }, "engines": { "node": ">= 20.19.4" }, "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.0.tgz", - "integrity": "sha512-MEMlW91+2Kk9GiObRP1Nc6oTdiyvmSEbPMSC6kzUzDyouxnh5/x28uyNySmB2nb6ivcbmQ0lxaU059+CZSkKXQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.81.0" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-preset": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.0.tgz", - "integrity": "sha512-RKMgCUGsso/2b32kgg24lB68LJ6qr2geLoSQTbisY6Usye0uXeXCgbZZDbILIX9upL4uzU4staMldRZ0v08F1g==", - "dev": true, - "license": "MIT", - "optional": true, - "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.81.0", - "babel-plugin-syntax-hermes-parser": "0.29.1", - "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/metro-babel-transformer/node_modules/@react-native/codegen": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.0.tgz", - "integrity": "sha512-gPFutgtj8YqbwKKt3YpZKamUBGd9YZJV51Jq2aiDZ9oThkg1frUBa20E+Jdi7jKn982wjBMxAklAR85QGQ4xMA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "glob": "^7.1.1", - "hermes-parser": "0.29.1", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native/metro-babel-transformer/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", - "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "hermes-parser": "0.29.1" - } - }, - "node_modules/@react-native/metro-babel-transformer/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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@react-native/metro-babel-transformer/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", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "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/@react-native/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "hermes-estree": "0.29.1" - } - }, - "node_modules/@react-native/metro-babel-transformer/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@react-native/metro-config": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.81.0.tgz", - "integrity": "sha512-5eqLP4TCERHGRYDJSZa//O98CGDFNNEwHVvhs65Msfy6hAoSdw5pAAuTrsQwmbTBp0Fkvu7Bx8BZDhiferZsHg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@react-native/js-polyfills": "0.81.0", - "@react-native/metro-babel-transformer": "0.81.0", - "metro-config": "^0.83.1", - "metro-runtime": "^0.83.1" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/@react-native/normalize-colors": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.79.5.tgz", - "integrity": "sha512-nGXMNMclZgzLUxijQQ38Dm3IAEhgxuySAWQHnljFtfB0JdaMwpe0Ox9H7Tp2OgrEA+EMEv+Od9ElKlHwGKmmvQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.81.0.tgz", - "integrity": "sha512-p14QC5INHkbMZ96158sUxkSwN6zp138W11G+CRGoLJY4Q9WRJBCe7wHR5Owyy3XczQXrIih/vxAXwgYeZ2XByg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@types/react": "^19.1.0", + "@types/react": "^19.2.0", "react": "*", "react-native": "*" }, @@ -4944,9 +4540,9 @@ ] }, "node_modules/@rushstack/node-core-library": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.14.0.tgz", - "integrity": "sha512-eRong84/rwQUlATGFW3TMTYVyqL1vfW9Lf10PH+mVGfIb9HzU3h5AASNIw+axnBLjnD0n3rT5uQBwu9fvzATrg==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.1.tgz", + "integrity": "sha512-QvxZyh+RsTJ77JpQkS9K9lJujh6lj5WyMxieT0bdACtwqxEkGB9zCuSMX5UlXRweaIgSpu1ztdHmhV07fKUpMg==", "dev": true, "license": "MIT", "dependencies": { @@ -4974,6 +4570,7 @@ "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", @@ -5036,10 +4633,25 @@ "node": ">=10" } }, + "node_modules/@rushstack/problem-matcher": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz", + "integrity": "sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@rushstack/rig-package": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.3.tgz", - "integrity": "sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.1.tgz", + "integrity": "sha512-hLwDnp4yMcAd/gcUol8NPWNctpIXzVOgMyhZ8DagnEJls9TOZd0xF//5hS+YTiX7/+4rLfBra+NoB3rtFxjDdA==", "dev": true, "license": "MIT", "dependencies": { @@ -5048,13 +4660,14 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.15.4", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.15.4.tgz", - "integrity": "sha512-OQSThV0itlwVNHV6thoXiAYZlQh4Fgvie2CzxFABsbO2MWQsI4zOh3LRNigYSTrmS+ba2j0B3EObakPzf/x6Zg==", + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.1.tgz", + "integrity": "sha512-Mdtu0VN7v31O5Zcno8ZZH5kQHF13Ez7WN9Aio7nFJVcR36i4bkERionYrWgBDQJ0JdVPLKGecZER/xRU5IvGLw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.14.0", + "@rushstack/node-core-library": "5.20.1", + "@rushstack/problem-matcher": "0.2.1", "supports-color": "~8.1.1" }, "peerDependencies": { @@ -5083,13 +4696,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.0.2.tgz", - "integrity": "sha512-+AkJDbu1GFMPIU8Sb7TLVXDv/Q7Mkvx+wAjEl8XiXVVq+p1FmWW6M3LYpJMmoHNckSofeMecgWg5lfMwNAAsEQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.1.tgz", + "integrity": "sha512-mid/JIZSJafwy3x9e4v0wVLuAqSSYYErEHV0HXPALYLSBN13YNkR5caOk0hf97lSRKrxhtvQjGaDKSEelR3sMg==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.15.4", + "@rushstack/terminal": "0.22.1", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -5121,8 +4734,7 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@sinonjs/commons": { "version": "3.0.1", @@ -5131,7 +4743,6 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "dependencies": { "type-detect": "4.0.8" } @@ -5143,7 +4754,6 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "dependencies": { "@sinonjs/commons": "^3.0.0" } @@ -5423,7 +5033,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -5439,7 +5048,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/types": "^7.0.0" } @@ -5451,7 +5059,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -5464,7 +5071,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/types": "^7.28.2" } @@ -5500,7 +5106,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@types/node": "*" } @@ -5511,8 +5116,7 @@ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", @@ -5521,7 +5125,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -5533,7 +5136,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@types/istanbul-lib-report": "*" } @@ -5561,8 +5163,7 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@types/whatwg-mimetype": { "version": "3.0.2", @@ -5571,6 +5172,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", @@ -5578,7 +5189,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -5589,25 +5199,23 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.47.0.tgz", - "integrity": "sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz", + "integrity": "sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.47.0", - "@typescript-eslint/type-utils": "8.47.0", - "@typescript-eslint/utils": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/type-utils": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5617,23 +5225,24 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.47.0", - "eslint": "^8.57.0 || ^9.0.0", + "@typescript-eslint/parser": "^8.56.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.47.0.tgz", - "integrity": "sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz", + "integrity": "sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5643,20 +5252,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz", - "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz", + "integrity": "sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.47.0", - "@typescript-eslint/types": "^8.47.0", - "debug": "^4.3.4" + "@typescript-eslint/tsconfig-utils": "^8.56.0", + "@typescript-eslint/types": "^8.56.0", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5670,14 +5279,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", - "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz", + "integrity": "sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0" + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5688,9 +5297,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz", - "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz", + "integrity": "sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==", "dev": true, "license": "MIT", "engines": { @@ -5705,17 +5314,17 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz", - "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz", + "integrity": "sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0", - "@typescript-eslint/utils": "8.47.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5725,14 +5334,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", - "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.0.tgz", + "integrity": "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==", "dev": true, "license": "MIT", "engines": { @@ -5744,22 +5353,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", - "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz", + "integrity": "sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.47.0", - "@typescript-eslint/tsconfig-utils": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" + "@typescript-eslint/project-service": "8.56.0", + "@typescript-eslint/tsconfig-utils": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5773,16 +5381,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", - "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz", + "integrity": "sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5792,19 +5400,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", - "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz", + "integrity": "sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "eslint-visitor-keys": "^4.2.1" + "@typescript-eslint/types": "8.56.0", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5815,18 +5423,26 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC", + "optional": true + }, "node_modules/@unimodules/core": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@unimodules/core/-/core-7.2.0.tgz", @@ -5859,7 +5475,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@0no-co/graphql.web": "^1.0.13", "wonka": "^6.3.2" @@ -5872,7 +5487,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@urql/core": "^5.1.2", "wonka": "^6.3.2" @@ -6220,6 +5834,7 @@ "integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/utils": "3.2.4", "fflate": "^0.8.2", @@ -6362,7 +5977,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=10.0.0" } @@ -6374,7 +5988,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -6389,7 +6002,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -6404,6 +6016,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6435,15 +6048,14 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 14" } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -6476,9 +6088,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { @@ -6512,8 +6124,7 @@ "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/ansi-escapes": { "version": "4.3.2", @@ -6522,7 +6133,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -6540,7 +6150,6 @@ "dev": true, "license": "(MIT OR CC0-1.0)", "optional": true, - "peer": true, "engines": { "node": ">=10" }, @@ -6593,8 +6202,7 @@ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/anymatch": { "version": "3.1.3", @@ -6603,7 +6211,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6628,8 +6235,7 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/argparse": { "version": "2.0.1", @@ -6644,8 +6250,7 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/asmcrypto.js": { "version": "0.22.0", @@ -6704,8 +6309,7 @@ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -6761,7 +6365,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -6785,7 +6388,6 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -6804,7 +6406,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6818,7 +6419,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6835,13 +6435,12 @@ } }, "node_modules/babel-plugin-istanbul/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6856,7 +6455,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -6873,7 +6471,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -6891,7 +6488,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/compat-data": "^7.27.7", "@babel/helper-define-polyfill-provider": "^0.6.5", @@ -6908,7 +6504,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -6920,7 +6515,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.5", "core-js-compat": "^3.43.0" @@ -6936,7 +6530,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.5" }, @@ -6944,25 +6537,34 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-plugin-react-native-web": { - "version": "0.19.13", - "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", - "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", + "node_modules/babel-plugin-react-compiler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", "dev": true, "license": "MIT", "optional": true, - "peer": true + "dependencies": { + "@babel/types": "^7.26.0" + } + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", + "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", + "dev": true, + "license": "MIT", + "optional": true }, "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz", - "integrity": "sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==", + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", + "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "hermes-parser": "0.25.1" + "hermes-parser": "0.29.1" } }, "node_modules/babel-plugin-transform-flow-enums": { @@ -6972,7 +6574,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/plugin-syntax-flow": "^7.12.1" } @@ -6984,7 +6585,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -7007,18 +6607,18 @@ } }, "node_modules/babel-preset-expo": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-13.2.3.tgz", - "integrity": "sha512-wQJn92lqj8GKR7Ojg/aW4+GkqI6ZdDNTDyOqhhl7A9bAqk6t0ukUOWLDXQb4p0qKJjMDV1F6gNWasI2KUbuVTQ==", + "version": "54.0.10", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.10.tgz", + "integrity": "sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-proposal-export-default-from": "^7.24.7", "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.27.1", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-flow-strip-types": "^7.25.2", "@babel/plugin-transform-modules-commonjs": "^7.24.8", @@ -7029,19 +6629,24 @@ "@babel/plugin-transform-runtime": "^7.24.7", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.79.5", - "babel-plugin-react-native-web": "~0.19.13", - "babel-plugin-syntax-hermes-parser": "^0.25.1", + "@react-native/babel-preset": "0.81.5", + "babel-plugin-react-compiler": "^1.0.0", + "babel-plugin-react-native-web": "~0.21.0", + "babel-plugin-syntax-hermes-parser": "^0.29.1", "babel-plugin-transform-flow-enums": "^0.0.2", "debug": "^4.3.4", - "react-refresh": "^0.14.2", "resolve-from": "^5.0.0" }, "peerDependencies": { - "babel-plugin-react-compiler": "^19.0.0-beta-e993439-20250405" + "@babel/runtime": "^7.20.0", + "expo": "*", + "react-refresh": ">=0.14.0 <1.0.0" }, "peerDependenciesMeta": { - "babel-plugin-react-compiler": { + "@babel/runtime": { + "optional": true + }, + "expo": { "optional": true } } @@ -7053,7 +6658,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -7065,7 +6669,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -7111,6 +6714,20 @@ ], "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/better-opn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", @@ -7118,7 +6735,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "open": "^8.0.4" }, @@ -7133,7 +6749,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -7153,7 +6768,6 @@ "dev": true, "license": "Unlicense", "optional": true, - "peer": true, "engines": { "node": ">=0.6" } @@ -7165,7 +6779,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "stream-buffers": "2.2.x" } @@ -7177,7 +6790,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "big-integer": "1.6.x" }, @@ -7186,61 +6798,40 @@ } }, "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" } }, - "node_modules/browserslist": { - "version": "4.25.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz", - "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "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", "optional": true, - "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001735", - "electron-to-chromium": "^1.5.204", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" + "fill-range": "^7.1.1" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=8" } }, "node_modules/bser": { @@ -7250,7 +6841,6 @@ "dev": true, "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "node-int64": "^0.4.0" } @@ -7286,8 +6876,7 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/bytes": { "version": "3.1.2", @@ -7296,7 +6885,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -7361,48 +6949,6 @@ "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -7420,15 +6966,14 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001735", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", - "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", + "version": "1.0.30001772", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001772.tgz", + "integrity": "sha512-mIwLZICj+ntVTw4BT2zfp+yu/AqV6GMKfJVJMx3MwPxs+uk/uj2GLl2dH8LQbjiLDX66amCga5nKFyDgRR43kg==", "dev": true, "funding": [ { @@ -7445,8 +6990,7 @@ } ], "license": "CC-BY-4.0", - "optional": true, - "peer": true + "optional": true }, "node_modules/canonicalize": { "version": "2.1.0", @@ -7509,7 +7053,6 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, - "peer": true, "engines": { "node": ">=18" } @@ -7521,7 +7064,6 @@ "dev": true, "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", @@ -7542,7 +7084,6 @@ "dev": true, "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", @@ -7565,7 +7106,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -7577,7 +7117,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "restore-cursor": "^2.0.0" }, @@ -7592,7 +7131,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" }, @@ -7685,7 +7223,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.8" } @@ -7735,7 +7272,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -7750,7 +7286,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", @@ -7771,7 +7306,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -7782,8 +7316,7 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/compression/node_modules/negotiator": { "version": "0.6.4", @@ -7792,7 +7325,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -7818,7 +7350,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -7836,7 +7367,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -7847,8 +7377,7 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/convert-source-map": { "version": "2.0.0", @@ -7856,8 +7385,7 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/core-js-compat": { "version": "3.45.0", @@ -7866,7 +7394,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "browserslist": "^4.25.1" }, @@ -7875,80 +7402,6 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "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/cosmiconfig/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/cosmiconfig/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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/cosmiconfig/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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/credential-status": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/credential-status/-/credential-status-3.0.4.tgz", @@ -7992,7 +7445,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -8012,9 +7464,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -8061,7 +7513,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4.0.0" } @@ -8080,7 +7531,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -8092,7 +7542,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "clone": "^1.0.2" }, @@ -8125,7 +7574,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -8137,7 +7585,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -8149,27 +7596,11 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "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==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/did-jwt": { "version": "8.0.17", "resolved": "https://registry.npmjs.org/did-jwt/-/did-jwt-8.0.17.tgz", @@ -8226,6 +7657,16 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/diff": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", + "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dotenv": { "version": "16.4.7", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", @@ -8246,7 +7687,6 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, - "peer": true, "dependencies": { "dotenv": "^16.4.5" }, @@ -8285,17 +7725,15 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/electron-to-chromium": { - "version": "1.5.207", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.207.tgz", - "integrity": "sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw==", + "version": "1.5.302", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", + "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -8311,7 +7749,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -8336,23 +7773,10 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "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", @@ -8360,7 +7784,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "stackframe": "^1.3.4" } @@ -8406,9 +7829,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -8419,32 +7842,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.9", - "@esbuild/android-arm": "0.25.9", - "@esbuild/android-arm64": "0.25.9", - "@esbuild/android-x64": "0.25.9", - "@esbuild/darwin-arm64": "0.25.9", - "@esbuild/darwin-x64": "0.25.9", - "@esbuild/freebsd-arm64": "0.25.9", - "@esbuild/freebsd-x64": "0.25.9", - "@esbuild/linux-arm": "0.25.9", - "@esbuild/linux-arm64": "0.25.9", - "@esbuild/linux-ia32": "0.25.9", - "@esbuild/linux-loong64": "0.25.9", - "@esbuild/linux-mips64el": "0.25.9", - "@esbuild/linux-ppc64": "0.25.9", - "@esbuild/linux-riscv64": "0.25.9", - "@esbuild/linux-s390x": "0.25.9", - "@esbuild/linux-x64": "0.25.9", - "@esbuild/netbsd-arm64": "0.25.9", - "@esbuild/netbsd-x64": "0.25.9", - "@esbuild/openbsd-arm64": "0.25.9", - "@esbuild/openbsd-x64": "0.25.9", - "@esbuild/openharmony-arm64": "0.25.9", - "@esbuild/sunos-x64": "0.25.9", - "@esbuild/win32-arm64": "0.25.9", - "@esbuild/win32-ia32": "0.25.9", - "@esbuild/win32-x64": "0.25.9" + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" } }, "node_modules/escalade": { @@ -8463,8 +7886,7 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -8480,25 +7902,25 @@ } }, "node_modules/eslint": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", - "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", + "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.1", - "@eslint/core": "^0.15.2", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.33.0", - "@eslint/plugin-kit": "^0.3.5", + "@eslint/js": "9.39.3", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", @@ -8605,9 +8027,9 @@ } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -8655,7 +8077,6 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, - "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -8727,7 +8148,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -8811,7 +8231,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -8832,8 +8251,7 @@ "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/expect-type": { "version": "1.2.2", @@ -8846,30 +8264,33 @@ } }, "node_modules/expo": { - "version": "53.0.20", - "resolved": "https://registry.npmjs.org/expo/-/expo-53.0.20.tgz", - "integrity": "sha512-Nh+HIywVy9KxT/LtH08QcXqrxtUOA9BZhsXn3KCsAYA+kNb80M8VKN8/jfQF+I6CgeKyFKJoPNsWgI0y0VBGrA==", + "version": "54.0.33", + "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", + "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "0.24.20", - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/fingerprint": "0.13.4", - "@expo/metro-config": "0.20.17", - "@expo/vector-icons": "^14.0.0", - "babel-preset-expo": "~13.2.3", - "expo-asset": "~11.1.7", - "expo-constants": "~17.1.7", - "expo-file-system": "~18.1.11", - "expo-font": "~13.3.2", - "expo-keep-awake": "~14.1.4", - "expo-modules-autolinking": "2.1.14", - "expo-modules-core": "2.5.0", - "react-native-edge-to-edge": "1.6.0", + "@expo/cli": "54.0.23", + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/devtools": "0.1.8", + "@expo/fingerprint": "0.15.4", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "54.0.14", + "@expo/vector-icons": "^15.0.3", + "@ungap/structured-clone": "^1.3.0", + "babel-preset-expo": "~54.0.10", + "expo-asset": "~12.0.12", + "expo-constants": "~18.0.13", + "expo-file-system": "~19.0.21", + "expo-font": "~14.0.11", + "expo-keep-awake": "~15.0.8", + "expo-modules-autolinking": "3.0.24", + "expo-modules-core": "3.0.29", + "pretty-format": "^29.7.0", + "react-refresh": "^0.14.2", "whatwg-url-without-unicode": "8.0.0-3" }, "bin": { @@ -8897,16 +8318,15 @@ } }, "node_modules/expo-asset": { - "version": "11.1.7", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.1.7.tgz", - "integrity": "sha512-b5P8GpjUh08fRCf6m5XPVAh7ra42cQrHBIMgH2UXP+xsj4Wufl6pLy6jRF5w6U7DranUMbsXm8TOyq4EHy7ADg==", + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", + "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@expo/image-utils": "^0.7.6", - "expo-constants": "~17.1.7" + "@expo/image-utils": "^0.8.8", + "expo-constants": "~18.0.12" }, "peerDependencies": { "expo": "*", @@ -8914,60 +8334,278 @@ "react-native": "*" } }, + "node_modules/expo-asset/node_modules/@expo/image-utils": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.8.tgz", + "integrity": "sha512-HHHaG4J4nKjTtVa1GG9PCh763xlETScfEyNxxOvfTRr8IKPJckjTyqSLEtdJoFNJ1vqiABEjW7tqGhqGibZLeA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "getenv": "^2.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0", + "semver": "^7.6.0", + "temp-dir": "~2.0.0", + "unique-string": "~2.0.0" + } + }, + "node_modules/expo-asset/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==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/expo-constants": { - "version": "17.1.7", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.1.7.tgz", - "integrity": "sha512-byBjGsJ6T6FrLlhOBxw4EaiMXrZEn/MlUYIj/JAd+FS7ll5X/S4qVRbIimSJtdW47hXMq0zxPfJX6njtA56hHA==", + "version": "18.0.13", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", + "integrity": "sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@expo/config": "~11.0.12", - "@expo/env": "~1.0.7" + "@expo/config": "~12.0.13", + "@expo/env": "~2.0.8" }, "peerDependencies": { "expo": "*", "react-native": "*" } }, - "node_modules/expo-file-system": { - "version": "18.1.11", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.1.11.tgz", - "integrity": "sha512-HJw/m0nVOKeqeRjPjGdvm+zBi5/NxcdPf8M8P3G2JFvH5Z8vBWqVDic2O58jnT1OFEy0XXzoH9UqFu7cHg9DTQ==", + "node_modules/expo-constants/node_modules/@expo/config": { + "version": "12.0.13", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.13.tgz", + "integrity": "sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, - "peerDependencies": { - "expo": "*", - "react-native": "*" + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~54.0.4", + "@expo/config-types": "^54.0.10", + "@expo/json-file": "^10.0.8", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" } }, - "node_modules/expo-font": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.3.2.tgz", - "integrity": "sha512-wUlMdpqURmQ/CNKK/+BIHkDA5nGjMqNlYmW0pJFXY/KE/OG80Qcavdu2sHsL4efAIiNGvYdBS10WztuQYU4X0A==", + "node_modules/expo-constants/node_modules/@expo/config-plugins": { + "version": "54.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", + "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@expo/config-types": "^54.0.10", + "@expo/json-file": "~10.0.8", + "@expo/plist": "^0.4.8", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/expo-constants/node_modules/@expo/config-types": { + "version": "54.0.10", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz", + "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/expo-constants/node_modules/@expo/env": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.8.tgz", + "integrity": "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^2.0.0" + } + }, + "node_modules/expo-constants/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==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.3" + } + }, + "node_modules/expo-constants/node_modules/@expo/plist": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", + "integrity": "sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.2.3", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/expo-constants/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/expo-constants/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-constants/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/expo-constants/node_modules/minimatch": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-constants/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo-constants/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==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-constants/node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "fontfaceobserver": "^2.1.0" + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/expo-file-system": { + "version": "19.0.21", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", + "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", + "dev": true, + "license": "MIT", + "optional": true, "peerDependencies": { "expo": "*", - "react": "*" + "react-native": "*" } }, "node_modules/expo-keep-awake": { - "version": "14.1.4", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.1.4.tgz", - "integrity": "sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA==", + "version": "15.0.8", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.8.tgz", + "integrity": "sha512-YK9M1VrnoH1vLJiQzChZgzDvVimVoriibiDIFLbQMpjYBnvyfUeHJcin/Gx1a+XgupNXy92EQJLgI/9ZuXajYQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "peerDependencies": { "expo": "*", "react": "*" @@ -8999,93 +8637,922 @@ "license": "MIT", "optional": true, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "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-core": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.4.10.tgz", + "integrity": "sha512-uCZA3QzF0syRaHwYY99iaNhnye4vSQGsJ/y6IAiesXdbeVahWibX4G1KoKNPUyNsKXIM4tqA+4yByUSvJe4AAw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "compare-versions": "^3.4.0", + "invariant": "^2.2.4" + } + }, + "node_modules/expo-modules-core/node_modules/compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/expo-random": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-14.0.1.tgz", + "integrity": "sha512-gX2mtR9o+WelX21YizXUCD/y+a4ZL+RDthDmFkHxaYbdzjSYTn8u/igoje/l3WEO+/RYspmqUFa8w/ckNbt6Vg==", + "deprecated": "This package is now deprecated in favor of expo-crypto, which provides the same functionality. To migrate, replace all imports from expo-random with imports from expo-crypto.", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "base64-js": "^1.3.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-server": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-1.0.5.tgz", + "integrity": "sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/expo/node_modules/@expo/cli": { + "version": "54.0.23", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.23.tgz", + "integrity": "sha512-km0h72SFfQCmVycH/JtPFTVy69w6Lx1cHNDmfLfQqgKFYeeHTjx7LVDP4POHCtNxFP2UeRazrygJhlh4zz498g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@0no-co/graphql.web": "^1.0.8", + "@expo/code-signing-certificates": "^0.0.6", + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/devcert": "^1.2.1", + "@expo/env": "~2.0.8", + "@expo/image-utils": "^0.8.8", + "@expo/json-file": "^10.0.8", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "~54.0.14", + "@expo/osascript": "^2.3.8", + "@expo/package-manager": "^1.9.10", + "@expo/plist": "^0.4.8", + "@expo/prebuild-config": "^54.0.8", + "@expo/schema-utils": "^0.1.8", + "@expo/spawn-async": "^1.7.2", + "@expo/ws-tunnel": "^1.0.1", + "@expo/xcpretty": "^4.3.0", + "@react-native/dev-middleware": "0.81.5", + "@urql/core": "^5.0.6", + "@urql/exchange-retry": "^1.3.0", + "accepts": "^1.3.8", + "arg": "^5.0.2", + "better-opn": "~3.0.2", + "bplist-creator": "0.1.0", + "bplist-parser": "^0.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "compression": "^1.7.4", + "connect": "^3.7.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "expo-server": "^1.0.5", + "freeport-async": "^2.0.0", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "lan-network": "^0.1.6", + "minimatch": "^9.0.0", + "node-forge": "^1.3.3", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "picomatch": "^3.0.1", + "pretty-bytes": "^5.6.0", + "pretty-format": "^29.7.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.3", + "semver": "^7.6.0", + "send": "^0.19.0", + "slugify": "^1.3.4", + "source-map-support": "~0.5.21", + "stacktrace-parser": "^0.1.10", + "structured-headers": "^0.4.1", + "tar": "^7.5.2", + "terminal-link": "^2.1.1", + "undici": "^6.18.2", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, + "bin": { + "expo-internal": "build/bin/cli" + }, + "peerDependencies": { + "expo": "*", + "expo-router": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "expo-router": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@expo/code-signing-certificates": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", + "integrity": "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-forge": "^1.3.3" + } + }, + "node_modules/expo/node_modules/@expo/config": { + "version": "12.0.13", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.13.tgz", + "integrity": "sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~54.0.4", + "@expo/config-types": "^54.0.10", + "@expo/json-file": "^10.0.8", + "deepmerge": "^4.3.1", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "resolve-workspace-root": "^2.0.0", + "semver": "^7.6.0", + "slugify": "^1.3.4", + "sucrase": "~3.35.1" + } + }, + "node_modules/expo/node_modules/@expo/config-plugins": { + "version": "54.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", + "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@expo/config-types": "^54.0.10", + "@expo/json-file": "~10.0.8", + "@expo/plist": "^0.4.8", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "slash": "^3.0.0", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/expo/node_modules/@expo/config-types": { + "version": "54.0.10", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz", + "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/expo/node_modules/@expo/env": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.8.tgz", + "integrity": "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^2.0.0" + } + }, + "node_modules/expo/node_modules/@expo/image-utils": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.8.tgz", + "integrity": "sha512-HHHaG4J4nKjTtVa1GG9PCh763xlETScfEyNxxOvfTRr8IKPJckjTyqSLEtdJoFNJ1vqiABEjW7tqGhqGibZLeA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", + "getenv": "^2.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0", + "semver": "^7.6.0", + "temp-dir": "~2.0.0", + "unique-string": "~2.0.0" + } + }, + "node_modules/expo/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==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.3" + } + }, + "node_modules/expo/node_modules/@expo/metro-config": { + "version": "54.0.14", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.14.tgz", + "integrity": "sha512-hxpLyDfOR4L23tJ9W1IbJJsG7k4lv2sotohBm/kTYyiG+pe1SYCAWsRmgk+H42o/wWf/HQjE5k45S5TomGLxNA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.5", + "@expo/config": "~12.0.13", + "@expo/env": "~2.0.8", + "@expo/json-file": "~10.0.8", + "@expo/metro": "~54.2.0", + "@expo/spawn-async": "^1.7.2", + "browserslist": "^4.25.0", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "hermes-parser": "^0.29.1", + "jsc-safe-url": "^0.2.4", + "lightningcss": "^1.30.1", + "minimatch": "^9.0.0", + "postcss": "~8.4.32", + "resolve-from": "^5.0.0" + }, + "peerDependencies": { + "expo": "*" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } + } + }, + "node_modules/expo/node_modules/@expo/metro-config/node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/expo/node_modules/@expo/plist": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", + "integrity": "sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.2.3", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/expo/node_modules/@expo/prebuild-config": { + "version": "54.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-54.0.8.tgz", + "integrity": "sha512-EA7N4dloty2t5Rde+HP0IEE+nkAQiu4A/+QGZGT9mFnZ5KKjPPkqSyYcRvP5bhQE10D+tvz6X0ngZpulbMdbsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@expo/config": "~12.0.13", + "@expo/config-plugins": "~54.0.4", + "@expo/config-types": "^54.0.10", + "@expo/image-utils": "^0.8.8", + "@expo/json-file": "^10.0.8", + "@react-native/normalize-colors": "0.81.5", + "debug": "^4.3.1", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "xml2js": "0.6.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo/node_modules/@react-native/debugger-frontend": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", + "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/expo/node_modules/@react-native/dev-middleware": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", + "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.81.5", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^6.2.3" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/expo/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==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/expo/node_modules/@react-native/normalize-colors": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.5.tgz", + "integrity": "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/expo/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/expo/node_modules/expo-modules-autolinking": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.24.tgz", + "integrity": "sha512-TP+6HTwhL7orDvsz2VzauyQlXJcAWyU3ANsZ7JGL4DQu8XaZv/A41ZchbtAYLfozNA2Ya1Hzmhx65hXryBMjaQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo/node_modules/expo-modules-core": { + "version": "3.0.29", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.29.tgz", + "integrity": "sha512-LzipcjGqk8gvkrOUf7O2mejNWugPkf3lmd9GkqL9WuNyeN2fRwU0Dn77e3ZUKI3k6sI+DNwjkq4Nu9fNN9WS7Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/expo/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/node_modules/glob/node_modules/minimatch": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/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==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/expo/node_modules/lightningcss": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "dev": true, + "license": "MPL-2.0", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.31.1", + "lightningcss-darwin-arm64": "1.31.1", + "lightningcss-darwin-x64": "1.31.1", + "lightningcss-freebsd-x64": "1.31.1", + "lightningcss-linux-arm-gnueabihf": "1.31.1", + "lightningcss-linux-arm64-gnu": "1.31.1", + "lightningcss-linux-arm64-musl": "1.31.1", + "lightningcss-linux-x64-gnu": "1.31.1", + "lightningcss-linux-x64-musl": "1.31.1", + "lightningcss-win32-arm64-msvc": "1.31.1", + "lightningcss-win32-x64-msvc": "1.31.1" + } + }, + "node_modules/expo/node_modules/lightningcss-darwin-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lightningcss-darwin-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lightningcss-freebsd-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lightningcss-linux-x64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/expo/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/expo/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/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==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/expo/node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "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", + "optional": true, + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14" } }, - "node_modules/expo-modules-core": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.4.10.tgz", - "integrity": "sha512-uCZA3QzF0syRaHwYY99iaNhnye4vSQGsJ/y6IAiesXdbeVahWibX4G1KoKNPUyNsKXIM4tqA+4yByUSvJe4AAw==", + "node_modules/expo/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==", "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "compare-versions": "^3.4.0", - "invariant": "^2.2.4" + "engines": { + "node": ">=8" } }, - "node_modules/expo-modules-core/node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "node_modules/expo/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/expo-random": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-14.0.1.tgz", - "integrity": "sha512-gX2mtR9o+WelX21YizXUCD/y+a4ZL+RDthDmFkHxaYbdzjSYTn8u/igoje/l3WEO+/RYspmqUFa8w/ckNbt6Vg==", - "deprecated": "This package is now deprecated in favor of expo-crypto, which provides the same functionality. To migrate, replace all imports from expo-random with imports from expo-crypto.", + "node_modules/expo/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "base64-js": "^1.3.0" + "ansi-regex": "^5.0.1" }, - "peerDependencies": { - "expo": "*" + "engines": { + "node": ">=8" } }, - "node_modules/expo/node_modules/expo-modules-autolinking": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.1.14.tgz", - "integrity": "sha512-nT5ERXwc+0ZT/pozDoJjYZyUQu5RnXMk9jDGm5lg+PiKvsrCTSA/2/eftJGMxLkTjVI2MXp5WjSz3JRjbA7UXA==", + "node_modules/expo/node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "find-up": "^5.0.0", - "glob": "^10.4.2", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0" + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" }, "bin": { - "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/expo/node_modules/expo-modules-core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-2.5.0.tgz", - "integrity": "sha512-aIbQxZE2vdCKsolQUl6Q9Farlf8tjh/ROR4hfN1qT7QBGPl1XrJGnaOKkcgYaGrlzCPg/7IBe0Np67GzKMZKKQ==", + "node_modules/expo/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==", "dev": true, "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "invariant": "^2.2.4" + "engines": { + "node": ">= 6" } }, - "node_modules/expo/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==", + "node_modules/expo/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "optional": true, - "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/exponential-backoff": { @@ -9094,8 +9561,7 @@ "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true + "optional": true }, "node_modules/exsolve": { "version": "1.0.7", @@ -9117,6 +9583,7 @@ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -9134,6 +9601,7 @@ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", + "optional": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -9156,9 +9624,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, "funding": [ { @@ -9178,10 +9646,25 @@ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", + "optional": true, "dependencies": { "reusify": "^1.0.4" } }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "optional": true, + "bin": { + "dotslash": "bin/dotslash" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -9189,7 +9672,6 @@ "dev": true, "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "bser": "2.1.1" } @@ -9220,6 +9702,7 @@ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9234,7 +9717,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -9255,7 +9737,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -9266,8 +9747,7 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/find-up": { "version": "5.0.0", @@ -9313,8 +9793,7 @@ "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/fontfaceobserver": { "version": "2.3.0", @@ -9322,8 +9801,7 @@ "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", "dev": true, "license": "BSD-2-Clause", - "optional": true, - "peer": true + "optional": true }, "node_modules/for-each": { "version": "0.3.5", @@ -9365,7 +9843,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -9377,15 +9854,14 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } }, "node_modules/fs-extra": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", - "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "dev": true, "license": "MIT", "dependencies": { @@ -9403,8 +9879,7 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -9438,7 +9913,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6.9.0" } @@ -9485,7 +9959,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8.0.0" } @@ -9511,15 +9984,15 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" } }, "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -9550,6 +10023,20 @@ "node": ">=10.13.0" } }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -9583,44 +10070,58 @@ "dev": true, "license": "ISC" }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, "node_modules/happy-dom": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-18.0.1.tgz", - "integrity": "sha512-qn+rKOW7KWpVTtgIUi6RVmTBZJSe2k0Db0vh1f7CWrWclkkc7/Q+FrOfkZIb2eiErLyqu5AXEzE7XthO9JVxRA==", + "version": "20.7.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-20.7.0.tgz", + "integrity": "sha512-hR/uLYQdngTyEfxnOoa+e6KTcfBFyc1hgFj/Cc144A5JJUuHFYqIEBDcD4FeGqUeKLRZqJ9eN9u7/GDjYEgS1g==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "^20.0.0", + "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", - "whatwg-mimetype": "^3.0.0" + "@types/ws": "^8.18.1", + "entities": "^7.0.1", + "whatwg-mimetype": "^3.0.0", + "ws": "^8.18.3" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/happy-dom/node_modules/@types/node": { - "version": "20.19.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.11.tgz", - "integrity": "sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==", + "node_modules/happy-dom/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/happy-dom/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "node_modules/happy-dom/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, - "license": "MIT" + "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/has-flag": { "version": "4.0.0", @@ -9697,25 +10198,31 @@ "he": "bin/he" } }, + "node_modules/hermes-compiler": { + "version": "250829098.0.7", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.7.tgz", + "integrity": "sha512-8QOmg1VjAWv8poFVslJDY8qkvjTy/UiO3R/hyGoC0IAchLzBdS9/TmAvI9cN1F3yLTEjimAIQQtUslpBMPXVVg==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "hermes-estree": "0.25.1" + "hermes-estree": "0.29.1" } }, "node_modules/hosted-git-info": { @@ -9725,7 +10232,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -9747,7 +10253,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -9766,7 +10271,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -9778,7 +10282,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -9825,7 +10328,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "queue": "6.0.2" }, @@ -9881,7 +10383,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9900,8 +10401,7 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/invariant": { "version": "2.2.4", @@ -9925,15 +10425,6 @@ "uint8arraylist": "^2.4.8" } }, - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -9963,18 +10454,6 @@ "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "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", @@ -9982,7 +10461,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "is-docker": "cli.js" }, @@ -10032,6 +10510,7 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.12.0" } @@ -10059,7 +10538,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "is-docker": "^2.0.0" }, @@ -10120,7 +10598,6 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -10139,7 +10616,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -10216,7 +10692,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -10236,7 +10711,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -10248,7 +10722,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -10276,7 +10749,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -10299,7 +10771,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -10315,8 +10786,7 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/jest-mock": { "version": "29.7.0", @@ -10325,7 +10795,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -10342,7 +10811,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -10354,7 +10822,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -10374,7 +10841,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -10394,7 +10860,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=10" }, @@ -10409,7 +10874,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -10427,7 +10891,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10444,8 +10907,7 @@ "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/jju": { "version": "1.4.0", @@ -10462,9 +10924,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -10480,8 +10942,7 @@ "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", "dev": true, "license": "0BSD", - "optional": true, - "peer": true + "optional": true }, "node_modules/jsesc": { "version": "3.1.0", @@ -10490,7 +10951,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "jsesc": "bin/jsesc" }, @@ -10501,18 +10961,9 @@ "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -10535,7 +10986,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "json5": "lib/cli.js" }, @@ -10599,7 +11049,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -10618,7 +11067,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "lan-network": "dist/lan-network-cli.js" } @@ -10630,7 +11078,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -10656,7 +11103,6 @@ "dev": true, "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "debug": "^2.6.9", "marky": "^1.2.2" @@ -10669,7 +11115,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -10680,220 +11125,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/lightningcss": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.27.0.tgz", - "integrity": "sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==", - "dev": true, - "license": "MPL-2.0", - "optional": true, - "peer": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.27.0", - "lightningcss-darwin-x64": "1.27.0", - "lightningcss-freebsd-x64": "1.27.0", - "lightningcss-linux-arm-gnueabihf": "1.27.0", - "lightningcss-linux-arm64-gnu": "1.27.0", - "lightningcss-linux-arm64-musl": "1.27.0", - "lightningcss-linux-x64-gnu": "1.27.0", - "lightningcss-linux-x64-musl": "1.27.0", - "lightningcss-win32-arm64-msvc": "1.27.0", - "lightningcss-win32-x64-msvc": "1.27.0" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz", - "integrity": "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz", - "integrity": "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz", - "integrity": "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz", - "integrity": "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz", - "integrity": "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz", - "integrity": "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz", - "integrity": "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz", - "integrity": "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } + "optional": true }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz", - "integrity": "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==", + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", "cpu": [ "arm64" ], @@ -10901,31 +11138,8 @@ "license": "MPL-2.0", "optional": true, "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz", - "integrity": "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" + "android" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -10940,8 +11154,7 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/local-pkg": { "version": "1.1.1", @@ -10978,9 +11191,9 @@ } }, "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==", "dev": true, "license": "MIT" }, @@ -10990,8 +11203,7 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/lodash.get": { "version": "4.4.2", @@ -11022,8 +11234,7 @@ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/log-symbols": { "version": "2.2.0", @@ -11032,7 +11243,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "chalk": "^2.0.1" }, @@ -11047,7 +11257,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -11062,7 +11271,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -11079,7 +11287,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -11090,8 +11297,7 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/log-symbols/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -11100,7 +11306,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.8.0" } @@ -11112,7 +11317,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4" } @@ -11124,7 +11328,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -11213,7 +11416,6 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "dependencies": { "tmpl": "1.0.5" } @@ -11224,8 +11426,7 @@ "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true + "optional": true }, "node_modules/math-intrinsics": { "version": "1.1.0", @@ -11243,8 +11444,7 @@ "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/merge-stream": { "version": "2.0.0", @@ -11252,8 +11452,7 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/merge2": { "version": "1.4.1", @@ -11261,27 +11460,27 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">= 8" } }, "node_modules/metro": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.1.tgz", - "integrity": "sha512-UGKepmTxoGD4HkQV8YWvpvwef7fUujNtTgG4Ygf7m/M0qjvb9VuDmAsEU+UdriRX7F61pnVK/opz89hjKlYTXA==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.4.tgz", + "integrity": "sha512-eBkAtcob+YmvSLL+/rsFiK8dHNfDbQA2/pi0lnxg3E6LLtUpwDfdGJ9WBWXkj0PVeOhoWQyj9Rt7s/+6k/GXuA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/code-frame": "^7.24.7", + "@babel/code-frame": "^7.29.0", "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "accepts": "^1.3.7", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "accepts": "^2.0.0", "chalk": "^4.0.0", "ci-info": "^2.0.0", "connect": "^3.6.5", @@ -11289,25 +11488,25 @@ "error-stack-parser": "^2.0.6", "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", - "hermes-parser": "0.29.1", + "hermes-parser": "0.33.3", "image-size": "^1.0.2", "invariant": "^2.2.4", "jest-worker": "^29.7.0", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.83.1", - "metro-cache": "0.83.1", - "metro-cache-key": "0.83.1", - "metro-config": "0.83.1", - "metro-core": "0.83.1", - "metro-file-map": "0.83.1", - "metro-resolver": "0.83.1", - "metro-runtime": "0.83.1", - "metro-source-map": "0.83.1", - "metro-symbolicate": "0.83.1", - "metro-transform-plugins": "0.83.1", - "metro-transform-worker": "0.83.1", - "mime-types": "^2.1.27", + "metro-babel-transformer": "0.83.4", + "metro-cache": "0.83.4", + "metro-cache-key": "0.83.4", + "metro-config": "0.83.4", + "metro-core": "0.83.4", + "metro-file-map": "0.83.4", + "metro-resolver": "0.83.4", + "metro-runtime": "0.83.4", + "metro-source-map": "0.83.4", + "metro-symbolicate": "0.83.4", + "metro-transform-plugins": "0.83.4", + "metro-transform-worker": "0.83.4", + "mime-types": "^3.0.1", "nullthrows": "^1.1.1", "serialize-error": "^2.1.0", "source-map": "^0.5.6", @@ -11323,17 +11522,16 @@ } }, "node_modules/metro-babel-transformer": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.1.tgz", - "integrity": "sha512-r3xAD3964E8dwDBaZNSO2aIIvWXjIK80uO2xo0/pi3WI8XWT9h5SCjtGWtMtE5PRWw+t20TN0q1WMRsjvhC1rQ==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.4.tgz", + "integrity": "sha512-xfNtsYIigybqm9xVL3ygTYYNFyYTMf2lGg/Wt+znVGtwcjXoRPG80WlL5SS09ZjYVei3MoE920i7MNr7ukSULA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/core": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.29.1", + "hermes-parser": "0.33.3", "nullthrows": "^1.1.1" }, "engines": { @@ -11341,52 +11539,48 @@ } }, "node_modules/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.33.3.tgz", + "integrity": "sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.33.3.tgz", + "integrity": "sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "hermes-estree": "0.29.1" + "hermes-estree": "0.33.3" } }, "node_modules/metro-cache": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.1.tgz", - "integrity": "sha512-7N/Ad1PHa1YMWDNiyynTPq34Op2qIE68NWryGEQ4TSE3Zy6a8GpsYnEEZE4Qi6aHgsE+yZHKkRczeBgxhnFIxQ==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.4.tgz", + "integrity": "sha512-Pm6CiksVms0cZNDDe/nFzYr1xpXzJLOSwvOjl4b3cYtXxEFllEjD6EeBgoQK5C8yk7U54PcuRaUAFSvJ+eCKbg==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.1" + "metro-core": "0.83.4" }, "engines": { "node": ">=20.19.4" } }, "node_modules/metro-cache-key": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.1.tgz", - "integrity": "sha512-ZUs+GD5CNeDLxx5UUWmfg26IL+Dnbryd+TLqTlZnDEgehkIa11kUSvgF92OFfJhONeXzV4rZDRGNXoo6JT+8Gg==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.4.tgz", + "integrity": "sha512-Y8E6mm1alkYIRzmfkOdrwXMzJ4HKANYiZE7J2d3iYTwmnLIQG+aoIpvla+bo6LRxH1Gm3qjEiOl+LbxvPCzIug==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6" }, @@ -11395,52 +11589,49 @@ } }, "node_modules/metro-config": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.1.tgz", - "integrity": "sha512-HJhpZx3wyOkux/jeF1o7akFJzZFdbn6Zf7UQqWrvp7gqFqNulQ8Mju09raBgPmmSxKDl4LbbNeigkX0/nKY1QA==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.4.tgz", + "integrity": "sha512-ydOgMNI9aT8l2LOTOugt1FvC7getPKG9uJo9Vclg9/RWJxbwkBF/FMBm6w5gH8NwJokSmQrbNkojXPn7nm0kGw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", "flow-enums-runtime": "^0.0.6", "jest-validate": "^29.7.0", - "metro": "0.83.1", - "metro-cache": "0.83.1", - "metro-core": "0.83.1", - "metro-runtime": "0.83.1" + "metro": "0.83.4", + "metro-cache": "0.83.4", + "metro-core": "0.83.4", + "metro-runtime": "0.83.4", + "yaml": "^2.6.1" }, "engines": { "node": ">=20.19.4" } }, "node_modules/metro-core": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.1.tgz", - "integrity": "sha512-uVL1eAJcMFd2o2Q7dsbpg8COaxjZBBGaXqO2OHnivpCdfanraVL8dPmY6It9ZeqWLOihUKZ2yHW4b6soVCzH/Q==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.4.tgz", + "integrity": "sha512-EE+j/imryd3og/6Ly9usku9vcTLQr2o4IDax/izsr6b0HRqZK9k6f5SZkGkOPqnsACLq6csPCx+2JsgF9DkVbw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.1" + "metro-resolver": "0.83.4" }, "engines": { "node": ">=20.19.4" } }, "node_modules/metro-file-map": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.1.tgz", - "integrity": "sha512-Yu429lnexKl44PttKw3nhqgmpBR+6UQ/tRaYcxPeEShtcza9DWakCn7cjqDTQZtWR2A8xSNv139izJMyQ4CG+w==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.4.tgz", + "integrity": "sha512-RSZLpGQhW9topefjJ9dp77Ff7BP88b17sb/YjxLHC1/H0lJVYYC9Cgqua21Vxe4RUJK2z64hw72g+ySLGTCawA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "debug": "^4.4.0", "fb-watchman": "^2.0.0", @@ -11457,13 +11648,12 @@ } }, "node_modules/metro-minify-terser": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.1.tgz", - "integrity": "sha512-kmooOxXLvKVxkh80IVSYO4weBdJDhCpg5NSPkjzzAnPJP43u6+usGXobkTWxxrAlq900bhzqKek4pBsUchlX6A==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.4.tgz", + "integrity": "sha512-KmZnpxfj0nPIRkbBNTc6xul5f5GPvWL5kQ1UkisB7qFkgh6+UiJG+L4ukJ2sK7St6+8Za/Cb68MUEYkUouIYcQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6", "terser": "^5.15.0" @@ -11473,13 +11663,12 @@ } }, "node_modules/metro-resolver": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.1.tgz", - "integrity": "sha512-t8j46kiILAqqFS5RNa+xpQyVjULxRxlvMidqUswPEk5nQVNdlJslqizDm/Et3v/JKwOtQGkYAQCHxP1zGStR/g==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.4.tgz", + "integrity": "sha512-drWdylyNqgdaJufz0GjU/ielv2hjcc6piegjjJwKn8l7A/72aLQpUpOHtP+GMR+kOqhSsD4MchhJ6PSANvlSEw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6" }, @@ -11488,13 +11677,12 @@ } }, "node_modules/metro-runtime": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.1.tgz", - "integrity": "sha512-3Ag8ZS4IwafL/JUKlaeM6/CbkooY+WcVeqdNlBG0m4S0Qz0om3rdFdy1y6fYBpl6AwXJwWeMuXrvZdMuByTcRA==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.4.tgz", + "integrity": "sha512-sWj9KN311yG22Zv0kVbAp9dorB9HtTThvQKsAn6PLxrVrz+1UBsLrQSxjE/s4PtzDi1HABC648jo4K9Euz/5jw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" @@ -11504,22 +11692,20 @@ } }, "node_modules/metro-source-map": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.1.tgz", - "integrity": "sha512-De7Vbeo96fFZ2cqmI0fWwVJbtHIwPZv++LYlWSwzTiCzxBDJORncN0LcT48Vi2UlQLzXJg+/CuTAcy7NBVh69A==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.4.tgz", + "integrity": "sha512-pPbmQwS0zgU+/0u5KPkuvlsQP0V+WYQ9qNshqupIL720QRH0vS3QR25IVVtbunofEDJchI11Q4QtIbmUyhpOBw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/traverse": "^7.25.3", - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", - "@babel/types": "^7.25.2", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.83.1", + "metro-symbolicate": "0.83.4", "nullthrows": "^1.1.1", - "ob1": "0.83.1", + "ob1": "0.83.4", "source-map": "^0.5.6", "vlq": "^1.0.0" }, @@ -11534,23 +11720,21 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/metro-symbolicate": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.1.tgz", - "integrity": "sha512-wPxYkONlq/Sv8Ji7vHEx5OzFouXAMQJjpcPW41ySKMLP/Ir18SsiJK2h4YkdKpYrTS1+0xf8oqF6nxCsT3uWtg==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.4.tgz", + "integrity": "sha512-clyWAXDgkDHPwvldl95pcLTrJIqUj9GbZayL8tfeUs69ilsIUBpVym2lRd/8l3/8PIHCInxL868NvD2Y7OqKXg==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.83.1", + "metro-source-map": "0.83.4", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" @@ -11569,24 +11753,22 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/metro-transform-plugins": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.1.tgz", - "integrity": "sha512-1Y+I8oozXwhuS0qwC+ezaHXBf0jXW4oeYn4X39XWbZt9X2HfjodqY9bH9r6RUTsoiK7S4j8Ni2C91bUC+sktJQ==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.4.tgz", + "integrity": "sha512-c0ROVcyvdaGPUFIg2N5nEQF4xbsqB2p1PPPhVvK1d/Y7ZhBAFiwQ75so0SJok32q+I++lc/hq7IdPCp2frPGQg==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", + "@babel/generator": "^7.29.1", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", "flow-enums-runtime": "^0.0.6", "nullthrows": "^1.1.1" }, @@ -11595,26 +11777,25 @@ } }, "node_modules/metro-transform-worker": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.1.tgz", - "integrity": "sha512-owCrhPyUxdLgXEEEAL2b14GWTPZ2zYuab1VQXcfEy0sJE71iciD7fuMcrngoufh7e7UHDZ56q4ktXg8wgiYA1Q==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.4.tgz", + "integrity": "sha512-6I81IZLeU/0ww7OBgCPALFl0OE0FQwvIuKCtuViSiKufmislF7kVr7IHH9GYtQuZcnualQ82gYeQ11KzZQTouw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/types": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "flow-enums-runtime": "^0.0.6", - "metro": "0.83.1", - "metro-babel-transformer": "0.83.1", - "metro-cache": "0.83.1", - "metro-cache-key": "0.83.1", - "metro-minify-terser": "0.83.1", - "metro-source-map": "0.83.1", - "metro-transform-plugins": "0.83.1", + "metro": "0.83.4", + "metro-babel-transformer": "0.83.4", + "metro-cache": "0.83.4", + "metro-cache-key": "0.83.4", + "metro-minify-terser": "0.83.4", + "metro-source-map": "0.83.4", + "metro-transform-plugins": "0.83.4", "nullthrows": "^1.1.1" }, "engines": { @@ -11622,15 +11803,14 @@ } }, "node_modules/metro/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.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -11638,34 +11818,46 @@ "node": ">=6.9.0" } }, + "node_modules/metro/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "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==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/metro/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.33.3.tgz", + "integrity": "sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/metro/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.33.3.tgz", + "integrity": "sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "hermes-estree": "0.29.1" + "hermes-estree": "0.33.3" } }, "node_modules/metro/node_modules/js-tokens": { @@ -11674,8 +11866,36 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", + "optional": true + }, + "node_modules/metro/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, + "license": "MIT", "optional": true, - "peer": true + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/metro/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } }, "node_modules/metro/node_modules/source-map": { "version": "0.5.7", @@ -11684,7 +11904,6 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -11696,7 +11915,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8.3.0" }, @@ -11719,6 +11937,7 @@ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -11734,7 +11953,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "mime": "cli.js" }, @@ -11749,7 +11967,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -11761,7 +11978,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -11776,7 +11992,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -11788,19 +12003,18 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4" } }, "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", + "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -11816,29 +12030,27 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/minizlib": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", - "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "minipass": "^7.1.2" }, @@ -11853,7 +12065,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -11953,7 +12164,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -11993,7 +12203,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -12004,8 +12213,7 @@ "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/node-fetch": { "version": "2.7.0", @@ -12029,13 +12237,12 @@ } }, "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", "dev": true, "license": "(BSD-3-Clause OR GPL-2.0)", "optional": true, - "peer": true, "engines": { "node": ">= 6.13.0" } @@ -12046,17 +12253,15 @@ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -12065,7 +12270,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -12077,7 +12281,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", @@ -12094,17 +12297,15 @@ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/ob1": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.1.tgz", - "integrity": "sha512-ngwqewtdUzFyycomdbdIhFLjePPSOt1awKMUXQ0L7iLHgWEPF3DsCerblzjzfAUHaXuvE9ccJymWQ/4PNNqvnQ==", + "version": "0.83.4", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.4.tgz", + "integrity": "sha512-9JiflaRKCkxKzH8uuZlax72cHzZ8iFLsNIORFOAKDgZUOfvfwYWOVS0ezGLzPp/yEhVktD+PTTImC0AAehSOBw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6" }, @@ -12119,7 +12320,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -12131,7 +12331,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -12146,7 +12345,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -12158,7 +12356,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "wrappy": "1" } @@ -12170,7 +12367,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "mimic-fn": "^1.0.0" }, @@ -12185,7 +12381,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -12222,7 +12417,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "chalk": "^2.4.2", "cli-cursor": "^2.1.0", @@ -12242,7 +12436,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -12254,7 +12447,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -12269,7 +12461,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -12286,7 +12477,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -12297,8 +12487,7 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/ora/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -12307,7 +12496,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.8.0" } @@ -12319,7 +12507,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4" } @@ -12331,7 +12518,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ansi-regex": "^4.1.0" }, @@ -12346,7 +12532,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -12393,7 +12578,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -12418,22 +12602,6 @@ "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "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", @@ -12441,7 +12609,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "pngjs": "^3.3.0" }, @@ -12456,7 +12623,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -12485,7 +12651,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -12554,6 +12719,7 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">=8.6" }, @@ -12568,7 +12734,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 6" } @@ -12592,7 +12757,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", @@ -12609,7 +12773,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4.0.0" } @@ -12670,7 +12833,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=6" }, @@ -12685,7 +12847,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -12702,7 +12863,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=10" }, @@ -12717,7 +12877,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -12729,7 +12888,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.4.0" } @@ -12741,7 +12899,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "asap": "~2.0.6" } @@ -12753,7 +12910,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -12827,7 +12983,6 @@ "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", "dev": true, "optional": true, - "peer": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" } @@ -12856,7 +13011,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "inherits": "~2.0.3" } @@ -12880,7 +13034,8 @@ "url": "https://feross.org/support" } ], - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/range-parser": { "version": "1.2.1", @@ -12889,7 +13044,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -12901,7 +13055,6 @@ "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "optional": true, - "peer": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -12919,19 +13072,17 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/react": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", - "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -12943,7 +13094,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" @@ -12956,7 +13106,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8.3.0" }, @@ -12979,51 +13128,50 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/react-native": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.0.tgz", - "integrity": "sha512-RDWhewHGsAa5uZpwIxnJNiv5tW2y6/DrQUjEBdAHPzGMwuMTshern2s4gZaWYeRU3SQguExVddCjiss9IBhxqA==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.84.0.tgz", + "integrity": "sha512-CcBfucLDHz8MAjQx9kFXasYtpcn8zP1YapUgGtAy0psRZTLShwF9yeh5+ErSgEK2gXV1CCSz7hqCZqx1eMyBLA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.81.0", - "@react-native/codegen": "0.81.0", - "@react-native/community-cli-plugin": "0.81.0", - "@react-native/gradle-plugin": "0.81.0", - "@react-native/js-polyfills": "0.81.0", - "@react-native/normalize-colors": "0.81.0", - "@react-native/virtualized-lists": "0.81.0", + "@react-native/assets-registry": "0.84.0", + "@react-native/codegen": "0.84.0", + "@react-native/community-cli-plugin": "0.84.0", + "@react-native/gradle-plugin": "0.84.0", + "@react-native/js-polyfills": "0.84.0", + "@react-native/normalize-colors": "0.84.0", + "@react-native/virtualized-lists": "0.84.0", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.29.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", - "glob": "^7.1.1", + "hermes-compiler": "250829098.0.7", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.83.1", - "metro-source-map": "^0.83.1", + "metro-runtime": "^0.83.3", + "metro-source-map": "^0.83.3", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.1.5", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.26.0", + "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.15", "whatwg-fetch": "^3.0.0", - "ws": "^6.2.3", + "ws": "^7.5.10", "yargs": "^17.6.2" }, "bin": { @@ -13033,8 +13181,8 @@ "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.1.0", - "react": "^19.1.0" + "@types/react": "^19.1.1", + "react": "^19.2.3" }, "peerDependenciesMeta": { "@types/react": { @@ -13042,19 +13190,6 @@ } } }, - "node_modules/react-native-edge-to-edge": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/react-native-edge-to-edge/-/react-native-edge-to-edge-1.6.0.tgz", - "integrity": "sha512-2WCNdE3Qd6Fwg9+4BpbATUxCLcouF6YRY7K+J36KJ4l3y+tWN6XCqAC4DuoGblAAbb2sLkhEDp4FOlbOIot2Og==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, "node_modules/react-native-securerandom": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/react-native-securerandom/-/react-native-securerandom-0.1.1.tgz", @@ -13070,18 +13205,19 @@ } }, "node_modules/react-native/node_modules/@react-native/codegen": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.0.tgz", - "integrity": "sha512-gPFutgtj8YqbwKKt3YpZKamUBGd9YZJV51Jq2aiDZ9oThkg1frUBa20E+Jdi7jKn982wjBMxAklAR85QGQ4xMA==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.84.0.tgz", + "integrity": "sha512-TcTAO58JigCw9onYTrbE2yK2js5YNgqbmnpYyq9oXz2mofbX7JcK53kIi7fhqyJhie8RkY+X85zSOTWNs6S3CA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "glob": "^7.1.1", - "hermes-parser": "0.29.1", + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "hermes-parser": "0.32.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", + "tinyglobby": "^0.2.15", "yargs": "^17.6.2" }, "engines": { @@ -13092,13 +13228,12 @@ } }, "node_modules/react-native/node_modules/@react-native/normalize-colors": { - "version": "0.81.0", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.0.tgz", - "integrity": "sha512-3gEu/29uFgz+81hpUgdlOojM4rjHTIPwxpfygFNY60V6ywZih3eLDTS8kAjNZfPFHQbcYrNorJzwnL5yFF/uLw==", + "version": "0.84.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.84.0.tgz", + "integrity": "sha512-7JgZyWtQ9Sz4qZvCTsURUtuv8/niEZ/iCorp7eExc3GgpBWNazPumieiUoWPdgRKofU0Bqpr2/dJevEn2hrlwA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/react-native/node_modules/ansi-regex": { "version": "5.0.1", @@ -13107,130 +13242,72 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } }, "node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", - "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "hermes-parser": "0.29.1" - } - }, - "node_modules/react-native/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==", + "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==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "hermes-parser": "0.32.0" } }, "node_modules/react-native/node_modules/commander": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/react-native/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", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "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/react-native/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/react-native/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "hermes-estree": "0.29.1" - } - }, - "node_modules/react-native/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "dev": true, + "license": "MIT", + "optional": true, "engines": { - "node": "*" + "node": ">=18" } }, - "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==", + "node_modules/react-native/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==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/react-native/node_modules/hermes-parser": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", + "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "async-limiter": "~1.0.0" + "hermes-estree": "0.32.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==", + "node_modules/react-native/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { - "node": ">=0.10.0" + "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/reflect-metadata": { @@ -13247,8 +13324,7 @@ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/regenerate-unicode-properties": { "version": "10.2.0", @@ -13257,7 +13333,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -13271,8 +13346,7 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/regexpu-core": { "version": "6.2.0", @@ -13281,7 +13355,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", @@ -13300,8 +13373,7 @@ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/regjsparser": { "version": "0.12.0", @@ -13310,7 +13382,6 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, - "peer": true, "dependencies": { "jsesc": "~3.0.2" }, @@ -13325,7 +13396,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "jsesc": "bin/jsesc" }, @@ -13359,7 +13429,6 @@ "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", "dev": true, "optional": true, - "peer": true, "dependencies": { "nested-error-stacks": "~2.0.1", "rc": "~1.2.7", @@ -13376,7 +13445,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "path-parse": "^1.0.5" } @@ -13412,14 +13480,27 @@ "node": ">=4" } }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "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==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/resolve.exports": { "version": "2.0.3", @@ -13428,7 +13509,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=10" } @@ -13440,7 +13520,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -13455,8 +13534,7 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/reusify": { "version": "1.1.0", @@ -13464,6 +13542,7 @@ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", + "optional": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -13477,7 +13556,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -13495,7 +13573,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -13509,7 +13586,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13526,13 +13602,12 @@ } }, "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13546,6 +13621,7 @@ "integrity": "sha512-RZn2XTjXb8t5g13f5YclGoilU/kwT696DIkY3sywjdZidNSi3+vseaQov7D7BZXVJCPv3pDWUN69C78GGbXsKw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -13600,6 +13676,7 @@ } ], "license": "MIT", + "optional": true, "dependencies": { "queue-microtask": "^1.2.2" } @@ -13631,22 +13708,20 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -13663,7 +13738,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -13690,7 +13764,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -13701,8 +13774,7 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/send/node_modules/encodeurl": { "version": "2.0.0", @@ -13711,7 +13783,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -13723,7 +13794,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -13738,7 +13808,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -13750,7 +13819,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -13762,7 +13830,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -13780,7 +13847,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -13791,8 +13857,7 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/serve-static/node_modules/encodeurl": { "version": "2.0.0", @@ -13801,7 +13866,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -13813,7 +13877,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -13828,7 +13891,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -13855,7 +13917,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -13867,7 +13928,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -13896,8 +13956,7 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/sha.js": { "version": "2.4.12", @@ -13950,7 +14009,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.4" }, @@ -13985,7 +14043,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "bplist-creator": "0.1.0", "bplist-parser": "0.3.1", @@ -13999,7 +14056,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "big-integer": "1.6.x" }, @@ -14028,8 +14084,7 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/slash": { "version": "3.0.0", @@ -14038,7 +14093,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -14050,7 +14104,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8.0.0" } @@ -14082,7 +14135,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -14119,7 +14171,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -14134,7 +14185,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -14152,8 +14202,7 @@ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/stacktrace-parser": { "version": "0.1.11", @@ -14162,7 +14211,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "type-fest": "^0.7.1" }, @@ -14177,7 +14225,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -14203,7 +14250,6 @@ "dev": true, "license": "Unlicense", "optional": true, - "peer": true, "engines": { "node": ">= 0.10.0" } @@ -14354,45 +14400,7 @@ "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "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": ">=16 || 14 >=14.17" - } - }, - "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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 6" - } + "optional": true }, "node_modules/supports-color": { "version": "7.2.0", @@ -14414,7 +14422,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -14441,43 +14448,23 @@ "link": true }, "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", + "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "optional": true, - "peer": true, "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", + "minizlib": "^3.1.0", "yallist": "^5.0.0" }, "engines": { "node": ">=18" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tar/node_modules/yallist": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", @@ -14485,7 +14472,6 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, - "peer": true, "engines": { "node": ">=18" } @@ -14497,7 +14483,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -14509,7 +14494,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -14528,7 +14512,6 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.14.0", @@ -14548,8 +14531,7 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/test-exclude": { "version": "7.0.1", @@ -14573,7 +14555,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "any-promise": "^1.0.0" } @@ -14585,7 +14566,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -14599,8 +14579,7 @@ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/tinybench": { "version": "2.9.0", @@ -14617,14 +14596,14 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -14657,6 +14636,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -14700,8 +14680,7 @@ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true + "optional": true }, "node_modules/to-buffer": { "version": "1.2.1", @@ -14724,6 +14703,7 @@ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "is-number": "^7.0.0" }, @@ -14738,7 +14718,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=0.6" } @@ -14761,9 +14740,9 @@ "license": "MIT" }, "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", "dev": true, "license": "MIT", "engines": { @@ -14779,8 +14758,7 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true + "optional": true }, "node_modules/tslib": { "version": "2.7.0", @@ -14809,7 +14787,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4" } @@ -14821,7 +14798,6 @@ "dev": true, "license": "(MIT OR CC0-1.0)", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -14971,6 +14947,7 @@ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -14980,16 +14957,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.47.0.tgz", - "integrity": "sha512-Lwe8i2XQ3WoMjua/r1PHrCTpkubPYJCAfOurtn+mtTzqB6jNd+14n9UN1bJ4s3F49x9ixAm0FLflB/JzQ57M8Q==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.0.tgz", + "integrity": "sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.47.0", - "@typescript-eslint/parser": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0", - "@typescript-eslint/utils": "8.47.0" + "@typescript-eslint/eslint-plugin": "8.56.0", + "@typescript-eslint/parser": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -14999,7 +14976,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, @@ -15073,13 +15050,12 @@ } }, "node_modules/undici": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", - "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=18.17" } @@ -15098,7 +15074,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4" } @@ -15110,7 +15085,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -15126,7 +15100,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4" } @@ -15138,7 +15111,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4" } @@ -15150,7 +15122,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -15175,15 +15146,14 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "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": [ { @@ -15201,7 +15171,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -15230,7 +15199,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.4.0" } @@ -15256,15 +15224,14 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/validator": { - "version": "13.15.15", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", - "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", + "version": "13.15.26", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz", + "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", "dev": true, "license": "MIT", "engines": { @@ -15285,24 +15252,24 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } }, "node_modules/vite": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.3.tgz", - "integrity": "sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "esbuild": "^0.25.0", + "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", - "tinyglobby": "^0.2.14" + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" @@ -15439,6 +15406,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -15452,6 +15420,7 @@ "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", @@ -15538,8 +15507,7 @@ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/vscode-uri": { "version": "3.1.0", @@ -15555,7 +15523,6 @@ "dev": true, "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "makeerror": "1.0.12" } @@ -15567,7 +15534,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "defaults": "^1.0.3" } @@ -15606,8 +15572,7 @@ "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/whatwg-mimetype": { "version": "3.0.0", @@ -15637,7 +15602,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "buffer": "^5.4.3", "punycode": "^2.1.1", @@ -15668,7 +15632,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -15681,7 +15644,6 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -15747,8 +15709,7 @@ "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/word-wrap": { "version": "1.2.5", @@ -15861,8 +15822,7 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/write-file-atomic": { "version": "4.0.2", @@ -15871,7 +15831,6 @@ "dev": true, "license": "ISC", "optional": true, - "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -15886,8 +15845,7 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/ws": { "version": "8.17.1", @@ -15918,7 +15876,6 @@ "dev": true, "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "simple-plist": "^1.1.0", "uuid": "^7.0.3" @@ -15934,7 +15891,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -15946,7 +15902,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -15962,7 +15917,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=4.0" } @@ -15974,7 +15928,6 @@ "dev": true, "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8.0" } @@ -15996,6 +15949,23 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, + "license": "ISC", + "optional": true, + "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", diff --git a/tap-ts/package.json b/tap-ts/package.json index eb5806ef..3c7c1fb4 100644 --- a/tap-ts/package.json +++ b/tap-ts/package.json @@ -77,7 +77,7 @@ "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", "eslint": "^9.33.0", - "happy-dom": "^18.0.1", + "happy-dom": "^20.7.0", "key-did-resolver": "^4.0.0", "tap-wasm": "file:../tap-wasm/pkg", "typescript": "^5.9.0", From 8f08a307532afa18783e63c5c6bc0d9abe029c3c Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 22 Feb 2026 15:31:08 +0100 Subject: [PATCH 7/9] Add get_private_key() and secret helper for external key management Adds a git-like secret helper pattern that allows TAP agents to retrieve private keys from external secret stores (HashiCorp Vault, AWS KMS, 1Password). - Add get_private_key(did) to AgentKeyManager and KeyManager trait - Add secret_helper module with SecretHelperConfig and discover_agent_dids - Add from_secret_helper() factory on TapAgent - Add --secret-helper / TAP_SECRET_HELPER flag to tap-cli, tap-http, tap-mcp - Simplify WASM export_private_key() to use new get_private_key() Co-Authored-By: Claude Opus 4.6 --- tap-agent/Cargo.toml | 1 + tap-agent/src/agent.rs | 20 + tap-agent/src/agent_key_manager.rs | 142 +++++ tap-agent/src/key_manager.rs | 58 ++ tap-agent/src/lib.rs | 12 +- tap-agent/src/secret_helper.rs | 468 +++++++++++++++ tap-cli/Cargo.toml | 2 +- tap-cli/src/main.rs | 34 ++ tap-http/src/main.rs | 102 +++- tap-mcp/Cargo.toml | 2 +- tap-mcp/src/main.rs | 32 +- tap-ts/package-lock.json | 933 +++++++++++++++++++++++++---- tap-ts/package.json | 2 +- tap-wasm/src/wasm_agent.rs | 14 +- 14 files changed, 1672 insertions(+), 150 deletions(-) create mode 100644 tap-agent/src/secret_helper.rs diff --git a/tap-agent/Cargo.toml b/tap-agent/Cargo.toml index c52f045b..62d179a6 100644 --- a/tap-agent/Cargo.toml +++ b/tap-agent/Cargo.toml @@ -51,6 +51,7 @@ web-sys = { version = "0.3", features = [ "Response", "Headers", ], optional = true } +hex = "0.4" aes-gcm = "0.10.3" aes = "0.8" aes-kw = "0.2" diff --git a/tap-agent/src/agent.rs b/tap-agent/src/agent.rs index 9571a1a1..0dc5d4fd 100644 --- a/tap-agent/src/agent.rs +++ b/tap-agent/src/agent.rs @@ -547,6 +547,26 @@ impl TapAgent { } } + /// Creates a new TapAgent from a secret helper + /// + /// Invokes the secret helper to retrieve the private key for the given DID, + /// then creates a TapAgent using that key. + /// + /// # Arguments + /// + /// * `config` - The secret helper configuration + /// * `did` - The DID to fetch the key for + /// * `debug` - Whether to enable debug mode + #[cfg(not(target_arch = "wasm32"))] + pub async fn from_secret_helper( + config: &crate::secret_helper::SecretHelperConfig, + did: &str, + debug: bool, + ) -> Result<(Self, String)> { + let (private_key, key_type) = config.get_key(did)?; + Self::from_private_key(&private_key, key_type, debug).await + } + /// Creates a new TapAgent from an existing private key /// /// This function creates a new TapAgent using a provided private key, diff --git a/tap-agent/src/agent_key_manager.rs b/tap-agent/src/agent_key_manager.rs index d84aa69b..b6118ea8 100644 --- a/tap-agent/src/agent_key_manager.rs +++ b/tap-agent/src/agent_key_manager.rs @@ -144,6 +144,35 @@ impl AgentKeyManager { Ok(()) } + /// Get the raw private key bytes and key type for a DID + /// + /// Checks generated_keys first (raw bytes), falls back to extracting + /// from the secrets JWK "d" parameter. + pub fn get_private_key(&self, did: &str) -> Result<(Vec, KeyType)> { + // Check generated_keys first (has raw bytes) + if let Ok(generated_keys) = self.generated_keys.read() { + if let Some(key) = generated_keys.get(did) { + return Ok((key.private_key.clone(), key.key_type)); + } + } else { + return Err(Error::FailedToAcquireResolverReadLock); + } + + // Fall back to secrets (JWK format) + if let Ok(secrets) = self.secrets.read() { + if let Some(secret) = secrets.get(did) { + return crate::key_manager::extract_private_key_from_secret(secret); + } + } else { + return Err(Error::FailedToAcquireResolverReadLock); + } + + Err(Error::KeyNotFound(format!( + "Private key not found for DID: {}", + did + ))) + } + /// Save keys to storage if a storage path is configured pub fn save_to_storage(&self) -> Result<()> { // Skip if no storage path is configured @@ -399,6 +428,11 @@ impl KeyManager for AgentKeyManager { Arc::clone(&self.secrets) } + /// Get the raw private key bytes and key type for a DID + fn get_private_key(&self, did: &str) -> Result<(Vec, KeyType)> { + AgentKeyManager::get_private_key(self, did) + } + /// Generate a new key with the specified options fn generate_key(&self, options: DIDGenerationOptions) -> Result { self.generate_key_internal(options, true) @@ -1018,3 +1052,111 @@ impl KeyManagerPacking for AgentKeyManager { .map_err(|e| Error::from(MessageError::KeyManager(e.to_string()))) } } + +#[cfg(test)] +mod tests { + use super::*; + use crate::agent::TapAgent; + use crate::did::{DIDGenerationOptions, KeyType}; + use crate::key_manager::KeyManager; + + #[test] + fn test_get_private_key_for_generated_key() { + let km = AgentKeyManager::new(); + let key = km + .generate_key(DIDGenerationOptions { + key_type: KeyType::Ed25519, + }) + .unwrap(); + + let (private_key, key_type) = km.get_private_key(&key.did).unwrap(); + assert_eq!(private_key, key.private_key); + assert_eq!(key_type, KeyType::Ed25519); + } + + #[test] + fn test_get_private_key_for_storage_loaded_key() { + // Simulate a key loaded from storage (only in secrets, not in generated_keys) + let km = AgentKeyManager::new(); + let key = km + .generate_key(DIDGenerationOptions { + key_type: KeyType::Ed25519, + }) + .unwrap(); + + // Create a new key manager and load only the secret (simulating storage load) + let km2 = AgentKeyManager::new(); + let secret = km.secrets().read().unwrap().get(&key.did).cloned().unwrap(); + km2.secrets() + .write() + .unwrap() + .insert(key.did.clone(), secret); + + // Should still be able to extract the private key from the secret + let (private_key, key_type) = km2.get_private_key(&key.did).unwrap(); + assert_eq!(private_key, key.private_key); + assert_eq!(key_type, KeyType::Ed25519); + } + + #[cfg(feature = "crypto-p256")] + #[test] + fn test_get_private_key_p256() { + let km = AgentKeyManager::new(); + let key = km + .generate_key(DIDGenerationOptions { + key_type: KeyType::P256, + }) + .unwrap(); + + let (private_key, key_type) = km.get_private_key(&key.did).unwrap(); + assert_eq!(private_key, key.private_key); + assert_eq!(key_type, KeyType::P256); + } + + #[cfg(feature = "crypto-secp256k1")] + #[test] + fn test_get_private_key_secp256k1() { + let km = AgentKeyManager::new(); + let key = km + .generate_key(DIDGenerationOptions { + key_type: KeyType::Secp256k1, + }) + .unwrap(); + + let (private_key, key_type) = km.get_private_key(&key.did).unwrap(); + assert_eq!(private_key, key.private_key); + assert_eq!(key_type, KeyType::Secp256k1); + } + + #[test] + fn test_get_private_key_unknown_did() { + let km = AgentKeyManager::new(); + let result = km.get_private_key("did:key:nonexistent"); + assert!(result.is_err()); + match result.unwrap_err() { + Error::KeyNotFound(_) => {} // expected + other => panic!("Expected KeyNotFound, got: {:?}", other), + } + } + + #[tokio::test] + async fn test_get_private_key_roundtrip() { + let km = AgentKeyManager::new(); + let key = km + .generate_key(DIDGenerationOptions { + key_type: KeyType::Ed25519, + }) + .unwrap(); + + // Export + let (private_key, key_type) = km.get_private_key(&key.did).unwrap(); + + // Reimport + let (_agent, new_did) = TapAgent::from_private_key(&private_key, key_type, false) + .await + .unwrap(); + + // Same DID + assert_eq!(new_did, key.did); + } +} diff --git a/tap-agent/src/key_manager.rs b/tap-agent/src/key_manager.rs index 5568100d..3b255f4f 100644 --- a/tap-agent/src/key_manager.rs +++ b/tap-agent/src/key_manager.rs @@ -74,6 +74,9 @@ pub trait KeyManager: Send + Sync + std::fmt::Debug + 'static { /// Get a list of all DIDs in the key manager fn list_keys(&self) -> Result>; + /// Get the raw private key bytes and key type for a DID + fn get_private_key(&self, did: &str) -> Result<(Vec, crate::did::KeyType)>; + /// Add a signing key to the key manager async fn add_signing_key(&self, key: Arc) -> Result<()>; @@ -122,6 +125,45 @@ pub trait KeyManager: Send + Sync + std::fmt::Debug + 'static { async fn decrypt_jwe(&self, jwe: &str, expected_kid: Option<&str>) -> Result>; } +/// Extract private key bytes and key type from a Secret's JWK "d" parameter +pub fn extract_private_key_from_secret(secret: &Secret) -> Result<(Vec, crate::did::KeyType)> { + match &secret.secret_material { + SecretMaterial::JWK { private_key_jwk } => { + let d = private_key_jwk + .get("d") + .and_then(|v| v.as_str()) + .ok_or_else(|| { + Error::KeyNotFound("Secret JWK missing 'd' parameter".to_string()) + })?; + + let private_key = base64::Engine::decode(&base64::engine::general_purpose::STANDARD, d) + .map_err(|e| { + Error::Cryptography(format!("Failed to decode private key from JWK: {}", e)) + })?; + + let kty = private_key_jwk.get("kty").and_then(|v| v.as_str()); + let crv = private_key_jwk.get("crv").and_then(|v| v.as_str()); + + let key_type = match (kty, crv) { + #[cfg(feature = "crypto-ed25519")] + (Some("OKP"), Some("Ed25519")) => crate::did::KeyType::Ed25519, + #[cfg(feature = "crypto-p256")] + (Some("EC"), Some("P-256")) => crate::did::KeyType::P256, + #[cfg(feature = "crypto-secp256k1")] + (Some("EC"), Some("secp256k1")) => crate::did::KeyType::Secp256k1, + _ => { + return Err(Error::KeyNotFound(format!( + "Unsupported key type: kty={:?}, crv={:?}", + kty, crv + ))) + } + }; + + Ok((private_key, key_type)) + } + } +} + /// A default implementation of the KeyManager trait. #[derive(Debug, Clone)] pub struct DefaultKeyManager { @@ -175,6 +217,22 @@ impl KeyManager for DefaultKeyManager { Arc::clone(&self.secrets) } + /// Get the raw private key bytes and key type for a DID + fn get_private_key(&self, did: &str) -> Result<(Vec, crate::did::KeyType)> { + if let Ok(secrets) = self.secrets.read() { + if let Some(secret) = secrets.get(did) { + return extract_private_key_from_secret(secret); + } + } else { + return Err(Error::FailedToAcquireResolverReadLock); + } + + Err(Error::KeyNotFound(format!( + "Private key not found for DID: {}", + did + ))) + } + /// Generate a new key with the specified options fn generate_key(&self, options: DIDGenerationOptions) -> Result { // Generate the key diff --git a/tap-agent/src/lib.rs b/tap-agent/src/lib.rs index fc635a05..774307b1 100644 --- a/tap-agent/src/lib.rs +++ b/tap-agent/src/lib.rs @@ -110,6 +110,10 @@ pub mod oob; /// Payment link functionality pub mod payment_link; +/// Secret helper for external key management +#[cfg(not(target_arch = "wasm32"))] +pub mod secret_helper; + /// Key storage utilities pub mod storage; @@ -132,7 +136,9 @@ pub use did::{ VerificationMaterial, VerificationMethod, VerificationMethodType, }; pub use error::{Error, Result}; -pub use key_manager::{KeyManager, Secret, SecretMaterial, SecretType}; +pub use key_manager::{ + extract_private_key_from_secret, KeyManager, Secret, SecretMaterial, SecretType, +}; pub use storage::{KeyStorage, StoredKey}; // Agent key re-exports @@ -154,6 +160,10 @@ pub use payment_link::{ DEFAULT_PAYMENT_SERVICE_URL, }; +// Secret helper re-exports +#[cfg(not(target_arch = "wasm32"))] +pub use secret_helper::{SecretHelperConfig, SecretHelperOutput}; + // Native-only DID resolver re-exports #[cfg(not(target_arch = "wasm32"))] pub use did::MultiResolver; diff --git a/tap-agent/src/secret_helper.rs b/tap-agent/src/secret_helper.rs new file mode 100644 index 00000000..2a5bada3 --- /dev/null +++ b/tap-agent/src/secret_helper.rs @@ -0,0 +1,468 @@ +//! Secret helper for external key management integration +//! +//! Provides a git-like secret helper pattern that allows TAP agents to retrieve +//! private keys from external secret stores (HashiCorp Vault, AWS KMS, 1Password, etc). +//! +//! ## Protocol +//! +//! The secret helper is invoked as: +//! ```text +//! [args...] +//! ``` +//! +//! It outputs JSON to stdout: +//! ```json +//! {"private_key": "abcdef...", "key_type": "Ed25519", "encoding": "hex"} +//! ``` +//! +//! - `private_key` (required): key material +//! - `key_type` (required): `Ed25519` | `P256` | `Secp256k1` +//! - `encoding` (optional, default `hex`): `hex` | `base64` + +use crate::did::KeyType; +use crate::error::{Error, Result}; +use serde::Deserialize; +use std::path::{Path, PathBuf}; +use std::process::Command; + +/// Output format from a secret helper command +#[derive(Debug, Deserialize)] +pub struct SecretHelperOutput { + /// Private key material (hex or base64 encoded) + pub private_key: String, + /// Key type string + pub key_type: String, + /// Encoding format (defaults to "hex") + #[serde(default = "default_encoding")] + pub encoding: String, +} + +fn default_encoding() -> String { + "hex".to_string() +} + +impl SecretHelperOutput { + /// Decode the private key bytes and parse the key type + pub fn decode(&self) -> Result<(Vec, KeyType)> { + let bytes = match self.encoding.as_str() { + "hex" => hex::decode(&self.private_key).map_err(|e| { + Error::Cryptography(format!("Failed to decode hex private key: {}", e)) + })?, + "base64" => { + use base64::Engine; + base64::engine::general_purpose::STANDARD + .decode(&self.private_key) + .map_err(|e| { + Error::Cryptography(format!("Failed to decode base64 private key: {}", e)) + })? + } + other => { + return Err(Error::Validation(format!( + "Unsupported encoding: {}", + other + ))) + } + }; + + let key_type = match self.key_type.as_str() { + "Ed25519" => { + #[cfg(feature = "crypto-ed25519")] + { + KeyType::Ed25519 + } + #[cfg(not(feature = "crypto-ed25519"))] + { + return Err(Error::Validation("Ed25519 support not enabled".to_string())); + } + } + "P256" => { + #[cfg(feature = "crypto-p256")] + { + KeyType::P256 + } + #[cfg(not(feature = "crypto-p256"))] + { + return Err(Error::Validation("P256 support not enabled".to_string())); + } + } + "Secp256k1" => { + #[cfg(feature = "crypto-secp256k1")] + { + KeyType::Secp256k1 + } + #[cfg(not(feature = "crypto-secp256k1"))] + { + return Err(Error::Validation( + "Secp256k1 support not enabled".to_string(), + )); + } + } + other => return Err(Error::Validation(format!("Unknown key type: {}", other))), + }; + + Ok((bytes, key_type)) + } +} + +/// Configuration for a secret helper command +#[derive(Debug, Clone)] +pub struct SecretHelperConfig { + /// The command to execute + pub command: String, + /// Arguments to pass before the DID + pub args: Vec, +} + +impl SecretHelperConfig { + /// Parse a command string into a SecretHelperConfig + /// + /// Splits on whitespace. The first token is the command, the rest are arguments. + /// The DID will be appended as the final argument at invocation time. + pub fn from_command_string(s: &str) -> Result { + let parts: Vec<&str> = s.split_whitespace().collect(); + if parts.is_empty() { + return Err(Error::Validation( + "Secret helper command string is empty".to_string(), + )); + } + + Ok(Self { + command: parts[0].to_string(), + args: parts[1..].iter().map(|s| s.to_string()).collect(), + }) + } + + /// Invoke the secret helper for a given DID and return the decoded key + pub fn get_key(&self, did: &str) -> Result<(Vec, KeyType)> { + let mut cmd = Command::new(&self.command); + for arg in &self.args { + cmd.arg(arg); + } + cmd.arg(did); + + // Inherit stderr so the user sees errors from the helper + cmd.stderr(std::process::Stdio::inherit()); + + let output = cmd.output().map_err(|e| { + Error::Storage(format!( + "Failed to run secret helper '{}': {}", + self.command, e + )) + })?; + + if !output.status.success() { + let code = output.status.code().unwrap_or(-1); + return Err(Error::Storage(format!( + "Secret helper '{}' exited with code {}", + self.command, code + ))); + } + + let stdout = String::from_utf8(output.stdout).map_err(|e| { + Error::Storage(format!( + "Secret helper produced invalid UTF-8 output: {}", + e + )) + })?; + + let helper_output: SecretHelperOutput = serde_json::from_str(&stdout).map_err(|e| { + Error::Storage(format!("Failed to parse secret helper JSON output: {}", e)) + })?; + + helper_output.decode() + } +} + +/// Discover agent DIDs by scanning TAP home directory for `did_*` subdirectories +/// +/// Each agent creates a directory like `did_key_z6Mk...` when `KeyStorage::create_agent_directory` +/// is called. This function reverses the sanitization (`_` -> `:`) to recover the DID. +pub fn discover_agent_dids(tap_root: Option<&Path>) -> Result> { + let tap_dir = if let Some(root) = tap_root { + root.to_path_buf() + } else if let Ok(tap_home) = std::env::var("TAP_HOME") { + PathBuf::from(tap_home) + } else if let Ok(test_dir) = std::env::var("TAP_TEST_DIR") { + PathBuf::from(test_dir).join(crate::storage::DEFAULT_TAP_DIR) + } else { + dirs::home_dir() + .ok_or_else(|| Error::Storage("Could not determine home directory".to_string()))? + .join(crate::storage::DEFAULT_TAP_DIR) + }; + + if !tap_dir.exists() { + return Ok(Vec::new()); + } + + let mut dids = Vec::new(); + for entry in std::fs::read_dir(&tap_dir) + .map_err(|e| Error::Storage(format!("Failed to read TAP directory: {}", e)))? + { + let entry = + entry.map_err(|e| Error::Storage(format!("Failed to read directory entry: {}", e)))?; + let path = entry.path(); + if path.is_dir() { + let dir_name = match path.file_name().and_then(|n| n.to_str()) { + Some(name) => name.to_string(), + None => continue, + }; + // Only consider directories that look like sanitized DIDs (contain "did_") + if dir_name.starts_with("did_") { + let did = dir_name.replace('_', ":"); + dids.push(did); + } + } + } + + dids.sort(); + Ok(dids) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::key_manager::KeyManager; + use std::io::Write; + use tempfile::TempDir; + + #[test] + fn test_from_command_string_simple() { + let config = SecretHelperConfig::from_command_string("my-helper").unwrap(); + assert_eq!(config.command, "my-helper"); + assert!(config.args.is_empty()); + } + + #[test] + fn test_from_command_string_with_args() { + let config = SecretHelperConfig::from_command_string( + "vault-helper --vault-addr https://vault.example.com", + ) + .unwrap(); + assert_eq!(config.command, "vault-helper"); + assert_eq!( + config.args, + vec!["--vault-addr", "https://vault.example.com"] + ); + } + + #[test] + fn test_from_command_string_empty() { + let result = SecretHelperConfig::from_command_string(""); + assert!(result.is_err()); + } + + #[test] + fn test_secret_helper_output_hex() { + let json = r#"{"private_key": "abcdef0123456789", "key_type": "Ed25519"}"#; + let output: SecretHelperOutput = serde_json::from_str(json).unwrap(); + assert_eq!(output.encoding, "hex"); // default + let (bytes, key_type) = output.decode().unwrap(); + assert_eq!(bytes, hex::decode("abcdef0123456789").unwrap()); + assert_eq!(key_type, KeyType::Ed25519); + } + + #[test] + fn test_secret_helper_output_base64() { + use base64::Engine; + let key_bytes = vec![1u8, 2, 3, 4, 5, 6, 7, 8]; + let b64 = base64::engine::general_purpose::STANDARD.encode(&key_bytes); + let json = format!( + r#"{{"private_key": "{}", "key_type": "Ed25519", "encoding": "base64"}}"#, + b64 + ); + let output: SecretHelperOutput = serde_json::from_str(&json).unwrap(); + let (bytes, _) = output.decode().unwrap(); + assert_eq!(bytes, key_bytes); + } + + #[test] + fn test_secret_helper_output_explicit_hex() { + let json = r#"{"private_key": "deadbeef", "key_type": "Ed25519", "encoding": "hex"}"#; + let output: SecretHelperOutput = serde_json::from_str(json).unwrap(); + let (bytes, _) = output.decode().unwrap(); + assert_eq!(bytes, vec![0xde, 0xad, 0xbe, 0xef]); + } + + #[test] + fn test_secret_helper_output_unknown_key_type() { + let json = r#"{"private_key": "abcd", "key_type": "RSA"}"#; + let output: SecretHelperOutput = serde_json::from_str(json).unwrap(); + let result = output.decode(); + assert!(result.is_err()); + } + + #[test] + fn test_secret_helper_output_unsupported_encoding() { + let json = r#"{"private_key": "abcd", "key_type": "Ed25519", "encoding": "raw"}"#; + let output: SecretHelperOutput = serde_json::from_str(json).unwrap(); + let result = output.decode(); + assert!(result.is_err()); + } + + #[test] + fn test_get_key_with_mock_script() { + // Create a temp directory for the script + let temp_dir = TempDir::new().unwrap(); + let script_path = temp_dir.path().join("helper.sh"); + + // Generate a real key to test with + let km = crate::agent_key_manager::AgentKeyManager::new(); + let key = km + .generate_key(crate::did::DIDGenerationOptions { + key_type: KeyType::Ed25519, + }) + .unwrap(); + let hex_key = hex::encode(&key.private_key); + + // Write a mock secret helper script + let mut file = std::fs::File::create(&script_path).unwrap(); + writeln!( + file, + "#!/bin/sh\necho '{{\"private_key\": \"{}\", \"key_type\": \"Ed25519\"}}'", + hex_key + ) + .unwrap(); + + // Make it executable + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt; + std::fs::set_permissions(&script_path, std::fs::Permissions::from_mode(0o755)).unwrap(); + } + + let config = SecretHelperConfig { + command: script_path.to_str().unwrap().to_string(), + args: vec![], + }; + + let (bytes, key_type) = config.get_key(&key.did).unwrap(); + assert_eq!(bytes, key.private_key); + assert_eq!(key_type, KeyType::Ed25519); + } + + #[tokio::test] + async fn test_secret_helper_roundtrip() { + // Generate a key + let km = crate::agent_key_manager::AgentKeyManager::new(); + let key = km + .generate_key(crate::did::DIDGenerationOptions { + key_type: KeyType::Ed25519, + }) + .unwrap(); + let hex_key = hex::encode(&key.private_key); + + // Create mock script + let temp_dir = TempDir::new().unwrap(); + let script_path = temp_dir.path().join("helper.sh"); + let mut file = std::fs::File::create(&script_path).unwrap(); + writeln!( + file, + "#!/bin/sh\necho '{{\"private_key\": \"{}\", \"key_type\": \"Ed25519\"}}'", + hex_key + ) + .unwrap(); + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt; + std::fs::set_permissions(&script_path, std::fs::Permissions::from_mode(0o755)).unwrap(); + } + + let config = SecretHelperConfig { + command: script_path.to_str().unwrap().to_string(), + args: vec![], + }; + + // Get key via secret helper + let (bytes, key_type) = config.get_key(&key.did).unwrap(); + + // Create agent from the key + let (_agent, new_did) = crate::agent::TapAgent::from_private_key(&bytes, key_type, false) + .await + .unwrap(); + + // Same DID + assert_eq!(new_did, key.did); + } + + #[test] + fn test_get_key_command_not_found() { + let config = SecretHelperConfig { + command: "/nonexistent/helper".to_string(), + args: vec![], + }; + let result = config.get_key("did:key:test"); + assert!(result.is_err()); + } + + #[test] + fn test_get_key_non_zero_exit() { + let temp_dir = TempDir::new().unwrap(); + let script_path = temp_dir.path().join("fail.sh"); + let mut file = std::fs::File::create(&script_path).unwrap(); + writeln!(file, "#!/bin/sh\nexit 1").unwrap(); + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt; + std::fs::set_permissions(&script_path, std::fs::Permissions::from_mode(0o755)).unwrap(); + } + + let config = SecretHelperConfig { + command: script_path.to_str().unwrap().to_string(), + args: vec![], + }; + let result = config.get_key("did:key:test"); + assert!(result.is_err()); + } + + #[test] + fn test_get_key_invalid_json() { + let temp_dir = TempDir::new().unwrap(); + let script_path = temp_dir.path().join("bad-json.sh"); + let mut file = std::fs::File::create(&script_path).unwrap(); + writeln!(file, "#!/bin/sh\necho 'not json'").unwrap(); + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt; + std::fs::set_permissions(&script_path, std::fs::Permissions::from_mode(0o755)).unwrap(); + } + + let config = SecretHelperConfig { + command: script_path.to_str().unwrap().to_string(), + args: vec![], + }; + let result = config.get_key("did:key:test"); + assert!(result.is_err()); + } + + #[test] + fn test_discover_agent_dids() { + let temp_dir = TempDir::new().unwrap(); + let tap_dir = temp_dir.path(); + + // Create some agent directories + std::fs::create_dir(tap_dir.join("did_key_z6Mk1234")).unwrap(); + std::fs::create_dir(tap_dir.join("did_web_example.com")).unwrap(); + // Not a DID directory - should be ignored + std::fs::create_dir(tap_dir.join("logs")).unwrap(); + // Create a file - should be ignored + std::fs::write(tap_dir.join("keys.json"), "{}").unwrap(); + + let dids = discover_agent_dids(Some(tap_dir)).unwrap(); + assert_eq!(dids.len(), 2); + assert!(dids.contains(&"did:key:z6Mk1234".to_string())); + assert!(dids.contains(&"did:web:example.com".to_string())); + } + + #[test] + fn test_discover_agent_dids_empty() { + let temp_dir = TempDir::new().unwrap(); + let dids = discover_agent_dids(Some(temp_dir.path())).unwrap(); + assert!(dids.is_empty()); + } + + #[test] + fn test_discover_agent_dids_nonexistent() { + let dids = discover_agent_dids(Some(Path::new("/nonexistent/path"))).unwrap(); + assert!(dids.is_empty()); + } +} diff --git a/tap-cli/Cargo.toml b/tap-cli/Cargo.toml index ec8ec7f9..16c4e3b3 100644 --- a/tap-cli/Cargo.toml +++ b/tap-cli/Cargo.toml @@ -43,7 +43,7 @@ tracing-subscriber = { version = "0.3", features = ["env-filter"] } uuid = { version = "1.0", features = ["v4"] } # CLI argument parsing -clap = { version = "4.0", features = ["derive"] } +clap = { version = "4.0", features = ["derive", "env"] } # Async traits async-trait = "0.1" diff --git a/tap-cli/src/main.rs b/tap-cli/src/main.rs index cd18843c..d0d9aaad 100644 --- a/tap-cli/src/main.rs +++ b/tap-cli/src/main.rs @@ -59,6 +59,10 @@ struct Cli { #[arg(long, global = true, default_value = "json")] format: String, + /// Secret helper command for external key management (replaces keys.json) + #[arg(long, global = true, env = "TAP_SECRET_HELPER")] + secret_helper: Option, + #[command(subcommand)] command: Commands, } @@ -270,6 +274,36 @@ async fn main() { } async fn resolve_agent(cli: &Cli) -> Result<(Arc, String)> { + // If secret helper is configured, use it instead of keys.json + if let Some(ref helper_cmd) = cli.secret_helper { + use tap_agent::secret_helper::{self, SecretHelperConfig}; + + let config = SecretHelperConfig::from_command_string(helper_cmd)?; + + if let Some(ref did) = cli.agent_did { + info!("Using secret helper for DID: {}", did); + let (agent, did) = TapAgent::from_secret_helper(&config, did, cli.debug).await?; + return Ok((Arc::new(agent), did)); + } + + // No --agent-did: discover DIDs from tap directory + let tap_root = cli.tap_root.as_ref().map(std::path::PathBuf::from); + let dids = secret_helper::discover_agent_dids(tap_root.as_deref())?; + if let Some(did) = dids.first() { + info!( + "Discovered DID {} from tap directory, using secret helper", + did + ); + let (agent, did) = TapAgent::from_secret_helper(&config, did, cli.debug).await?; + return Ok((Arc::new(agent), did)); + } + + return Err(tap_agent::Error::Storage( + "No agent DIDs found in tap directory for secret helper".to_string(), + ) + .into()); + } + if let Some(ref did) = cli.agent_did { info!("Using provided agent DID: {}", did); match TapAgent::from_stored_keys(Some(did.clone()), true).await { diff --git a/tap-http/src/main.rs b/tap-http/src/main.rs index 223447a3..77c5aab1 100644 --- a/tap-http/src/main.rs +++ b/tap-http/src/main.rs @@ -39,6 +39,7 @@ struct Args { decision_exec: Option, decision_exec_args: Vec, decision_subscribe: String, + secret_helper: Option, } impl Args { @@ -127,6 +128,9 @@ impl Args { env::var("TAP_DECISION_SUBSCRIBE").unwrap_or_else(|_| "decisions".to_string()) }) }, + secret_helper: args + .opt_value_from_str("--secret-helper")? + .or_else(|| env::var("TAP_SECRET_HELPER").ok()), }; // Check for any remaining arguments (which would be invalid) @@ -168,6 +172,7 @@ AGENT OPTIONS: --tap-root TAP root directory [default: ~/.tap] --db-path Database file path (overrides per-agent default) --logs-dir Event log directory [default: ~/.tap/logs] + --secret-helper Secret helper command for external key management DECISION OPTIONS: -M, --decision-mode Decision handling mode [default: auto] @@ -196,6 +201,7 @@ ENVIRONMENT VARIABLES: TAP_LOGS_DIR Event log directory TAP_STRUCTURED_LOGS Enable structured JSON logging (set to any value) TAP_ENABLE_WEB_DID Enable did:web endpoint (set to any value) + TAP_SECRET_HELPER Secret helper command (replaces keys.json) TAP_DECISION_MODE Decision handling: auto, poll, or exec TAP_DECISION_EXEC Path to external decision executable TAP_DECISION_EXEC_ARGS Comma-separated arguments @@ -313,47 +319,81 @@ async fn main() -> Result<(), Box> { } } - // Create the actual agent - try to load from storage first, create if none exist - let agent = match TapAgent::from_stored_keys(None, true).await { - Ok(agent) => { - info!("Loaded agent from stored keys"); + // Create the actual agent + // If secret helper is configured, use it instead of keys.json + let agent = if let Some(ref helper_cmd) = args.secret_helper { + use tap_agent::secret_helper::{self, SecretHelperConfig}; + + let config = SecretHelperConfig::from_command_string(helper_cmd)?; + let tap_root = args.tap_root.as_ref().map(std::path::PathBuf::from); + + if let Some(ref did) = args.agent_did { + info!("Using secret helper for DID: {}", did); + let (agent, _) = TapAgent::from_secret_helper(&config, did, args.verbose).await?; agent + } else { + // Discover DIDs from tap directory + let dids = secret_helper::discover_agent_dids(tap_root.as_deref())?; + if let Some(did) = dids.first() { + info!( + "Discovered DID {} from tap directory, using secret helper", + did + ); + let (agent, _) = TapAgent::from_secret_helper(&config, did, args.verbose).await?; + agent + } else { + return Err("No agent DIDs found in tap directory for secret helper".into()); + } } - Err(e) => { - info!("No stored keys found ({}), creating new agent...", e); + } else if args.agent_did.is_some() { + // Use specified agent DID from storage + match TapAgent::from_stored_keys(args.agent_did.clone(), true).await { + Ok(agent) => agent, + Err(e) => return Err(format!("Failed to load agent: {}", e).into()), + } + } else { + // Try to load from storage first, create if none exist + match TapAgent::from_stored_keys(None, true).await { + Ok(agent) => { + info!("Loaded agent from stored keys"); + agent + } + Err(e) => { + info!("No stored keys found ({}), creating new agent...", e); - // Create a key manager with storage enabled and generate a new key - let default_key_path = KeyStorage::default_key_path().ok_or_else(|| { - std::io::Error::new( - std::io::ErrorKind::NotFound, - "Could not determine default key path", - ) - })?; - let key_manager_builder = - AgentKeyManagerBuilder::new().load_from_path(default_key_path); - let key_manager = key_manager_builder.build()?; + // Create a key manager with storage enabled and generate a new key + let default_key_path = KeyStorage::default_key_path().ok_or_else(|| { + std::io::Error::new( + std::io::ErrorKind::NotFound, + "Could not determine default key path", + ) + })?; + let key_manager_builder = + AgentKeyManagerBuilder::new().load_from_path(default_key_path); + let key_manager = key_manager_builder.build()?; - // Generate a new key - let generated_key = key_manager.generate_key(DIDGenerationOptions { - key_type: KeyType::Ed25519, - })?; + // Generate a new key + let generated_key = key_manager.generate_key(DIDGenerationOptions { + key_type: KeyType::Ed25519, + })?; - info!("Generated new agent with DID: {}", generated_key.did); + info!("Generated new agent with DID: {}", generated_key.did); - // Create agent config and build agent - let config = AgentConfig::new(generated_key.did.clone()).with_debug(true); + // Create agent config and build agent + let config = AgentConfig::new(generated_key.did.clone()).with_debug(true); - #[cfg(all(not(target_arch = "wasm32"), test))] - let agent = TapAgent::new(config, Arc::new(key_manager)); + #[cfg(all(not(target_arch = "wasm32"), test))] + let agent = TapAgent::new(config, Arc::new(key_manager)); - #[cfg(all(not(target_arch = "wasm32"), not(test)))] - let agent = TapAgent::new(config, Arc::new(key_manager)); + #[cfg(all(not(target_arch = "wasm32"), not(test)))] + let agent = TapAgent::new(config, Arc::new(key_manager)); - #[cfg(target_arch = "wasm32")] - let agent = TapAgent::new(config, Arc::new(key_manager)); + #[cfg(target_arch = "wasm32")] + let agent = TapAgent::new(config, Arc::new(key_manager)); - info!("New key saved to storage successfully"); - agent + info!("New key saved to storage successfully"); + agent + } } }; let agent_did = agent.get_agent_did().to_string(); // Clone to a String to avoid borrowing issues diff --git a/tap-mcp/Cargo.toml b/tap-mcp/Cargo.toml index c87372ba..10440bf6 100644 --- a/tap-mcp/Cargo.toml +++ b/tap-mcp/Cargo.toml @@ -47,7 +47,7 @@ uuid = { version = "1.0", features = ["v4"] } futures = "0.3" # CLI argument parsing -clap = { version = "4.0", features = ["derive"] } +clap = { version = "4.0", features = ["derive", "env"] } # Async traits async-trait = "0.1" diff --git a/tap-mcp/src/main.rs b/tap-mcp/src/main.rs index 4724d9f9..e12f8547 100644 --- a/tap-mcp/src/main.rs +++ b/tap-mcp/src/main.rs @@ -31,6 +31,10 @@ struct Args { /// Custom TAP root directory [default: ~/.tap] #[arg(long)] tap_root: Option, + + /// Secret helper command for external key management (replaces keys.json) + #[arg(long, env = "TAP_SECRET_HELPER")] + secret_helper: Option, } #[tokio::main] @@ -68,7 +72,33 @@ async fn main() -> Result<()> { info!("Starting TAP-MCP server v{}", env!("CARGO_PKG_VERSION")); // Determine agent - use provided DID or load/create from storage - let (agent, agent_did) = if let Some(did) = args.agent_did { + let (agent, agent_did) = if let Some(ref helper_cmd) = args.secret_helper { + use tap_agent::secret_helper::{self, SecretHelperConfig}; + + let config = SecretHelperConfig::from_command_string(helper_cmd)?; + + if let Some(did) = args.agent_did { + info!("Using secret helper for DID: {}", did); + let (agent, did) = TapAgent::from_secret_helper(&config, &did, args.debug).await?; + (Arc::new(agent), did) + } else { + let tap_root = args.tap_root.as_ref().map(std::path::PathBuf::from); + let dids = secret_helper::discover_agent_dids(tap_root.as_deref())?; + if let Some(did) = dids.first() { + info!( + "Discovered DID {} from tap directory, using secret helper", + did + ); + let (agent, did) = TapAgent::from_secret_helper(&config, did, args.debug).await?; + (Arc::new(agent), did) + } else { + return Err(tap_agent::Error::Storage( + "No agent DIDs found in tap directory for secret helper".to_string(), + ) + .into()); + } + } + } else if let Some(did) = args.agent_did { info!("Using provided agent DID: {}", did); // Try to load the specified agent match TapAgent::from_stored_keys(Some(did.clone()), true).await { diff --git a/tap-ts/package-lock.json b/tap-ts/package-lock.json index 494fbaaa..ecfccbb4 100644 --- a/tap-ts/package-lock.json +++ b/tap-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "@taprsvp/agent", - "version": "0.6.0", + "version": "0.6.0-SNAPSHOT", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@taprsvp/agent", - "version": "0.6.0", + "version": "0.6.0-SNAPSHOT", "license": "MIT", "dependencies": { "@taprsvp/types": "^1.9.0" @@ -52,6 +52,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" }, @@ -89,6 +90,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/highlight": "^7.10.4" } @@ -100,10 +102,82 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@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.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/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==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "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", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { "version": "7.29.1", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", @@ -111,6 +185,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", @@ -129,6 +204,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.27.3" }, @@ -143,6 +219,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", @@ -161,6 +238,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "yallist": "^3.0.2" } @@ -172,6 +250,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -182,7 +261,8 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.28.6", @@ -191,6 +271,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", @@ -214,6 +295,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -225,6 +307,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "regexpu-core": "^6.2.0", @@ -244,6 +327,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -255,6 +339,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", @@ -273,6 +358,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -284,6 +370,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" @@ -299,6 +386,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" @@ -314,6 +402,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", @@ -333,6 +422,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.27.1" }, @@ -347,6 +437,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -358,6 +449,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-wrap-function": "^7.27.1", @@ -377,6 +469,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", @@ -396,6 +489,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" @@ -431,6 +525,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -442,6 +537,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.3", @@ -458,6 +554,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" @@ -473,6 +570,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "chalk": "^2.4.2", @@ -490,6 +588,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -504,6 +603,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -520,6 +620,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -530,7 +631,8 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -539,6 +641,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.8.0" } @@ -550,6 +653,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -560,7 +664,8 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", @@ -569,6 +674,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -599,6 +705,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -618,6 +725,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -635,6 +743,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -649,6 +758,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -663,6 +773,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -677,6 +788,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -694,6 +806,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -711,6 +824,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -725,6 +839,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -742,6 +857,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -759,6 +875,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -776,6 +893,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -790,6 +908,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -804,6 +923,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -821,6 +941,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -835,6 +956,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -849,6 +971,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -863,6 +986,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -877,6 +1001,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -891,6 +1016,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -905,6 +1031,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -922,6 +1049,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -939,6 +1067,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -956,6 +1085,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -973,6 +1103,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-remap-async-to-generator": "^7.27.1", @@ -992,6 +1123,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -1011,6 +1143,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1028,6 +1161,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1046,6 +1180,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" @@ -1064,6 +1199,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-compilation-targets": "^7.27.2", @@ -1086,6 +1222,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/template": "^7.28.6" @@ -1104,6 +1241,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" @@ -1122,6 +1260,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1139,6 +1278,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-syntax-flow": "^7.27.1" @@ -1157,6 +1297,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -1175,6 +1316,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -1194,6 +1336,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1211,6 +1354,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1228,6 +1372,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1246,6 +1391,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1264,6 +1410,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1281,6 +1428,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, @@ -1298,6 +1446,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", @@ -1319,6 +1468,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1336,6 +1486,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -1354,6 +1505,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1371,6 +1523,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1389,6 +1542,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-create-class-features-plugin": "^7.27.1", @@ -1408,6 +1562,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1425,6 +1580,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-module-imports": "^7.27.1", @@ -1446,6 +1602,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/plugin-transform-react-jsx": "^7.27.1" }, @@ -1463,6 +1620,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1480,6 +1638,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1497,6 +1656,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1515,6 +1675,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1532,6 +1693,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", @@ -1554,6 +1716,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -1565,6 +1728,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1582,6 +1746,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" @@ -1600,6 +1765,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1617,6 +1783,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.27.1", @@ -1638,6 +1805,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" @@ -1656,6 +1824,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", @@ -1678,6 +1847,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", @@ -1699,6 +1869,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -1710,6 +1881,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", @@ -1726,6 +1898,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -1741,7 +1914,8 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@babel/traverse": { "version": "7.29.0", @@ -1750,6 +1924,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1771,6 +1946,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -1791,6 +1967,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -1806,7 +1983,8 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@babel/traverse/node_modules/@babel/code-frame": { "version": "7.29.0", @@ -1815,6 +1993,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -1830,7 +2009,8 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@babel/types": { "version": "7.29.0", @@ -2494,6 +2674,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/sudo-prompt": "^9.3.1", "debug": "^3.1.0" @@ -2506,6 +2687,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ms": "^2.1.1" } @@ -2517,6 +2699,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "chalk": "^4.1.2" }, @@ -2540,6 +2723,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/spawn-async": "^1.7.2", "arg": "^5.0.2", @@ -2564,6 +2748,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", @@ -2583,6 +2768,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "brace-expansion": "^5.0.2" }, @@ -2600,6 +2786,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 4" } @@ -2611,6 +2798,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "engines": { "node": "20 || >=22" } @@ -2622,6 +2810,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" @@ -2640,6 +2829,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -2651,6 +2841,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "metro": "0.83.3", "metro-babel-transformer": "0.83.3", @@ -2675,6 +2866,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -2690,7 +2882,8 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@expo/metro/node_modules/hermes-estree": { "version": "0.32.0", @@ -2698,7 +2891,8 @@ "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@expo/metro/node_modules/hermes-parser": { "version": "0.32.0", @@ -2707,6 +2901,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "hermes-estree": "0.32.0" } @@ -2717,7 +2912,8 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@expo/metro/node_modules/metro": { "version": "0.83.3", @@ -2726,6 +2922,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/core": "^7.25.2", @@ -2782,6 +2979,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.25.2", "flow-enums-runtime": "^0.0.6", @@ -2799,6 +2997,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", @@ -2816,6 +3015,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6" }, @@ -2830,6 +3030,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "connect": "^3.6.5", "flow-enums-runtime": "^0.0.6", @@ -2851,6 +3052,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", @@ -2867,6 +3069,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "debug": "^4.4.0", "fb-watchman": "^2.0.0", @@ -2889,6 +3092,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6", "terser": "^5.15.0" @@ -2904,6 +3108,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6" }, @@ -2918,6 +3123,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" @@ -2933,6 +3139,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.25.3", "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", @@ -2956,6 +3163,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", @@ -2978,6 +3186,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/generator": "^7.25.0", @@ -2997,6 +3206,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/generator": "^7.25.0", @@ -3023,6 +3233,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6" }, @@ -3037,6 +3248,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3048,6 +3260,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -3071,6 +3284,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/spawn-async": "^1.7.2", "exec-async": "^2.2.0" @@ -3086,6 +3300,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/json-file": "^10.0.8", "@expo/spawn-async": "^1.7.2", @@ -3102,6 +3317,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "~7.10.4", "json5": "^2.2.3" @@ -3113,7 +3329,8 @@ "integrity": "sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@expo/sdk-runtime-versions": { "version": "1.0.0", @@ -3121,7 +3338,8 @@ "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@expo/spawn-async": { "version": "1.7.2", @@ -3130,6 +3348,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "cross-spawn": "^7.0.3" }, @@ -3143,7 +3362,8 @@ "integrity": "sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@expo/vector-icons": { "version": "15.0.3", @@ -3152,6 +3372,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "peerDependencies": { "expo-font": ">=14.0.4", "react": "*", @@ -3164,7 +3385,8 @@ "integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@expo/xcpretty": { "version": "4.3.2", @@ -3173,6 +3395,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "7.10.4", "chalk": "^4.1.0", @@ -3288,6 +3511,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "minipass": "^7.0.4" }, @@ -3302,6 +3526,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "engines": { "node": ">=12" } @@ -3313,6 +3538,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -3331,6 +3557,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -3342,6 +3569,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3357,6 +3585,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3372,6 +3601,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -3386,6 +3616,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "p-try": "^2.0.0" }, @@ -3403,6 +3634,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -3417,6 +3649,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -3438,6 +3671,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/types": "^29.6.3" }, @@ -3452,6 +3686,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -3469,6 +3704,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -3488,6 +3724,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -3502,6 +3739,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -3530,6 +3768,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -3560,6 +3799,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -3582,6 +3822,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -3910,6 +4151,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 20.19.4" } @@ -3921,6 +4163,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.25.3", "@react-native/codegen": "0.81.5" @@ -3936,6 +4179,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/plugin-proposal-export-default-from": "^7.24.7", @@ -3997,6 +4241,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", @@ -4020,6 +4265,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4033,6 +4279,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4055,6 +4302,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4069,6 +4317,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@react-native/dev-middleware": "0.84.0", "debug": "^4.4.0", @@ -4101,6 +4350,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "engines": { "node": ">= 20.19.4" } @@ -4112,6 +4362,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@isaacs/ttlcache": "^1.4.1", "@react-native/debugger-frontend": "0.84.0", @@ -4137,6 +4388,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -4160,6 +4412,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "cross-spawn": "^7.0.6", "debug": "^4.4.0", @@ -4176,6 +4429,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 20.19.4" } @@ -4187,6 +4441,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 20.19.4" } @@ -4198,6 +4453,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "invariant": "^2.2.4", "nullthrows": "^1.1.1" @@ -4570,7 +4826,6 @@ "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", @@ -4734,7 +4989,8 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@sinonjs/commons": { "version": "3.0.1", @@ -4743,6 +4999,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "dependencies": { "type-detect": "4.0.8" } @@ -4754,6 +5011,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "dependencies": { "@sinonjs/commons": "^3.0.0" } @@ -5033,6 +5291,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -5048,6 +5307,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.0.0" } @@ -5059,6 +5319,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -5071,6 +5332,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.28.2" } @@ -5106,6 +5368,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@types/node": "*" } @@ -5116,7 +5379,8 @@ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", @@ -5125,6 +5389,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -5136,6 +5401,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@types/istanbul-lib-report": "*" } @@ -5163,7 +5429,8 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@types/whatwg-mimetype": { "version": "3.0.2", @@ -5189,6 +5456,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -5199,7 +5467,8 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.56.0", @@ -5236,7 +5505,6 @@ "integrity": "sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.56.0", "@typescript-eslint/types": "8.56.0", @@ -5441,7 +5709,8 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/@unimodules/core": { "version": "7.2.0", @@ -5475,6 +5744,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@0no-co/graphql.web": "^1.0.13", "wonka": "^6.3.2" @@ -5487,6 +5757,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@urql/core": "^5.1.2", "wonka": "^6.3.2" @@ -5834,7 +6105,6 @@ "integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/utils": "3.2.4", "fflate": "^0.8.2", @@ -5977,6 +6247,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=10.0.0" } @@ -5988,6 +6259,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -6002,6 +6274,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -6016,7 +6289,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6048,6 +6320,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 14" } @@ -6124,7 +6397,8 @@ "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/ansi-escapes": { "version": "4.3.2", @@ -6133,6 +6407,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -6150,6 +6425,7 @@ "dev": true, "license": "(MIT OR CC0-1.0)", "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -6202,7 +6478,8 @@ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/anymatch": { "version": "3.1.3", @@ -6211,6 +6488,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6235,7 +6513,8 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/argparse": { "version": "2.0.1", @@ -6250,7 +6529,8 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/asmcrypto.js": { "version": "0.22.0", @@ -6309,7 +6589,8 @@ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -6365,6 +6646,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -6388,6 +6670,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -6406,6 +6689,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6419,6 +6703,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6441,6 +6726,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6455,6 +6741,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -6471,6 +6758,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -6488,6 +6776,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/compat-data": "^7.27.7", "@babel/helper-define-polyfill-provider": "^0.6.5", @@ -6504,6 +6793,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -6515,6 +6805,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.5", "core-js-compat": "^3.43.0" @@ -6530,6 +6821,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.5" }, @@ -6544,6 +6836,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.26.0" } @@ -6554,7 +6847,8 @@ "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/babel-plugin-syntax-hermes-parser": { "version": "0.29.1", @@ -6563,6 +6857,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "hermes-parser": "0.29.1" } @@ -6574,6 +6869,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/plugin-syntax-flow": "^7.12.1" } @@ -6585,6 +6881,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -6613,6 +6910,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/plugin-proposal-decorators": "^7.12.9", @@ -6658,6 +6956,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -6669,6 +6968,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -6721,6 +7021,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "bin": { "baseline-browser-mapping": "dist/cli.cjs" }, @@ -6735,6 +7036,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "open": "^8.0.4" }, @@ -6749,6 +7051,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -6768,6 +7071,7 @@ "dev": true, "license": "Unlicense", "optional": true, + "peer": true, "engines": { "node": ">=0.6" } @@ -6779,6 +7083,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "stream-buffers": "2.2.x" } @@ -6790,6 +7095,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "big-integer": "1.6.x" }, @@ -6834,6 +7140,42 @@ "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==", + "dev": true, + "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", + "optional": true, + "peer": true, + "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", @@ -6841,6 +7183,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "node-int64": "^0.4.0" } @@ -6876,7 +7219,8 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/bytes": { "version": "3.1.2", @@ -6885,6 +7229,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -6966,6 +7311,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -6990,7 +7336,8 @@ } ], "license": "CC-BY-4.0", - "optional": true + "optional": true, + "peer": true }, "node_modules/canonicalize": { "version": "2.1.0", @@ -7053,6 +7400,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "engines": { "node": ">=18" } @@ -7064,6 +7412,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", @@ -7084,6 +7433,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", @@ -7106,6 +7456,7 @@ ], "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -7117,6 +7468,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "restore-cursor": "^2.0.0" }, @@ -7131,6 +7483,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" }, @@ -7223,6 +7576,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.8" } @@ -7272,6 +7626,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -7286,6 +7641,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", @@ -7306,6 +7662,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -7316,7 +7673,8 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/compression/node_modules/negotiator": { "version": "0.6.4", @@ -7325,6 +7683,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -7350,6 +7709,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -7367,6 +7727,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -7377,7 +7738,8 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/convert-source-map": { "version": "2.0.0", @@ -7385,7 +7747,8 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/core-js-compat": { "version": "3.45.0", @@ -7394,6 +7757,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "browserslist": "^4.25.1" }, @@ -7445,6 +7809,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -7513,6 +7878,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4.0.0" } @@ -7531,6 +7897,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -7542,6 +7909,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "clone": "^1.0.2" }, @@ -7574,6 +7942,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -7585,6 +7954,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -7596,6 +7966,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -7687,6 +8058,7 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, + "peer": true, "dependencies": { "dotenv": "^16.4.5" }, @@ -7725,7 +8097,8 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/electron-to-chromium": { "version": "1.5.302", @@ -7733,7 +8106,8 @@ "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -7749,6 +8123,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -7773,6 +8148,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -7784,6 +8160,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "stackframe": "^1.3.4" } @@ -7886,7 +8263,8 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -7907,7 +8285,6 @@ "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -8077,6 +8454,7 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, + "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -8148,6 +8526,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -8231,6 +8610,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -8251,7 +8631,8 @@ "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/expect-type": { "version": "1.2.2", @@ -8270,6 +8651,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "54.0.23", @@ -8324,6 +8706,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/image-utils": "^0.8.8", "expo-constants": "~18.0.12" @@ -8341,6 +8724,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/spawn-async": "^1.7.2", "chalk": "^4.0.0", @@ -8361,6 +8745,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -8372,6 +8757,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/config": "~12.0.13", "@expo/env": "~2.0.8" @@ -8388,6 +8774,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "~7.10.4", "@expo/config-plugins": "~54.0.4", @@ -8411,6 +8798,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/config-types": "^54.0.10", "@expo/json-file": "~10.0.8", @@ -8434,7 +8822,8 @@ "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/expo-constants/node_modules/@expo/env": { "version": "2.0.8", @@ -8443,6 +8832,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", @@ -8458,6 +8848,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "~7.10.4", "json5": "^2.2.3" @@ -8470,6 +8861,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.2.3", @@ -8483,6 +8875,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 6" } @@ -8494,6 +8887,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", @@ -8513,6 +8907,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "engines": { "node": "20 || >=22" } @@ -8524,6 +8919,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "brace-expansion": "^5.0.2" }, @@ -8541,6 +8937,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" @@ -8559,6 +8956,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -8570,6 +8968,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -8594,8 +8993,26 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, + "node_modules/expo-font": { + "version": "14.0.11", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", + "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, "peerDependencies": { "expo": "*", + "react": "*", "react-native": "*" } }, @@ -8606,6 +9023,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "peerDependencies": { "expo": "*", "react": "*" @@ -8688,6 +9106,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=20.16.0" } @@ -8699,6 +9118,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@0no-co/graphql.web": "^1.0.8", "@expo/code-signing-certificates": "^0.0.6", @@ -8788,6 +9208,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "node-forge": "^1.3.3" } @@ -8799,6 +9220,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "~7.10.4", "@expo/config-plugins": "~54.0.4", @@ -8822,6 +9244,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/config-types": "^54.0.10", "@expo/json-file": "~10.0.8", @@ -8845,7 +9268,8 @@ "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/expo/node_modules/@expo/env": { "version": "2.0.8", @@ -8854,6 +9278,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", @@ -8869,6 +9294,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/spawn-async": "^1.7.2", "chalk": "^4.0.0", @@ -8889,6 +9315,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "~7.10.4", "json5": "^2.2.3" @@ -8901,6 +9328,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.20.0", "@babel/core": "^7.20.0", @@ -8940,6 +9368,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -8956,6 +9385,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.2.3", @@ -8969,6 +9399,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/config": "~12.0.13", "@expo/config-plugins": "~54.0.4", @@ -8992,6 +9423,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "engines": { "node": ">= 20.19.4" } @@ -9003,6 +9435,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@isaacs/ttlcache": "^1.4.1", "@react-native/debugger-frontend": "0.81.5", @@ -9027,6 +9460,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "async-limiter": "~1.0.0" } @@ -9037,7 +9471,8 @@ "integrity": "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/expo/node_modules/ansi-regex": { "version": "5.0.1", @@ -9046,6 +9481,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -9057,6 +9493,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -9067,7 +9504,8 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/expo/node_modules/expo-modules-autolinking": { "version": "3.0.24", @@ -9076,6 +9514,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", @@ -9094,6 +9533,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "invariant": "^2.2.4" }, @@ -9109,6 +9549,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", @@ -9128,6 +9569,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "brace-expansion": "^5.0.2" }, @@ -9144,7 +9586,8 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/expo/node_modules/lightningcss": { "version": "1.31.1", @@ -9153,6 +9596,7 @@ "dev": true, "license": "MPL-2.0", "optional": true, + "peer": true, "dependencies": { "detect-libc": "^2.0.3" }, @@ -9190,6 +9634,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9211,6 +9656,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9232,6 +9678,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9253,6 +9700,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9274,6 +9722,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9295,6 +9744,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9316,6 +9766,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9337,6 +9788,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9358,6 +9810,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9379,6 +9832,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -9394,6 +9848,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "engines": { "node": "20 || >=22" } @@ -9405,6 +9860,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" @@ -9423,6 +9879,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -9451,6 +9908,7 @@ ], "license": "MIT", "optional": true, + "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.1", @@ -9467,6 +9925,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -9478,6 +9937,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9494,6 +9954,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9508,6 +9969,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -9532,6 +9994,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 6" } @@ -9543,6 +10006,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9561,7 +10025,8 @@ "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", "dev": true, "license": "Apache-2.0", - "optional": true + "optional": true, + "peer": true }, "node_modules/exsolve": { "version": "1.0.7", @@ -9658,6 +10123,7 @@ "dev": true, "license": "(MIT OR Apache-2.0)", "optional": true, + "peer": true, "bin": { "dotslash": "bin/dotslash" }, @@ -9672,6 +10138,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "bser": "2.1.1" } @@ -9717,6 +10184,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -9737,6 +10205,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -9747,7 +10216,8 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/find-up": { "version": "5.0.0", @@ -9793,7 +10263,8 @@ "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/fontfaceobserver": { "version": "2.3.0", @@ -9801,7 +10272,8 @@ "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", "dev": true, "license": "BSD-2-Clause", - "optional": true + "optional": true, + "peer": true }, "node_modules/for-each": { "version": "0.3.5", @@ -9843,6 +10315,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -9854,6 +10327,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -9879,7 +10353,8 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -9913,6 +10388,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -9959,6 +10435,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8.0.0" } @@ -9984,6 +10461,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -10030,6 +10508,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ini": "^1.3.4" }, @@ -10204,7 +10683,8 @@ "integrity": "sha512-8QOmg1VjAWv8poFVslJDY8qkvjTy/UiO3R/hyGoC0IAchLzBdS9/TmAvI9cN1F3yLTEjimAIQQtUslpBMPXVVg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/hermes-estree": { "version": "0.29.1", @@ -10212,7 +10692,8 @@ "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/hermes-parser": { "version": "0.29.1", @@ -10221,6 +10702,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "hermes-estree": "0.29.1" } @@ -10232,6 +10714,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -10253,6 +10736,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -10271,6 +10755,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -10282,6 +10767,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -10328,6 +10814,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "queue": "6.0.2" }, @@ -10383,6 +10870,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -10401,7 +10889,8 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/invariant": { "version": "2.2.4", @@ -10461,6 +10950,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "bin": { "is-docker": "cli.js" }, @@ -10538,6 +11028,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "is-docker": "^2.0.0" }, @@ -10598,6 +11089,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -10616,6 +11108,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -10692,6 +11185,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -10711,6 +11205,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -10722,6 +11217,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -10749,6 +11245,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -10771,6 +11268,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -10786,7 +11284,8 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/jest-mock": { "version": "29.7.0", @@ -10795,6 +11294,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -10811,6 +11311,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -10822,6 +11323,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -10841,6 +11343,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -10860,6 +11363,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -10874,6 +11378,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -10891,6 +11396,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10907,7 +11413,8 @@ "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/jju": { "version": "1.4.0", @@ -10942,7 +11449,8 @@ "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", "dev": true, "license": "0BSD", - "optional": true + "optional": true, + "peer": true }, "node_modules/jsesc": { "version": "3.1.0", @@ -10951,6 +11459,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "bin": { "jsesc": "bin/jsesc" }, @@ -10986,6 +11495,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "bin": { "json5": "lib/cli.js" }, @@ -11049,6 +11559,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -11067,6 +11578,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "bin": { "lan-network": "dist/lan-network-cli.js" } @@ -11078,6 +11590,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -11103,6 +11616,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "debug": "^2.6.9", "marky": "^1.2.2" @@ -11115,6 +11629,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -11125,7 +11640,8 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/lightningcss-android-arm64": { "version": "1.31.1", @@ -11140,6 +11656,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -11154,7 +11671,8 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/local-pkg": { "version": "1.1.1", @@ -11203,7 +11721,8 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/lodash.get": { "version": "4.4.2", @@ -11234,7 +11753,8 @@ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/log-symbols": { "version": "2.2.0", @@ -11243,6 +11763,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "chalk": "^2.0.1" }, @@ -11257,6 +11778,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -11271,6 +11793,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -11287,6 +11810,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -11297,7 +11821,8 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/log-symbols/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -11306,6 +11831,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.8.0" } @@ -11317,6 +11843,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -11328,6 +11855,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -11416,6 +11944,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "dependencies": { "tmpl": "1.0.5" } @@ -11426,7 +11955,8 @@ "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", "dev": true, "license": "Apache-2.0", - "optional": true + "optional": true, + "peer": true }, "node_modules/math-intrinsics": { "version": "1.1.0", @@ -11444,7 +11974,8 @@ "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/merge-stream": { "version": "2.0.0", @@ -11452,7 +11983,8 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/merge2": { "version": "1.4.1", @@ -11472,6 +12004,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/core": "^7.25.2", @@ -11528,6 +12061,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.25.2", "flow-enums-runtime": "^0.0.6", @@ -11544,7 +12078,8 @@ "integrity": "sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/metro-babel-transformer/node_modules/hermes-parser": { "version": "0.33.3", @@ -11553,6 +12088,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "hermes-estree": "0.33.3" } @@ -11564,6 +12100,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", @@ -11581,6 +12118,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6" }, @@ -11595,6 +12133,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "connect": "^3.6.5", "flow-enums-runtime": "^0.0.6", @@ -11616,6 +12155,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", @@ -11632,6 +12172,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "debug": "^4.4.0", "fb-watchman": "^2.0.0", @@ -11654,6 +12195,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6", "terser": "^5.15.0" @@ -11669,6 +12211,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6" }, @@ -11683,6 +12226,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" @@ -11698,6 +12242,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", @@ -11720,6 +12265,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -11731,6 +12277,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", @@ -11753,6 +12300,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -11764,6 +12312,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/generator": "^7.29.1", @@ -11783,6 +12332,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/generator": "^7.29.1", @@ -11809,6 +12359,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -11825,6 +12376,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" @@ -11839,7 +12391,8 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/metro/node_modules/hermes-estree": { "version": "0.33.3", @@ -11847,7 +12400,8 @@ "integrity": "sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/metro/node_modules/hermes-parser": { "version": "0.33.3", @@ -11856,6 +12410,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "hermes-estree": "0.33.3" } @@ -11866,7 +12421,8 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/metro/node_modules/mime-types": { "version": "3.0.2", @@ -11875,6 +12431,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "mime-db": "^1.54.0" }, @@ -11893,6 +12450,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -11904,6 +12462,7 @@ "dev": true, "license": "BSD-3-Clause", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -11915,6 +12474,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -11953,6 +12513,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "bin": { "mime": "cli.js" }, @@ -11967,6 +12528,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -11978,6 +12540,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -11992,6 +12555,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -12003,6 +12567,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -12030,6 +12595,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12051,6 +12617,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "minipass": "^7.1.2" }, @@ -12065,6 +12632,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -12164,6 +12732,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -12203,6 +12772,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -12213,7 +12783,8 @@ "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/node-fetch": { "version": "2.7.0", @@ -12243,6 +12814,7 @@ "dev": true, "license": "(BSD-3-Clause OR GPL-2.0)", "optional": true, + "peer": true, "engines": { "node": ">= 6.13.0" } @@ -12253,7 +12825,8 @@ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/node-releases": { "version": "2.0.27", @@ -12261,7 +12834,8 @@ "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -12270,6 +12844,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -12281,6 +12856,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", @@ -12297,7 +12873,8 @@ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/ob1": { "version": "0.83.4", @@ -12306,6 +12883,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "flow-enums-runtime": "^0.0.6" }, @@ -12320,6 +12898,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -12331,6 +12910,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -12345,6 +12925,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -12356,6 +12937,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "wrappy": "1" } @@ -12367,6 +12949,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "mimic-fn": "^1.0.0" }, @@ -12381,6 +12964,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -12417,6 +13001,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "chalk": "^2.4.2", "cli-cursor": "^2.1.0", @@ -12436,6 +13021,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -12447,6 +13033,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -12461,6 +13048,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -12477,6 +13065,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -12487,7 +13076,8 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/ora/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -12496,6 +13086,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.8.0" } @@ -12507,6 +13098,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -12518,6 +13110,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ansi-regex": "^4.1.0" }, @@ -12532,6 +13125,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -12578,6 +13172,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -12609,6 +13204,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "pngjs": "^3.3.0" }, @@ -12623,6 +13219,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -12651,6 +13248,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -12734,6 +13332,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 6" } @@ -12757,6 +13356,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", @@ -12773,6 +13373,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4.0.0" } @@ -12833,6 +13434,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=6" }, @@ -12847,6 +13449,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -12863,6 +13466,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -12877,6 +13481,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -12888,6 +13493,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.4.0" } @@ -12899,6 +13505,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "asap": "~2.0.6" } @@ -12910,6 +13517,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -12983,6 +13591,7 @@ "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", "dev": true, "optional": true, + "peer": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" } @@ -13011,6 +13620,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "inherits": "~2.0.3" } @@ -13044,6 +13654,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -13055,6 +13666,7 @@ "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "optional": true, + "peer": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -13072,6 +13684,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -13083,6 +13696,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -13094,6 +13708,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" @@ -13106,6 +13721,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -13128,7 +13744,8 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/react-native": { "version": "0.84.0", @@ -13137,6 +13754,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.84.0", @@ -13211,6 +13829,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", @@ -13233,7 +13852,8 @@ "integrity": "sha512-7JgZyWtQ9Sz4qZvCTsURUtuv8/niEZ/iCorp7eExc3GgpBWNazPumieiUoWPdgRKofU0Bqpr2/dJevEn2hrlwA==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/react-native/node_modules/ansi-regex": { "version": "5.0.1", @@ -13242,6 +13862,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -13253,6 +13874,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "hermes-parser": "0.32.0" } @@ -13264,6 +13886,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=18" } @@ -13274,7 +13897,8 @@ "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/react-native/node_modules/hermes-parser": { "version": "0.32.0", @@ -13283,6 +13907,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "hermes-estree": "0.32.0" } @@ -13294,6 +13919,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -13310,6 +13936,18 @@ } } }, + "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==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", @@ -13324,7 +13962,8 @@ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/regenerate-unicode-properties": { "version": "10.2.0", @@ -13333,6 +13972,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -13346,7 +13986,8 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/regexpu-core": { "version": "6.2.0", @@ -13355,6 +13996,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", @@ -13373,7 +14015,8 @@ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/regjsparser": { "version": "0.12.0", @@ -13382,6 +14025,7 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, + "peer": true, "dependencies": { "jsesc": "~3.0.2" }, @@ -13396,6 +14040,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "bin": { "jsesc": "bin/jsesc" }, @@ -13429,6 +14074,7 @@ "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", "dev": true, "optional": true, + "peer": true, "dependencies": { "nested-error-stacks": "~2.0.1", "rc": "~1.2.7", @@ -13445,6 +14091,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "path-parse": "^1.0.5" } @@ -13487,6 +14134,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "global-dirs": "^0.1.1" }, @@ -13500,7 +14148,8 @@ "integrity": "sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/resolve.exports": { "version": "2.0.3", @@ -13509,6 +14158,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=10" } @@ -13520,6 +14170,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -13534,7 +14185,8 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/reusify": { "version": "1.1.0", @@ -13556,6 +14208,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -13573,6 +14226,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -13586,6 +14240,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13608,6 +14263,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13621,7 +14277,6 @@ "integrity": "sha512-RZn2XTjXb8t5g13f5YclGoilU/kwT696DIkY3sywjdZidNSi3+vseaQov7D7BZXVJCPv3pDWUN69C78GGbXsKw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -13708,7 +14363,8 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/scheduler": { "version": "0.27.0", @@ -13716,7 +14372,8 @@ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/semver": { "version": "7.7.4", @@ -13738,6 +14395,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -13764,6 +14422,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -13774,7 +14433,8 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/send/node_modules/encodeurl": { "version": "2.0.0", @@ -13783,6 +14443,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -13794,6 +14455,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -13808,6 +14470,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -13819,6 +14482,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -13830,6 +14494,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -13847,6 +14512,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -13857,7 +14523,8 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/serve-static/node_modules/encodeurl": { "version": "2.0.0", @@ -13866,6 +14533,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -13877,6 +14545,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -13891,6 +14560,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -13917,6 +14587,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -13928,6 +14599,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -13956,7 +14628,8 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/sha.js": { "version": "2.4.12", @@ -14009,6 +14682,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.4" }, @@ -14043,6 +14717,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "bplist-creator": "0.1.0", "bplist-parser": "0.3.1", @@ -14056,6 +14731,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "big-integer": "1.6.x" }, @@ -14084,7 +14760,8 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/slash": { "version": "3.0.0", @@ -14093,6 +14770,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -14104,6 +14782,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8.0.0" } @@ -14135,6 +14814,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -14171,6 +14851,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -14185,6 +14866,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -14202,7 +14884,8 @@ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/stacktrace-parser": { "version": "0.1.11", @@ -14211,6 +14894,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "type-fest": "^0.7.1" }, @@ -14225,6 +14909,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -14250,6 +14935,7 @@ "dev": true, "license": "Unlicense", "optional": true, + "peer": true, "engines": { "node": ">= 0.10.0" } @@ -14400,7 +15086,8 @@ "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/supports-color": { "version": "7.2.0", @@ -14422,6 +15109,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -14454,6 +15142,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", @@ -14472,6 +15161,7 @@ "dev": true, "license": "BlueOak-1.0.0", "optional": true, + "peer": true, "engines": { "node": ">=18" } @@ -14483,6 +15173,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -14494,6 +15185,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -14512,6 +15204,7 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, + "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.14.0", @@ -14531,7 +15224,8 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/test-exclude": { "version": "7.0.1", @@ -14555,6 +15249,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "any-promise": "^1.0.0" } @@ -14566,6 +15261,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -14579,7 +15275,8 @@ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/tinybench": { "version": "2.9.0", @@ -14636,7 +15333,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -14680,7 +15376,8 @@ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, "license": "BSD-3-Clause", - "optional": true + "optional": true, + "peer": true }, "node_modules/to-buffer": { "version": "1.2.1", @@ -14718,6 +15415,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=0.6" } @@ -14758,7 +15456,8 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true, "license": "Apache-2.0", - "optional": true + "optional": true, + "peer": true }, "node_modules/tslib": { "version": "2.7.0", @@ -14787,6 +15486,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -14798,6 +15498,7 @@ "dev": true, "license": "(MIT OR CC0-1.0)", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -14947,7 +15648,6 @@ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15056,6 +15756,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=18.17" } @@ -15074,6 +15775,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -15085,6 +15787,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -15100,6 +15803,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -15111,6 +15815,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -15122,6 +15827,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -15146,6 +15852,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -15171,6 +15878,7 @@ ], "license": "MIT", "optional": true, + "peer": true, "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -15199,6 +15907,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.4.0" } @@ -15224,6 +15933,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -15252,6 +15962,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">= 0.8" } @@ -15262,7 +15973,6 @@ "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -15406,7 +16116,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -15420,7 +16129,6 @@ "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", @@ -15507,7 +16215,8 @@ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/vscode-uri": { "version": "3.1.0", @@ -15523,6 +16232,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "makeerror": "1.0.12" } @@ -15534,6 +16244,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "defaults": "^1.0.3" } @@ -15572,7 +16283,8 @@ "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/whatwg-mimetype": { "version": "3.0.0", @@ -15602,6 +16314,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "buffer": "^5.4.3", "punycode": "^2.1.1", @@ -15632,6 +16345,7 @@ ], "license": "MIT", "optional": true, + "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -15644,6 +16358,7 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -15709,7 +16424,8 @@ "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/word-wrap": { "version": "1.2.5", @@ -15822,7 +16538,8 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/write-file-atomic": { "version": "4.0.2", @@ -15831,6 +16548,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -15845,7 +16563,8 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC", - "optional": true + "optional": true, + "peer": true }, "node_modules/ws": { "version": "8.17.1", @@ -15876,6 +16595,7 @@ "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "simple-plist": "^1.1.0", "uuid": "^7.0.3" @@ -15891,6 +16611,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -15902,6 +16623,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -15917,6 +16639,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=4.0" } @@ -15928,6 +16651,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=8.0" } @@ -15956,6 +16680,7 @@ "dev": true, "license": "ISC", "optional": true, + "peer": true, "bin": { "yaml": "bin.mjs" }, diff --git a/tap-ts/package.json b/tap-ts/package.json index 3c7c1fb4..ca7c4694 100644 --- a/tap-ts/package.json +++ b/tap-ts/package.json @@ -1,6 +1,6 @@ { "name": "@taprsvp/agent", - "version": "0.6.0", + "version": "0.6.0-SNAPSHOT", "type": "module", "description": "TypeScript wrapper for TAP WASM Agent - Browser-optimized message packing/unpacking with flexible key management", "keywords": [ diff --git a/tap-wasm/src/wasm_agent.rs b/tap-wasm/src/wasm_agent.rs index 21bd9aae..22322690 100644 --- a/tap-wasm/src/wasm_agent.rs +++ b/tap-wasm/src/wasm_agent.rs @@ -203,21 +203,15 @@ impl WasmTapAgent { return Ok(stored_key.clone()); } - // Otherwise, try to get it from the key manager + // Use get_private_key() which checks both generated_keys and secrets let key_manager = self.agent.agent_key_manager(); - - // Get the agent's DID let did = &self.agent.config.agent_did; - // Get the generated key from the key manager - let generated_key = key_manager - .get_generated_key(did) + let (private_key_bytes, _key_type) = key_manager + .get_private_key(did) .map_err(|e| JsValue::from_str(&format!("Failed to get key for DID {}: {}", did, e)))?; - // Convert private key bytes to hex string - let hex_private_key = hex::encode(&generated_key.private_key); - - Ok(hex_private_key) + Ok(hex::encode(&private_key_bytes)) } /// Export the agent's public key as a hex string From e5a5a379af8bf46c4fb9ebaa112f5972ccbe7feb Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Sun, 22 Feb 2026 17:13:13 +0100 Subject: [PATCH 8/9] Fix ETXTBSY race condition in secret_helper tests Drop file handles and call sync_all() before executing scripts to prevent "Text file busy" errors on macOS. Co-Authored-By: Claude Opus 4.6 --- tap-agent/src/secret_helper.rs | 48 +++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/tap-agent/src/secret_helper.rs b/tap-agent/src/secret_helper.rs index 2a5bada3..507c59c8 100644 --- a/tap-agent/src/secret_helper.rs +++ b/tap-agent/src/secret_helper.rs @@ -315,13 +315,16 @@ mod tests { let hex_key = hex::encode(&key.private_key); // Write a mock secret helper script - let mut file = std::fs::File::create(&script_path).unwrap(); - writeln!( - file, - "#!/bin/sh\necho '{{\"private_key\": \"{}\", \"key_type\": \"Ed25519\"}}'", - hex_key - ) - .unwrap(); + { + let mut file = std::fs::File::create(&script_path).unwrap(); + writeln!( + file, + "#!/bin/sh\necho '{{\"private_key\": \"{}\", \"key_type\": \"Ed25519\"}}'", + hex_key + ) + .unwrap(); + file.sync_all().unwrap(); + } // Make it executable #[cfg(unix)] @@ -354,13 +357,16 @@ mod tests { // Create mock script let temp_dir = TempDir::new().unwrap(); let script_path = temp_dir.path().join("helper.sh"); - let mut file = std::fs::File::create(&script_path).unwrap(); - writeln!( - file, - "#!/bin/sh\necho '{{\"private_key\": \"{}\", \"key_type\": \"Ed25519\"}}'", - hex_key - ) - .unwrap(); + { + let mut file = std::fs::File::create(&script_path).unwrap(); + writeln!( + file, + "#!/bin/sh\necho '{{\"private_key\": \"{}\", \"key_type\": \"Ed25519\"}}'", + hex_key + ) + .unwrap(); + file.sync_all().unwrap(); + } #[cfg(unix)] { use std::os::unix::fs::PermissionsExt; @@ -398,8 +404,11 @@ mod tests { fn test_get_key_non_zero_exit() { let temp_dir = TempDir::new().unwrap(); let script_path = temp_dir.path().join("fail.sh"); - let mut file = std::fs::File::create(&script_path).unwrap(); - writeln!(file, "#!/bin/sh\nexit 1").unwrap(); + { + let mut file = std::fs::File::create(&script_path).unwrap(); + writeln!(file, "#!/bin/sh\nexit 1").unwrap(); + file.sync_all().unwrap(); + } #[cfg(unix)] { use std::os::unix::fs::PermissionsExt; @@ -418,8 +427,11 @@ mod tests { fn test_get_key_invalid_json() { let temp_dir = TempDir::new().unwrap(); let script_path = temp_dir.path().join("bad-json.sh"); - let mut file = std::fs::File::create(&script_path).unwrap(); - writeln!(file, "#!/bin/sh\necho 'not json'").unwrap(); + { + let mut file = std::fs::File::create(&script_path).unwrap(); + writeln!(file, "#!/bin/sh\necho 'not json'").unwrap(); + file.sync_all().unwrap(); + } #[cfg(unix)] { use std::os::unix::fs::PermissionsExt; From 0908417c6b931024e58d0072a5e7ae088c602eb1 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 23 Feb 2026 05:34:00 +0000 Subject: [PATCH 9/9] Fix ETXTBSY race in secret helper tests Use write-then-rename pattern for test scripts to avoid "Text file busy" (ETXTBSY) errors on Linux when exec races with the kernel releasing a write file descriptor. https://claude.ai/code/session_01ATXjF1caKB3UmNvxLQajgs --- tap-agent/src/secret_helper.rs | 91 +++++++++++----------------------- 1 file changed, 29 insertions(+), 62 deletions(-) diff --git a/tap-agent/src/secret_helper.rs b/tap-agent/src/secret_helper.rs index 507c59c8..e8a61d92 100644 --- a/tap-agent/src/secret_helper.rs +++ b/tap-agent/src/secret_helper.rs @@ -222,9 +222,22 @@ pub fn discover_agent_dids(tap_root: Option<&Path>) -> Result> { mod tests { use super::*; use crate::key_manager::KeyManager; - use std::io::Write; use tempfile::TempDir; + /// Write script content to a file, set it executable, and rename to final path. + /// The write-then-rename avoids ETXTBSY ("Text file busy") on Linux, which can + /// occur when exec races with the kernel releasing a write file descriptor. + #[cfg(unix)] + fn write_test_script(dir: &std::path::Path, name: &str, content: &str) -> std::path::PathBuf { + use std::os::unix::fs::PermissionsExt; + let tmp_path = dir.join(format!("{}.tmp", name)); + let final_path = dir.join(name); + std::fs::write(&tmp_path, content).unwrap(); + std::fs::set_permissions(&tmp_path, std::fs::Permissions::from_mode(0o755)).unwrap(); + std::fs::rename(&tmp_path, &final_path).unwrap(); + final_path + } + #[test] fn test_from_command_string_simple() { let config = SecretHelperConfig::from_command_string("my-helper").unwrap(); @@ -301,9 +314,7 @@ mod tests { #[test] fn test_get_key_with_mock_script() { - // Create a temp directory for the script let temp_dir = TempDir::new().unwrap(); - let script_path = temp_dir.path().join("helper.sh"); // Generate a real key to test with let km = crate::agent_key_manager::AgentKeyManager::new(); @@ -314,24 +325,14 @@ mod tests { .unwrap(); let hex_key = hex::encode(&key.private_key); - // Write a mock secret helper script - { - let mut file = std::fs::File::create(&script_path).unwrap(); - writeln!( - file, + let script_path = write_test_script( + temp_dir.path(), + "helper.sh", + &format!( "#!/bin/sh\necho '{{\"private_key\": \"{}\", \"key_type\": \"Ed25519\"}}'", hex_key - ) - .unwrap(); - file.sync_all().unwrap(); - } - - // Make it executable - #[cfg(unix)] - { - use std::os::unix::fs::PermissionsExt; - std::fs::set_permissions(&script_path, std::fs::Permissions::from_mode(0o755)).unwrap(); - } + ), + ); let config = SecretHelperConfig { command: script_path.to_str().unwrap().to_string(), @@ -345,7 +346,6 @@ mod tests { #[tokio::test] async fn test_secret_helper_roundtrip() { - // Generate a key let km = crate::agent_key_manager::AgentKeyManager::new(); let key = km .generate_key(crate::did::DIDGenerationOptions { @@ -354,39 +354,25 @@ mod tests { .unwrap(); let hex_key = hex::encode(&key.private_key); - // Create mock script let temp_dir = TempDir::new().unwrap(); - let script_path = temp_dir.path().join("helper.sh"); - { - let mut file = std::fs::File::create(&script_path).unwrap(); - writeln!( - file, + let script_path = write_test_script( + temp_dir.path(), + "helper.sh", + &format!( "#!/bin/sh\necho '{{\"private_key\": \"{}\", \"key_type\": \"Ed25519\"}}'", hex_key - ) - .unwrap(); - file.sync_all().unwrap(); - } - #[cfg(unix)] - { - use std::os::unix::fs::PermissionsExt; - std::fs::set_permissions(&script_path, std::fs::Permissions::from_mode(0o755)).unwrap(); - } + ), + ); let config = SecretHelperConfig { command: script_path.to_str().unwrap().to_string(), args: vec![], }; - // Get key via secret helper let (bytes, key_type) = config.get_key(&key.did).unwrap(); - - // Create agent from the key let (_agent, new_did) = crate::agent::TapAgent::from_private_key(&bytes, key_type, false) .await .unwrap(); - - // Same DID assert_eq!(new_did, key.did); } @@ -403,17 +389,7 @@ mod tests { #[test] fn test_get_key_non_zero_exit() { let temp_dir = TempDir::new().unwrap(); - let script_path = temp_dir.path().join("fail.sh"); - { - let mut file = std::fs::File::create(&script_path).unwrap(); - writeln!(file, "#!/bin/sh\nexit 1").unwrap(); - file.sync_all().unwrap(); - } - #[cfg(unix)] - { - use std::os::unix::fs::PermissionsExt; - std::fs::set_permissions(&script_path, std::fs::Permissions::from_mode(0o755)).unwrap(); - } + let script_path = write_test_script(temp_dir.path(), "fail.sh", "#!/bin/sh\nexit 1"); let config = SecretHelperConfig { command: script_path.to_str().unwrap().to_string(), @@ -426,17 +402,8 @@ mod tests { #[test] fn test_get_key_invalid_json() { let temp_dir = TempDir::new().unwrap(); - let script_path = temp_dir.path().join("bad-json.sh"); - { - let mut file = std::fs::File::create(&script_path).unwrap(); - writeln!(file, "#!/bin/sh\necho 'not json'").unwrap(); - file.sync_all().unwrap(); - } - #[cfg(unix)] - { - use std::os::unix::fs::PermissionsExt; - std::fs::set_permissions(&script_path, std::fs::Permissions::from_mode(0o755)).unwrap(); - } + let script_path = + write_test_script(temp_dir.path(), "bad-json.sh", "#!/bin/sh\necho 'not json'"); let config = SecretHelperConfig { command: script_path.to_str().unwrap().to_string(),