From 386196ed4850b3edf48ee6041e00e4075d258e46 Mon Sep 17 00:00:00 2001 From: Patrick Bennett <170563+pbennett@users.noreply.github.com> Date: Wed, 14 Oct 2026 17:06:12 -0400 Subject: [PATCH 1/4] docs: rewrite CLAUDE.md and drop unloaded commit skill Fix the single-test command (pnpm --filter ... exec vitest) and the middleware hook names (adjustQuoteParams/beforeSwap/afterSwap). Document the swap flow, group ordering, swap-txn re-signing, Tinyman v1 and logger gotchas, the examples build CI runs, and the release process. Fold the commit conventions from .claude/skills/commit-messages.md into CLAUDE.md and delete that file; as a flat .md under skills/ it was never loaded as a skill. --- .claude/CLAUDE.md | 92 ++++++++++++------------------- .claude/skills/commit-messages.md | 33 ----------- 2 files changed, 36 insertions(+), 89 deletions(-) delete mode 100644 .claude/skills/commit-messages.md diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index c55cd17..1382cf3 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -4,81 +4,61 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -Haystack Router SDK is a TypeScript/JavaScript SDK for the Haystack Order Router - smart order routing and DEX aggregation on Algorand. This is a pnpm workspace monorepo containing the SDK package and example implementations. +TypeScript SDK (`@txnlab/haystack-router`) for the Haystack Order Router, which does smart order routing and DEX aggregation on Algorand. This is a pnpm workspace with the SDK in `packages/haystack/` and example apps in `examples/` (react, react-query, node-cli), which consume the SDK via `workspace:*`. Peer dependency: `algosdk ^3`. -> **Note:** This SDK was migrated from `@txnlab/deflex` (TxnLab/deflex-js) to `@txnlab/haystack-router` (TxnLab/haystack-js) as part of a rebranding effort. See [MIGRATION.md](../MIGRATION.md) for details on migrating from the old package. +> Migrated from `@txnlab/deflex` (TxnLab/deflex-js). See [MIGRATION.md](../MIGRATION.md). ## Commands +Run from the repo root. `build`/`test`/`typecheck` are filtered to the SDK package. `lint`/`format` cover the whole repo. + ```bash -# Install dependencies pnpm install - -# Build the SDK (runs tsdown and publint) -pnpm build - -# Run tests -pnpm test -pnpm test:watch # Watch mode -pnpm test:coverage # With coverage - -# Run a single test file -pnpm --filter @txnlab/haystack-router vitest run tests/client.test.ts - -# Linting and formatting -pnpm lint # ESLint -pnpm format # Check formatting -pnpm format:fix # Fix formatting - -# Type checking +pnpm build # tsdown + publint --strict +pnpm test # vitest run (also: test:watch, test:coverage) +pnpm lint # eslint (import-x/order enforced, alphabetized) +pnpm format # prettier --check (format:fix to write) pnpm typecheck +pnpm run ci # build, lint, format, typecheck, test -# Run all CI checks -pnpm run ci +# Single test file / single test +pnpm --filter @txnlab/haystack-router exec vitest run tests/client.test.ts +pnpm --filter @txnlab/haystack-router exec vitest run -t "test name" + +# CI also builds the examples (not part of `pnpm run ci`). Requires the SDK to be built first. +pnpm --filter "./examples/**" run build ``` ## Architecture -### SDK Package (`packages/haystack/`) - -The SDK exports from `src/index.ts`: +The public API is whatever `src/index.ts` re-exports: client, composer, constants, middleware, types, utils. `logger.ts` and `debug.ts` are internal. -- **client.ts** - `RouterClient` class: Main entry point for interacting with the Haystack Router API. Handles quote fetching, swap transaction creation, and automatic asset opt-in detection. +### Swap flow -- **composer.ts** - `SwapComposer` class: Builder pattern for constructing atomic transaction groups. Manages transaction lifecycle (BUILDING → BUILT → SIGNED → SUBMITTED → COMMITTED). Supports adding custom transactions and ABI method calls before/after swaps. - -- **middleware.ts** - `SwapMiddleware` interface: Plugin system for extending swap functionality. Middleware can modify quote parameters, add transactions before/after swaps. Includes built-in `AutoOptOutMiddleware`. - -- **types.ts** - TypeScript types for API requests/responses, quotes, transactions. - -- **constants.ts** - Default configuration values and protocol constants. - -### Workspace Structure - -``` -packages/haystack/ # Main SDK package (@txnlab/haystack-router) -examples/ - react/ # React + Vite example - react-query/ # React + TanStack Query example - node-cli/ # Node.js CLI example -``` +1. `RouterClient.newQuote()` runs each middleware's `shouldApply`, then `adjustQuoteParams`, then calls `fetchQuote()` (GET `/fetchQuote`) and normalizes the result to a `SwapQuote` with bigint fields. Calling `fetchQuote()` directly **skips** `adjustQuoteParams`. +2. `RouterClient.newSwap()` POSTs the quote's encrypted `txnPayload` to `/fetchExecuteSwapTxns` and returns a `SwapComposer` built on algosdk's `AtomicTransactionComposer`. +3. `SwapComposer.addSwapTransactions()` builds the group in this order: user-added txns, then middleware `beforeSwap`, then app opt-ins for `quote.requiredAppOptIns` the account lacks, then API swap txns, then middleware `afterSwap`. It checks the 16-txn group limit. `sign()`/`submit()`/`execute()` call it automatically if it hasn't run yet. +4. `execute()` records the input and output txn IDs, reads the actual output amount from the last swap app call's inner txns (exposed by `getSummary()`), and on failure logs context through `debug.ts`. -Examples use `"@txnlab/haystack-router": "workspace:*"` to reference the local SDK. +### Signing -## Key Patterns +- An API swap txn with `signature: false` is the user's input payment or axfer. It gets the configured signer and the optional `note`, and its group index is tracked for `getInputTransactionId()`. +- Every other API txn carries a logic-sig or secret-key `signature` and is re-signed locally by `createSwapSigner()`. The API's group ID is stripped and reassigned by the ATC. +- The user signer can be an `algosdk.TransactionSigner` or an ARC-1 `SignerFunction`. `defaultSigner` filters out the `null`s that ARC-1 wallets return. -### Transaction Signing +### Middleware (`middleware.ts`, docs in `packages/haystack/MIDDLEWARE.md`) -The SDK accepts both `algosdk.TransactionSigner` and ARC-1 compliant signer functions. The `SignerFunction` type in composer.ts handles both patterns. +`SwapMiddleware` has `name`, `version`, `shouldApply(QuoteContext)`, and optional `adjustQuoteParams`, `beforeSwap(SwapContext)`, `afterSwap(SwapContext)`. `shouldApply` is called in both the quote and swap phases. Middleware that adds txns must lower `maxGroupSize` in `adjustQuoteParams`. Built-in: `AutoOptOutMiddleware`, which appends an asset close-out when a fixed-input swap spends the full balance. -### Middleware System +### Invariants and gotchas -Middleware implements `SwapMiddleware` interface with optional hooks: -- `shouldApply(context)` - Determine if middleware applies to a swap -- `modifyQuoteParams(params)` - Adjust quote parameters (e.g., reduce maxGroupSize) -- `getPreSwapTransactions(context)` - Add transactions before swap -- `getPostSwapTransactions(context)` - Add transactions after swap +- **Tinyman v1 is non-composable.** `DEPRECATED_PROTOCOLS` (`Tinyman`, `Humble`) are always added to `disabledProtocols`. `_allowNonComposableSwaps` re-enables Tinyman v1 only through `fetchQuote()`, can't be combined with opt-in, and is rejected by `newQuote()`. `addTransaction`/`addMethodCall` throw if `quote.flattenedRoute.Tinyman > 0`. +- `SwapComposerStatus` is cast directly from the ATC status, so its member order must match algosdk's `AtomicTransactionComposerStatus`. +- `Logger` is a static singleton. Each `RouterClient`/`SwapComposer` constructor overwrites the global level. Its `sanitize()` redacts `apiKey`, `algodToken`, signature values and `txnPayload`. Keep that redaction when you add log calls. +- Asset and app IDs, and amounts, are `bigint` in `QuoteContext`/`SwapContext`/`SwapQuote`. The raw API response uses numbers and strings. +- All HTTP goes through `utils.request()`, which throws `HTTPError`. Tests mock `../src/utils` or stub `algodClient.().do()`. No network calls in tests. -### Peer Dependencies +## Commits and releases -The SDK requires `algosdk ^3.0.0` as a peer dependency. +- Conventional commits with a **lowercase** subject after the colon, e.g. `fix(client): handle timeout`. Renovate's capitalized `chore(deps): Update…` commits are the exception. Scopes: `client`, `composer`, `middleware`, `types`, `deps`, `examples`, `docs`. +- semantic-release runs on push to `main`. It derives the version from commit types (`feat`, `fix`, `refactor`, `perf` appear in release notes) and writes `packages/haystack/CHANGELOG.md` and the package version. Never edit either by hand. diff --git a/.claude/skills/commit-messages.md b/.claude/skills/commit-messages.md deleted file mode 100644 index 70a7efe..0000000 --- a/.claude/skills/commit-messages.md +++ /dev/null @@ -1,33 +0,0 @@ -# Project Commit Conventions - -This file extends the global commit-messages skill (`~/.claude/skills/commit-messages/SKILL.md`). - -## Lowercase Rule - -Commit messages MUST begin with a lowercase letter after the colon. - -**Correct:** -``` -feat(composer): add getSummary() method -fix(client): handle network timeout errors -chore(deps): update algosdk to v3.1.0 -``` - -**Incorrect:** -``` -feat(composer): Add getSummary() method -fix(client): Handle network timeout errors -chore(deps): Update algosdk to v3.1.0 -``` - -Note: The commit history contains Renovate bot commits that use uppercase (e.g., "chore(deps): Update..."). These are automated and follow Renovate's default format. All commits written by Claude Code or developers should use lowercase. - -## Common Scopes - -- `client` - RouterClient class changes -- `composer` - SwapComposer class changes -- `middleware` - Middleware system changes -- `types` - Type definitions -- `deps` - Dependency updates -- `examples` - Example application changes -- `docs` - Documentation updates From d14661d25df34ce2a04f74321e049f96e1b04738 Mon Sep 17 00:00:00 2001 From: Patrick Bennett <170563+pbennett@users.noreply.github.com> Date: Wed, 14 Oct 2026 17:06:20 -0400 Subject: [PATCH 2/4] chore(deps): update dependencies and require node 22 - algosdk 3.8.0; React examples on @txnlab/use-wallet-react v5 with per-wallet adapter packages (@txnlab/use-wallet-pera, @txnlab/use-wallet-defly, @galaxypay/use-wallet-lute) replacing the direct connector deps and the deprecated lute-connect - React 19, Vite 8, @vitejs/plugin-react 6, ESLint 10, Vitest 5, tsdown 0.23, dotenv 18, semantic-release changelog 7 / git 11 - TypeScript 6.0.3 (typescript-eslint supports <6.1); @types/node stays on 22.x per renovate pin - composer: attach the caught error as cause when re-throwing (ESLint 10 preserve-caught-error) - node-cli: call dotenv config({ quiet: true }) to suppress dotenv 18's startup log - Node 22 baseline: SDK engines >=22 (build target node22); root engines ^22.22.2 || >=24.15 for tooling; READMEs updated --- README.md | 2 +- examples/README.md | 4 +- examples/node-cli/README.md | 2 +- examples/node-cli/package.json | 8 +- examples/node-cli/src/index.ts | 2 +- examples/react-query/README.md | 15 +- examples/react-query/package.json | 28 +- examples/react-query/src/main.tsx | 14 +- examples/react/README.md | 15 +- examples/react/package.json | 26 +- examples/react/src/main.tsx | 14 +- package.json | 18 +- packages/haystack/package.json | 16 +- packages/haystack/src/composer.ts | 2 + packages/haystack/tests/client.test.ts | 3 +- pnpm-lock.yaml | 4272 +++++++++++------------- 16 files changed, 2046 insertions(+), 2395 deletions(-) diff --git a/README.md b/README.md index d4eb51f..ec371ce 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ This is a pnpm workspace monorepo. All packages and examples share dependencies - **Haystack Router API Key** - An API key is included for free tier usage (60 requests/min). For production rate limits, request a key from [support@txnlab.dev](mailto:support@txnlab.dev). - algosdk 3.0.0 or later (peer dependency) -- Node.js >= 20 +- Node.js >= 22.22.2 - pnpm 10.20.0 or later ### Installation diff --git a/examples/README.md b/examples/README.md index 1b5df4c..1dff5ca 100644 --- a/examples/README.md +++ b/examples/README.md @@ -10,7 +10,7 @@ A simple React application demonstrating basic Haystack Router SDK integration. **Key Features:** -- React 18 with TypeScript and Vite +- React 19 with TypeScript and Vite - Multiple wallet support (Pera, Defly, Lute) - Complete swap interface with quote display @@ -58,7 +58,7 @@ All examples use the local SDK package via pnpm workspaces. This means changes t - **Haystack Router API Key** - A free tier key is included in the `.env.example` files (60 requests/min). For production rate limits, request a key from [support@txnlab.dev](mailto:support@txnlab.dev). - algosdk 3.0.0 or later (peer dependency) -- Node.js >= 20 +- Node.js >= 22 - pnpm 10.20.0 or later ### Installation diff --git a/examples/node-cli/README.md b/examples/node-cli/README.md index 2bb7d26..8ce6231 100644 --- a/examples/node-cli/README.md +++ b/examples/node-cli/README.md @@ -14,7 +14,7 @@ This example demonstrates how to use the Haystack Router SDK in a Node.js comman - **Haystack Router API Key** - A free tier key is included in `.env.example` (60 requests/min). For production rate limits, request a key from [support@txnlab.dev](mailto:support@txnlab.dev). - algosdk 3.0.0 or later (peer dependency) -- Node.js >= 20 +- Node.js >= 22 - pnpm 10.20.0 or later ## Setup diff --git a/examples/node-cli/package.json b/examples/node-cli/package.json index ecd96ab..8eda9e4 100644 --- a/examples/node-cli/package.json +++ b/examples/node-cli/package.json @@ -11,11 +11,11 @@ }, "dependencies": { "@txnlab/haystack-router": "workspace:*", - "algosdk": "^3.5.2", - "dotenv": "^16.4.7" + "algosdk": "^3.8.0", + "dotenv": "^18.0.6" }, "devDependencies": { - "@types/node": "^22", - "typescript": "^5" + "@types/node": "^22.20.5", + "typescript": "^6.0.3" } } diff --git a/examples/node-cli/src/index.ts b/examples/node-cli/src/index.ts index 3c1e5c4..9b482da 100644 --- a/examples/node-cli/src/index.ts +++ b/examples/node-cli/src/index.ts @@ -5,7 +5,7 @@ import algosdk from 'algosdk' import { RouterClient } from '@txnlab/haystack-router' // Load environment variables -config() +config({ quiet: true }) interface SwapConfig { apiKey: string diff --git a/examples/react-query/README.md b/examples/react-query/README.md index 179ca4d..1d07527 100644 --- a/examples/react-query/README.md +++ b/examples/react-query/README.md @@ -8,7 +8,7 @@ A React application demonstrating advanced Haystack Router SDK integration with - **Fresh quotes** - Quotes automatically refetch every 15 seconds - **React Query integration** - Uses `useQuery` for quotes and `useMutation` for swaps - **Multiple wallet support** (Pera, Defly, Lute) -- **Modern wallet UI** with `@txnlab/use-wallet-react` v4 +- **Modern wallet UI** with `@txnlab/use-wallet-react` v5 - **Real-time updates** - No "Get Quote" button needed - **Execute swaps** with slippage protection - **Display quote details** and routing information @@ -16,7 +16,7 @@ A React application demonstrating advanced Haystack Router SDK integration with ## Prerequisites - **Haystack Router API Key** - A free tier key is included in `.env.example` (60 requests/min). For production rate limits, request a key from [support@txnlab.dev](mailto:support@txnlab.dev). -- Node.js >= 20 +- Node.js >= 22 - pnpm 10.20.0 or later ## Setup @@ -127,16 +127,17 @@ const swapMutation = useMutation({ The example is configured with multiple wallet providers in [src/main.tsx](./src/main.tsx): ```typescript +import { defly } from '@txnlab/use-wallet-defly' +import { pera } from '@txnlab/use-wallet-pera' +import { lute } from '@galaxypay/use-wallet-lute' + const walletManager = new WalletManager({ - wallets: [WalletId.DEFLY, WalletId.PERA, WalletId.LUTE], + wallets: [defly(), pera(), lute()], defaultNetwork: 'mainnet', - options: { - resetNetwork: true, - }, }); ``` -You can customize which wallets are available by modifying this configuration. +Each wallet comes from its own adapter package. To change which wallets are available, add or remove adapter packages and update this list. ## Notes diff --git a/examples/react-query/package.json b/examples/react-query/package.json index df55e05..e01b234 100644 --- a/examples/react-query/package.json +++ b/examples/react-query/package.json @@ -8,22 +8,22 @@ "preview": "vite preview" }, "dependencies": { - "@blockshake/defly-connect": "^1.2.1", - "@perawallet/connect": "^1.4.2", - "@tanstack/react-query": "^5.62.14", + "@galaxypay/use-wallet-lute": "^1.0.0", + "@tanstack/react-query": "^5.104.1", "@txnlab/haystack-router": "workspace:*", - "@txnlab/use-wallet-react": "^4.3.1", - "algosdk": "^3.5.2", - "lute-connect": "^1.6.3", - "react": "^18.3.1", - "react-dom": "^18.3.1" + "@txnlab/use-wallet-defly": "^5.0.1", + "@txnlab/use-wallet-pera": "^5.0.1", + "@txnlab/use-wallet-react": "^5.0.1", + "algosdk": "^3.8.0", + "react": "^19.3.0", + "react-dom": "^19.3.0" }, "devDependencies": { - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", - "typescript": "~5.6.2", - "vite": "^6.0.5", - "vite-plugin-node-polyfills": "^0.24.0" + "@types/react": "^19.3.0", + "@types/react-dom": "^19.3.0", + "@vitejs/plugin-react": "^6.1.2", + "typescript": "~6.0.3", + "vite": "^8.3.3", + "vite-plugin-node-polyfills": "^0.28.0" } } diff --git a/examples/react-query/src/main.tsx b/examples/react-query/src/main.tsx index 22e8fe1..49fc56d 100644 --- a/examples/react-query/src/main.tsx +++ b/examples/react-query/src/main.tsx @@ -1,20 +1,16 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' -import { - WalletId, - WalletManager, - WalletProvider, -} from '@txnlab/use-wallet-react' +import { WalletManager, WalletProvider } from '@txnlab/use-wallet-react' +import { defly } from '@txnlab/use-wallet-defly' +import { pera } from '@txnlab/use-wallet-pera' +import { lute } from '@galaxypay/use-wallet-lute' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import App from './App' import './index.css' const walletManager = new WalletManager({ - wallets: [WalletId.DEFLY, WalletId.PERA, WalletId.LUTE], + wallets: [defly(), pera(), lute()], defaultNetwork: 'mainnet', - options: { - resetNetwork: true, - }, }) const queryClient = new QueryClient() diff --git a/examples/react/README.md b/examples/react/README.md index 243af11..bd8ccd8 100644 --- a/examples/react/README.md +++ b/examples/react/README.md @@ -5,7 +5,7 @@ A simple React application demonstrating basic Haystack Router SDK integration w ## Features - Multiple wallet support (Pera, Defly, Lute) -- Modern wallet UI with `@txnlab/use-wallet-react` v4 +- Modern wallet UI with `@txnlab/use-wallet-react` v5 - Get swap quotes from Haystack Router API - Execute swaps with slippage protection - Display quote details and routing information @@ -13,7 +13,7 @@ A simple React application demonstrating basic Haystack Router SDK integration w ## Prerequisites - **Haystack Router API Key** - A free tier key is included in `.env.example` (60 requests/min). For production rate limits, request a key from [support@txnlab.dev](mailto:support@txnlab.dev). -- Node.js >= 20 +- Node.js >= 22 - pnpm 10.20.0 or later ## Setup @@ -72,16 +72,17 @@ pnpm preview The example is configured with multiple wallet providers in [src/main.tsx](./src/main.tsx): ```typescript +import { defly } from '@txnlab/use-wallet-defly' +import { pera } from '@txnlab/use-wallet-pera' +import { lute } from '@galaxypay/use-wallet-lute' + const walletManager = new WalletManager({ - wallets: [WalletId.DEFLY, WalletId.PERA, WalletId.LUTE], + wallets: [defly(), pera(), lute()], defaultNetwork: 'mainnet', - options: { - resetNetwork: true, - }, }); ``` -You can customize which wallets are available by modifying this configuration. +Each wallet comes from its own adapter package. To change which wallets are available, add or remove adapter packages and update this list. ## Notes diff --git a/examples/react/package.json b/examples/react/package.json index d0df518..63312d9 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -8,21 +8,21 @@ "preview": "vite preview" }, "dependencies": { - "@blockshake/defly-connect": "^1.2.1", - "@perawallet/connect": "^1.4.2", + "@galaxypay/use-wallet-lute": "^1.0.0", "@txnlab/haystack-router": "workspace:*", - "@txnlab/use-wallet-react": "^4.3.1", - "algosdk": "^3.5.2", - "lute-connect": "^1.6.3", - "react": "^18.3.1", - "react-dom": "^18.3.1" + "@txnlab/use-wallet-defly": "^5.0.1", + "@txnlab/use-wallet-pera": "^5.0.1", + "@txnlab/use-wallet-react": "^5.0.1", + "algosdk": "^3.8.0", + "react": "^19.3.0", + "react-dom": "^19.3.0" }, "devDependencies": { - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", - "typescript": "~5.6.2", - "vite": "^6.0.5", - "vite-plugin-node-polyfills": "^0.24.0" + "@types/react": "^19.3.0", + "@types/react-dom": "^19.3.0", + "@vitejs/plugin-react": "^6.1.2", + "typescript": "~6.0.3", + "vite": "^8.3.3", + "vite-plugin-node-polyfills": "^0.28.0" } } diff --git a/examples/react/src/main.tsx b/examples/react/src/main.tsx index a56b756..138ef59 100644 --- a/examples/react/src/main.tsx +++ b/examples/react/src/main.tsx @@ -1,19 +1,15 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' -import { - WalletId, - WalletManager, - WalletProvider, -} from '@txnlab/use-wallet-react' +import { WalletManager, WalletProvider } from '@txnlab/use-wallet-react' +import { defly } from '@txnlab/use-wallet-defly' +import { pera } from '@txnlab/use-wallet-pera' +import { lute } from '@galaxypay/use-wallet-lute' import App from './App' import './index.css' const walletManager = new WalletManager({ - wallets: [WalletId.DEFLY, WalletId.PERA, WalletId.LUTE], + wallets: [defly(), pera(), lute()], defaultNetwork: 'mainnet', - options: { - resetNetwork: true, - }, }) const rootElement = document.getElementById('root') diff --git a/package.json b/package.json index d3a6482..9e55e08 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "type": "module", "packageManager": "pnpm@10.34.6", "engines": { - "node": ">=20" + "node": "^22.22.2 || >=24.15" }, "scripts": { "build": "pnpm --filter @txnlab/haystack-router run build", @@ -26,16 +26,16 @@ "release": "pnpm run ci && semantic-release" }, "devDependencies": { - "@eslint/js": "9.39.4", - "@semantic-release/changelog": "6.0.3", + "@eslint/js": "10.0.1", + "@semantic-release/changelog": "7.0.0", "@semantic-release/exec": "7.1.0", - "@semantic-release/git": "10.0.1", - "eslint": "9.39.4", + "@semantic-release/git": "11.0.1", + "eslint": "10.12.0", "eslint-config-prettier": "10.1.8", - "eslint-plugin-import-x": "4.16.2", - "prettier": "3.8.3", - "semantic-release": "25.0.3", - "typescript-eslint": "8.60.1" + "eslint-plugin-import-x": "4.17.1", + "prettier": "3.9.9", + "semantic-release": "25.0.9", + "typescript-eslint": "8.71.1" }, "pnpm": { "onlyBuiltDependencies": [ diff --git a/packages/haystack/package.json b/packages/haystack/package.json index 181c576..3394c3c 100644 --- a/packages/haystack/package.json +++ b/packages/haystack/package.json @@ -44,7 +44,7 @@ "provenance": true }, "engines": { - "node": ">=20" + "node": ">=22" }, "packageManager": "pnpm@10.34.6", "scripts": { @@ -55,13 +55,13 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { - "@types/node": "22.19.20", - "@vitest/coverage-v8": "4.1.8", - "algosdk": "3.5.2", - "publint": "0.3.21", - "tsdown": "0.22.2", - "typescript": "5.9.3", - "vitest": "4.1.11" + "@types/node": "22.20.5", + "@vitest/coverage-v8": "5.0.3", + "algosdk": "3.8.0", + "publint": "0.3.25", + "tsdown": "0.23.0", + "typescript": "6.0.3", + "vitest": "5.0.3" }, "peerDependencies": { "algosdk": "^3.0.0" diff --git a/packages/haystack/src/composer.ts b/packages/haystack/src/composer.ts index 7e0e8f4..a66fca6 100644 --- a/packages/haystack/src/composer.ts +++ b/packages/haystack/src/composer.ts @@ -653,6 +653,7 @@ export class SwapComposer { } catch (error) { throw new Error( `Failed to process swap transaction at index ${i}: ${error instanceof Error ? error.message : String(error)}`, + { cause: error }, ) } } @@ -783,6 +784,7 @@ export class SwapComposer { } catch (error) { throw new Error( `Failed to re-sign transaction: ${error instanceof Error ? error.message : String(error)}`, + { cause: error }, ) } } diff --git a/packages/haystack/tests/client.test.ts b/packages/haystack/tests/client.test.ts index cfda57e..9d59753 100644 --- a/packages/haystack/tests/client.test.ts +++ b/packages/haystack/tests/client.test.ts @@ -761,8 +761,7 @@ describe('RouterClient', () => { expect(mockRequest).toHaveBeenCalledOnce() const [url, options] = mockRequest.mock.calls?.[0] as - | [string, RequestInit] - | [] + [string, RequestInit] | [] expect(url).toContain('fetchExecuteSwapTxns') expect(options?.method).toBe('POST') expect(options?.headers).toEqual({ 'Content-Type': 'application/json' }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86eca31..7280215 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,35 +9,35 @@ importers: .: devDependencies: '@eslint/js': - specifier: 9.39.4 - version: 9.39.4 + specifier: 10.0.1 + version: 10.0.1(eslint@10.12.0(jiti@2.6.1)) '@semantic-release/changelog': - specifier: 6.0.3 - version: 6.0.3(semantic-release@25.0.3(typescript@5.9.3)) + specifier: 7.0.0 + version: 7.0.0(semantic-release@25.0.9(typescript@6.0.3)) '@semantic-release/exec': specifier: 7.1.0 - version: 7.1.0(semantic-release@25.0.3(typescript@5.9.3)) + version: 7.1.0(semantic-release@25.0.9(typescript@6.0.3)) '@semantic-release/git': - specifier: 10.0.1 - version: 10.0.1(semantic-release@25.0.3(typescript@5.9.3)) + specifier: 11.0.1 + version: 11.0.1(semantic-release@25.0.9(typescript@6.0.3)) eslint: - specifier: 9.39.4 - version: 9.39.4(jiti@2.6.1) + specifier: 10.12.0 + version: 10.12.0(jiti@2.6.1) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@9.39.4(jiti@2.6.1)) + version: 10.1.8(eslint@10.12.0(jiti@2.6.1)) eslint-plugin-import-x: - specifier: 4.16.2 - version: 4.16.2(@typescript-eslint/utils@8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + specifier: 4.17.1 + version: 4.17.1(@typescript-eslint/utils@8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.12.0(jiti@2.6.1)) prettier: - specifier: 3.8.3 - version: 3.8.3 + specifier: 3.9.9 + version: 3.9.9 semantic-release: - specifier: 25.0.3 - version: 25.0.3(typescript@5.9.3) + specifier: 25.0.9 + version: 25.0.9(typescript@6.0.3) typescript-eslint: - specifier: 8.60.1 - version: 8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.71.1 + version: 8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3) examples/node-cli: dependencies: @@ -45,256 +45,173 @@ importers: specifier: workspace:* version: link:../../packages/haystack algosdk: - specifier: ^3.5.2 - version: 3.5.2 + specifier: ^3.8.0 + version: 3.8.0 dotenv: - specifier: ^16.4.7 - version: 16.6.1 + specifier: ^18.0.6 + version: 18.0.6 devDependencies: '@types/node': - specifier: ^22 - version: 22.18.13 + specifier: ^22.20.5 + version: 22.20.5 typescript: - specifier: ^5 - version: 5.9.3 + specifier: ^6.0.3 + version: 6.0.3 examples/react: dependencies: - '@blockshake/defly-connect': - specifier: ^1.2.1 - version: 1.2.1(algosdk@3.5.2) - '@perawallet/connect': - specifier: ^1.4.2 - version: 1.4.2(algosdk@3.5.2) + '@galaxypay/use-wallet-lute': + specifier: ^1.0.0 + version: 1.0.0(@txnlab/use-wallet@5.0.1(algosdk@3.8.0))(algosdk@3.8.0) '@txnlab/haystack-router': specifier: workspace:* version: link:../../packages/haystack + '@txnlab/use-wallet-defly': + specifier: ^5.0.1 + version: 5.0.1(@txnlab/use-wallet@5.0.1(algosdk@3.8.0))(algosdk@3.8.0) + '@txnlab/use-wallet-pera': + specifier: ^5.0.1 + version: 5.0.1(@txnlab/use-wallet@5.0.1(algosdk@3.8.0))(algosdk@3.8.0) '@txnlab/use-wallet-react': - specifier: ^4.3.1 - version: 4.3.1(@blockshake/defly-connect@1.2.1(algosdk@3.5.2))(@perawallet/connect@1.4.2(algosdk@3.5.2))(algosdk@3.5.2)(lute-connect@1.6.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^5.0.1 + version: 5.0.1(algosdk@3.8.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) algosdk: - specifier: ^3.5.2 - version: 3.5.2 - lute-connect: - specifier: ^1.6.3 - version: 1.6.3 + specifier: ^3.8.0 + version: 3.8.0 react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.3.0 + version: 19.3.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.3.0 + version: 19.3.0(react@19.3.0) devDependencies: '@types/react': - specifier: ^18.3.12 - version: 18.3.26 + specifier: ^19.3.0 + version: 19.3.0 '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.7(@types/react@18.3.26) + specifier: ^19.3.0 + version: 19.3.0(@types/react@19.3.0) '@vitejs/plugin-react': - specifier: ^4.3.4 - version: 4.7.0(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)) + specifier: ^6.1.2 + version: 6.1.2(vite@8.3.3(@types/node@24.9.1)(jiti@2.6.1)) typescript: - specifier: ~5.6.2 - version: 5.6.3 + specifier: ~6.0.3 + version: 6.0.3 vite: - specifier: ^6.0.5 - version: 6.4.1(@types/node@24.9.1)(jiti@2.6.1) + specifier: ^8.3.3 + version: 8.3.3(@types/node@24.9.1)(jiti@2.6.1) vite-plugin-node-polyfills: - specifier: ^0.24.0 - version: 0.24.0(rollup@4.52.5)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)) + specifier: ^0.28.0 + version: 0.28.0(rollup@4.52.5)(vite@8.3.3(@types/node@24.9.1)(jiti@2.6.1)) examples/react-query: dependencies: - '@blockshake/defly-connect': - specifier: ^1.2.1 - version: 1.2.1(algosdk@3.5.2) - '@perawallet/connect': - specifier: ^1.4.2 - version: 1.4.2(algosdk@3.5.2) + '@galaxypay/use-wallet-lute': + specifier: ^1.0.0 + version: 1.0.0(@txnlab/use-wallet@5.0.1(algosdk@3.8.0))(algosdk@3.8.0) '@tanstack/react-query': - specifier: ^5.62.14 - version: 5.90.5(react@18.3.1) + specifier: ^5.104.1 + version: 5.104.1(react@19.3.0) '@txnlab/haystack-router': specifier: workspace:* version: link:../../packages/haystack + '@txnlab/use-wallet-defly': + specifier: ^5.0.1 + version: 5.0.1(@txnlab/use-wallet@5.0.1(algosdk@3.8.0))(algosdk@3.8.0) + '@txnlab/use-wallet-pera': + specifier: ^5.0.1 + version: 5.0.1(@txnlab/use-wallet@5.0.1(algosdk@3.8.0))(algosdk@3.8.0) '@txnlab/use-wallet-react': - specifier: ^4.3.1 - version: 4.3.1(@blockshake/defly-connect@1.2.1(algosdk@3.5.2))(@perawallet/connect@1.4.2(algosdk@3.5.2))(algosdk@3.5.2)(lute-connect@1.6.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^5.0.1 + version: 5.0.1(algosdk@3.8.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) algosdk: - specifier: ^3.5.2 - version: 3.5.2 - lute-connect: - specifier: ^1.6.3 - version: 1.6.3 + specifier: ^3.8.0 + version: 3.8.0 react: - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^19.3.0 + version: 19.3.0 react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) + specifier: ^19.3.0 + version: 19.3.0(react@19.3.0) devDependencies: '@types/react': - specifier: ^18.3.12 - version: 18.3.26 + specifier: ^19.3.0 + version: 19.3.0 '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.7(@types/react@18.3.26) + specifier: ^19.3.0 + version: 19.3.0(@types/react@19.3.0) '@vitejs/plugin-react': - specifier: ^4.3.4 - version: 4.7.0(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)) + specifier: ^6.1.2 + version: 6.1.2(vite@8.3.3(@types/node@24.9.1)(jiti@2.6.1)) typescript: - specifier: ~5.6.2 - version: 5.6.3 + specifier: ~6.0.3 + version: 6.0.3 vite: - specifier: ^6.0.5 - version: 6.4.1(@types/node@24.9.1)(jiti@2.6.1) + specifier: ^8.3.3 + version: 8.3.3(@types/node@24.9.1)(jiti@2.6.1) vite-plugin-node-polyfills: - specifier: ^0.24.0 - version: 0.24.0(rollup@4.52.5)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)) + specifier: ^0.28.0 + version: 0.28.0(rollup@4.52.5)(vite@8.3.3(@types/node@24.9.1)(jiti@2.6.1)) packages/haystack: devDependencies: '@types/node': - specifier: 22.19.20 - version: 22.19.20 + specifier: 22.20.5 + version: 22.20.5 '@vitest/coverage-v8': - specifier: 4.1.8 - version: 4.1.8(vitest@4.1.11) + specifier: 5.0.3 + version: 5.0.3(vitest@5.0.3) algosdk: - specifier: 3.5.2 - version: 3.5.2 + specifier: 3.8.0 + version: 3.8.0 publint: - specifier: 0.3.21 - version: 0.3.21 + specifier: 0.3.25 + version: 0.3.25 tsdown: - specifier: 0.22.2 - version: 0.22.2(publint@0.3.21)(typescript@5.9.3)(unrun@0.2.37) + specifier: 0.23.0 + version: 0.23.0(publint@0.3.25)(typescript@6.0.3)(unrun@0.2.37) typescript: - specifier: 5.9.3 - version: 5.9.3 + specifier: 6.0.3 + version: 6.0.3 vitest: - specifier: 4.1.11 - version: 4.1.11(@types/node@22.19.20)(@vitest/coverage-v8@4.1.8)(vite@6.4.1(@types/node@22.19.20)(jiti@2.6.1)) + specifier: 5.0.3 + version: 5.0.3(@types/node@22.20.5)(@vitest/coverage-v8@5.0.3)(vite@8.3.3(@types/node@22.20.5)(jiti@2.6.1)) packages: - '@actions/core@1.11.1': - resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} - - '@actions/exec@1.1.1': - resolution: {integrity: sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==} - - '@actions/http-client@2.2.3': - resolution: {integrity: sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==} - - '@actions/io@1.1.3': - resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.28.5': - resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} - engines: {node: '>=6.9.0'} - - '@babel/generator@8.0.0-rc.6': - resolution: {integrity: sha512-6mIzgVK8DgEzvIapoQwhXTMnnkuE4STQmVv9H03i/tZ2ml8oev3TRvZJgTenK2Bsq0YWNtzOrFdTyNzCMFtjJQ==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} - engines: {node: '>=6.9.0'} + '@actions/core@3.0.1': + resolution: {integrity: sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==} - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} + '@actions/exec@3.0.0': + resolution: {integrity: sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} + '@actions/http-client@4.0.1': + resolution: {integrity: sha512-+Nvd1ImaOZBSoPbsUtEhv+1z99H12xzncCkz0a3RuehINE81FZSe2QTj3uvAPTcJX/SCzUQHQ0D1GrPMbrPitg==} - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@actions/io@3.0.2': + resolution: {integrity: sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==} - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@8.0.0-rc.6': - resolution: {integrity: sha512-BCkFy+zN6kXQed3YOT7aJl93NfDSzQc3pBfsvTVPs9gU9X3V0aefEF5kwBT0E+mDWH9QgKaZstYUQN9VdQZT4g==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@8.0.0-rc.6': - resolution: {integrity: sha512-nVJ+1JcCgntv8d78rRo++o2wuODT0Irknx2BF8Np4Ft2CRgjLqIs4qzSZ8b66yGbBdMWGmZBO9WEZv1hhNiSpg==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@8.0.0-rc.6': - resolution: {integrity: sha512-rOS8IpdO7mQELkTPlCsTgPejO0bFuZdEDCGQJouYbYf9e1FLTym7Fei2pEjq8q7MWbX0ravcd7QQYKs1TxOuog==} - engines: {node: ^22.18.0 || >=24.11.0} - hasBin: true - - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} - - '@babel/types@8.0.0-rc.6': - resolution: {integrity: sha512-p7/ABylAYlexb31wtRdIfH9L9A0Z2T/9H6zAqzqndkY2PLkvNNc580wGhp/gGKN4Sp9sQvSkhc6Oga8/O+wTyw==} - engines: {node: ^22.18.0 || >=24.11.0} - '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -304,6 +221,12 @@ packages: peerDependencies: algosdk: ^3.0.0 + '@cacheable/memory@2.2.0': + resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==} + + '@cacheable/utils@2.5.0': + resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -317,164 +240,8 @@ packages: '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -483,47 +250,58 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.2': - resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.7.0': + resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/eslintrc@3.3.5': - resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/js@9.39.4': - resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.7.3': + resolution: {integrity: sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@evanhahn/lottie-web-light@5.8.1': resolution: {integrity: sha512-U0G1tt3/UEYnyCNNslWPi1dB7X1xQ9aoSip+B3GTKO/Bns8yz/p39vBkRSN9d25nkbHuCsbjky2coQftj5YVKw==} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} + '@galaxypay/lute-connect@3.0.1': + resolution: {integrity: sha512-a65433V13EQIV0eHpCcgFbOgs4Tp+zsRDhMFn5it0oTi1XfG2ld/SsRr0n0aLWTnaXNyOWQ7931bbd41a4Vo9w==} - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + '@galaxypay/use-wallet-lute@1.0.0': + resolution: {integrity: sha512-NCDGkyV9kglpVrksZg5QbLM8ZLeX5O+38WE6CDkl6K1wjXD9IUg5dC2w0e247RujdojiHTeU0yHjh/3Nd+01Nw==} + engines: {node: '>=22'} + peerDependencies: + '@txnlab/use-wallet': ^5.0.0 + algosdk: ^3.0.0 + + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.7': - resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': @@ -534,103 +312,119 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@likecoin/qr-code-styling@1.6.6': resolution: {integrity: sha512-RbGK/+20bJhFZR70r8MeDvfyz3W7U5zXpykSTYOYxZGyo6wC+Y4QnbUpL+YdAtzT2ZIFeCNOcRs2W2FNrKPoaA==} - '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - - '@napi-rs/wasm-runtime@1.1.4': - resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + '@napi-rs/wasm-runtime@1.2.5': + resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 '@noble/ciphers@1.2.0': resolution: {integrity: sha512-YGdEUzYEd+82jeaVbSKKVp1jFZb8LwaNMIIzHFkihGvYdd/KKAr7KaJHdEdSYGredE3ssSravXIa0Jxg28Sv5w==} engines: {node: ^14.21.3 || >=16} + '@noble/ciphers@2.4.0': + resolution: {integrity: sha512-AnjFn0Jv92laAkvMrghlFZq4qQCIN/4DxFV/eooqtC2YTjB7kBeLMS2T9KJX4Dn+ZVXLOwK0lSgqDtx9gvxtiw==} + engines: {node: '>= 20.19.0'} + '@noble/hashes@1.7.0': resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==} engines: {node: ^14.21.3 || >=16} + '@noble/hashes@2.4.0': + resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} + engines: {node: '>= 20.19.0'} + '@octokit/auth-token@6.0.0': resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} engines: {node: '>= 20'} - '@octokit/core@7.0.5': - resolution: {integrity: sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q==} + '@octokit/core@7.0.8': + resolution: {integrity: sha512-L7y8eYc+AwxGr2PWI4WFt1VG4TiJ66c26BD16mXpYIlXxG0SMigM1+m4aTSlYyBr5BlQsGAlz8uDCoZN4SEMcg==} engines: {node: '>= 20'} - '@octokit/endpoint@11.0.1': - resolution: {integrity: sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA==} + '@octokit/endpoint@11.0.5': + resolution: {integrity: sha512-iXa654H3yFafF/ieHkukfbgWo2rmXD2ceD0ZOtrPhw1bc3FDch1d9N/TNs0FQ1/cIbwb7kspUX8jzIs8nzb9DQ==} engines: {node: '>= 20'} - '@octokit/graphql@9.0.2': - resolution: {integrity: sha512-iz6KzZ7u95Fzy9Nt2L8cG88lGRMr/qy1Q36ih/XVzMIlPDMYwaNLE/ENhqmIzgPrlNWiYJkwmveEetvxAgFBJw==} + '@octokit/graphql@9.0.5': + resolution: {integrity: sha512-bt/hm03LeU6Vy7FwTrkkC9p3XGT/lBwClglMqxBSe5/q0E5CdJTXeAqEI0vlw89/LF/G6tryTIH8HirZ3prMVg==} engines: {node: '>= 20'} - '@octokit/openapi-types@26.0.0': - resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==} + '@octokit/openapi-types@28.0.0': + resolution: {integrity: sha512-0rFyLuyHvIj6uuZWuDslxkowFYdPXoNIkeAv4b27dzm2Tf4vGWXnPsMcxs7d65kLdMERgP3wc1AEPlqMz8e1cQ==} + + '@octokit/openapi-types@29.0.1': + resolution: {integrity: sha512-9qWOMFNxxLokERcms42rU0PTLqQmVs7g5E41TI4mCOxmpFayD1rfC7XxOL55cG9MBZLFlC31BrR37myMKardwg==} - '@octokit/plugin-paginate-rest@13.2.1': - resolution: {integrity: sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==} + '@octokit/plugin-paginate-rest@15.0.0': + resolution: {integrity: sha512-lw9A9YL5s4VPj+VEx8uMxaxQm2YTgrPDkrLEuZuu18R8TK3oPcXF4K6t52nx6xn1RcogZC9i188sAr/4XYJaQQ==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-retry@8.0.2': - resolution: {integrity: sha512-mVPCe77iaD8g1lIX46n9bHPUirFLzc3BfIzsZOpB7bcQh1ecS63YsAgcsyMGqvGa2ARQWKEFTrhMJX2MLJVHVw==} + '@octokit/plugin-retry@8.1.1': + resolution: {integrity: sha512-VCVvZ/R1+u3WuiBWpNavZ0mY4aaJNAsENrpBP9aLSR2QyOpQgd7DhM5j4AW7z4MQpnJYgwBPf0XqPQoNBRdQwg==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=7' - '@octokit/plugin-throttling@11.0.2': - resolution: {integrity: sha512-ntNIig4zZhQVOZF4fG9Wt8QCoz9ehb+xnlUwp74Ic2ANChCk8oKmRwV9zDDCtrvU1aERIOvtng8wsalEX7Jk5Q==} + '@octokit/plugin-throttling@11.0.5': + resolution: {integrity: sha512-LIdrkrUv+DWbKeg/49rGuFJ3SU0d3hUS+B4MhNZLepBoNUFXms8Ic9edJjrlx+zycqJHjrMRudVpVb/bAXM2Lw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': ^7.0.0 - '@octokit/request-error@7.0.1': - resolution: {integrity: sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA==} + '@octokit/request-error@7.1.2': + resolution: {integrity: sha512-XZRuT3xZ84D3gYErI1DZvhJ33dCWVV6uzBtWkaBB4TvA/L6eOeTZodxLFVB44bBEEo3vEx7y00UfX1tBLrtLRg==} engines: {node: '>= 20'} - '@octokit/request@10.0.5': - resolution: {integrity: sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ==} + '@octokit/request@10.0.16': + resolution: {integrity: sha512-A0zWGjHzISIb+9ccG8s0dq7LKO5zVpJLRICjgUb+sJxEWqn8RUHB1rD3AE51+PECvXHIxqZ1VVvs4fHTSD9nUQ==} engines: {node: '>= 20'} - '@octokit/types@15.0.2': - resolution: {integrity: sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==} + '@octokit/types@17.0.0': + resolution: {integrity: sha512-ByP1v7YL5SMveFPP7+sj0/ZuWCOOg/Chs4NafOMpq6WNIM/hdGY0S7C0TCGDBWu1aGmOxmUIhMx3cO+IdwYZ1Q==} + + '@octokit/types@18.0.0': + resolution: {integrity: sha512-l6bAF43PNxkJp6g+W4PjoUSSkxHomXw2nOum5CTftJz1NlV3vu93NImgOYtLf6CbBUb5j+fiuzW0PPQ5JTSvZA==} '@oxc-project/types@0.127.0': resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} - '@oxc-project/types@0.134.0': - resolution: {integrity: sha512-T0xuRRKrQFmocH8y+jGfpmSkGcheaJExY9lEihmR1Gm2aH+75B8CzgU2rABRQSzzDxLjZ15Sc0bRVLj5lVeNXQ==} + '@oxc-project/types@0.153.0': + resolution: {integrity: sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==} - '@package-json/types@0.0.12': - resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} - - '@perawallet/connect@1.4.2': - resolution: {integrity: sha512-LCdaWMm1PerIxnBWTkPVEfEbEJ+onfIfDK80+Nj//Rce//tLFzGU7kAxSU7Al70hrD1AvnYyXm2svFbsUzOa7w==} + '@perawallet/connect@1.6.1': + resolution: {integrity: sha512-i+jMigz1CI0HflpkfMOlGakG4CUJkn6FY5kPu/iJnGM+SlGsxsK1sYDjy21V/TeVmfiMTzMSh3tT4Doy08C00g==} peerDependencies: - algosdk: ^3.0.0 + algosdk: ^3.5.2 + + '@perawallet/walletconnect@1.0.2': + resolution: {integrity: sha512-HJoN0XvnAhAXYNu0UV0FVDmYxzPEB4YWvwQ0o/JIdZFqFOdM7rZ+zlZq/+wdTICkxrLe35i1Zol59ycN3LKcvg==} + engines: {node: '>=22'} '@pnpm/config.env-replace@1.1.0': resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -640,16 +434,22 @@ packages: resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} - '@pnpm/npm-conf@2.3.1': - resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + '@pnpm/npm-conf@3.0.3': + resolution: {integrity: sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==} engines: {node: '>=12'} - '@publint/pack@0.1.4': - resolution: {integrity: sha512-HDVTWq3H0uTXiU0eeSQntcVUTPP3GamzeXI41+x7uU9J65JgWQh3qWZHblR1i0npXfFtF+mxBiU2nJH8znxWnQ==} + '@publint/pack@0.1.7': + resolution: {integrity: sha512-4EDEmvxWtgsCnnVeBvtFIFZtUhPPt1+bA9JrSwU4Sa//6oKtzCSlGGXYJr44OD9aGISymbieJ4mCKHUygUDU+g==} engines: {node: '>=18'} - '@quansync/fs@1.0.0': - resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + '@quansync/fs@1.1.0': + resolution: {integrity: sha512-qAPG/t3HqML1TlN7sY/pTbEjzFVAKsMjNNMGheyDosro+kT4iw2KCUoHcVdmliwWjorm4elZbgNQyU2eD97eDg==} + + '@rolldown/binding-android-arm-eabi@1.2.13': + resolution: {integrity: sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] '@rolldown/binding-android-arm64@1.0.0-rc.17': resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} @@ -657,8 +457,8 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.1.0': - resolution: {integrity: sha512-gCYzGOSkYY6Z034suzd20euvds7lPzMEEla62DJGE/ZAlR4OMBnNbvnBSsIGUCAr52gaWMsloGxP4tVGtN5aCA==} + '@rolldown/binding-android-arm64@1.2.13': + resolution: {integrity: sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -669,8 +469,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.1.0': - resolution: {integrity: sha512-JQBD77MNgu+4Z6RAyg69acugdrhhVoWesr3l47zohYZ2YV2fwkWMArkN/2p4l6Ei+Sno7W5q+UsKdVWq5Ens0w==} + '@rolldown/binding-darwin-arm64@1.2.13': + resolution: {integrity: sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -681,8 +481,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.0': - resolution: {integrity: sha512-p/8cXUTK4Sob604e+xxPhVSbDFf29E6J0l/xESM9rdCfn3aDai3nEs6TnMHUsdD5aNlFz0+gDbiGlozLKGa2YA==} + '@rolldown/binding-darwin-x64@1.2.13': + resolution: {integrity: sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -693,8 +493,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.1.0': - resolution: {integrity: sha512-KbtOSlVv6fElujiZWMcC3aQYhEwLVVf073RcwlSmpGQvIsKZFUqc0ef4sjUuurRwfbiI6JJXji9DQn+86hawmQ==} + '@rolldown/binding-freebsd-x64@1.2.13': + resolution: {integrity: sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -705,8 +505,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.1.0': - resolution: {integrity: sha512-9fZ9i0o0/MQaw7om6Z6TsT7tfCk0jtbEFtC+aPqZL5RNsGWNcHvn6EHgL3dAprjq+AZzPTAQjg2JtpJaMt+6pg==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': + resolution: {integrity: sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -718,8 +518,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.1.0': - resolution: {integrity: sha512-+tog7T66i+yFyIuuAnjL6xmW182W/qTBOUt6BtQ6lBIM1Eikh/fSMz4HGgvuCp5uU0zuIVWng7kDYthjCMOHcg==} + '@rolldown/binding-linux-arm64-gnu@1.2.13': + resolution: {integrity: sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -732,8 +532,8 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.1.0': - resolution: {integrity: sha512-4b7yruLIIj/oZ3GpcLOvxcLCLDMraohn3IhQfN2hBP4w9UekG0DTIajWguJosRGfySf/+h/NwRUiMKoCpxCrqQ==} + '@rolldown/binding-linux-arm64-musl@1.2.13': + resolution: {integrity: sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -746,8 +546,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-ppc64-gnu@1.1.0': - resolution: {integrity: sha512-QRDOVZd0bhQ5jLsUsCC3dUxDWdTSVY9WMznowZgCGOrZfLLgctWpelhUASEiBwsXfat/JwYnVd1EaxMhqyT+UQ==} + '@rolldown/binding-linux-ppc64-gnu@1.2.13': + resolution: {integrity: sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] @@ -760,8 +560,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.1.0': - resolution: {integrity: sha512-ypxT+Hq76NFG7woFbNbySnGEajFuYuIXeKz/jfCU+lXUoxfi3zLE6OG/ZQNeK3RpZSYJlAe2bokpsQ046CaieQ==} + '@rolldown/binding-linux-s390x-gnu@1.2.13': + resolution: {integrity: sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -774,8 +574,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.1.0': - resolution: {integrity: sha512-IdovCmfROFmpTLahdecTDFL74aLERVYN68F/mLZjfVh6LfoplPfI6deyHNMTcVujbokDV5k05XrFO22zfv+qjg==} + '@rolldown/binding-linux-x64-gnu@1.2.13': + resolution: {integrity: sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -788,8 +588,8 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-musl@1.1.0': - resolution: {integrity: sha512-pcA8xlFp2tyk9T2R6Fi/rPe3bQ1MA+sSMDNUU5Ogu80GHOatkE4P8YCreGAvZErm5Ho2YRXnyvNrWiRncfVysQ==} + '@rolldown/binding-linux-x64-musl@1.2.13': + resolution: {integrity: sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -801,8 +601,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.1.0': - resolution: {integrity: sha512-4+fexHayrLCWpriPh4c6dNvL4an34DEZCG7zOM/FD5QNF6h8DT+bDXzyB/kfC8lDJbaFb7jKShtnjDQFXVQEjg==} + '@rolldown/binding-openharmony-arm64@1.2.13': + resolution: {integrity: sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -812,19 +612,14 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.1.0': - resolution: {integrity: sha512-SbL++MNmOw6QamrwIGDMSSfM4ceTzFr+RjbOExJSLLBinScU4WI5OdA413h1qwPw2yH7lVF1+H4svQ+6mSXKTQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.1.0': - resolution: {integrity: sha512-+xTE6XC7wBgk0VKRXGG+QAnyW5S9b8vfsFpiMjf0waQTmSQSU8onsH/beyZ8X4aXVveJnotiy7VDjLOaW8bTrg==} + '@rolldown/binding-win32-arm64-msvc@1.2.13': + resolution: {integrity: sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -835,21 +630,18 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.0': - resolution: {integrity: sha512-Ogji1TQNqH3ACLnYr+1Ns1nyrJ0CO2P585u9Hsh02pXvtFiFpgtgT2b3P4PnCOU86VVCvqtAeCN4OftMT8KU4w==} + '@rolldown/binding-win32-x64-msvc@1.2.13': + resolution: {integrity: sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0': - resolution: {integrity: sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==} - - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rolldown/pluginutils@1.0.0-rc.17': resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@rollup/plugin-inject@5.0.5': resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} @@ -859,8 +651,8 @@ packages: rollup: optional: true - '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + '@rollup/pluginutils@5.4.0': + resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -992,11 +784,11 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@semantic-release/changelog@6.0.3': - resolution: {integrity: sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==} - engines: {node: '>=14.17'} + '@semantic-release/changelog@7.0.0': + resolution: {integrity: sha512-TNPyag5db24o7jWjre7UwKB4EcL8oJxbRhnDQ7hmZRAYqzreAc6PgdxQuU3pppp5xQinYtiumL0iG8SSKvnlzg==} + engines: {node: ^22.22.2 || >=24.15} peerDependencies: - semantic-release: '>=18.0.0' + semantic-release: '>=20.1.0' '@semantic-release/commit-analyzer@13.0.1': resolution: {integrity: sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==} @@ -1004,10 +796,6 @@ packages: peerDependencies: semantic-release: '>=20.1.0' - '@semantic-release/error@3.0.0': - resolution: {integrity: sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==} - engines: {node: '>=14.17'} - '@semantic-release/error@4.0.0': resolution: {integrity: sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==} engines: {node: '>=18'} @@ -1018,30 +806,34 @@ packages: peerDependencies: semantic-release: '>=24.1.0' - '@semantic-release/git@10.0.1': - resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} - engines: {node: '>=14.17'} + '@semantic-release/git@11.0.1': + resolution: {integrity: sha512-Zr8BUYCTZMc8V6wDKN2dpR7nJgewd9I6THL3ydLTnp3OEdTo1/4RBLNYaeRucYMsjMv+BXoCNfXA0NADj1kwhw==} + engines: {node: ^22.22.2 || >=24.15} peerDependencies: - semantic-release: '>=18.0.0' + semantic-release: '>=20.1.0' - '@semantic-release/github@12.0.0': - resolution: {integrity: sha512-louWFjzZ+1dogfJTY8IuJuBcBUOTliYhBUYNcomnTfj0i959wtRQbr1POgdCoTHK7ut4N/0LNlYTH8SvSJM3hg==} + '@semantic-release/github@12.0.10': + resolution: {integrity: sha512-QskygvpX8hFx9UEbqJ+C46OIhaJjsysNQ8PYJPuRDc/ek5+dh8WYGD1ofUahCcGLAOmnnwZTcmCJCEXM8XxhRw==} engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=24.1.0' - '@semantic-release/npm@13.1.1': - resolution: {integrity: sha512-c4tlp3STYaTYORmMcLjiTaI8SLoxJ0Uf7IXkem8EyihuOM624wnaGuH4OuY2HHcsHDerNAQNzZ8VO6d4PMHSzA==} + '@semantic-release/npm@13.2.0': + resolution: {integrity: sha512-Uz4JGafLoEGiheLKEs1orockCWP6liY9D2YnvKHYbqo9hCHAw9fuAHcU53q29SXVCtkvDhs/QVUg7Vvuyfp4Jg==} engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=20.1.0' - '@semantic-release/release-notes-generator@14.1.0': - resolution: {integrity: sha512-CcyDRk7xq+ON/20YNR+1I/jP7BYKICr1uKd1HHpROSnnTdGqOTburi4jcRiTYz0cpfhxSloQO3cGhnoot7IEkA==} + '@semantic-release/release-notes-generator@14.1.1': + resolution: {integrity: sha512-Pbd2e2XRMUD0OxehHpgd5/YghsE76cddkRHSoDvKLK+OCy4Ewxn49rWR631MEUU01lgwF/uyVXvbnVuu6+Z6VA==} engines: {node: '>=20.8.1'} peerDependencies: semantic-release: '>=20.1.0' + '@simple-libs/stream-utils@1.2.0': + resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} + engines: {node: '>=18'} + '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -1050,114 +842,74 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - - '@tanstack/query-core@5.90.5': - resolution: {integrity: sha512-wLamYp7FaDq6ZnNehypKI5fNvxHPfTYylE0m/ZpuuzJfJqhR5Pxg9gvGBHZx4n7J+V5Rg5mZxHHTlv25Zt5u+w==} + '@tanstack/query-core@5.104.1': + resolution: {integrity: sha512-TiRghcrGkUTE+M4JBxvpPSpBhxvIzQairw+cksrHYGr+2uwC77yW1SY9nYxnYRYOppvucf8rEg6b5byoz4rTpw==} - '@tanstack/react-query@5.90.5': - resolution: {integrity: sha512-pN+8UWpxZkEJ/Rnnj2v2Sxpx1WFlaa9L6a4UO89p6tTQbeo+m0MS8oYDjbggrR8QcTyjKoYWKS3xJQGr3ExT8Q==} + '@tanstack/react-query@5.104.1': + resolution: {integrity: sha512-Zz70EgjahNI7aCz8BZxM3vUGU44ycxEAzMuCUjLeA7SVhhOkg3ZgPjPJPvHjs6Rmky/dtmnu1WzjGHNHmhCoZQ==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-store@0.7.3': - resolution: {integrity: sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==} + '@tanstack/react-store@0.11.1': + resolution: {integrity: sha512-HaIGKI3YLmjBYIvy5DFDY23oNaYZIsTZfngey07Uh5iLVJgM3bIGCnZeOFOqzjFld9JHWcaHJnasD/bKoGKwJQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/store@0.7.2': - resolution: {integrity: sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==} + '@tanstack/store@0.11.1': + resolution: {integrity: sha512-mzTOBhypOuDJAy/D8n2MfUZ1HFkXnmSETviRyhqEC8LUE7/IZQExOTxMANj3KjTofYTkFNpBY67qaVrT41YccA==} - '@txnlab/use-wallet-react@4.3.1': - resolution: {integrity: sha512-Gmj1qBNykx2HbFS4FzzqCa8uWI4UkdYw2mk6a+62AVoKU2/hvPe9K6DvdDrc883dJoRSK0xPtSGjJ6lKxT1bCQ==} + '@txnlab/use-wallet-defly@5.0.1': + resolution: {integrity: sha512-1iiJZ6u6i5wWZsLKrReAvrhWZnBpT5R9VgZjDTtAidPmFX51dfNB8Jbqp9EjRuTaJMjRgHIuUo3V7uuj48LUgQ==} + engines: {node: '>=22'} + peerDependencies: + '@txnlab/use-wallet': ^5.0.0 + algosdk: ^3.0.0 + + '@txnlab/use-wallet-pera@5.0.1': + resolution: {integrity: sha512-YrUCj8ByviY60BqNF7kysif54A6+yQ3TBOgg+q6XT3HtfenrHiXaaxU/Lwo3sT9PAlvA5u0BTS/GZKco5mZ94Q==} + engines: {node: '>=22'} + peerDependencies: + '@txnlab/use-wallet': ^5.0.0 + algosdk: ^3.5.2 + + '@txnlab/use-wallet-react@5.0.1': + resolution: {integrity: sha512-3SlSXEA35srj5hZUFVrT3YZp/yJF7fxEy9PJpM8nEnuUiHNffKt6Gz0Y7wGHLbVRaMQOOe1sLd73bAll0jS9zQ==} + engines: {node: '>=22'} peerDependencies: - '@blockshake/defly-connect': ^1.2.1 - '@magic-ext/algorand': ^24.4.2 - '@perawallet/connect': ^1.4.1 - '@walletconnect/modal': ^2.7.0 - '@walletconnect/sign-client': ^2.21.8 algosdk: ^3.0.0 - lute-connect: ^1.6.2 - magic-sdk: ^29.4.2 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@blockshake/defly-connect': - optional: true - '@magic-ext/algorand': - optional: true - '@perawallet/connect': - optional: true - '@walletconnect/modal': - optional: true - '@walletconnect/sign-client': - optional: true - lute-connect: - optional: true - magic-sdk: - optional: true - '@txnlab/use-wallet@4.3.1': - resolution: {integrity: sha512-kWDOauxROjwmnOmivp5iBAXqdksYHDXaP7P/AbX/uawnv+H+WQiP0dBUKnVLb//eOUbhq7QT33yUGGXC6QATgQ==} + '@txnlab/use-wallet@5.0.1': + resolution: {integrity: sha512-47SQ86peUVPzNh9k1bfoT1muBaZa4rTlT+PcNvORLKWO13YJ148n8YWaos3UatdGjZJ3T1qEjd5G2sKMKM3dlg==} + engines: {node: '>=22'} peerDependencies: - '@agoralabs-sh/avm-web-provider': ^1.7.0 - '@blockshake/defly-connect': ^1.2.1 - '@perawallet/connect': ^1.4.1 - '@walletconnect/modal': ^2.7.0 - '@walletconnect/sign-client': ^2.21.8 algosdk: ^3.0.0 - lute-connect: ^1.6.2 - peerDependenciesMeta: - '@agoralabs-sh/avm-web-provider': - optional: true - '@blockshake/defly-connect': - optional: true - '@perawallet/connect': - optional: true - '@walletconnect/modal': - optional: true - '@walletconnect/sign-client': - optional: true - lute-connect: - optional: true - - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + '@tybys/wasm-util@0.10.4': + resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/jsesc@2.5.1': - resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@22.18.13': - resolution: {integrity: sha512-Bo45YKIjnmFtv6I1TuC8AaHBbqXtIo+Om5fE4QiU1Tj8QR/qt+8O3BAtOimG5IFmwaWiPmB3Mv3jtYzBA4Us2A==} - - '@types/node@22.19.20': - resolution: {integrity: sha512-6tELRwSDYWW9EdZhbeZmYGZ1/7Djkt+Ah3/ScEYT9cDord7UJzasR/4D3VONg9tQI5CDp+/CZC1AXj2pCFOvpw==} + '@types/node@22.20.5': + resolution: {integrity: sha512-U2+DNr+wSjpsTS/wZGYHq7GcwfuSmKiKvoPvK22zwTlRhU91yOniN4qRR5KhIjvif7ysw/dz/hKmfDH0Ris4aA==} '@types/node@24.9.1': resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==} @@ -1165,203 +917,228 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - - '@types/react-dom@18.3.7': - resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + '@types/react-dom@19.3.0': + resolution: {integrity: sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==} peerDependencies: - '@types/react': ^18.0.0 + '@types/react': ^19.3.0 - '@types/react@18.3.26': - resolution: {integrity: sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==} + '@types/react@19.3.0': + resolution: {integrity: sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==} - '@typescript-eslint/eslint-plugin@8.60.1': - resolution: {integrity: sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg==} + '@typescript-eslint/eslint-plugin@8.71.1': + resolution: {integrity: sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.60.1 + '@typescript-eslint/parser': ^8.71.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.60.1': - resolution: {integrity: sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==} + '@typescript-eslint/parser@8.71.1': + resolution: {integrity: sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.60.1': - resolution: {integrity: sha512-eXkTH2bxmXlqD1RnOPmLZ9ZM9D3VwSx04JOwBnP9RQ+yUA5a2Mu7SfW8uaV2Aon53NJzZlZYuX7tn91Izf+xaw==} + '@typescript-eslint/project-service@8.71.1': + resolution: {integrity: sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.60.1': - resolution: {integrity: sha512-gvI5OQoptnxQnchOirukCuQ55svJSTuD/4k5+pC267xyBtYry748R9/c3tYUzb/iE6RZfllRz2lVulLCHkTm4w==} + '@typescript-eslint/scope-manager@8.71.1': + resolution: {integrity: sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.60.1': - resolution: {integrity: sha512-nh8w4qAteiKuZu3pSSzG/yGKpw0OlkrKnzFmbVRenKaD4qc+7i1GrmZaLVkr8rk4uipiPGMOW4YsM6WmKZ5CvA==} + '@typescript-eslint/tsconfig-utils@8.71.1': + resolution: {integrity: sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.60.1': - resolution: {integrity: sha512-sdwTrpjosW7ANQYJ39ZBF1ZyEMEGVB2UsikrserVM/30a/F1dTLnu9bGxEdosugyu5caigjLrR2qiD11asjI1A==} + '@typescript-eslint/type-utils@8.71.1': + resolution: {integrity: sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.58.2': - resolution: {integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.60.1': - resolution: {integrity: sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w==} + '@typescript-eslint/types@8.71.1': + resolution: {integrity: sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.60.1': - resolution: {integrity: sha512-alpRkfG8hlVE5kdJW2GkfgDgXxold3e8e4l6EnmhRmRLbekgAPCCGDVD++sABy9FcgPFroq+uFcCSM1vR57Cew==} + '@typescript-eslint/typescript-estree@8.71.1': + resolution: {integrity: sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.60.1': - resolution: {integrity: sha512-h2MPBLoNtjc3qZWfY3Tl51yPorQ2McHn8pJfcMNTcIvrrZrr90Ykffit0yjrPFWQcRcUxzH20+6OcVdW4yHtUg==} + '@typescript-eslint/utils@8.71.1': + resolution: {integrity: sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.60.1': - resolution: {integrity: sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag==} + '@typescript-eslint/visitor-keys@8.71.1': + resolution: {integrity: sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} cpu: [arm] os: [android] - '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + '@unrs/resolver-binding-android-arm64@1.12.2': + resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==} cpu: [arm64] os: [android] - '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + '@unrs/resolver-binding-darwin-arm64@1.12.2': + resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==} cpu: [arm64] os: [darwin] - '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + '@unrs/resolver-binding-darwin-x64@1.12.2': + resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==} cpu: [x64] os: [darwin] - '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + '@unrs/resolver-binding-freebsd-x64@1.12.2': + resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==} cpu: [x64] os: [freebsd] - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} cpu: [arm64] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} cpu: [arm64] os: [linux] libc: [musl] - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} cpu: [ppc64] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} cpu: [riscv64] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} cpu: [riscv64] os: [linux] libc: [musl] - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} cpu: [s390x] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} cpu: [x64] os: [linux] libc: [glibc] - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} cpu: [x64] os: [linux] libc: [musl] - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} + cpu: [arm64] + os: [openharmony] + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==} cpu: [arm64] os: [win32] - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==} cpu: [ia32] os: [win32] - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==} cpu: [x64] os: [win32] - '@vitejs/plugin-react@4.7.0': - resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} - engines: {node: ^14.18.0 || >=16.0.0} + '@vitejs/plugin-react@6.1.2': + resolution: {integrity: sha512-fhJNGUdscQa4HkI0xFxwonWyhnVReCPDbXI7FH7jmzpnVCrFQI7PRrhWecO263610vOrs9tr2Y4xcf8uAdFxbw==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + oxc-transform-react: ^0.152.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true + oxc-transform-react: + optional: true - '@vitest/coverage-v8@4.1.8': - resolution: {integrity: sha512-lt3kovsyHwYe00wq4D1ti0Z974fWj4NLp6siqiyEufUpyFwK9Yhi7rBhac9JL5aA0zoMrJqc4vYPZRUnI7l7nw==} + '@vitest/coverage-v8@5.0.3': + resolution: {integrity: sha512-+klsyz7BvT1vCU28Zkfzms1Ia78XD0V41U3FUtRaa3S+vOr/EXvK1O6BvVD7l1RzEjm6SONR2aybOvDDf9u0mQ==} peerDependencies: - '@vitest/browser': 4.1.8 - vitest: 4.1.8 + '@vitest/browser': 5.0.3 + vitest: 5.0.3 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.1.11': - resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} + '@vitest/istanbul-lib-coverage@1.0.2': + resolution: {integrity: sha512-9J/JMwOf9AoJhAywhrn7ScKTL38hsWQP/qPG60OtaAFcQ5OXPwKsxZFlbnuCKmZ61m8/lGgHYnFpdyQZUvG/iA==} + engines: {node: '>=22'} + + '@vitest/istanbul-lib-report@1.0.2': + resolution: {integrity: sha512-gUsfXZJbzPamoIY5TvHFiMMoXESBrUMo+xqaj+rYrWI69+EnvRlYBlP96ZnHPY4vX8kyUpgAnFUCg5wZG/HkDQ==} + engines: {node: '>=22'} - '@vitest/mocker@4.1.11': - resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} + '@vitest/mocker@5.0.3': + resolution: {integrity: sha512-T8sWAIbkSyAjkwTcaEc3Iu0o9A27X1/kdXrizhZkGuSKScRQtRzclfAMpOTcGdXCsqxeWlpGy3XjqaW8CpLORg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1371,26 +1148,8 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.11': - resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} - - '@vitest/pretty-format@4.1.8': - resolution: {integrity: sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA==} - - '@vitest/runner@4.1.11': - resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} - - '@vitest/snapshot@4.1.11': - resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} - - '@vitest/spy@4.1.11': - resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} - - '@vitest/utils@4.1.11': - resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} - - '@vitest/utils@4.1.8': - resolution: {integrity: sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==} + '@vitest/spy@5.0.3': + resolution: {integrity: sha512-XhFysQTB8AZ+P4gMi+Lpo99vg2AZi0qKpaB9yXQl37+CaMEAPO3iH/wGVnSyL5MPERiLezpqTVtrR6UZH5GCXg==} '@walletconnect/browser-utils@1.8.0': resolution: {integrity: sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==} @@ -1442,19 +1201,178 @@ packages: '@walletconnect/window-metadata@1.0.0': resolution: {integrity: sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==} + '@yuku-codegen/binding-android-arm64@0.10.2': + resolution: {integrity: sha512-Oc2KInVkPfUjEB4PeV6X0NvIoyYTzDe/WmqFrTwBqKs6YKnz4A7XwWQvJTb7M0rLz9a6WgpUUiiS5QKaCi4O/g==} + cpu: [arm64] + os: [android] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-darwin-arm64@0.10.2': + resolution: {integrity: sha512-3H7eNPIHJndUJXZ4QUGBPq1zC6RGcUZfm7bymJes+/N7wTVWUn1bxZ9JcozYHpkWQNm9f23G8YWbaHD9aYH72A==} + cpu: [arm64] + os: [darwin] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-darwin-x64@0.10.2': + resolution: {integrity: sha512-AJOUpR2s3LF9AWiiub/Uyc/UoXNTWcq8hK3cVI6fUSXtwh34dG21J6hRuNlO6JVJFTo4o3ScVvZOrh/YFfUEAA==} + cpu: [x64] + os: [darwin] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-freebsd-x64@0.10.2': + resolution: {integrity: sha512-ms7DcZu87u5CiK/wMwvpKAvAmtaqKjCQIXNweMLypG6qbuiaOMQf1jpbB5+j46xBcgCovo8TQMcv0bCQLKIL9w==} + cpu: [x64] + os: [freebsd] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-linux-arm-gnu@0.10.2': + resolution: {integrity: sha512-xJDpYAsKV5+eaiBhTYl05fvT6sst4PsCeuIFMRu9b0/WCSrNQPfCDtAQ5/MS6xNpsdujdZEPR+gmfWk3ZG5i3A==} + cpu: [arm] + os: [linux] + libc: [glibc] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-linux-arm-musl@0.10.2': + resolution: {integrity: sha512-qfTkgd7AEx61l4K9VtXWCGTxc/fmXJ4ZheDz3i+/AAJUtg4sa0bPrc0VBxPggB/rayR8Z3+JfrBItuyanBJJ9Q==} + cpu: [arm] + os: [linux] + libc: [musl] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-linux-arm64-gnu@0.10.2': + resolution: {integrity: sha512-4e6Mifm/4UdjtU3D8mATIrvgP+xEiH8xtQOjd0zpd72XKWT7ug3sdyhq2utkkZFP6BvYp7SgZrI+aR4VeIOHdw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-linux-arm64-musl@0.10.2': + resolution: {integrity: sha512-RdsJrUfDYFVV3JOmWFUWwSu31fa1APn12xDeIKxgl/YWxrabwtxsDBNjF2561c7tmcbiewdCUvngqRs8AyGVLA==} + cpu: [arm64] + os: [linux] + libc: [musl] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-linux-x64-gnu@0.10.2': + resolution: {integrity: sha512-mVzWimEPPreaPyXIUvxsHoJzvO7ckZ5j0LgQFHz04zQIRwt9A9T2hA7K5/jYjJKkMxWG/U2VjhGNwVhtyU+uqg==} + cpu: [x64] + os: [linux] + libc: [glibc] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-linux-x64-musl@0.10.2': + resolution: {integrity: sha512-Y77fyISurmr2mvO1yeq3u+x/WJbACgPR4w+lzEVx30ViCxZzIGrZPRN1yEdZ9xUNPNsIO5thBHIdRNG+UGUG+Q==} + cpu: [x64] + os: [linux] + libc: [musl] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-win32-arm64@0.10.2': + resolution: {integrity: sha512-1+tGLyG0u5YYy0lev4ck7/0sd8xJ9SZde0dLut7qLDPZV5WVTV8x6OxNXUne/PGuHZyO1vK+txPQzzHOyXHGSw==} + cpu: [arm64] + os: [win32] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-codegen/binding-win32-x64@0.10.2': + resolution: {integrity: sha512-8a2SExRohRbwC0MY4VpOF0/RSckrJ2ASZqAor5/RYSJJaeadR93n10gZzcKT6pY9ukiSOIZCRKVRD2tH73T0qA==} + cpu: [x64] + os: [win32] + deprecated: yuku-codegen is pure JavaScript since 0.14 + + '@yuku-parser/binding-android-arm64@0.10.2': + resolution: {integrity: sha512-2VPBU9fRGRAQ2xPAvghnec3oou5Nrxm2Bezhf+13UMspAxQSkF/32r+ySKXSwIPA5/RivumDJDxAxc301Sgicw==} + cpu: [arm64] + os: [android] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-darwin-arm64@0.10.2': + resolution: {integrity: sha512-LD+PMZE51tCYTOss5HBkm3/AE39MvcMDBfWJx7A4yDcjfNbAQDnHZKtzSOuqrswx+TQHY0ws5xn6+fWOwtmfBA==} + cpu: [arm64] + os: [darwin] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-darwin-x64@0.10.2': + resolution: {integrity: sha512-mmZ8cND+AoIIMRERyMinlg5ApHxP23B9jH2B5wT7T+dliPa9rubLxneB/SUjFwyUjGaFnB5G7t4YvpfbO5zbkQ==} + cpu: [x64] + os: [darwin] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-freebsd-x64@0.10.2': + resolution: {integrity: sha512-gVIjaaIddbRfAhHlC8N809wQWml7mxfSVnzaLtzGXObTeFTPAg/YVnQXt1UOhPM1ah5eG/8Y0RUlNpB4GVe7eQ==} + cpu: [x64] + os: [freebsd] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-linux-arm-gnu@0.10.2': + resolution: {integrity: sha512-q/XPPQQAPdlw05aPj30ygBhekmQryGOwxVraBgApjKK8yY1kNQgqq6XCYLF1WHSee+lhxclrTO7W0/bt7dR1GA==} + cpu: [arm] + os: [linux] + libc: [glibc] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-linux-arm-musl@0.10.2': + resolution: {integrity: sha512-A+Cb0I1hFF4wilTQpWs79k1aNnj4B2tkrHx3zsuUNF9BtVY2zPZ4yeQEM/zjXrS/qJlNMZVK9NrWJjwdpnTrfg==} + cpu: [arm] + os: [linux] + libc: [musl] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-linux-arm64-gnu@0.10.2': + resolution: {integrity: sha512-aGNSzqIqqphFwAdIFwVvKIyXD1Iy3CxrEJVIZAT87Ecyi4vCmmDD2v2l9h+Gd3/wSy3JZlOI792LJbKAjyy9rQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-linux-arm64-musl@0.10.2': + resolution: {integrity: sha512-Ddl1sF0rtuCXyHGSOV6dcmdx+ETv1iD+IVFqQuOjzkJZWclxJxdBWX6ZJMRtTiGqGUTbqLEKiTXxpR/Bvqk+2A==} + cpu: [arm64] + os: [linux] + libc: [musl] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-linux-x64-gnu@0.10.2': + resolution: {integrity: sha512-/nlcpR6IF5U+0m5L9wvAIXeQa2DT+BXuvqKDsTcOTlcc0B4dHNyqE5hTXsS4hAyimpy2ZK8A1zMNF5hTrjg2cg==} + cpu: [x64] + os: [linux] + libc: [glibc] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-linux-x64-musl@0.10.2': + resolution: {integrity: sha512-GX80dxTQD/M/OryyuxJcFzFENzry3cDFPvCFTyWogNWQH3fSHfMrNfpwpl1YzMos1eV9NygK5GSDG7VArQlb4w==} + cpu: [x64] + os: [linux] + libc: [musl] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-win32-arm64@0.10.2': + resolution: {integrity: sha512-agePQBV4VHewiGU0ACSjscZ/hJd283f9JfAF19Gf1rI5+wy5tTgx4GS36i0b3xim15AQ4RCpDRosEvhLZ4zAOw==} + cpu: [arm64] + os: [win32] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-parser/binding-win32-x64@0.10.2': + resolution: {integrity: sha512-s8//CMpgL5+y1lvDCdyh1rwGI5+ytDJywFJRe1vnhI7n0j+caxshNucurikYLLVeQ2SYFex6aPrzgQxkabBQRA==} + cpu: [x64] + os: [win32] + deprecated: yuku-parser runs on yuku-core since 0.14 + + '@yuku-toolchain/types@0.10.2': + resolution: {integrity: sha512-sSeo4SSSToiS+sSD+bwn/s94EEcaLJ7tG5LCp8gFYC1G5VzxzX7fqB6m9RU1yMD8KTpu6zdU/I1NlQf8hVBJ9Q==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} + agent-base@9.0.0: + resolution: {integrity: sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==} + engines: {node: '>= 20'} aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} @@ -1464,27 +1382,27 @@ packages: resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} engines: {node: '>=18'} - ajv@6.14.0: - resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} algorand-msgpack@1.1.0: resolution: {integrity: sha512-08k7pBQnkaUB5p+jL7f1TRaUIlTSDE0cesFu1mD7llLao+1cAhtvvZmGE3OnisTd0xOn118QMw74SRqddqaYvw==} engines: {node: '>= 14'} - algosdk@3.5.2: - resolution: {integrity: sha512-frhGtZl1JvfrLRKmMvUm880wj4OiWsWo2FhbreNWh7pdFsKuWPj60fV682wt/CYefLI70iwHavPOwGBkTVt0VA==} + algosdk@3.8.0: + resolution: {integrity: sha512-Q8MIQY/H21eTfc/zy/xce8kewlpK/t+Tt33StaamtHNycHLTLK004zsuMHN2Q++3MA4MdowOML1kFDox2hAqeg==} engines: {node: '>=18.0.0'} - ansi-escapes@7.1.1: - resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} engines: {node: '>=18'} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + ansi-regex@6.4.0: + resolution: {integrity: sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==} engines: {node: '>=12'} ansi-styles@3.2.1: @@ -1499,10 +1417,6 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - ansis@4.3.1: - resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} - engines: {node: '>=14'} - any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -1521,20 +1435,17 @@ packages: assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - ast-kit@3.0.0-beta.1: - resolution: {integrity: sha512-trmleAnZ2PxN/loHWVhhx1qeOHSRXq4TDsBBxq3GqeJitfk3+jTQ+v/C1km/KYq9M7wKqCewMh+/NAvVH7m+bw==} - engines: {node: '>=20.19.0'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} - ast-v8-to-istanbul@1.0.0: - resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} + ast-v8-to-istanbul@1.0.7: + resolution: {integrity: sha512-kFL68AG6ajd8fg248zwM9GQrUWEp79gsmjum34OEXjs4yHuUMZfYKwOLW9GMmB4oNvVrj+EAGxsP7ye2UR9UlA==} available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} @@ -1542,27 +1453,20 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.8.20: - resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} - hasBin: true - before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} bignumber.js@9.3.1: resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} - birpc@4.0.0: - resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} - bn.js@4.11.8: resolution: {integrity: sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==} - bn.js@4.12.2: - resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + bn.js@4.12.5: + resolution: {integrity: sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ==} - bn.js@5.2.2: - resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + bn.js@5.2.5: + resolution: {integrity: sha512-Vq886eXykuP5E6HcKSSStP3bJgrE6In5WKxVUvJ8XGpWWYs2xZHWqUwzCtGgEtBcxyd57KBFDPFoUfNzdaHCNg==} bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} @@ -1570,15 +1474,9 @@ packages: bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - - brace-expansion@5.0.5: - resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} - engines: {node: 18 || 20 || >=22} + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} + engines: {node: 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -1603,18 +1501,13 @@ packages: resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} engines: {node: '>= 0.10'} - browserify-sign@4.2.5: - resolution: {integrity: sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==} + browserify-sign@4.2.6: + resolution: {integrity: sha512-sd+Q65fjlWCYWtZKXiKfrUc8d+4jtp/8f0W2NkwzLtoW4bI6UDnWusLWIurHnmurW0XShIRxpwiOX4EoPtXUAg==} engines: {node: '>= 0.10'} browserify-zlib@0.2.0: resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - browserslist@4.27.0: - resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} @@ -1631,12 +1524,15 @@ packages: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} + cacheable@2.5.0: + resolution: {integrity: sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} engines: {node: '>= 0.4'} call-bound@1.0.4: @@ -1647,11 +1543,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001751: - resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} - - chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + chai@6.3.0: + resolution: {integrity: sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==} engines: {node: '>=18'} chalk@2.4.2: @@ -1711,16 +1604,13 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - comment-parser@1.4.1: - resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + comment-parser@1.4.9: + resolution: {integrity: sha512-+2AvZKjJaNq9GQljm3tr0utwrig5BL+jgJGvz5rDpGKNIp+ojcRXWUwBbh/sGIi1QCprR6PsKFakub+w1v+4hQ==} engines: {node: '>= 12.0.0'} compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -1730,12 +1620,16 @@ packages: constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - conventional-changelog-angular@8.1.0: - resolution: {integrity: sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==} + content-type@3.1.1: + resolution: {integrity: sha512-GW4qUsfFo59d0HbUibDlWv5wPz+vAAcaTWbKIuKCf0JkC7wWkSyf8f13IpXn5JkeMlB2P8iTSSIjwXljorg2vA==} + engines: {node: '>=22'} + + conventional-changelog-angular@8.3.1: + resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} engines: {node: '>=18'} - conventional-changelog-writer@8.2.0: - resolution: {integrity: sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==} + conventional-changelog-writer@8.4.0: + resolution: {integrity: sha512-HHBFkk1EECxxmCi4CTu091iuDpQv5/OavuCUAuZmrkWpmYfyD816nom1CvtfXJ/uYfAAjavgHvXHX291tSLK8g==} engines: {node: '>=18'} hasBin: true @@ -1743,8 +1637,8 @@ packages: resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} engines: {node: '>=18'} - conventional-commits-parser@6.2.1: - resolution: {integrity: sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==} + conventional-commits-parser@6.4.0: + resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==} engines: {node: '>=18'} hasBin: true @@ -1752,14 +1646,11 @@ packages: resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} engines: {node: '>=12'} - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + cosmiconfig@9.0.2: + resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -1791,8 +1682,8 @@ packages: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -1831,6 +1722,10 @@ packages: detect-browser@5.2.0: resolution: {integrity: sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + diffie-hellman@5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} @@ -1846,9 +1741,10 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - dotenv@16.6.1: - resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + dotenv@18.0.6: + resolution: {integrity: sha512-ZMVmohV6CvAJtj++pZNyggluUt6hbRdQAxc2+Z635RL6/AG/ruXv5lHnybUFoxMPL/yrTL/tsF4paZu2l7RA6Q==} engines: {node: '>=12'} + hasBin: true dts-resolver@3.0.0: resolution: {integrity: sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q==} @@ -1866,9 +1762,6 @@ packages: duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - electron-to-chromium@1.5.241: - resolution: {integrity: sha512-ILMvKX/ZV5WIJzzdtuHg8xquk2y0BOGlFOxBVwTpbiXqWIH0hamG45ddU4R3PQ0gYu+xgo0vdHXHli9sHIGb4w==} - elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -1881,8 +1774,8 @@ packages: emojilib@2.4.0: resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - empathic@2.0.1: - resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} + empathic@2.1.0: + resolution: {integrity: sha512-AnfC1ATldl49/cvZdLPDjBfrRNwbDO05aibiOtzQu3qtlbJtomNLhF30HEtn/7iBz50dlMECqATo3fG0LrdEgw==} engines: {node: '>=14'} env-ci@11.2.0: @@ -1908,18 +1801,13 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@2.0.0: - resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-module-lexer@2.3.2: + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1951,8 +1839,8 @@ packages: unrs-resolver: optional: true - eslint-plugin-import-x@4.16.2: - resolution: {integrity: sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==} + eslint-plugin-import-x@4.17.1: + resolution: {integrity: sha512-4cdstYkKCyjumM2Q9NSI03K8D2a9F4Ssz33K2lv2hQa4KmR9jPLwk3uWGtNvclfqBrPGfGuMBwsGMbe6dMRbfg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/utils': ^8.56.0 @@ -1964,26 +1852,21 @@ packages: eslint-import-resolver-node: optional: true - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@5.0.1: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@9.39.4: - resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + eslint@10.12.0: + resolution: {integrity: sha512-npHjrHb2o4ehH3mE+YuxABR+0gyb0aVWCIolgJDArwCiHEIsonBm3ZKjel5b0U5+a+MbEvIyRCGCzD3eKKK2NA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: jiti: '*' @@ -1991,12 +1874,12 @@ packages: jiti: optional: true - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -2024,25 +1907,22 @@ packages: evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + execa@10.1.0: + resolution: {integrity: sha512-5HT/600HqXEtmkb9mK/PkTWw+bQSCzPnWiZ4/87wD3Hi0wFzCapOuNT9p4M08PDd+KLHdHvFhKjOWmNx/npRNQ==} + engines: {node: '>=22'} execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - execa@9.6.0: - resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} + execa@9.6.1: + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} engines: {node: ^18.19.0 || >=20.5.0} - expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + expect-type@1.4.0: + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} - fast-content-type-parse@3.0.0: - resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2069,9 +1949,8 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} + file-entry-cache@11.1.5: + resolution: {integrity: sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==} fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} @@ -2093,22 +1972,18 @@ packages: resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} engines: {node: '>=18'} - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + flat-cache@6.1.23: + resolution: {integrity: sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - - fs-extra@11.3.2: - resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + fs-extra@11.4.1: + resolution: {integrity: sha512-KYAb4c9BJQI6QqGKthV68OHe0badztdXJWKo0WtBA9IuCFPTKvE5ZdUBglP833aMjhaSPNO4A5j/EkzZtGlKjA==} engines: {node: '>=14.14'} fsevents@2.3.3: @@ -2127,16 +2002,12 @@ packages: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.4.0: - resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + get-east-asian-width@1.7.0: + resolution: {integrity: sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -2151,10 +2022,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-stream@7.0.1: - resolution: {integrity: sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==} - engines: {node: '>=16'} - get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -2163,11 +2030,11 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} - get-tsconfig@5.0.0-beta.5: - resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} + get-tsconfig@5.0.0-beta.6: + resolution: {integrity: sha512-X6fBC0pmImC70gvX2zm56go9hx0MyoGVdG0tUCkg/D+Xnh5TJsOZ7iDbOdI3PvmtrDxnu1YdDufpK2QJX1Meqw==} engines: {node: '>=20.20.0'} git-log-parser@1.2.1: @@ -2177,10 +2044,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -2191,8 +2054,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + handlebars@4.7.10: + resolution: {integrity: sha512-P5VJMVM7qgBn6vjXMw8WG9uVI+ncf2pi72j4de4yz5ZULLj2RGqLYaKOYGsgyrViQ0tePOVlN1tDCCXXtFqXKg==} engines: {node: '>=0.4.7'} hasBin: true @@ -2226,8 +2089,12 @@ packages: hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + hashery@1.5.1: + resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} + engines: {node: '>=20'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} hi-base32@0.5.1: @@ -2243,34 +2110,33 @@ packages: resolution: {integrity: sha512-IHI4bEVOt3vRUDJ+bFA9VUJlo7SzvFARPNLw75pqSmAOP2HmTWfFJtPvLBrDrlgjEYXY9zs7SFdHPQaJShkSCQ==} engines: {node: '>=20'} - hookable@6.1.1: - resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} + hookable@6.1.2: + resolution: {integrity: sha512-+abwxtiEA52GCVIsQqut3S/uKTbUwYIp4Pe/vv+6py5XiXBCqMZHg6pA6Y5qhgLSEys0/cYuPbO0z1QFj5ZCmg==} + + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + + hookified@2.2.0: + resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==} hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} - hosted-git-info@9.0.2: - resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} + hosted-git-info@9.0.3: + resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} engines: {node: ^20.17.0 || >=22.9.0} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + http-proxy-agent@9.1.0: + resolution: {integrity: sha512-2NxoveTT58mjYT4n3RPTEfCZGLMbidoO8XEieXfpSYxu+PQJ1qpx4ypwH6N+uF9twBPIvRRgvkvW5HUTYWENig==} + engines: {node: '>= 20'} https-browserify@1.0.0: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + https-proxy-agent@9.1.0: + resolution: {integrity: sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==} + engines: {node: '>= 20'} human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -2287,8 +2153,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + ignore@7.0.12: + resolution: {integrity: sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==} engines: {node: '>= 4'} import-fresh@3.3.1: @@ -2302,8 +2168,8 @@ packages: import-meta-resolve@4.2.0: resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} - import-without-cache@0.4.0: - resolution: {integrity: sha512-NkJQA7oZ4YHQhd2+H3BoRFKF3d/XNsiKpHZCQEMH9pDX27hQQLsTyOocyRgaIVtf8gHX3Nt3LPkR4e5EdtPAGQ==} + import-without-cache@0.4.1: + resolution: {integrity: sha512-vXoV9PjKHEednCUu01e98TkImxy67e3BJXbTIOmIq4Hyzw3IAwYRcuPkfeTzJzwyyts4kjuA73x+pWJLc4f86A==} engines: {node: ^22.18.0 || >=24.0.0} imurmurhash@0.1.4: @@ -2328,10 +2194,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - into-stream@7.0.0: - resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} - engines: {node: '>=12'} - is-arguments@1.2.0: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} @@ -2343,8 +2205,8 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + is-core-module@2.17.0: + resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==} engines: {node: '>= 0.4'} is-extglob@2.1.1: @@ -2383,10 +2245,6 @@ packages: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2419,22 +2277,10 @@ packages: resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} engines: {node: '>=10'} - issue-parser@7.0.1: - resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} + issue-parser@7.0.2: + resolution: {integrity: sha512-7atWPjhGEIX3JEtMrOYd8TKzboYlq+5sNbdl9POiLYOI14G5HZiQbZP0Xj5EZdrufQVXfJlpTV0hys0CuxwxZw==} engines: {node: ^18.17 || >=20.6.1} - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-reports@3.2.0: - resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} - engines: {node: '>=8'} - java-properties@1.0.2: resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} engines: {node: '>= 0.6.0'} @@ -2458,25 +2304,13 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -2489,16 +2323,14 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + json-with-bigint@3.5.12: + resolution: {integrity: sha512-uwbF/wSSuOgC7qqlq27Xp5B6a2MHVug3t0idZdTqu0JnlFvgJuH7ju+KAk/J06C7GfhoYy2gnb9wz2INqcne7w==} - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} @@ -2507,6 +2339,80 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -2522,8 +2428,8 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} lodash.capitalize@4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} @@ -2537,45 +2443,31 @@ packages: lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.uniqby@4.7.0: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - lottie-web@5.13.0: resolution: {integrity: sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.2: - resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + lru-cache@11.5.3: + resolution: {integrity: sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==} engines: {node: 20 || >=22} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lute-connect@1.6.3: - resolution: {integrity: sha512-QSBHj1fG9QhkgzezcRrG1piYCxTt0Tlf13ZOTLuXsJfagEC+IERKBKORo0CgzBMOlo47nr4w8n19vcFpfCvJNQ==} - deprecated: This package is deprecated. Please use @galaxypay/lute-connect instead. - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.5.2: - resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} + magic-string@1.4.3: + resolution: {integrity: sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==} - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + magicast@0.5.5: + resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==} + + make-asynchronous@1.1.0: + resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==} + engines: {node: '>=18'} marked-terminal@7.3.0: resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} @@ -2615,10 +2507,6 @@ packages: engines: {node: '>=16'} hasBin: true - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -2629,17 +2517,10 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} engines: {node: 18 || 20 || >=22} - minimatch@3.1.5: - resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -2653,8 +2534,8 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2676,9 +2557,6 @@ packages: resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} engines: {node: '>=18'} - node-releases@2.0.26: - resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} - node-stdlib-browser@1.3.1: resolution: {integrity: sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==} engines: {node: '>=10'} @@ -2691,13 +2569,9 @@ packages: resolution: {integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==} engines: {node: ^20.17.0 || >=22.9.0} - normalize-url@8.1.0: - resolution: {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} - engines: {node: '>=14.16'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + normalize-url@9.0.1: + resolution: {integrity: sha512-ARftfC5HdUNu9jJeL8pHj8debUIHA2b91FizCoMzY4lG6dDX13jdvTK0TBe24IBDRf2HvJSzzwEPvmbkQWHRSg==} + engines: {node: '>=20'} npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} @@ -2707,8 +2581,8 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} - npm@11.6.2: - resolution: {integrity: sha512-7iKzNfy8lWYs3zq4oFPa8EXZz5xt9gQNKJZau3B1ErLBb6bF7sBJ00x09485DOvRT2l5Gerbl3VlZNT57MxJVA==} + npm@11.21.0: + resolution: {integrity: sha512-Zov8KhamNneiLdELtj5YALtNmJW4L4fCLTzjfpzXG2w6MSHcf0UxgdlK5uloCuksWT+7mGUU7wi79cO6RqivPg==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true bundledDependencies: @@ -2717,6 +2591,7 @@ packages: - '@npmcli/config' - '@npmcli/fs' - '@npmcli/map-workspaces' + - '@npmcli/metavuln-calculator' - '@npmcli/package-json' - '@npmcli/promise-spawn' - '@npmcli/redact' @@ -2727,7 +2602,6 @@ packages: - cacache - chalk - ci-info - - cli-columns - fastest-levenshtein - fs-minipass - glob @@ -2798,12 +2672,13 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - obug@2.1.1: - resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + obug@2.2.1: + resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} + engines: {node: '>=12.20.0'} - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + obug@3.0.0: + resolution: {integrity: sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==} + engines: {node: '>=12.20.0'} onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -2820,14 +2695,14 @@ packages: resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} engines: {node: '>=12'} + p-event@6.0.1: + resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} + engines: {node: '>=16.17'} + p-filter@4.1.0: resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} engines: {node: '>=18'} - p-is-promise@3.0.0: - resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} - engines: {node: '>=8'} - p-limit@1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} engines: {node: '>=4'} @@ -2844,24 +2719,24 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + p-map@7.0.8: + resolution: {integrity: sha512-MitaVsCuCFIvOLLPIU7NnfrZvS9H9h7kwMUkDo+T2pEISaJD48IV9S8iIdXB7PsvvdxyYcsSTTrr90XKsbulNw==} engines: {node: '>=18'} - p-reduce@2.1.0: - resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} - engines: {node: '>=8'} - p-reduce@3.0.0: resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} engines: {node: '>=12'} + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + p-try@1.0.0: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} - package-manager-detector@1.6.0: - resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + package-manager-detector@1.9.0: + resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==} pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -2925,26 +2800,19 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - - pbkdf2@3.1.5: - resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} + pbkdf2@3.1.7: + resolution: {integrity: sha512-nS4mvFgVwUrecPTRdpdseM2fwpdfnX0/HibA8DgBRQtihUAzHQYJFU2l+OlEtiXtpqkrMvCPDwyXMUnASDt6Qw==} engines: {node: '>= 0.10'} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} pify@3.0.0: @@ -2963,21 +2831,21 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.29: + resolution: {integrity: sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.8.3: - resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + prettier@3.9.9: + resolution: {integrity: sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==} engines: {node: '>=14'} hasBin: true - pretty-ms@9.3.0: - resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + pretty-ms@9.3.1: + resolution: {integrity: sha512-HzMy3Geq23nVALD/M2LliU+F+M+gVNsvkQWWqeBZ8HDiCgzo6YPJ/Omrmtq24EFrIsk0a3EkQGEd7bDOo+IhGA==} engines: {node: '>=18'} process-nextick-args@2.0.1: @@ -2990,11 +2858,20 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + proxy-agent-negotiate@1.1.0: + resolution: {integrity: sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==} + engines: {node: '>= 20'} + peerDependencies: + kerberos: ^2.0.0 + peerDependenciesMeta: + kerberos: + optional: true + public-encrypt@4.0.3: resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - publint@0.3.21: - resolution: {integrity: sha512-OqejcnMV6E9zel2oCrUOJEiiFkGiAAni0A6ibfQNh1k9Gu5z4F+Yso8lllam7AzmV6Do0vp7u3UpZNRBwuXaHQ==} + publint@0.3.25: + resolution: {integrity: sha512-WMMbn/d7JqRlfXQL/JUI4n5skC8cJ5WVr8/wT5mmiYWkUdENkZr1I5rgs2+dQPVRgoJd+JRYtB46MTsuDylw9g==} engines: {node: '>=18'} hasBin: true @@ -3005,14 +2882,18 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + qified@0.10.1: + resolution: {integrity: sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==} + engines: {node: '>=20'} + qr-code-styling@1.6.0-rc.1: resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} qrcode-generator@1.5.2: resolution: {integrity: sha512-pItrW0Z9HnDBnFmgiNrY1uxRdri32Uh9EjNYLPVC2zZ3ZRIIEqBoDgm4DkvDwNNDHTK7FNkmr8zAa77BYc9xNw==} - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + qs@6.16.0: + resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} engines: {node: '>=0.6'} quansync@1.0.0: @@ -3036,17 +2917,13 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + react-dom@19.3.0: + resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==} peerDependencies: - react: ^18.3.1 - - react-refresh@0.17.0: - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} - engines: {node: '>=0.10.0'} + react: ^19.3.0 - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + react@19.3.0: + resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==} engines: {node: '>=0.10.0'} read-package-up@11.0.0: @@ -3057,8 +2934,8 @@ packages: resolution: {integrity: sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==} engines: {node: '>=20'} - read-pkg@10.0.0: - resolution: {integrity: sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==} + read-pkg@10.1.0: + resolution: {integrity: sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==} engines: {node: '>=20'} read-pkg@9.0.1: @@ -3072,8 +2949,8 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - registry-auth-token@5.1.0: - resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} + registry-auth-token@5.1.1: + resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} engines: {node: '>=14'} require-directory@2.1.1: @@ -3091,8 +2968,8 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + resolve@1.22.13: + resolution: {integrity: sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==} engines: {node: '>= 0.4'} hasBin: true @@ -3100,20 +2977,23 @@ packages: resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} engines: {node: '>= 0.8'} - rolldown-plugin-dts@0.25.2: - resolution: {integrity: sha512-nMhN/R+vmR8GM45ZW1FWMSjRTSDDn/6w4GTf8RNrEFCBdl8B1kySWrU1ixPtbwzXoRlcO+R/S88VgXuJQwfdDg==} - engines: {node: ^22.18.0 || >=24.0.0} + rolldown-plugin-dts@0.28.6: + resolution: {integrity: sha512-qKrFtBfRfR2hP233m7Ic9zf3wv6MSYdZghWKMdEO6dRYZGlNfINJAa1P5ZVvyHh3mrcd7IJQvIY8L9vnm+v5rQ==} + engines: {node: ^22.18.0 || ^24.11.0 || >=26.0.0} peerDependencies: - '@ts-macro/tsc': ^0.3.6 - '@typescript/native-preview': '>=7.0.0-dev.20260325.1' - rolldown: ^1.0.0 - typescript: ^5.0.0 || ^6.0.0 - vue-tsc: ~3.2.0 + '@typescript/native-preview': '*' + '@volar/typescript': ~2.4.0 + '@vue/language-core': ~3.2.0 || ~3.3.0 + rolldown: ^1.2.0 + typescript: ^5.0.0 || ^6.0.0 || ~7.0.0 + vue-tsc: ~3.2.0 || ~3.3.0 peerDependenciesMeta: - '@ts-macro/tsc': - optional: true '@typescript/native-preview': optional: true + '@volar/typescript': + optional: true + '@vue/language-core': + optional: true typescript: optional: true vue-tsc: @@ -3124,8 +3004,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.1.0: - resolution: {integrity: sha512-zpMvlJhs5PkXRTtKc0CaLBVI9AR/VDiJFpM+kx//hgToEca7FgMlGjaRIisXBcb19T76LswgmKECSQ96hjWr5A==} + rolldown@1.2.13: + resolution: {integrity: sha512-/5apOkwWxtACcQtZ5WlrAsKS4JwXVThQPJZ3RqIruRY9UG9M8e0VlXN068xum/JRKA4aIUoJ13ghe/kGCvidiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3148,11 +3028,11 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.28.0: + resolution: {integrity: sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==} - semantic-release@25.0.3: - resolution: {integrity: sha512-WRgl5GcypwramYX4HV+eQGzUbD7UUbljVmS+5G1uMwX/wLgYuJAxGeerXJDMO2xshng4+FXqCgyB5QfClV6WjA==} + semantic-release@25.0.9: + resolution: {integrity: sha512-bxve7csK0/Txr++CkfrmV+X1r4jqiSOw2WsSad9E2S68R+ZfLBwDn8IceM8WfiOmKQIHgsQc1cNA8Dzg7U75pg==} engines: {node: ^22.14.0 || >= 24.10.0} hasBin: true @@ -3160,22 +3040,8 @@ packages: resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} engines: {node: '>=12'} - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true - - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.8.1: - resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} hasBin: true @@ -3199,8 +3065,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} engines: {node: '>= 0.4'} side-channel-map@1.0.1: @@ -3211,16 +3077,10 @@ packages: resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} engines: {node: '>= 0.4'} - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} engines: {node: '>= 0.4'} - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -3233,8 +3093,8 @@ packages: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} source-map@0.6.1: @@ -3253,8 +3113,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.22: - resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + spdx-license-ids@3.0.24: + resolution: {integrity: sha512-cLS9TtWkIQFyLkJ3/5aFQAOHOSKTlOs/7WDut/XPSdjom1fJhUdkepeJAKXa9Y05+FabHd0sti+Et559vDtkpQ==} split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} @@ -3267,11 +3127,8 @@ packages: resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} engines: {node: '>=12.0.0'} - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - std-env@4.1.0: - resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + std-env@4.3.0: + resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==} stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} @@ -3294,6 +3151,10 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string-width@8.3.0: + resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==} + engines: {node: '>=20'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -3304,18 +3165,14 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -3328,12 +3185,8 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - super-regex@1.0.0: - resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==} + super-regex@1.1.0: + resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==} engines: {node: '>=18'} supports-color@5.5.0: @@ -3360,8 +3213,8 @@ packages: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} - tempy@3.1.0: - resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + tempy@3.2.0: + resolution: {integrity: sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==} engines: {node: '>=14.16'} thenify-all@1.6.0: @@ -3382,23 +3235,20 @@ packages: resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} engines: {node: '>=0.6.0'} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinybench@6.2.1: + resolution: {integrity: sha512-IAbQaPJIIdhVxi0mqy9lez1wEwje0UQf9F1vwtbelEG5Nbgn0nPOxCvU+mNeNS9gyJTAhrHp74CbUaSynQpZcQ==} + engines: {node: '>=20.0.0'} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} engines: {node: '>=18'} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + tinyrainbow@3.2.0: + resolution: {integrity: sha512-LgO3D9yZJjApUiuUfl9iFAwrtaX4+lok3wJIqttGoKCHlWUqHqbQpnxCf82L8FjgKsh4iGo78hqJwgL8F6To2A==} engines: {node: '>=14.0.0'} to-buffer@1.2.2: @@ -3423,19 +3273,19 @@ packages: peerDependencies: typescript: '>=4.8.4' - tsdown@0.22.2: - resolution: {integrity: sha512-VX9gsyKXsTnBZjnIM4jsHl9aRv+GfgkE/k1hQslilaBfZMlaw3JuGR+6yhiU0QxWBtOCDnTjwOSoXzgB7Rr50g==} - engines: {node: ^22.18.0 || >=24.0.0} + tsdown@0.23.0: + resolution: {integrity: sha512-BaT+ep1xnj5hdyICLd5r5SYYE+TXnI1ATePLykv9vcKpHpFTWUWRH+x1AF/E2qcu3YB6+vI8IdyxIIIffEqw5Q==} + engines: {node: ^22.18.0 || ^24.11.0 || >=26.0.0} hasBin: true peerDependencies: '@arethetypeswrong/core': ^0.18.1 - '@tsdown/css': 0.22.2 - '@tsdown/exe': 0.22.2 + '@tsdown/css': 0.23.0 + '@tsdown/exe': 0.23.0 '@vitejs/devtools': '*' publint: ^0.3.8 tsx: '*' - typescript: ^5.0.0 || ^6.0.0 - unplugin-unused: ^0.5.0 + typescript: ^5.0.0 || ^6.0.0 || ^7.0.0 + unplugin-unused: '>=0.5.0' unrun: '*' peerDependenciesMeta: '@arethetypeswrong/core': @@ -3470,6 +3320,9 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + tweetnacl-ts@1.0.3: + resolution: {integrity: sha512-C5I/dWf6xjAXaCDlf84T4HvozU/8ycAlq5WRllF1hAeeq5390tfXD+bNas5bhEV0HMSOx8bsQYpLjPl8wfnEeQ==} + tweetnacl@1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} @@ -3489,8 +3342,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.2.0: - resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==} + type-fest@5.10.0: + resolution: {integrity: sha512-NoSdpq/WEiAg5sjmBkmV/hfxv6HJH4NqPNrqjtSO5CwRmpsDfaf4begxW34KdJykH/l1yHtwBWQkCRdoXO8mPA==} engines: {node: '>=20'} typed-array-buffer@1.0.3: @@ -3500,20 +3353,15 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript-eslint@8.60.1: - resolution: {integrity: sha512-6m5hkkRAp8lKvhVpcprAIn5KkehQEh+47oHH2VGnExEh7dhNxXlg6GPAOIu6TxbVQxhebrJDvjl3020ooiWCMA==} + typescript-eslint@8.71.1: + resolution: {integrity: sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true @@ -3531,9 +3379,13 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@5.29.0: - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} - engines: {node: '>=14.0'} + undici@6.29.0: + resolution: {integrity: sha512-R+RODBqp6i2pPflGdq+xIOUkl+RNfGgHwoinecKu/JCuf2uO06cOKoDbI2P7Dn6KcswdKwrczbU6IYJ6K8X+wg==} + engines: {node: '>=18.17'} + + undici@7.30.0: + resolution: {integrity: sha512-dkrQXeHSaoamnItlYbmzG0wFYrM0ZwDxCIg0A7aKjTyyhh9svRzCNFEzV+Vm05/yehjCzjDZ31KXfGEjYSztDQ==} + engines: {node: '>=20.18.1'} unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} @@ -3547,6 +3399,10 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + unicorn-magic@0.4.1: + resolution: {integrity: sha512-lzlXPoVB0Uy/FvTaUgX39RbixYiSKoc3JSoSf01+0c2B6FR3qdYIPN7Qjo/AV7n6sqLCk0509cT3LRj1oSZ1+A==} + engines: {node: '>=20'} + unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -3558,8 +3414,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unrs-resolver@1.11.1: - resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + unrs-resolver@1.12.2: + resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==} unrun@0.2.37: resolution: {integrity: sha512-AA7vDuYsgeSYVzJMm16UKA+aXFKhy7nFqW9z5l7q44K4ppFWZAMqYS58ePRZbugMLPH0fwwMzD5A8nP0avxwZQ==} @@ -3571,12 +3427,6 @@ packages: synckit: optional: true - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -3588,8 +3438,8 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} - use-sync-external-store@1.6.0: - resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + use-sync-external-store@1.7.0: + resolution: {integrity: sha512-6L+EeigHMQhdaIPNIFUKwfWJSwWFQ8gJbJ2DLOs5sDIegTwR9fRxvnM3uciHKjIZhFz+KAv2emhWMRvDmMcY8A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3602,36 +3452,43 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vite-plugin-node-polyfills@0.24.0: - resolution: {integrity: sha512-GA9QKLH+vIM8NPaGA+o2t8PDfFUl32J8rUp1zQfMKVJQiNkOX4unE51tR6ppl6iKw5yOrDAdSH7r/UIFLCVhLw==} + verkit@0.4.1: + resolution: {integrity: sha512-mMVzj0TXExtVdlDEq+Mzp0eyOuyznNpFobNM3uAqe3HVm/Ps2c+u17BligMkZjZCA6EiXpoon8iRTer3iu40SQ==} + engines: {node: '>=18.12.0'} + + vite-plugin-node-polyfills@0.28.0: + resolution: {integrity: sha512-NXct/ci2ef4fRyCfTb8fk2HmR80Rv7icLd+cRH41TnUugDzdKMFKqFPpZYCFUInZMMem9bkLv5pkq02+7Xu7+w==} peerDependencies: - vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@8.3.3: + resolution: {integrity: sha512-cTAldKPImjg6c+gk48U19POPn3GCBzZwpdsN8ZMEEcbpes+6/wvfqUd0C2y3qYY4wsj8PwgFwrZ/1jBPVttMSg==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.7.1 + esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -3647,23 +3504,23 @@ packages: yaml: optional: true - vitest@4.1.11: - resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + vitest@5.0.3: + resolution: {integrity: sha512-xMw97S3rjdtj5dkVat7jCsqWBpvchs3RlpQctUqwJD0KkERk40vz2fJ77lDwW/Vzh/pk18eItYAzkodhSes3jQ==} + engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.11 - '@vitest/browser-preview': 4.1.11 - '@vitest/browser-webdriverio': 4.1.11 - '@vitest/coverage-istanbul': 4.1.11 - '@vitest/coverage-v8': 4.1.11 - '@vitest/ui': 4.1.11 + '@types/node': ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 5.0.3 + '@vitest/browser-preview': 5.0.3 + '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0 + '@vitest/coverage-istanbul': 5.0.3 + '@vitest/coverage-v8': 5.0.3 + '@vitest/ui': 5.0.3 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: ^6.4.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -3694,8 +3551,16 @@ packages: vm-browserify@1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + web-worker@1.5.0: + resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==} + + which-command@0.1.0: + resolution: {integrity: sha512-XZyoF5/5hZtXitIwzrU4NKK+Wtbb9aB9CezUEw2Q0wlYK8NUYQxC1rRXgNueYLtBAJwXIb+/tFVk4dozciNJMA==} + engines: {node: '>=22'} + hasBin: true + + which-typed-array@1.1.24: + resolution: {integrity: sha512-wk4Mf4pR5mRP7eYuuTBCIQ9d0ud2Fv2jRLQpfgnRjbOxAFHmjKFValgTpitVKzJJS8ajnYQV2Du1SZ8j6b/EUQ==} engines: {node: '>= 0.4'} which@2.0.2: @@ -3703,9 +3568,9 @@ packages: engines: {node: '>= 8'} hasBin: true - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} + why-is-node-running@3.2.1: + resolution: {integrity: sha512-Tb2FUhB4vUsGQlfSquQLYkApkuPAFQXGFzxWKHHumVz2dK+X1RUm/HnID4+TfIGYJ1kTcwOaCk/buYCEJr6YjQ==} + engines: {node: '>=20.11'} hasBin: true word-wrap@1.2.5: @@ -3743,9 +3608,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -3754,182 +3616,76 @@ packages: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + yargs@16.2.2: + resolution: {integrity: sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==} engines: {node: '>=10'} - yargs@18.0.0: - resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + yargs@18.2.0: + resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yoctocolors@2.1.2: - resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + yoctocolors@2.2.0: + resolution: {integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==} engines: {node: '>=18'} + yuku-ast@0.10.2: + resolution: {integrity: sha512-UnG9mA6giglCvSErft2/40TVFX750Sj1xgwddPLpG7J7rlr/P1wPADg9G2RK+d/1tNLtRVoLdMMOMVBB9561TQ==} + + yuku-codegen@0.10.2: + resolution: {integrity: sha512-hentl2dtrF6cPjiAirtkfxfFZBA6Hdm61UqRJ7cA0qrlDNMk9PZGOjw5w1mx3E0hu/6pHcJF4dJW+D0SXHPZOA==} + + yuku-parser@0.10.2: + resolution: {integrity: sha512-CgaU0/PPjCAIEZ3WQroosOxTY3eeKldAN3h+vk8pMNz4+jl1CZzBR4pW+K/rRPF112VooCL5FdjJoiMNjDrL2A==} + snapshots: - '@actions/core@1.11.1': + '@actions/core@3.0.1': dependencies: - '@actions/exec': 1.1.1 - '@actions/http-client': 2.2.3 + '@actions/exec': 3.0.0 + '@actions/http-client': 4.0.1 - '@actions/exec@1.1.1': + '@actions/exec@3.0.0': dependencies: - '@actions/io': 1.1.3 + '@actions/io': 3.0.2 - '@actions/http-client@2.2.3': + '@actions/http-client@4.0.1': dependencies: tunnel: 0.0.6 - undici: 5.29.0 + undici: 6.29.0 - '@actions/io@1.1.3': {} + '@actions/io@3.0.2': {} - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.29.7': dependencies: - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-validator-identifier': 7.29.7 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.5': {} - - '@babel/core@7.28.5': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.29.2 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.28.5': - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/generator@8.0.0-rc.6': - dependencies: - '@babel/parser': 8.0.0-rc.6 - '@babel/types': 8.0.0-rc.6 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@types/jsesc': 2.5.1 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.27.2': - dependencies: - '@babel/compat-data': 7.28.5 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.27.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.27.1': {} - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-string-parser@8.0.0-rc.6': {} - - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/helper-validator-identifier@8.0.0-rc.6': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helpers@7.28.4': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.29.0 - - '@babel/parser@7.29.2': - dependencies: - '@babel/types': 7.29.0 - - '@babel/parser@8.0.0-rc.6': - dependencies: - '@babel/types': 8.0.0-rc.6 - - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/template@7.27.2': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 + '@babel/helper-string-parser@7.29.7': {} - '@babel/traverse@7.28.5': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 - '@babel/template': 7.27.2 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + '@babel/helper-validator-identifier@7.29.7': {} - '@babel/types@7.29.0': + '@babel/parser@7.29.9': dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 + '@babel/types': 7.29.8 - '@babel/types@8.0.0-rc.6': + '@babel/types@7.29.8': dependencies: - '@babel/helper-string-parser': 8.0.0-rc.6 - '@babel/helper-validator-identifier': 8.0.0-rc.6 + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 '@bcoe/v8-coverage@1.0.2': {} - '@blockshake/defly-connect@1.2.1(algosdk@3.5.2)': + '@blockshake/defly-connect@1.2.1(algosdk@3.8.0)': dependencies: '@likecoin/qr-code-styling': 1.6.6 '@walletconnect/client': 1.8.0 '@walletconnect/types': 1.8.0 - algosdk: 3.5.2 + algosdk: 3.8.0 bowser: 2.11.0 buffer: 6.0.3 lottie-web: 5.13.0 @@ -3937,6 +3693,18 @@ snapshots: - bufferutil - utf-8-validate + '@cacheable/memory@2.2.0': + dependencies: + '@cacheable/utils': 2.5.0 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 + + '@cacheable/utils@2.5.0': + dependencies: + hashery: 1.5.1 + keyv: 5.6.0 + '@colors/colors@1.5.0': optional: true @@ -3956,264 +3724,188 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.11': - optional: true - - '@esbuild/android-arm64@0.25.11': - optional: true - - '@esbuild/android-arm@0.25.11': - optional: true - - '@esbuild/android-x64@0.25.11': - optional: true - - '@esbuild/darwin-arm64@0.25.11': - optional: true - - '@esbuild/darwin-x64@0.25.11': - optional: true - - '@esbuild/freebsd-arm64@0.25.11': - optional: true - - '@esbuild/freebsd-x64@0.25.11': - optional: true - - '@esbuild/linux-arm64@0.25.11': - optional: true - - '@esbuild/linux-arm@0.25.11': - optional: true - - '@esbuild/linux-ia32@0.25.11': - optional: true - - '@esbuild/linux-loong64@0.25.11': - optional: true - - '@esbuild/linux-mips64el@0.25.11': - optional: true - - '@esbuild/linux-ppc64@0.25.11': - optional: true - - '@esbuild/linux-riscv64@0.25.11': - optional: true - - '@esbuild/linux-s390x@0.25.11': - optional: true - - '@esbuild/linux-x64@0.25.11': - optional: true - - '@esbuild/netbsd-arm64@0.25.11': - optional: true - - '@esbuild/netbsd-x64@0.25.11': - optional: true - - '@esbuild/openbsd-arm64@0.25.11': - optional: true - - '@esbuild/openbsd-x64@0.25.11': - optional: true - - '@esbuild/openharmony-arm64@0.25.11': - optional: true - - '@esbuild/sunos-x64@0.25.11': - optional: true - - '@esbuild/win32-arm64@0.25.11': - optional: true - - '@esbuild/win32-ia32@0.25.11': - optional: true - - '@esbuild/win32-x64@0.25.11': - optional: true - - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.10.1(eslint@10.12.0(jiti@2.6.1))': dependencies: - eslint: 9.39.4(jiti@2.6.1) + eslint: 10.12.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.2': + '@eslint/config-array@0.23.5': dependencies: - '@eslint/object-schema': 2.1.7 + '@eslint/object-schema': 3.0.5 debug: 4.4.3 - minimatch: 3.1.5 + minimatch: 10.2.6 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': + '@eslint/config-helpers@0.7.0': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.2.1 - '@eslint/core@0.17.0': + '@eslint/core@1.2.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.5': - dependencies: - ajv: 6.14.0 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.4': {} + '@eslint/js@10.0.1(eslint@10.12.0(jiti@2.6.1))': + optionalDependencies: + eslint: 10.12.0(jiti@2.6.1) - '@eslint/object-schema@2.1.7': {} + '@eslint/object-schema@3.0.5': {} - '@eslint/plugin-kit@0.4.1': + '@eslint/plugin-kit@0.7.3': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.2.1 levn: 0.4.1 '@evanhahn/lottie-web-light@5.8.1': {} - '@fastify/busboy@2.1.1': {} + '@galaxypay/lute-connect@3.0.1': {} - '@humanfs/core@0.19.1': {} + '@galaxypay/use-wallet-lute@1.0.0(@txnlab/use-wallet@5.0.1(algosdk@3.8.0))(algosdk@3.8.0)': + dependencies: + '@galaxypay/lute-connect': 3.0.1 + '@txnlab/use-wallet': 5.0.1(algosdk@3.8.0) + algosdk: 3.8.0 + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 - '@humanfs/node@0.16.7': + '@humanfs/node@0.16.8': dependencies: - '@humanfs/core': 0.19.1 + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 '@humanwhocodes/retry': 0.4.3 + '@humanfs/types@0.15.0': {} + '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.4.3': {} - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 - '@likecoin/qr-code-styling@1.6.6': + '@keyv/bigmap@1.3.1(keyv@5.6.0)': dependencies: - qrcode-generator: 1.5.2 + hashery: 1.5.1 + hookified: 1.15.1 + keyv: 5.6.0 - '@napi-rs/wasm-runtime@0.2.12': + '@keyv/serialize@1.1.1': {} + + '@likecoin/qr-code-styling@1.6.6': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.1 - optional: true + qrcode-generator: 1.5.2 - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.1 + '@tybys/wasm-util': 0.10.4 optional: true '@noble/ciphers@1.2.0': {} + '@noble/ciphers@2.4.0': {} + '@noble/hashes@1.7.0': {} + '@noble/hashes@2.4.0': {} + '@octokit/auth-token@6.0.0': {} - '@octokit/core@7.0.5': + '@octokit/core@7.0.8': dependencies: '@octokit/auth-token': 6.0.0 - '@octokit/graphql': 9.0.2 - '@octokit/request': 10.0.5 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.2 + '@octokit/graphql': 9.0.5 + '@octokit/request': 10.0.16 + '@octokit/request-error': 7.1.2 + '@octokit/types': 18.0.0 before-after-hook: 4.0.0 universal-user-agent: 7.0.3 - '@octokit/endpoint@11.0.1': + '@octokit/endpoint@11.0.5': dependencies: - '@octokit/types': 15.0.2 + '@octokit/types': 18.0.0 universal-user-agent: 7.0.3 - '@octokit/graphql@9.0.2': + '@octokit/graphql@9.0.5': dependencies: - '@octokit/request': 10.0.5 - '@octokit/types': 15.0.2 + '@octokit/request': 10.0.16 + '@octokit/types': 18.0.0 universal-user-agent: 7.0.3 - '@octokit/openapi-types@26.0.0': {} + '@octokit/openapi-types@28.0.0': {} - '@octokit/plugin-paginate-rest@13.2.1(@octokit/core@7.0.5)': + '@octokit/openapi-types@29.0.1': {} + + '@octokit/plugin-paginate-rest@15.0.0(@octokit/core@7.0.8)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/types': 15.0.2 + '@octokit/core': 7.0.8 + '@octokit/types': 17.0.0 - '@octokit/plugin-retry@8.0.2(@octokit/core@7.0.5)': + '@octokit/plugin-retry@8.1.1(@octokit/core@7.0.8)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.2 + '@octokit/core': 7.0.8 + '@octokit/request-error': 7.1.2 + '@octokit/types': 17.0.0 bottleneck: 2.19.5 - '@octokit/plugin-throttling@11.0.2(@octokit/core@7.0.5)': + '@octokit/plugin-throttling@11.0.5(@octokit/core@7.0.8)': dependencies: - '@octokit/core': 7.0.5 - '@octokit/types': 15.0.2 + '@octokit/core': 7.0.8 + '@octokit/types': 17.0.0 bottleneck: 2.19.5 - '@octokit/request-error@7.0.1': + '@octokit/request-error@7.1.2': dependencies: - '@octokit/types': 15.0.2 + '@octokit/types': 18.0.0 - '@octokit/request@10.0.5': + '@octokit/request@10.0.16': dependencies: - '@octokit/endpoint': 11.0.1 - '@octokit/request-error': 7.0.1 - '@octokit/types': 15.0.2 - fast-content-type-parse: 3.0.0 + '@octokit/endpoint': 11.0.5 + '@octokit/request-error': 7.1.2 + '@octokit/types': 18.0.0 + content-type: 3.1.1 + json-with-bigint: 3.5.12 universal-user-agent: 7.0.3 - '@octokit/types@15.0.2': + '@octokit/types@17.0.0': + dependencies: + '@octokit/openapi-types': 28.0.0 + + '@octokit/types@18.0.0': dependencies: - '@octokit/openapi-types': 26.0.0 + '@octokit/openapi-types': 29.0.1 '@oxc-project/types@0.127.0': optional: true - '@oxc-project/types@0.134.0': {} - - '@package-json/types@0.0.12': {} + '@oxc-project/types@0.153.0': {} - '@perawallet/connect@1.4.2(algosdk@3.5.2)': + '@perawallet/connect@1.6.1(algosdk@3.8.0)': dependencies: '@evanhahn/lottie-web-light': 5.8.1 - '@walletconnect/client': 1.8.0 - '@walletconnect/types': 1.8.0 - algosdk: 3.5.2 + '@perawallet/walletconnect': 1.0.2 + algosdk: 3.8.0 bowser: 2.11.0 buffer: 6.0.3 qr-code-styling: 1.6.0-rc.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + tslib: 2.8.1 + tweetnacl-ts: 1.0.3 + + '@perawallet/walletconnect@1.0.2': + dependencies: + '@noble/ciphers': 2.4.0 + '@noble/hashes': 2.4.0 '@pnpm/config.env-replace@1.1.0': {} @@ -4221,136 +3913,132 @@ snapshots: dependencies: graceful-fs: 4.2.10 - '@pnpm/npm-conf@2.3.1': + '@pnpm/npm-conf@3.0.3': dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@publint/pack@0.1.4': {} + '@publint/pack@0.1.7': + dependencies: + tinyexec: 1.3.1 - '@quansync/fs@1.0.0': + '@quansync/fs@1.1.0': dependencies: quansync: 1.0.0 + '@rolldown/binding-android-arm-eabi@1.2.13': + optional: true + '@rolldown/binding-android-arm64@1.0.0-rc.17': optional: true - '@rolldown/binding-android-arm64@1.1.0': + '@rolldown/binding-android-arm64@1.2.13': optional: true '@rolldown/binding-darwin-arm64@1.0.0-rc.17': optional: true - '@rolldown/binding-darwin-arm64@1.1.0': + '@rolldown/binding-darwin-arm64@1.2.13': optional: true '@rolldown/binding-darwin-x64@1.0.0-rc.17': optional: true - '@rolldown/binding-darwin-x64@1.1.0': + '@rolldown/binding-darwin-x64@1.2.13': optional: true '@rolldown/binding-freebsd-x64@1.0.0-rc.17': optional: true - '@rolldown/binding-freebsd-x64@1.1.0': + '@rolldown/binding-freebsd-x64@1.2.13': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.0': + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.0': + '@rolldown/binding-linux-arm64-gnu@1.2.13': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.0': + '@rolldown/binding-linux-arm64-musl@1.2.13': optional: true '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.0': + '@rolldown/binding-linux-ppc64-gnu@1.2.13': optional: true '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.0': + '@rolldown/binding-linux-s390x-gnu@1.2.13': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.0': + '@rolldown/binding-linux-x64-gnu@1.2.13': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': optional: true - '@rolldown/binding-linux-x64-musl@1.1.0': + '@rolldown/binding-linux-x64-musl@1.2.13': optional: true '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': optional: true - '@rolldown/binding-openharmony-arm64@1.1.0': + '@rolldown/binding-openharmony-arm64@1.2.13': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - optional: true - - '@rolldown/binding-wasm32-wasi@1.1.0': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.0': + '@rolldown/binding-win32-arm64-msvc@1.2.13': optional: true '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.0': + '@rolldown/binding-win32-x64-msvc@1.2.13': optional: true - '@rolldown/pluginutils@1.0.0': {} - - '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rolldown/pluginutils@1.0.0-rc.17': optional: true + '@rolldown/pluginutils@1.0.1': {} + '@rollup/plugin-inject@5.0.5(rollup@4.52.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.4.0(rollup@4.52.5) estree-walker: 2.0.2 magic-string: 0.30.21 optionalDependencies: rollup: 4.52.5 - '@rollup/pluginutils@5.3.0(rollup@4.52.5)': + '@rollup/pluginutils@5.4.0(rollup@4.52.5)': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 4.0.7 optionalDependencies: rollup: 4.52.5 @@ -4422,203 +4110,185 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/changelog@6.0.3(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/changelog@7.0.0(semantic-release@25.0.9(typescript@6.0.3))': dependencies: - '@semantic-release/error': 3.0.0 - aggregate-error: 3.1.0 - fs-extra: 11.3.2 - lodash: 4.17.21 - semantic-release: 25.0.3(typescript@5.9.3) + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + lodash-es: 4.18.1 + semantic-release: 25.0.9(typescript@6.0.3) - '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.9(typescript@6.0.3))': dependencies: - conventional-changelog-angular: 8.1.0 - conventional-changelog-writer: 8.2.0 + conventional-changelog-angular: 8.3.1 + conventional-changelog-writer: 8.4.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.2.1 + conventional-commits-parser: 6.4.0 debug: 4.4.3 import-from-esm: 2.0.0 - lodash-es: 4.17.21 + lodash-es: 4.18.1 micromatch: 4.0.8 - semantic-release: 25.0.3(typescript@5.9.3) + semantic-release: 25.0.9(typescript@6.0.3) transitivePeerDependencies: - supports-color - '@semantic-release/error@3.0.0': {} - '@semantic-release/error@4.0.0': {} - '@semantic-release/exec@7.1.0(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/exec@7.1.0(semantic-release@25.0.9(typescript@6.0.3))': dependencies: '@semantic-release/error': 4.0.0 aggregate-error: 3.1.0 debug: 4.4.3 - execa: 9.6.0 - lodash-es: 4.17.21 + execa: 9.6.1 + lodash-es: 4.18.1 parse-json: 8.3.0 - semantic-release: 25.0.3(typescript@5.9.3) + semantic-release: 25.0.9(typescript@6.0.3) transitivePeerDependencies: - supports-color - '@semantic-release/git@10.0.1(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/git@11.0.1(semantic-release@25.0.9(typescript@6.0.3))': dependencies: - '@semantic-release/error': 3.0.0 - aggregate-error: 3.1.0 + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 debug: 4.4.3 dir-glob: 3.0.1 - execa: 5.1.1 - lodash: 4.17.21 + execa: 10.1.0 + lodash-es: 4.18.1 micromatch: 4.0.8 - p-reduce: 2.1.0 - semantic-release: 25.0.3(typescript@5.9.3) + p-reduce: 3.0.0 + semantic-release: 25.0.9(typescript@6.0.3) transitivePeerDependencies: - supports-color - '@semantic-release/github@12.0.0(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/github@12.0.10(semantic-release@25.0.9(typescript@6.0.3))': dependencies: - '@octokit/core': 7.0.5 - '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.5) - '@octokit/plugin-retry': 8.0.2(@octokit/core@7.0.5) - '@octokit/plugin-throttling': 11.0.2(@octokit/core@7.0.5) + '@octokit/core': 7.0.8 + '@octokit/plugin-paginate-rest': 15.0.0(@octokit/core@7.0.8) + '@octokit/plugin-retry': 8.1.1(@octokit/core@7.0.8) + '@octokit/plugin-throttling': 11.0.5(@octokit/core@7.0.8) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 debug: 4.4.3 dir-glob: 3.0.1 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - issue-parser: 7.0.1 - lodash-es: 4.17.21 + http-proxy-agent: 9.1.0 + https-proxy-agent: 9.1.0 + issue-parser: 7.0.2 + lodash-es: 4.18.1 mime: 4.1.0 p-filter: 4.1.0 - semantic-release: 25.0.3(typescript@5.9.3) + semantic-release: 25.0.9(typescript@6.0.3) tinyglobby: 0.2.17 + undici: 7.30.0 url-join: 5.0.0 transitivePeerDependencies: + - kerberos - supports-color - '@semantic-release/npm@13.1.1(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/npm@13.2.0(semantic-release@25.0.9(typescript@6.0.3))': dependencies: - '@actions/core': 1.11.1 + '@actions/core': 3.0.1 '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 env-ci: 11.2.0 - execa: 9.6.0 - fs-extra: 11.3.2 - lodash-es: 4.17.21 + execa: 9.6.1 + fs-extra: 11.4.1 + lodash-es: 4.18.1 nerf-dart: 1.0.0 - normalize-url: 8.1.0 - npm: 11.6.2 + normalize-url: 9.0.1 + npm: 11.21.0 rc: 1.2.8 - read-pkg: 9.0.1 - registry-auth-token: 5.1.0 - semantic-release: 25.0.3(typescript@5.9.3) - semver: 7.7.4 - tempy: 3.1.0 + read-pkg: 10.1.0 + registry-auth-token: 5.1.1 + semantic-release: 25.0.9(typescript@6.0.3) + semver: 7.8.5 + tempy: 3.2.0 - '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.3(typescript@5.9.3))': + '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.9(typescript@6.0.3))': dependencies: - conventional-changelog-angular: 8.1.0 - conventional-changelog-writer: 8.2.0 + conventional-changelog-angular: 8.3.1 + conventional-changelog-writer: 8.4.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.2.1 + conventional-commits-parser: 6.4.0 debug: 4.4.3 - get-stream: 7.0.1 import-from-esm: 2.0.0 - into-stream: 7.0.0 - lodash-es: 4.17.21 + lodash-es: 4.18.1 read-package-up: 11.0.0 - semantic-release: 25.0.3(typescript@5.9.3) + semantic-release: 25.0.9(typescript@6.0.3) transitivePeerDependencies: - supports-color + '@simple-libs/stream-utils@1.2.0': {} + '@sindresorhus/is@4.6.0': {} '@sindresorhus/merge-streams@4.0.0': {} - '@standard-schema/spec@1.1.0': {} + '@tanstack/query-core@5.104.1': {} - '@tanstack/query-core@5.90.5': {} - - '@tanstack/react-query@5.90.5(react@18.3.1)': + '@tanstack/react-query@5.104.1(react@19.3.0)': dependencies: - '@tanstack/query-core': 5.90.5 - react: 18.3.1 + '@tanstack/query-core': 5.104.1 + react: 19.3.0 - '@tanstack/react-store@0.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-store@0.11.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@tanstack/store': 0.7.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - use-sync-external-store: 1.6.0(react@18.3.1) + '@tanstack/store': 0.11.1 + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) + use-sync-external-store: 1.7.0(react@19.3.0) - '@tanstack/store@0.7.2': {} + '@tanstack/store@0.11.1': {} - '@txnlab/use-wallet-react@4.3.1(@blockshake/defly-connect@1.2.1(algosdk@3.5.2))(@perawallet/connect@1.4.2(algosdk@3.5.2))(algosdk@3.5.2)(lute-connect@1.6.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@txnlab/use-wallet-defly@5.0.1(@txnlab/use-wallet@5.0.1(algosdk@3.8.0))(algosdk@3.8.0)': dependencies: - '@tanstack/react-store': 0.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@txnlab/use-wallet': 4.3.1(@blockshake/defly-connect@1.2.1(algosdk@3.5.2))(@perawallet/connect@1.4.2(algosdk@3.5.2))(algosdk@3.5.2)(lute-connect@1.6.3) - algosdk: 3.5.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@blockshake/defly-connect': 1.2.1(algosdk@3.5.2) - '@perawallet/connect': 1.4.2(algosdk@3.5.2) - lute-connect: 1.6.3 + '@blockshake/defly-connect': 1.2.1(algosdk@3.8.0) + '@txnlab/use-wallet': 5.0.1(algosdk@3.8.0) + algosdk: 3.8.0 transitivePeerDependencies: - - '@agoralabs-sh/avm-web-provider' - - '@txnlab/use-wallet@4.3.1(@blockshake/defly-connect@1.2.1(algosdk@3.5.2))(@perawallet/connect@1.4.2(algosdk@3.5.2))(algosdk@3.5.2)(lute-connect@1.6.3)': - dependencies: - '@tanstack/store': 0.7.2 - algosdk: 3.5.2 - optionalDependencies: - '@blockshake/defly-connect': 1.2.1(algosdk@3.5.2) - '@perawallet/connect': 1.4.2(algosdk@3.5.2) - lute-connect: 1.6.3 - - '@tybys/wasm-util@0.10.1': - dependencies: - tslib: 2.8.1 - optional: true + - bufferutil + - utf-8-validate - '@types/babel__core@7.20.5': + '@txnlab/use-wallet-pera@5.0.1(@txnlab/use-wallet@5.0.1(algosdk@3.8.0))(algosdk@3.8.0)': dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 + '@perawallet/connect': 1.6.1(algosdk@3.8.0) + '@txnlab/use-wallet': 5.0.1(algosdk@3.8.0) + algosdk: 3.8.0 - '@types/babel__generator@7.27.0': + '@txnlab/use-wallet-react@5.0.1(algosdk@3.8.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: - '@babel/types': 7.29.0 + '@tanstack/react-store': 0.11.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@txnlab/use-wallet': 5.0.1(algosdk@3.8.0) + algosdk: 3.8.0 + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) - '@types/babel__template@7.4.4': + '@txnlab/use-wallet@5.0.1(algosdk@3.8.0)': dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 + '@tanstack/store': 0.11.1 + algosdk: 3.8.0 + tweetnacl: 1.0.3 - '@types/babel__traverse@7.28.0': + '@tybys/wasm-util@0.10.4': dependencies: - '@babel/types': 7.29.0 + tslib: 2.8.1 + optional: true - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/deep-eql@4.0.2': {} - '@types/estree@1.0.8': {} + '@types/esrecurse@4.3.1': {} - '@types/jsesc@2.5.1': {} + '@types/estree@1.0.8': + optional: true - '@types/json-schema@7.0.15': {} + '@types/estree@1.0.9': {} - '@types/node@22.18.13': - dependencies: - undici-types: 6.21.0 + '@types/json-schema@7.0.15': {} - '@types/node@22.19.20': + '@types/node@22.20.5': dependencies: undici-types: 6.21.0 @@ -4629,245 +4299,208 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@types/prop-types@15.7.15': {} - - '@types/react-dom@18.3.7(@types/react@18.3.26)': + '@types/react-dom@19.3.0(@types/react@19.3.0)': dependencies: - '@types/react': 18.3.26 + '@types/react': 19.3.0 - '@types/react@18.3.26': + '@types/react@19.3.0': dependencies: - '@types/prop-types': 15.7.15 - csstype: 3.1.3 + csstype: 3.2.3 - '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/type-utils': 8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.60.1 - eslint: 9.39.4(jiti@2.6.1) - ignore: 7.0.5 + '@typescript-eslint/parser': 8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/type-utils': 8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 + eslint: 10.12.0(jiti@2.6.1) + ignore: 7.0.12 natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.60.1 + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - typescript: 5.9.3 + eslint: 10.12.0(jiti@2.6.1) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.60.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.71.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@5.9.3) - '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 debug: 4.4.3 - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.60.1': + '@typescript-eslint/scope-manager@8.71.1': dependencies: - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/visitor-keys': 8.60.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 - '@typescript-eslint/tsconfig-utils@8.60.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.71.1(typescript@6.0.3)': dependencies: - typescript: 5.9.3 + typescript: 6.0.3 - '@typescript-eslint/type-utils@8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3) debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 + eslint: 10.12.0(jiti@2.6.1) + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.58.2': {} - - '@typescript-eslint/types@8.60.1': {} + '@typescript-eslint/types@8.71.1': {} - '@typescript-eslint/typescript-estree@8.60.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.71.1(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.60.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@5.9.3) - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/visitor-keys': 8.60.1 + '@typescript-eslint/project-service': 8.71.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@6.0.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 debug: 4.4.3 - minimatch: 10.2.5 - semver: 7.8.1 + minimatch: 10.2.6 + semver: 7.8.5 tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.60.1 - '@typescript-eslint/types': 8.60.1 - '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - typescript: 5.9.3 + '@eslint-community/eslint-utils': 4.10.1(eslint@10.12.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@6.0.3) + eslint: 10.12.0(jiti@2.6.1) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.60.1': + '@typescript-eslint/visitor-keys@8.71.1': dependencies: - '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/types': 8.71.1 eslint-visitor-keys: 5.0.1 - '@unrs/resolver-binding-android-arm-eabi@1.11.1': + '@unrs/resolver-binding-android-arm-eabi@1.12.2': optional: true - '@unrs/resolver-binding-android-arm64@1.11.1': + '@unrs/resolver-binding-android-arm64@1.12.2': optional: true - '@unrs/resolver-binding-darwin-arm64@1.11.1': + '@unrs/resolver-binding-darwin-arm64@1.12.2': optional: true - '@unrs/resolver-binding-darwin-x64@1.11.1': + '@unrs/resolver-binding-darwin-x64@1.12.2': optional: true - '@unrs/resolver-binding-freebsd-x64@1.11.1': + '@unrs/resolver-binding-freebsd-x64@1.12.2': optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': optional: true - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': optional: true - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': optional: true - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': optional: true - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': optional: true - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': optional: true - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': optional: true - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': optional: true - '@unrs/resolver-binding-linux-x64-musl@1.11.1': + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': optional: true - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - dependencies: - '@napi-rs/wasm-runtime': 0.2.12 - optional: true - - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': optional: true - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + '@unrs/resolver-binding-linux-x64-musl@1.12.2': optional: true - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + '@unrs/resolver-binding-openharmony-arm64@1.12.2': optional: true - '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1))': + '@unrs/resolver-binding-wasm32-wasi@1.12.2': dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) - '@rolldown/pluginutils': 1.0.0-beta.27 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 6.4.1(@types/node@24.9.1)(jiti@2.6.1) - transitivePeerDependencies: - - supports-color + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true - '@vitest/coverage-v8@4.1.8(vitest@4.1.11)': - dependencies: - '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.8 - ast-v8-to-istanbul: 1.0.0 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.2.0 - magicast: 0.5.2 - obug: 2.1.1 - std-env: 4.1.0 - tinyrainbow: 3.1.0 - vitest: 4.1.11(@types/node@22.19.20)(@vitest/coverage-v8@4.1.8)(vite@6.4.1(@types/node@22.19.20)(jiti@2.6.1)) - - '@vitest/expect@4.1.11': - dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.2 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 - chai: 6.2.2 - tinyrainbow: 3.1.0 - - '@vitest/mocker@4.1.11(vite@6.4.1(@types/node@22.19.20)(jiti@2.6.1))': - dependencies: - '@vitest/spy': 4.1.11 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - vite: 6.4.1(@types/node@22.19.20)(jiti@2.6.1) + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + optional: true - '@vitest/pretty-format@4.1.11': - dependencies: - tinyrainbow: 3.1.0 + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + optional: true - '@vitest/pretty-format@4.1.8': - dependencies: - tinyrainbow: 3.1.0 + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + optional: true - '@vitest/runner@4.1.11': + '@vitejs/plugin-react@6.1.2(vite@8.3.3(@types/node@24.9.1)(jiti@2.6.1))': dependencies: - '@vitest/utils': 4.1.11 - pathe: 2.0.3 + '@rolldown/pluginutils': 1.0.1 + vite: 8.3.3(@types/node@24.9.1)(jiti@2.6.1) - '@vitest/snapshot@4.1.11': + '@vitest/coverage-v8@5.0.3(vitest@5.0.3)': dependencies: - '@vitest/pretty-format': 4.1.11 - '@vitest/utils': 4.1.11 - magic-string: 0.30.21 - pathe: 2.0.3 + '@bcoe/v8-coverage': 1.0.2 + '@vitest/istanbul-lib-coverage': 1.0.2 + '@vitest/istanbul-lib-report': 1.0.2 + ast-v8-to-istanbul: 1.0.7 + magicast: 0.5.5 + obug: 2.2.1 + std-env: 4.3.0 + tinyrainbow: 3.2.0 + vitest: 5.0.3(@types/node@22.20.5)(@vitest/coverage-v8@5.0.3)(vite@8.3.3(@types/node@22.20.5)(jiti@2.6.1)) - '@vitest/spy@4.1.11': {} + '@vitest/istanbul-lib-coverage@1.0.2': {} - '@vitest/utils@4.1.11': + '@vitest/istanbul-lib-report@1.0.2': dependencies: - '@vitest/pretty-format': 4.1.11 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 + '@vitest/istanbul-lib-coverage': 1.0.2 - '@vitest/utils@4.1.8': + '@vitest/mocker@5.0.3(vite@8.3.3(@types/node@22.20.5)(jiti@2.6.1))': dependencies: - '@vitest/pretty-format': 4.1.8 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.3 + estree-walker: 3.0.3 + magic-string: 1.4.3 + optionalDependencies: + vite: 8.3.3(@types/node@22.20.5)(jiti@2.6.1) + + '@vitest/spy@5.0.3': {} '@walletconnect/browser-utils@1.8.0': dependencies: @@ -4968,13 +4601,87 @@ snapshots: dependencies: '@walletconnect/window-getters': 1.0.0 - acorn-jsx@5.3.2(acorn@8.15.0): + '@yuku-codegen/binding-android-arm64@0.10.2': + optional: true + + '@yuku-codegen/binding-darwin-arm64@0.10.2': + optional: true + + '@yuku-codegen/binding-darwin-x64@0.10.2': + optional: true + + '@yuku-codegen/binding-freebsd-x64@0.10.2': + optional: true + + '@yuku-codegen/binding-linux-arm-gnu@0.10.2': + optional: true + + '@yuku-codegen/binding-linux-arm-musl@0.10.2': + optional: true + + '@yuku-codegen/binding-linux-arm64-gnu@0.10.2': + optional: true + + '@yuku-codegen/binding-linux-arm64-musl@0.10.2': + optional: true + + '@yuku-codegen/binding-linux-x64-gnu@0.10.2': + optional: true + + '@yuku-codegen/binding-linux-x64-musl@0.10.2': + optional: true + + '@yuku-codegen/binding-win32-arm64@0.10.2': + optional: true + + '@yuku-codegen/binding-win32-x64@0.10.2': + optional: true + + '@yuku-parser/binding-android-arm64@0.10.2': + optional: true + + '@yuku-parser/binding-darwin-arm64@0.10.2': + optional: true + + '@yuku-parser/binding-darwin-x64@0.10.2': + optional: true + + '@yuku-parser/binding-freebsd-x64@0.10.2': + optional: true + + '@yuku-parser/binding-linux-arm-gnu@0.10.2': + optional: true + + '@yuku-parser/binding-linux-arm-musl@0.10.2': + optional: true + + '@yuku-parser/binding-linux-arm64-gnu@0.10.2': + optional: true + + '@yuku-parser/binding-linux-arm64-musl@0.10.2': + optional: true + + '@yuku-parser/binding-linux-x64-gnu@0.10.2': + optional: true + + '@yuku-parser/binding-linux-x64-musl@0.10.2': + optional: true + + '@yuku-parser/binding-win32-arm64@0.10.2': + optional: true + + '@yuku-parser/binding-win32-x64@0.10.2': + optional: true + + '@yuku-toolchain/types@0.10.2': {} + + acorn-jsx@5.3.2(acorn@8.19.0): dependencies: - acorn: 8.15.0 + acorn: 8.19.0 - acorn@8.15.0: {} + acorn@8.19.0: {} - agent-base@7.1.4: {} + agent-base@9.0.0: {} aggregate-error@3.1.0: dependencies: @@ -4986,7 +4693,7 @@ snapshots: clean-stack: 5.3.0 indent-string: 5.0.0 - ajv@6.14.0: + ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -4995,7 +4702,7 @@ snapshots: algorand-msgpack@1.1.0: {} - algosdk@3.5.2: + algosdk@3.8.0: dependencies: algorand-msgpack: 1.1.0 hi-base32: 0.5.1 @@ -5006,13 +4713,13 @@ snapshots: tweetnacl: 1.0.3 vlq: 2.0.4 - ansi-escapes@7.1.1: + ansi-escapes@7.3.0: dependencies: environment: 1.1.0 ansi-regex@5.0.1: {} - ansi-regex@6.2.2: {} + ansi-regex@6.4.0: {} ansi-styles@3.2.1: dependencies: @@ -5024,8 +4731,6 @@ snapshots: ansi-styles@6.2.3: {} - ansis@4.3.1: {} - any-promise@1.3.0: {} argparse@2.0.1: {} @@ -5036,25 +4741,21 @@ snapshots: asn1.js@4.10.1: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.5 inherits: 2.0.4 minimalistic-assert: 1.0.1 assert@2.1.0: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 is-nan: 1.3.2 object-is: 1.1.6 object.assign: 4.1.7 util: 0.12.5 - ast-kit@3.0.0-beta.1: - dependencies: - '@babel/parser': 8.0.0-rc.6 - estree-walker: 3.0.3 - pathe: 2.0.3 + assertion-error@2.0.1: {} - ast-v8-to-istanbul@1.0.0: + ast-v8-to-istanbul@1.0.7: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -5064,40 +4765,25 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - balanced-match@1.0.2: {} - balanced-match@4.0.4: {} base64-js@1.5.1: {} - baseline-browser-mapping@2.8.20: {} - before-after-hook@4.0.0: {} bignumber.js@9.3.1: {} - birpc@4.0.0: {} - bn.js@4.11.8: {} - bn.js@4.12.2: {} + bn.js@4.12.5: {} - bn.js@5.2.2: {} + bn.js@5.2.5: {} bottleneck@2.19.5: {} bowser@2.11.0: {} - brace-expansion@1.1.12: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.2: - dependencies: - balanced-match: 1.0.2 - - brace-expansion@5.0.5: + brace-expansion@5.0.12: dependencies: balanced-match: 4.0.4 @@ -5109,7 +4795,7 @@ snapshots: browser-resolve@2.0.0: dependencies: - resolve: 1.22.11 + resolve: 1.22.13 browserify-aes@1.2.0: dependencies: @@ -5135,13 +4821,13 @@ snapshots: browserify-rsa@4.1.1: dependencies: - bn.js: 5.2.2 + bn.js: 5.2.5 randombytes: 2.1.0 safe-buffer: 5.2.1 - browserify-sign@4.2.5: + browserify-sign@4.2.6: dependencies: - bn.js: 5.2.2 + bn.js: 5.2.5 browserify-rsa: 4.1.1 create-hash: 1.2.0 create-hmac: 1.1.7 @@ -5155,14 +4841,6 @@ snapshots: dependencies: pako: 1.0.11 - browserslist@4.27.0: - dependencies: - baseline-browser-mapping: 2.8.20 - caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.241 - node-releases: 2.0.26 - update-browserslist-db: 1.1.4(browserslist@4.27.0) - buffer-xor@1.0.3: {} buffer@5.7.1: @@ -5179,12 +4857,20 @@ snapshots: cac@7.0.0: {} + cacheable@2.5.0: + dependencies: + '@cacheable/memory': 2.2.0 + '@cacheable/utils': 2.5.0 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.10.1 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.8: + call-bind@1.0.9: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 @@ -5198,9 +4884,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001751: {} - - chai@6.2.2: {} + chai@6.3.0: {} chalk@2.4.2: dependencies: @@ -5236,7 +4920,7 @@ snapshots: mz: 2.7.0 parse5: 5.1.1 parse5-htmlparser2-tree-adapter: 6.0.1 - yargs: 16.2.0 + yargs: 16.2.2 cli-table3@0.6.5: dependencies: @@ -5253,7 +4937,7 @@ snapshots: cliui@9.0.1: dependencies: string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrap-ansi: 9.0.2 color-convert@1.9.3: @@ -5268,15 +4952,13 @@ snapshots: color-name@1.1.4: {} - comment-parser@1.4.1: {} + comment-parser@1.4.9: {} compare-func@2.0.0: dependencies: array-ify: 1.0.0 dot-prop: 5.3.0 - concat-map@0.0.1: {} - config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -5286,41 +4968,43 @@ snapshots: constants-browserify@1.0.0: {} - conventional-changelog-angular@8.1.0: + content-type@3.1.1: {} + + conventional-changelog-angular@8.3.1: dependencies: compare-func: 2.0.0 - conventional-changelog-writer@8.2.0: + conventional-changelog-writer@8.4.0: dependencies: + '@simple-libs/stream-utils': 1.2.0 conventional-commits-filter: 5.0.0 - handlebars: 4.7.8 + handlebars: 4.7.10 meow: 13.2.0 - semver: 7.8.1 + semver: 7.8.5 conventional-commits-filter@5.0.0: {} - conventional-commits-parser@6.2.1: + conventional-commits-parser@6.4.0: dependencies: + '@simple-libs/stream-utils': 1.2.0 meow: 13.2.0 convert-hrtime@5.0.0: {} - convert-source-map@2.0.0: {} - core-util-is@1.0.3: {} - cosmiconfig@9.0.0(typescript@5.9.3): + cosmiconfig@9.0.2(typescript@6.0.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.3.2 parse-json: 5.2.0 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 create-ecdh@4.0.4: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.5 elliptic: 6.6.1 create-hash@1.2.0: @@ -5351,14 +5035,14 @@ snapshots: crypto-browserify@3.12.1: dependencies: browserify-cipher: 1.0.1 - browserify-sign: 4.2.5 + browserify-sign: 4.2.6 create-ecdh: 4.0.4 create-hash: 1.2.0 create-hmac: 1.1.7 diffie-hellman: 5.0.3 hash-base: 3.0.5 inherits: 2.0.4 - pbkdf2: 3.1.5 + pbkdf2: 3.1.7 public-encrypt: 4.0.3 randombytes: 2.1.0 randomfill: 1.0.4 @@ -5367,7 +5051,7 @@ snapshots: dependencies: type-fest: 1.4.0 - csstype@3.1.3: {} + csstype@3.2.3: {} debug@4.4.3: dependencies: @@ -5400,9 +5084,11 @@ snapshots: detect-browser@5.2.0: {} + detect-libc@2.1.2: {} + diffie-hellman@5.0.3: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.5 miller-rabin: 4.0.1 randombytes: 2.1.0 @@ -5416,7 +5102,7 @@ snapshots: dependencies: is-obj: 2.0.0 - dotenv@16.6.1: {} + dotenv@18.0.6: {} dts-resolver@3.0.0: {} @@ -5430,11 +5116,9 @@ snapshots: dependencies: readable-stream: 2.3.8 - electron-to-chromium@1.5.241: {} - elliptic@6.6.1: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.5 brorand: 1.1.0 hash.js: 1.1.7 hmac-drbg: 1.0.1 @@ -5448,7 +5132,7 @@ snapshots: emojilib@2.4.0: {} - empathic@2.0.1: {} + empathic@2.1.0: {} env-ci@11.2.0: dependencies: @@ -5467,41 +5151,12 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@2.0.0: {} + es-module-lexer@2.3.2: {} - es-object-atoms@1.1.1: + es-object-atoms@1.1.2: dependencies: es-errors: 1.3.0 - esbuild@0.25.11: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 - escalade@3.2.0: {} escape-string-regexp@1.0.5: {} @@ -5510,80 +5165,75 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@10.12.0(jiti@2.6.1)): dependencies: - eslint: 9.39.4(jiti@2.6.1) + eslint: 10.12.0(jiti@2.6.1) - eslint-import-context@0.1.9(unrs-resolver@1.11.1): + eslint-import-context@0.1.9(unrs-resolver@1.12.2): dependencies: - get-tsconfig: 4.14.0 + get-tsconfig: 4.14.3 stable-hash-x: 0.2.0 optionalDependencies: - unrs-resolver: 1.11.1 + unrs-resolver: 1.12.2 - eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import-x@4.17.1(@typescript-eslint/utils@8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.12.0(jiti@2.6.1)): dependencies: - '@package-json/types': 0.0.12 - '@typescript-eslint/types': 8.58.2 - comment-parser: 1.4.1 + '@typescript-eslint/types': 8.71.1 + comment-parser: 1.4.9 debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - eslint-import-context: 0.1.9(unrs-resolver@1.11.1) + eslint: 10.12.0(jiti@2.6.1) + eslint-import-context: 0.1.9(unrs-resolver@1.12.2) is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.3 + minimatch: 10.2.6 + semver: 7.8.5 stable-hash-x: 0.2.0 - unrs-resolver: 1.11.1 + unrs-resolver: 1.12.2 optionalDependencies: - '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3) transitivePeerDependencies: - supports-color - eslint-scope@8.4.0: + eslint-scope@9.1.2: dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@5.0.1: {} - eslint@9.39.4(jiti@2.6.1): + eslint@10.12.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.12.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.5 - '@eslint/js': 9.39.4 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.7 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.7.0 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.3 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.14.0 - chalk: 4.1.2 + '@types/estree': 1.0.9 + ajv: 6.15.0 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 + file-entry-cache: 11.1.5 find-up: 5.0.0 glob-parent: 6.0.2 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 + minimatch: 10.2.6 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -5591,13 +5241,13 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.4.0: + espree@11.2.0: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) + eslint-visitor-keys: 5.0.1 - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -5611,7 +5261,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 esutils@2.0.3: {} @@ -5622,17 +5272,20 @@ snapshots: md5.js: 1.3.5 safe-buffer: 5.2.1 - execa@5.1.1: + execa@10.1.0: dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 + '@sindresorhus/merge-streams': 4.0.0 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.1 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + which-command: 0.1.0 + yoctocolors: 2.2.0 execa@8.0.1: dependencies: @@ -5646,7 +5299,7 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.6.0: + execa@9.6.1: dependencies: '@sindresorhus/merge-streams': 4.0.0 cross-spawn: 7.0.6 @@ -5656,14 +5309,12 @@ snapshots: is-plain-obj: 4.1.0 is-stream: 4.0.1 npm-run-path: 6.0.0 - pretty-ms: 9.3.0 + pretty-ms: 9.3.1 signal-exit: 4.1.0 strip-final-newline: 4.0.0 - yoctocolors: 2.1.2 - - expect-type@1.3.0: {} + yoctocolors: 2.2.0 - fast-content-type-parse@3.0.0: {} + expect-type@1.4.0: {} fast-deep-equal@3.1.3: {} @@ -5671,13 +5322,9 @@ snapshots: fast-levenshtein@2.0.6: {} - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.4 + picomatch: 4.0.7 figures@2.0.0: dependencies: @@ -5687,9 +5334,9 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-entry-cache@8.0.0: + file-entry-cache@11.1.5: dependencies: - flat-cache: 4.0.1 + flat-cache: 6.1.23 fill-range@7.1.1: dependencies: @@ -5709,28 +5356,24 @@ snapshots: find-versions@6.0.0: dependencies: semver-regex: 4.0.5 - super-regex: 1.0.0 + super-regex: 1.1.0 - flat-cache@4.0.1: + flat-cache@6.1.23: dependencies: - flatted: 3.3.3 - keyv: 4.5.4 + cacheable: 2.5.0 + flatted: 3.4.4 + hookified: 1.15.1 - flatted@3.3.3: {} + flatted@3.4.4: {} for-each@0.3.5: dependencies: is-callable: 1.2.7 - from2@2.3.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - fs-extra@11.3.2: + fs-extra@11.4.1: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.0 + jsonfile: 6.2.1 universalify: 2.0.1 fsevents@2.3.3: @@ -5742,34 +5385,30 @@ snapshots: generator-function@2.0.1: {} - gensync@1.0.0-beta.2: {} - get-caller-file@2.0.5: {} - get-east-asian-width@1.4.0: {} + get-east-asian-width@1.7.0: {} get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.1.1 + es-object-atoms: 1.1.2 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 math-intrinsics: 1.1.0 get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 + es-object-atoms: 1.1.2 get-stream@6.0.1: {} - get-stream@7.0.1: {} - get-stream@8.0.1: {} get-stream@9.0.1: @@ -5777,11 +5416,11 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 - get-tsconfig@4.14.0: + get-tsconfig@4.14.3: dependencies: resolve-pkg-maps: 1.0.0 - get-tsconfig@5.0.0-beta.5: + get-tsconfig@5.0.0-beta.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -5798,15 +5437,13 @@ snapshots: dependencies: is-glob: 4.0.3 - globals@14.0.0: {} - gopd@1.2.0: {} graceful-fs@4.2.10: {} graceful-fs@4.2.11: {} - handlebars@4.7.8: + handlebars@4.7.10: dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -5846,7 +5483,11 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 - hasown@2.0.2: + hashery@1.5.1: + dependencies: + hookified: 1.15.1 + + hasown@2.0.4: dependencies: function-bind: 1.1.2 @@ -5862,36 +5503,40 @@ snapshots: hook-std@4.0.0: {} - hookable@6.1.1: {} + hookable@6.1.2: {} + + hookified@1.15.1: {} + + hookified@2.2.0: {} hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 - hosted-git-info@9.0.2: + hosted-git-info@9.0.3: dependencies: - lru-cache: 11.2.2 - - html-escaper@2.0.2: {} + lru-cache: 11.5.3 - http-proxy-agent@7.0.2: + http-proxy-agent@9.1.0: dependencies: - agent-base: 7.1.4 + agent-base: 9.0.0 debug: 4.4.3 + proxy-agent-negotiate: 1.1.0 transitivePeerDependencies: + - kerberos - supports-color https-browserify@1.0.0: {} - https-proxy-agent@7.0.6: + https-proxy-agent@9.1.0: dependencies: - agent-base: 7.1.4 + agent-base: 9.0.0 debug: 4.4.3 + proxy-agent-negotiate: 1.1.0 transitivePeerDependencies: + - kerberos - supports-color - human-signals@2.1.0: {} - human-signals@5.0.0: {} human-signals@8.0.1: {} @@ -5900,7 +5545,7 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.5: {} + ignore@7.0.12: {} import-fresh@3.3.1: dependencies: @@ -5916,7 +5561,7 @@ snapshots: import-meta-resolve@4.2.0: {} - import-without-cache@0.4.0: {} + import-without-cache@0.4.1: {} imurmurhash@0.1.4: {} @@ -5930,11 +5575,6 @@ snapshots: ini@1.3.8: {} - into-stream@7.0.0: - dependencies: - from2: 2.3.0 - p-is-promise: 3.0.0 - is-arguments@1.2.0: dependencies: call-bound: 1.0.4 @@ -5944,9 +5584,9 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.16.1: + is-core-module@2.17.0: dependencies: - hasown: 2.0.2 + hasown: 2.0.4 is-extglob@2.1.1: {} @@ -5966,7 +5606,7 @@ snapshots: is-nan@1.3.2: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 is-number@7.0.0: {} @@ -5980,9 +5620,7 @@ snapshots: call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-stream@2.0.1: {} + hasown: 2.0.4 is-stream@3.0.0: {} @@ -5990,7 +5628,7 @@ snapshots: is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.19 + which-typed-array: 1.1.24 is-typedarray@1.0.0: {} @@ -6004,7 +5642,7 @@ snapshots: isomorphic-timers-promises@1.0.1: {} - issue-parser@7.0.1: + issue-parser@7.0.2: dependencies: lodash.capitalize: 4.2.1 lodash.escaperegexp: 4.1.2 @@ -6012,19 +5650,6 @@ snapshots: lodash.isstring: 4.0.1 lodash.uniqby: 4.7.0 - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-reports@3.2.0: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - java-properties@1.0.2: {} jiti@2.6.1: @@ -6040,22 +5665,14 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - js-yaml@4.1.1: + js-yaml@4.3.2: dependencies: argparse: 2.0.1 - jsesc@3.1.0: {} - json-bigint@1.0.0: dependencies: bignumber.js: 9.3.1 - json-buffer@3.0.1: {} - json-parse-better-errors@1.0.2: {} json-parse-even-better-errors@2.3.1: {} @@ -6064,17 +5681,17 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json5@2.2.3: {} + json-with-bigint@3.5.12: {} - jsonfile@6.2.0: + jsonfile@6.2.1: dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - keyv@4.5.4: + keyv@5.6.0: dependencies: - json-buffer: 3.0.1 + '@keyv/serialize': 1.1.1 keyvaluestorage-interface@1.0.0: {} @@ -6083,6 +5700,55 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + lines-and-columns@1.2.4: {} load-json-file@4.0.0: @@ -6101,7 +5767,7 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.21: {} + lodash-es@4.18.1: {} lodash.capitalize@4.2.1: {} @@ -6111,46 +5777,38 @@ snapshots: lodash.isstring@4.0.1: {} - lodash.merge@4.6.2: {} - lodash.uniqby@4.7.0: {} - lodash@4.17.21: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - lottie-web@5.13.0: {} lru-cache@10.4.3: {} - lru-cache@11.2.2: {} + lru-cache@11.5.3: {} - lru-cache@5.1.1: + magic-string@0.30.21: dependencies: - yallist: 3.1.1 + '@jridgewell/sourcemap-codec': 1.6.0 - lute-connect@1.6.3: {} - - magic-string@0.30.21: + magic-string@1.4.3: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 - magicast@0.5.2: + magicast@0.5.5: dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - source-map-js: 1.2.1 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + source-map-js: 1.2.2 - make-dir@4.0.0: + make-asynchronous@1.1.0: dependencies: - semver: 7.8.1 + p-event: 6.0.1 + type-fest: 4.41.0 + web-worker: 1.5.0 marked-terminal@7.3.0(marked@15.0.12): dependencies: - ansi-escapes: 7.1.1 - ansi-regex: 6.2.2 + ansi-escapes: 7.3.0 + ansi-regex: 6.4.0 chalk: 5.6.2 cli-highlight: 2.1.11 cli-table3: 0.6.5 @@ -6164,7 +5822,7 @@ snapshots: md5.js@1.3.5: dependencies: - hash-base: 3.1.2 + hash-base: 3.0.5 inherits: 2.0.4 safe-buffer: 5.2.1 @@ -6175,34 +5833,24 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 miller-rabin@4.0.1: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.5 brorand: 1.1.0 mime@4.1.0: {} - mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} - minimatch@10.2.5: - dependencies: - brace-expansion: 5.0.5 - - minimatch@3.1.5: - dependencies: - brace-expansion: 1.1.12 - - minimatch@9.0.5: + minimatch@10.2.6: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 5.0.12 minimist@1.2.8: {} @@ -6216,7 +5864,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.11: {} + nanoid@3.3.20: {} napi-postinstall@0.3.4: {} @@ -6233,8 +5881,6 @@ snapshots: emojilib: 2.4.0 skin-tone: 2.0.0 - node-releases@2.0.26: {} - node-stdlib-browser@1.3.1: dependencies: assert: 2.1.0 @@ -6268,20 +5914,16 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.8.1 + semver: 7.8.5 validate-npm-package-license: 3.0.4 normalize-package-data@8.0.0: dependencies: - hosted-git-info: 9.0.2 - semver: 7.8.1 + hosted-git-info: 9.0.3 + semver: 7.8.5 validate-npm-package-license: 3.0.4 - normalize-url@8.1.0: {} - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 + normalize-url@9.0.1: {} npm-run-path@5.3.0: dependencies: @@ -6292,7 +5934,7 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 - npm@11.6.2: {} + npm@11.21.0: {} object-assign@4.1.1: {} @@ -6300,25 +5942,23 @@ snapshots: object-is@1.1.6: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 define-properties: 1.2.1 object-keys@1.1.1: {} object.assign@4.1.7: dependencies: - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.1.1 + es-object-atoms: 1.1.2 has-symbols: 1.1.0 object-keys: 1.1.1 - obug@2.1.1: {} + obug@2.2.1: {} - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 + obug@3.0.0: {} onetime@6.0.0: dependencies: @@ -6337,11 +5977,13 @@ snapshots: p-each-series@3.0.0: {} - p-filter@4.1.0: + p-event@6.0.1: dependencies: - p-map: 7.0.3 + p-timeout: 6.1.4 - p-is-promise@3.0.0: {} + p-filter@4.1.0: + dependencies: + p-map: 7.0.8 p-limit@1.3.0: dependencies: @@ -6359,15 +6001,15 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.3: {} - - p-reduce@2.1.0: {} + p-map@7.0.8: {} p-reduce@3.0.0: {} + p-timeout@6.1.4: {} + p-try@1.0.0: {} - package-manager-detector@1.6.0: {} + package-manager-detector@1.9.0: {} pako@1.0.11: {} @@ -6380,7 +6022,7 @@ snapshots: asn1.js: 4.10.1 browserify-aes: 1.2.0 evp_bytestokey: 1.0.3 - pbkdf2: 3.1.5 + pbkdf2: 3.1.7 safe-buffer: 5.2.1 parse-json@4.0.0: @@ -6390,14 +6032,14 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.7 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-json@8.3.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.7 index-to-position: 1.2.0 type-fest: 4.41.0 @@ -6425,9 +6067,7 @@ snapshots: path-type@4.0.0: {} - pathe@2.0.3: {} - - pbkdf2@3.1.5: + pbkdf2@3.1.7: dependencies: create-hash: 1.2.0 create-hmac: 1.1.7 @@ -6438,11 +6078,9 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} - - picomatch@4.0.3: {} + picomatch@2.3.2: {} - picomatch@4.0.4: {} + picomatch@4.0.7: {} pify@3.0.0: {} @@ -6457,17 +6095,17 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.6: + postcss@8.5.29: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.20 picocolors: 1.1.1 - source-map-js: 1.2.1 + source-map-js: 1.2.2 prelude-ls@1.2.1: {} - prettier@3.8.3: {} + prettier@3.9.9: {} - pretty-ms@9.3.0: + pretty-ms@9.3.1: dependencies: parse-ms: 4.0.0 @@ -6477,19 +6115,21 @@ snapshots: proto-list@1.2.4: {} + proxy-agent-negotiate@1.1.0: {} + public-encrypt@4.0.3: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.5 browserify-rsa: 4.1.1 create-hash: 1.2.0 parse-asn1: 5.1.9 randombytes: 2.1.0 safe-buffer: 5.2.1 - publint@0.3.21: + publint@0.3.25: dependencies: - '@publint/pack': 0.1.4 - package-manager-detector: 1.6.0 + '@publint/pack': 0.1.7 + package-manager-detector: 1.9.0 picocolors: 1.1.1 sade: 1.8.1 @@ -6497,15 +6137,20 @@ snapshots: punycode@2.3.1: {} + qified@0.10.1: + dependencies: + hookified: 2.2.0 + qr-code-styling@1.6.0-rc.1: dependencies: qrcode-generator: 1.5.2 qrcode-generator@1.5.2: {} - qs@6.14.0: + qs@6.16.0: dependencies: - side-channel: 1.1.0 + es-define-property: 1.0.1 + side-channel: 1.1.1 quansync@1.0.0: {} @@ -6533,17 +6178,12 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dom@18.3.1(react@18.3.1): + react-dom@19.3.0(react@19.3.0): dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 + react: 19.3.0 + scheduler: 0.28.0 - react-refresh@0.17.0: {} - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 + react@19.3.0: {} read-package-up@11.0.0: dependencies: @@ -6554,16 +6194,16 @@ snapshots: read-package-up@12.0.0: dependencies: find-up-simple: 1.0.1 - read-pkg: 10.0.0 - type-fest: 5.2.0 + read-pkg: 10.1.0 + type-fest: 5.10.0 - read-pkg@10.0.0: + read-pkg@10.1.0: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 8.0.0 parse-json: 8.3.0 - type-fest: 5.2.0 - unicorn-magic: 0.3.0 + type-fest: 5.10.0 + unicorn-magic: 0.4.1 read-pkg@9.0.1: dependencies: @@ -6589,9 +6229,9 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - registry-auth-token@5.1.0: + registry-auth-token@5.1.1: dependencies: - '@pnpm/npm-conf': 2.3.1 + '@pnpm/npm-conf': 3.0.3 require-directory@2.1.1: {} @@ -6601,9 +6241,10 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.11: + resolve@1.22.13: dependencies: - is-core-module: 2.16.1 + es-errors: 1.3.0 + is-core-module: 2.17.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -6612,19 +6253,17 @@ snapshots: hash-base: 3.1.2 inherits: 2.0.4 - rolldown-plugin-dts@0.25.2(rolldown@1.1.0)(typescript@5.9.3): + rolldown-plugin-dts@0.28.6(rolldown@1.2.13)(typescript@6.0.3): dependencies: - '@babel/generator': 8.0.0-rc.6 - '@babel/helper-validator-identifier': 8.0.0-rc.6 - '@babel/parser': 8.0.0-rc.6 - ast-kit: 3.0.0-beta.1 - birpc: 4.0.0 dts-resolver: 3.0.0 - get-tsconfig: 5.0.0-beta.5 - obug: 2.1.1 - rolldown: 1.1.0 + get-tsconfig: 5.0.0-beta.6 + obug: 3.0.0 + rolldown: 1.2.13 + yuku-ast: 0.10.2 + yuku-codegen: 0.10.2 + yuku-parser: 0.10.2 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.3 transitivePeerDependencies: - oxc-resolver @@ -6650,26 +6289,26 @@ snapshots: '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 optional: true - rolldown@1.1.0: + rolldown@1.2.13: dependencies: - '@oxc-project/types': 0.134.0 - '@rolldown/pluginutils': 1.0.0 + '@oxc-project/types': 0.153.0 + '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.0 - '@rolldown/binding-darwin-arm64': 1.1.0 - '@rolldown/binding-darwin-x64': 1.1.0 - '@rolldown/binding-freebsd-x64': 1.1.0 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.0 - '@rolldown/binding-linux-arm64-gnu': 1.1.0 - '@rolldown/binding-linux-arm64-musl': 1.1.0 - '@rolldown/binding-linux-ppc64-gnu': 1.1.0 - '@rolldown/binding-linux-s390x-gnu': 1.1.0 - '@rolldown/binding-linux-x64-gnu': 1.1.0 - '@rolldown/binding-linux-x64-musl': 1.1.0 - '@rolldown/binding-openharmony-arm64': 1.1.0 - '@rolldown/binding-wasm32-wasi': 1.1.0 - '@rolldown/binding-win32-arm64-msvc': 1.1.0 - '@rolldown/binding-win32-x64-msvc': 1.1.0 + '@rolldown/binding-android-arm-eabi': 1.2.13 + '@rolldown/binding-android-arm64': 1.2.13 + '@rolldown/binding-darwin-arm64': 1.2.13 + '@rolldown/binding-darwin-x64': 1.2.13 + '@rolldown/binding-freebsd-x64': 1.2.13 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.13 + '@rolldown/binding-linux-arm64-gnu': 1.2.13 + '@rolldown/binding-linux-arm64-musl': 1.2.13 + '@rolldown/binding-linux-ppc64-gnu': 1.2.13 + '@rolldown/binding-linux-s390x-gnu': 1.2.13 + '@rolldown/binding-linux-x64-gnu': 1.2.13 + '@rolldown/binding-linux-x64-musl': 1.2.13 + '@rolldown/binding-openharmony-arm64': 1.2.13 + '@rolldown/binding-win32-arm64-msvc': 1.2.13 + '@rolldown/binding-win32-x64-msvc': 1.2.13 rollup@4.52.5: dependencies: @@ -6698,6 +6337,7 @@ snapshots: '@rollup/rollup-win32-x64-gnu': 4.52.5 '@rollup/rollup-win32-x64-msvc': 4.52.5 fsevents: 2.3.3 + optional: true sade@1.8.1: dependencies: @@ -6713,30 +6353,28 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 + scheduler@0.28.0: {} - semantic-release@25.0.3(typescript@5.9.3): + semantic-release@25.0.9(typescript@6.0.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.3(typescript@5.9.3)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.9(typescript@6.0.3)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 12.0.0(semantic-release@25.0.3(typescript@5.9.3)) - '@semantic-release/npm': 13.1.1(semantic-release@25.0.3(typescript@5.9.3)) - '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.3(typescript@5.9.3)) + '@semantic-release/github': 12.0.10(semantic-release@25.0.9(typescript@6.0.3)) + '@semantic-release/npm': 13.2.0(semantic-release@25.0.9(typescript@6.0.3)) + '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.9(typescript@6.0.3)) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.9.3) + cosmiconfig: 9.0.2(typescript@6.0.3) debug: 4.4.3 env-ci: 11.2.0 - execa: 9.6.0 + execa: 9.6.1 figures: 6.1.0 find-versions: 6.0.0 get-stream: 6.0.1 git-log-parser: 1.2.1 hook-std: 4.0.0 - hosted-git-info: 9.0.2 + hosted-git-info: 9.0.3 import-from-esm: 2.0.0 - lodash-es: 4.17.21 + lodash-es: 4.18.1 marked: 15.0.12 marked-terminal: 7.3.0(marked@15.0.12) micromatch: 4.0.8 @@ -6744,22 +6382,17 @@ snapshots: p-reduce: 3.0.0 read-package-up: 12.0.0 resolve-from: 5.0.0 - semver: 7.7.3 + semver: 7.8.5 signale: 1.4.0 - yargs: 18.0.0 + yargs: 18.2.0 transitivePeerDependencies: + - kerberos - supports-color - typescript semver-regex@4.0.5: {} - semver@6.3.1: {} - - semver@7.7.3: {} - - semver@7.7.4: {} - - semver@7.8.1: {} + semver@7.8.5: {} set-function-length@1.2.2: dependencies: @@ -6784,7 +6417,7 @@ snapshots: shebang-regex@3.0.0: {} - side-channel-list@1.0.0: + side-channel-list@1.0.1: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 @@ -6804,18 +6437,14 @@ snapshots: object-inspect: 1.13.4 side-channel-map: 1.0.1 - side-channel@1.1.0: + side-channel@1.1.1: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 - side-channel-list: 1.0.0 + side-channel-list: 1.0.1 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 - siginfo@2.0.0: {} - - signal-exit@3.0.7: {} - signal-exit@4.1.0: {} signale@1.4.0: @@ -6828,7 +6457,7 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 - source-map-js@1.2.1: {} + source-map-js@1.2.2: {} source-map@0.6.1: {} @@ -6837,16 +6466,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.22 + spdx-license-ids: 3.0.24 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.22 + spdx-license-ids: 3.0.24 - spdx-license-ids@3.0.22: {} + spdx-license-ids@3.0.24: {} split-on-first@1.1.0: {} @@ -6856,9 +6485,7 @@ snapshots: stable-hash-x@0.2.0: {} - stackback@0.0.2: {} - - std-env@4.1.0: {} + std-env@4.3.0: {} stream-browserify@3.0.0: dependencies: @@ -6888,8 +6515,13 @@ snapshots: string-width@7.2.0: dependencies: emoji-regex: 10.6.0 - get-east-asian-width: 1.4.0 - strip-ansi: 7.1.2 + get-east-asian-width: 1.7.0 + strip-ansi: 7.2.0 + + string-width@8.3.0: + dependencies: + get-east-asian-width: 1.7.0 + strip-ansi: 7.2.0 string_decoder@1.1.1: dependencies: @@ -6903,25 +6535,22 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.2: + strip-ansi@7.2.0: dependencies: - ansi-regex: 6.2.2 + ansi-regex: 6.4.0 strip-bom@3.0.0: {} - strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} strip-final-newline@4.0.0: {} strip-json-comments@2.0.1: {} - strip-json-comments@3.1.1: {} - - super-regex@1.0.0: + super-regex@1.1.0: dependencies: function-timeout: 1.0.2 + make-asynchronous: 1.1.0 time-span: 5.1.0 supports-color@5.5.0: @@ -6943,7 +6572,7 @@ snapshots: temp-dir@3.0.0: {} - tempy@3.1.0: + tempy@3.2.0: dependencies: is-stream: 3.0.0 temp-dir: 3.0.0 @@ -6971,21 +6600,16 @@ snapshots: dependencies: setimmediate: 1.0.5 - tinybench@2.9.0: {} + tinybench@6.2.1: {} - tinyexec@1.2.4: {} - - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + tinyexec@1.3.1: {} tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 - tinyrainbow@3.1.0: {} + tinyrainbow@3.2.0: {} to-buffer@1.2.2: dependencies: @@ -7001,46 +6625,49 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.5.0(typescript@5.9.3): + ts-api-utils@2.5.0(typescript@6.0.3): dependencies: - typescript: 5.9.3 + typescript: 6.0.3 - tsdown@0.22.2(publint@0.3.21)(typescript@5.9.3)(unrun@0.2.37): + tsdown@0.23.0(publint@0.3.25)(typescript@6.0.3)(unrun@0.2.37): dependencies: - ansis: 4.3.1 cac: 7.0.0 defu: 6.1.7 - empathic: 2.0.1 - hookable: 6.1.1 - import-without-cache: 0.4.0 - obug: 2.1.1 - picomatch: 4.0.4 - rolldown: 1.1.0 - rolldown-plugin-dts: 0.25.2(rolldown@1.1.0)(typescript@5.9.3) - semver: 7.8.1 - tinyexec: 1.2.4 + empathic: 2.1.0 + hookable: 6.1.2 + import-without-cache: 0.4.1 + obug: 2.2.1 + picomatch: 4.0.7 + rolldown: 1.2.13 + rolldown-plugin-dts: 0.28.6(rolldown@1.2.13)(typescript@6.0.3) + tinyexec: 1.3.1 tinyglobby: 0.2.17 tree-kill: 1.2.2 unconfig-core: 7.5.0 + verkit: 0.4.1 optionalDependencies: - publint: 0.3.21 - typescript: 5.9.3 + publint: 0.3.25 + typescript: 6.0.3 unrun: 0.2.37 transitivePeerDependencies: - - '@ts-macro/tsc' - '@typescript/native-preview' + - '@volar/typescript' + - '@vue/language-core' - oxc-resolver - vue-tsc tslib@1.14.1: {} - tslib@2.8.1: - optional: true + tslib@2.8.1: {} tty-browserify@0.0.1: {} tunnel@0.0.6: {} + tweetnacl-ts@1.0.3: + dependencies: + tslib: 1.14.1 + tweetnacl@1.0.3: {} type-check@0.4.0: @@ -7053,7 +6680,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.2.0: + type-fest@5.10.0: dependencies: tagged-tag: 1.0.0 @@ -7067,27 +6694,25 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript-eslint@8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - typescript: 5.9.3 + '@typescript-eslint/eslint-plugin': 8.71.1(@typescript-eslint/parser@8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/parser': 8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.71.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.71.1(eslint@10.12.0(jiti@2.6.1))(typescript@6.0.3) + eslint: 10.12.0(jiti@2.6.1) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - typescript@5.6.3: {} - - typescript@5.9.3: {} + typescript@6.0.3: {} uglify-js@3.19.3: optional: true unconfig-core@7.5.0: dependencies: - '@quansync/fs': 1.0.0 + '@quansync/fs': 1.1.0 quansync: 1.0.0 undici-types@6.21.0: {} @@ -7095,9 +6720,9 @@ snapshots: undici-types@7.16.0: optional: true - undici@5.29.0: - dependencies: - '@fastify/busboy': 2.1.1 + undici@6.29.0: {} + + undici@7.30.0: {} unicode-emoji-modifier-base@1.0.0: {} @@ -7105,6 +6730,8 @@ snapshots: unicorn-magic@0.3.0: {} + unicorn-magic@0.4.1: {} + unique-string@3.0.0: dependencies: crypto-random-string: 4.0.0 @@ -7113,41 +6740,38 @@ snapshots: universalify@2.0.1: {} - unrs-resolver@1.11.1: + unrs-resolver@1.12.2: dependencies: napi-postinstall: 0.3.4 optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.11.1 - '@unrs/resolver-binding-android-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-x64': 1.11.1 - '@unrs/resolver-binding-freebsd-x64': 1.11.1 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 - '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-musl': 1.11.1 - '@unrs/resolver-binding-wasm32-wasi': 1.11.1 - '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 - '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 - '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + '@unrs/resolver-binding-android-arm-eabi': 1.12.2 + '@unrs/resolver-binding-android-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-x64': 1.12.2 + '@unrs/resolver-binding-freebsd-x64': 1.12.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 + '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-musl': 1.12.2 + '@unrs/resolver-binding-openharmony-arm64': 1.12.2 + '@unrs/resolver-binding-wasm32-wasi': 1.12.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 unrun@0.2.37: dependencies: rolldown: 1.0.0-rc.17 optional: true - update-browserslist-db@1.1.4(browserslist@4.27.0): - dependencies: - browserslist: 4.27.0 - escalade: 3.2.0 - picocolors: 1.1.1 - uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -7157,11 +6781,11 @@ snapshots: url@0.11.4: dependencies: punycode: 1.4.1 - qs: 6.14.0 + qs: 6.16.0 - use-sync-external-store@1.6.0(react@18.3.1): + use-sync-external-store@1.7.0(react@19.3.0): dependencies: - react: 18.3.1 + react: 19.3.0 util-deprecate@1.0.2: {} @@ -7171,72 +6795,66 @@ snapshots: is-arguments: 1.2.0 is-generator-function: 1.1.2 is-typed-array: 1.1.15 - which-typed-array: 1.1.19 + which-typed-array: 1.1.24 validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-plugin-node-polyfills@0.24.0(rollup@4.52.5)(vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1)): + verkit@0.4.1: {} + + vite-plugin-node-polyfills@0.28.0(rollup@4.52.5)(vite@8.3.3(@types/node@24.9.1)(jiti@2.6.1)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.52.5) node-stdlib-browser: 1.3.1 - vite: 6.4.1(@types/node@24.9.1)(jiti@2.6.1) + vite: 8.3.3(@types/node@24.9.1)(jiti@2.6.1) transitivePeerDependencies: - rollup - vite@6.4.1(@types/node@22.19.20)(jiti@2.6.1): + vite@8.3.3(@types/node@22.20.5)(jiti@2.6.1): dependencies: - esbuild: 0.25.11 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.52.5 - tinyglobby: 0.2.15 + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.29 + rolldown: 1.2.13 + tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 22.19.20 + '@types/node': 22.20.5 fsevents: 2.3.3 jiti: 2.6.1 - vite@6.4.1(@types/node@24.9.1)(jiti@2.6.1): + vite@8.3.3(@types/node@24.9.1)(jiti@2.6.1): dependencies: - esbuild: 0.25.11 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.52.5 - tinyglobby: 0.2.15 + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.29 + rolldown: 1.2.13 + tinyglobby: 0.2.17 optionalDependencies: '@types/node': 24.9.1 fsevents: 2.3.3 jiti: 2.6.1 - vitest@4.1.11(@types/node@22.19.20)(@vitest/coverage-v8@4.1.8)(vite@6.4.1(@types/node@22.19.20)(jiti@2.6.1)): - dependencies: - '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@6.4.1(@types/node@22.19.20)(jiti@2.6.1)) - '@vitest/pretty-format': 4.1.11 - '@vitest/runner': 4.1.11 - '@vitest/snapshot': 4.1.11 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 - es-module-lexer: 2.0.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.1 - pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 4.1.0 - tinybench: 2.9.0 - tinyexec: 1.2.4 + vitest@5.0.3(@types/node@22.20.5)(@vitest/coverage-v8@5.0.3)(vite@8.3.3(@types/node@22.20.5)(jiti@2.6.1)): + dependencies: + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.3(vite@8.3.3(@types/node@22.20.5)(jiti@2.6.1)) + chai: 6.3.0 + es-module-lexer: 2.3.2 + expect-type: 1.4.0 + magic-string: 1.4.3 + obug: 2.2.1 + picomatch: 4.0.7 + std-env: 4.3.0 + tinybench: 6.2.1 + tinyexec: 1.3.1 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 - vite: 6.4.1(@types/node@22.19.20)(jiti@2.6.1) - why-is-node-running: 2.3.0 + vite: 8.3.3(@types/node@22.20.5)(jiti@2.6.1) + why-is-node-running: 3.2.1 optionalDependencies: - '@types/node': 22.19.20 - '@vitest/coverage-v8': 4.1.8(vitest@4.1.11) + '@types/node': 22.20.5 + '@vitest/coverage-v8': 5.0.3(vitest@5.0.3) transitivePeerDependencies: - msw @@ -7244,10 +6862,14 @@ snapshots: vm-browserify@1.1.2: {} - which-typed-array@1.1.19: + web-worker@1.5.0: {} + + which-command@0.1.0: {} + + which-typed-array@1.1.24: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 for-each: 0.3.5 get-proto: 1.0.1 @@ -7258,10 +6880,7 @@ snapshots: dependencies: isexe: 2.0.0 - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 + why-is-node-running@3.2.1: {} word-wrap@1.2.5: {} @@ -7277,7 +6896,7 @@ snapshots: dependencies: ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 ws@7.5.3: {} @@ -7285,13 +6904,11 @@ snapshots: y18n@5.0.8: {} - yallist@3.1.1: {} - yargs-parser@20.2.9: {} yargs-parser@22.0.0: {} - yargs@16.2.0: + yargs@16.2.2: dependencies: cliui: 7.0.4 escalade: 3.2.0 @@ -7301,15 +6918,54 @@ snapshots: y18n: 5.0.8 yargs-parser: 20.2.9 - yargs@18.0.0: + yargs@18.2.0: dependencies: cliui: 9.0.1 escalade: 3.2.0 get-caller-file: 2.0.5 - string-width: 7.2.0 + string-width: 8.3.0 y18n: 5.0.8 yargs-parser: 22.0.0 yocto-queue@0.1.0: {} - yoctocolors@2.1.2: {} + yoctocolors@2.2.0: {} + + yuku-ast@0.10.2: + dependencies: + '@yuku-toolchain/types': 0.10.2 + + yuku-codegen@0.10.2: + dependencies: + '@yuku-toolchain/types': 0.10.2 + optionalDependencies: + '@yuku-codegen/binding-android-arm64': 0.10.2 + '@yuku-codegen/binding-darwin-arm64': 0.10.2 + '@yuku-codegen/binding-darwin-x64': 0.10.2 + '@yuku-codegen/binding-freebsd-x64': 0.10.2 + '@yuku-codegen/binding-linux-arm-gnu': 0.10.2 + '@yuku-codegen/binding-linux-arm-musl': 0.10.2 + '@yuku-codegen/binding-linux-arm64-gnu': 0.10.2 + '@yuku-codegen/binding-linux-arm64-musl': 0.10.2 + '@yuku-codegen/binding-linux-x64-gnu': 0.10.2 + '@yuku-codegen/binding-linux-x64-musl': 0.10.2 + '@yuku-codegen/binding-win32-arm64': 0.10.2 + '@yuku-codegen/binding-win32-x64': 0.10.2 + + yuku-parser@0.10.2: + dependencies: + '@yuku-toolchain/types': 0.10.2 + yuku-ast: 0.10.2 + optionalDependencies: + '@yuku-parser/binding-android-arm64': 0.10.2 + '@yuku-parser/binding-darwin-arm64': 0.10.2 + '@yuku-parser/binding-darwin-x64': 0.10.2 + '@yuku-parser/binding-freebsd-x64': 0.10.2 + '@yuku-parser/binding-linux-arm-gnu': 0.10.2 + '@yuku-parser/binding-linux-arm-musl': 0.10.2 + '@yuku-parser/binding-linux-arm64-gnu': 0.10.2 + '@yuku-parser/binding-linux-arm64-musl': 0.10.2 + '@yuku-parser/binding-linux-x64-gnu': 0.10.2 + '@yuku-parser/binding-linux-x64-musl': 0.10.2 + '@yuku-parser/binding-win32-arm64': 0.10.2 + '@yuku-parser/binding-win32-x64': 0.10.2 From 0e63d62ca841a3bdb6b68b1b590a03ae02bc0e2f Mon Sep 17 00:00:00 2001 From: Patrick Bennett <170563+pbennett@users.noreply.github.com> Date: Wed, 14 Oct 2026 23:22:08 -0400 Subject: [PATCH 3/4] feat: add launch token support Support quoting and executing swaps of HayLaunch launch tokens before bonding completes. - fetchQuote/newQuote accept an optional slippage (0 to under 100), validated before the API call; newQuote records it on the SwapQuote. - quote.launch is normalized to bigints, including for middleware. - newSwap warns when a launch quote is executed at a different slippage than it was fetched with. - getSummary() adds launch details (side, tokenNum, curveTxnId, bondingAmount, refund). A buy's output is the curve call's ARC-4 return value; a sell's input is the number of launch tokens sold. Behavior change for all swaps: getInputTransactionId() and the optional note now go on the user-signed transfer to the router's app address, falling back to the last user-signed transaction. Before, they went on whichever transaction the user signed. Regular swaps have one user-signed transaction, so they are unaffected. BREAKING CHANGE: @txnlab/haystack-router now requires Node.js 22 or later. --- .claude/CLAUDE.md | 5 +- packages/haystack/README.md | 38 + packages/haystack/src/client.ts | 39 +- packages/haystack/src/composer.ts | 314 +++++- packages/haystack/src/launch.ts | 21 + packages/haystack/src/types.ts | 102 +- packages/haystack/tests/client.test.ts | 302 ++++++ .../haystack/tests/fixtures/launch/buy.json | 135 +++ .../haystack/tests/fixtures/launch/sell.json | 107 +++ packages/haystack/tests/launch.test.ts | 907 ++++++++++++++++++ 10 files changed, 1915 insertions(+), 55 deletions(-) create mode 100644 packages/haystack/src/launch.ts create mode 100644 packages/haystack/tests/fixtures/launch/buy.json create mode 100644 packages/haystack/tests/fixtures/launch/sell.json create mode 100644 packages/haystack/tests/launch.test.ts diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 1382cf3..ac3bee4 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -31,7 +31,7 @@ pnpm --filter "./examples/**" run build ## Architecture -The public API is whatever `src/index.ts` re-exports: client, composer, constants, middleware, types, utils. `logger.ts` and `debug.ts` are internal. +The public API is whatever `src/index.ts` re-exports: client, composer, constants, middleware, types, utils. `logger.ts`, `debug.ts` and `launch.ts` are internal. ### Swap flow @@ -42,7 +42,8 @@ The public API is whatever `src/index.ts` re-exports: client, composer, constant ### Signing -- An API swap txn with `signature: false` is the user's input payment or axfer. It gets the configured signer and the optional `note`, and its group index is tracked for `getInputTransactionId()`. +- API swap txns with `signature: false` get the configured signer. The swap's input is the one that pays or transfers to the router app's address, found from the router's pre-signed app calls (falling back to the last user-signed txn). Only that txn gets the optional `note`, and its group index is tracked for `getInputTransactionId()`. Launch swaps have several user-signed txns, and their two `gas()` calls differ only by note. +- Launch-token swaps (`quote.launch`): the user-signed HayLaunch curve call is found by ABI selector (`launchCurveSide()` in `composer.ts`). A buy's output is the curve call's ARC-4 uint64 return, not an inner transfer; a sell's input is the `tokensToSell` app arg. - Every other API txn carries a logic-sig or secret-key `signature` and is re-signed locally by `createSwapSigner()`. The API's group ID is stripped and reassigned by the ATC. - The user signer can be an `algosdk.TransactionSigner` or an ARC-1 `SignerFunction`. `defaultSigner` filters out the `null`s that ARC-1 wallets return. diff --git a/packages/haystack/README.md b/packages/haystack/README.md index 6046092..3d693e9 100644 --- a/packages/haystack/README.md +++ b/packages/haystack/README.md @@ -149,6 +149,41 @@ console.log('Input transaction ID:', inputTxId) The `note` is applied only to the user-signed payment or asset transfer transaction (not pre-signed or middleware transactions). The transaction ID is available after calling `buildGroup()`, `sign()`, or `execute()`. +### Launch Tokens (Pre-Bonding) + +API keys with launch-token access can swap any asset into or out of a HayLaunch token that is still on its bonding curve. Quote it like any other asset, as a `fixed-input` swap, and pass the same `slippage` you will execute with: + +```typescript +const quote = await router.newQuote({ + fromASAID: 31566704, // USDC + toASAID: launchTokenAssetId, // pre-bonding launch token + amount: 10_000_000, + slippage: 1, // same value as newSwap() below + address: activeAddress, +}) + +if (quote.launch) { + // quote.quote: launch tokens out (buy) or output asset (sell) + // quote.launch.bondingSurplus: bonding asset left in the wallet + // quote.launch.refund: bonding asset refunded when a buy completes bonding +} + +const swap = await router.newSwap({ + quote, + address: activeAddress, + signer: transactionSigner, + slippage: 1, +}) +await swap.execute() + +const summary = swap.getSummary() +// summary.outputAmount: launch tokens credited (buy) +// summary.inputAmount: launch tokens sold (sell) +// summary.launch: the curve call's ID, bonding amount and refund +``` + +Without `slippage`, a launch quote overstates the output by about the slippage; `newSwap()` logs a warning when the two don't match. Fixed-output launch buys and launch-token-to-launch-token swaps aren't supported yet and return a 400. + ### Transaction Signing The SDK supports both standard `algosdk.TransactionSigner` and ARC-1 compliant signer functions. @@ -409,6 +444,7 @@ async newQuote(params: FetchQuoteParams): Promise | `maxGroupSize` | Maximum transactions in atomic group | `number` | `16` | | `maxDepth` | Maximum swap hops | `number` | `4` | | `optIn` | Override auto opt-in behavior | `boolean` | `undefined` | +| `slippage` | Slippage % you will execute with, in [0, 100); required for accurate launch token quotes | `number` | `undefined` | #### RouterClient.newSwap() @@ -450,6 +486,8 @@ Plain object returned by [`newQuote()`](#routerclientnewquote). Extends the raw | `quote` | Quoted amount (coerced to `bigint`) | `bigint` | | `amount` | Original request amount | `bigint` | | `address` | User address (if provided) | `string \| undefined` | +| `slippage` | Slippage sent with the quote request (if provided) | `number \| undefined` | +| `launch` | Bonding-curve details for a pre-bonding launch token (amounts as `bigint`) | `SwapLaunchQuote \| undefined` | | `createdAt` | Timestamp when quote was created | `number` | **All properties from API response:** diff --git a/packages/haystack/src/client.ts b/packages/haystack/src/client.ts index f0fab0a..bf4925c 100644 --- a/packages/haystack/src/client.ts +++ b/packages/haystack/src/client.ts @@ -13,6 +13,7 @@ import { DEPRECATED_PROTOCOLS, MAX_FEE_BPS, } from './constants' +import { toSwapLaunchQuote } from './launch' import { Logger } from './logger' import { request } from './utils' import type { SwapMiddleware } from './middleware' @@ -125,6 +126,7 @@ export class RouterClient { * - If true: API reduces maxGroupSize by 1 and includes opt-in (always included, even if not needed) * - If false: No opt-in transaction included * - If undefined: Falls back to `config.autoOptIn` behavior with account check (if `params.address` is provided) + * @param params.slippage - Slippage tolerance as a percentage, in [0, 100). Pass the value you will execute with; required for accurate pre-bonding launch token quotes * @returns A FetchQuoteResponse object with routing information * * @example @@ -148,9 +150,14 @@ export class RouterClient { maxDepth = DEFAULT_MAX_DEPTH, optIn, address, + slippage, _allowNonComposableSwaps = false, } = params + if (slippage !== undefined) { + this.validateSlippage(slippage) + } + // Validate incompatible parameter combinations if (_allowNonComposableSwaps && (optIn === true || this.config.autoOptIn)) { throw new Error( @@ -200,6 +207,10 @@ export class RouterClient { url.searchParams.append('optIn', String(includeOptIn)) } + if (slippage !== undefined) { + url.searchParams.append('slippage', String(slippage)) + } + if (this.config.referrerAddress) { url.searchParams.append('referrerAddress', this.config.referrerAddress) } @@ -304,6 +315,7 @@ export class RouterClient { * @param params.maxDepth - The maximum depth (default: 4) * @param params.address - The address of the account that will perform the swap (recommended when using `config.autoOptIn` or `params.optIn`) * @param params.optIn - Whether to include asset opt-in transaction + * @param params.slippage - Slippage tolerance as a percentage, in [0, 100). Pass the value you will execute with; required for accurate pre-bonding launch token quotes * @returns A SwapQuote enhanced quote result * * @example @@ -354,12 +366,15 @@ export class RouterClient { } const response = await this.fetchQuote(adjustedParams) + const { launch, ...rest } = response return { - ...response, + ...rest, quote: response.quote === '' ? 0n : BigInt(response.quote), amount: BigInt(params.amount), address: params.address ?? undefined, + slippage: adjustedParams.slippage, + launch: launch && toSwapLaunchQuote(launch), createdAt: Date.now(), } } @@ -422,6 +437,18 @@ export class RouterClient { }): Promise { const { quote, address, slippage, signer, note } = config + // A launch quote prices the curve on the slippage it was fetched with, so + // executing at a different slippage makes the quoted output inaccurate + if (quote.launch && 'createdAt' in quote && quote.slippage !== slippage) { + console.warn( + quote.slippage === undefined + ? `Launch token quote was fetched without slippage but the swap uses ${slippage}%. ` + + 'Pass the same slippage to newQuote() for an accurate quoted output.' + : `Launch token quote was fetched with ${quote.slippage}% slippage but the swap uses ${slippage}%. ` + + 'The quoted output may not match what is delivered.', + ) + } + const swapResponse = await this.fetchSwapTransactions({ quote, address, @@ -463,6 +490,16 @@ export class RouterClient { return address } + /** + * Validates a slippage percentage (0 <= slippage < 100) + */ + private validateSlippage(slippage: number): number { + if (!Number.isFinite(slippage) || slippage < 0 || slippage >= 100) { + throw new Error(`Invalid slippage: ${slippage} (must be >= 0 and < 100)`) + } + return slippage + } + /** * Validates the fee in basis points (max 300 = 3.00%) */ diff --git a/packages/haystack/src/composer.ts b/packages/haystack/src/composer.ts index a66fca6..90a14ac 100644 --- a/packages/haystack/src/composer.ts +++ b/packages/haystack/src/composer.ts @@ -1,6 +1,8 @@ import { AtomicTransactionComposer, + decodeUint64, decodeUnsignedTransaction, + getApplicationAddress, isValidAddress, LogicSigAccount, makeApplicationOptInTxnFromObject, @@ -8,12 +10,14 @@ import { signLogicSigTransactionObject, signTransaction, Transaction, + TransactionType, type ABIResult, type Algodv2, type TransactionSigner, type TransactionWithSigner, } from 'algosdk' import { DEFAULT_CONFIRMATION_ROUNDS } from './constants' +import { toSwapLaunchQuote } from './launch' import { Logger } from './logger' import type { SwapMiddleware, SwapContext, QuoteContext } from './middleware' import type { @@ -26,6 +30,51 @@ import type { SwapSummary, } from './types' +/** ABI selectors of the HayLaunch bonding-curve buy methods (buyWithLimit, buyWithAlgoWithLimit) */ +const LAUNCH_BUY_SELECTORS = new Set(['9068a8d9', 'b0e30517']) + +/** ABI selector of the HayLaunch bonding-curve sell method (sellWithLimit) */ +const LAUNCH_SELL_SELECTOR = '028a0647' + +/** Prefix of the log that carries an ARC-4 method's return value */ +const ARC4_RETURN_PREFIX = '151f7c75' + +/** A swap transaction from the API, decoded */ +interface DecodedSwapTransaction { + txn: Transaction + signature: Signature | false +} + +/** + * Returns which side of a HayLaunch bonding-curve trade an app call is, or + * undefined if it isn't a curve buy or sell call + */ +function launchCurveSide(txn: Transaction): 'buy' | 'sell' | undefined { + const selector = txn.applicationCall?.appArgs[0] + if (txn.type !== TransactionType.appl || !selector) return undefined + + const hex = Buffer.from(selector).toString('hex') + if (LAUNCH_BUY_SELECTORS.has(hex)) return 'buy' + if (hex === LAUNCH_SELL_SELECTOR) return 'sell' + return undefined +} + +/** + * Reads a uint64 ARC-4 return value from an app call's logs (the last log, + * prefixed with 151f7c75) + */ +function readUint64Return(logs: Uint8Array[] | undefined): bigint | undefined { + const log = logs?.[logs.length - 1] + if ( + !log || + log.length !== 12 || + Buffer.from(log.subarray(0, 4)).toString('hex') !== ARC4_RETURN_PREFIX + ) { + return undefined + } + return decodeUint64(log.subarray(4), 'bigint') +} + /** * A transaction signer function that supports both standard algosdk.TransactionSigner * and ARC-1 compliant signers that may return null for unsigned transactions. @@ -119,6 +168,7 @@ export class SwapComposer { private readonly note?: Uint8Array private inputTransactionIndex?: number private outputTransactionIndex?: number + private curveTransactionIndex?: number /** Summary data built incrementally during swap composition */ private summaryData?: { @@ -130,6 +180,16 @@ export class SwapComposer { inputSender: string outputSender?: string outputAmount?: bigint + /** Bonding-curve leg of a pre-bonding HayLaunch swap */ + launch?: { + side: 'buy' | 'sell' + tokenNum: bigint + bondingTokenId: bigint + appAddress: string + curveTxnId?: string + bondingAmount?: bigint + refund: bigint + } } /** @@ -313,6 +373,7 @@ export class SwapComposer { txns: processedTxns, inputTxnRelativeIndex, outputTxnRelativeIndex, + curveTxnRelativeIndex, } = await this.processSwapTransactions() const afterTxns = await this.executeMiddlewareHooks('afterSwap') @@ -338,6 +399,11 @@ export class SwapComposer { this.outputTransactionIndex = this.atc.count() + outputTxnRelativeIndex } + // Calculate the absolute index of a launch swap's curve buy or sell call + if (curveTxnRelativeIndex !== undefined) { + this.curveTransactionIndex = this.atc.count() + curveTxnRelativeIndex + } + // Add swap transactions for (const txnWithSigner of processedTxns) { this.atc.addTransaction(txnWithSigner) @@ -472,6 +538,12 @@ export class SwapComposer { if (this.outputTransactionIndex !== undefined) { this.summaryData.outputTxnId = txIDs[this.outputTransactionIndex] } + if ( + this.summaryData.launch && + this.curveTransactionIndex !== undefined + ) { + this.summaryData.launch.curveTxnId = txIDs[this.curveTransactionIndex] + } } // Extract actual output amount from confirmed transaction @@ -579,6 +651,9 @@ export class SwapComposer { const txns = this.atc.buildGroup() const totalFees = txns.reduce((sum, tws) => sum + tws.txn.fee, 0n) + const launch = this.summaryData.launch + const curveTxnId = launch?.curveTxnId + return { inputAssetId: this.summaryData.inputAssetId, outputAssetId: this.summaryData.outputAssetId, @@ -587,10 +662,24 @@ export class SwapComposer { type: this.quote.type as QuoteType, totalFees, transactionCount: txns.length, - inputTxnId: this.summaryData.inputTxnId, + // On a launch sell, the tokens sold leave the user in the curve sell call + inputTxnId: + launch?.side === 'sell' && curveTxnId + ? curveTxnId + : this.summaryData.inputTxnId, outputTxnId: this.summaryData.outputTxnId, inputSender: this.summaryData.inputSender, outputSender: this.summaryData.outputSender, + ...(launch && + curveTxnId && { + launch: { + side: launch.side, + tokenNum: launch.tokenNum, + curveTxnId, + bondingAmount: launch.bondingAmount, + refund: launch.refund, + }, + }), } } @@ -613,51 +702,50 @@ export class SwapComposer { txns: TransactionWithSigner[] inputTxnRelativeIndex?: number outputTxnRelativeIndex?: number + curveTxnRelativeIndex?: number }> { const appOptIns = await this.processRequiredAppOptIns() - const swapTxns: TransactionWithSigner[] = [] - let inputTxnRelativeIndex: number | undefined - let inputTxn: Transaction | undefined + const decoded: DecodedSwapTransaction[] = this.swapTxns.map( + (swapTxn, i) => { + try { + const txn = decodeUnsignedTransaction( + Buffer.from(swapTxn.data, 'base64'), + ) + delete txn.group + return { txn, signature: swapTxn.signature } + } catch (error) { + throw new Error( + `Failed to process swap transaction at index ${i}: ${error instanceof Error ? error.message : String(error)}`, + { cause: error }, + ) + } + }, + ) - for (let i = 0; i < this.swapTxns.length; i++) { - const swapTxn = this.swapTxns[i] - if (!swapTxn) continue + const inputIndex = this.findInputTransactionIndex(decoded) + const inputTxn = + inputIndex !== undefined ? decoded[inputIndex]?.txn : undefined - try { - const txnBytes = Buffer.from(swapTxn.data, 'base64') - const txn = decodeUnsignedTransaction(txnBytes) - delete txn.group - - if (swapTxn.signature !== false) { - // Pre-signed transaction - use custom Haystack Router signer - swapTxns.push({ - txn, - signer: this.createSwapSigner(swapTxn.signature), - }) - } else { - // Input payment or asset transfer transaction - use configured signer - // Set the note if provided (using type assertion since note is readonly but safe to modify before signing) - if (this.note !== undefined) { - ;(txn as { note: Uint8Array }).note = this.note - } - // Track the relative index within processed transactions (after app opt-ins) - inputTxnRelativeIndex = appOptIns.length + swapTxns.length - inputTxn = txn - - swapTxns.push({ - txn, - signer: this.defaultSigner, - }) - } - } catch (error) { - throw new Error( - `Failed to process swap transaction at index ${i}: ${error instanceof Error ? error.message : String(error)}`, - { cause: error }, - ) - } + // Set the note on the input transaction only (using type assertion since + // note is readonly but safe to modify before signing). Other user-signed + // transactions can differ only by their notes, e.g. HayLaunch gas() calls. + if (inputTxn && this.note !== undefined) { + ;(inputTxn as { note: Uint8Array }).note = this.note } + // Pre-signed transactions use the custom Haystack Router signer; the rest + // are signed by the user + const swapTxns: TransactionWithSigner[] = decoded.map( + ({ txn, signature }) => ({ + txn, + signer: + signature === false + ? this.defaultSigner + : this.createSwapSigner(signature), + }), + ) + // Initialize summary data with input transaction details if (inputTxn) { // Extract input amount from payment or asset transfer @@ -673,18 +761,113 @@ export class SwapComposer { } } + const curveIndex = this.initLaunchSummary(decoded) + // The last transaction in swapTxns is the app call that will contain - // the inner transaction sending the output asset to the user + // the inner transaction sending the output asset to the user. On a launch + // buy the output comes from the curve buy call instead, wherever it is. // We'll get its ID after buildGroup() is called // Store the relative index so we can get the ID later + const outputIndex = + this.summaryData?.launch?.side === 'buy' && curveIndex !== undefined + ? curveIndex + : swapTxns.length - 1 const outputTxnRelativeIndex = - swapTxns.length > 0 ? appOptIns.length + swapTxns.length - 1 : undefined + outputIndex >= 0 ? appOptIns.length + outputIndex : undefined return { txns: [...appOptIns, ...swapTxns], - inputTxnRelativeIndex, + inputTxnRelativeIndex: + inputIndex !== undefined ? appOptIns.length + inputIndex : undefined, outputTxnRelativeIndex, + curveTxnRelativeIndex: + curveIndex !== undefined ? appOptIns.length + curveIndex : undefined, + } + } + + /** + * Finds the swap's input transaction: the user's payment or asset transfer + * to the router app, whose address comes from the router's pre-signed app + * calls. Falls back to the last user-signed transaction for groups without + * a router app call. + */ + private findInputTransactionIndex( + txns: DecodedSwapTransaction[], + ): number | undefined { + const routerAppId = txns.find( + ({ txn, signature }) => + signature !== false && txn.type === TransactionType.appl, + )?.txn.applicationCall?.appIndex + + if (routerAppId !== undefined) { + const routerAddress = getApplicationAddress(routerAppId).toString() + const index = txns.findIndex( + ({ txn, signature }) => + signature === false && + (txn.payment?.receiver ?? txn.assetTransfer?.receiver)?.toString() === + routerAddress, + ) + if (index !== -1) return index + } + + for (let i = txns.length - 1; i >= 0; i--) { + if (txns[i]?.signature === false) return i + } + return undefined + } + + /** + * For a launch quote, finds the user-signed curve buy or sell call and + * records the curve leg in summaryData. On a sell, the input amount becomes + * the launch tokens sold. + * + * @returns The curve call's index within the swap transactions, if found + */ + private initLaunchSummary( + txns: DecodedSwapTransaction[], + ): number | undefined { + const side = this.quote.launch?.side + if (!side || !this.summaryData) return undefined + + const curveIndex = txns.findIndex( + ({ txn, signature }) => + signature === false && launchCurveSide(txn) === side, + ) + const curveCall = txns[curveIndex]?.txn.applicationCall + // buy: (tokenNum, minTokensOut); sell: (tokenNum, tokensToSell, minBondingOut) + const tokenNumArg = curveCall?.appArgs[1] + if (!curveCall || !tokenNumArg) return undefined + + const appAddress = getApplicationAddress(curveCall.appIndex).toString() + + let bondingAmount: bigint | undefined + if (side === 'buy') { + // ARC-4 transaction arguments directly precede the app call, and the + // bonding payment to the curve is the buy method's last one + const payment = txns[curveIndex - 1]?.txn + const receiver = + payment?.payment?.receiver ?? payment?.assetTransfer?.receiver + if (receiver?.toString() === appAddress) { + bondingAmount = + payment?.payment?.amount ?? payment?.assetTransfer?.amount + } + } else { + const tokensToSell = curveCall.appArgs[2] + if (tokensToSell) { + this.summaryData.inputAmount = decodeUint64(tokensToSell, 'bigint') + } + } + + this.summaryData.launch = { + side, + tokenNum: decodeUint64(tokenNumArg, 'bigint'), + bondingTokenId: BigInt(this.quote.launch?.bondingTokenId ?? 0), + appAddress, + bondingAmount, + refund: 0n, } + + return curveIndex } /** @@ -805,6 +988,7 @@ export class SwapComposer { ...this.quote, quote: this.quote.quote === '' ? 0n : BigInt(this.quote.quote), amount: 0n, // Not available in FetchQuoteResponse + launch: this.quote.launch && toSwapLaunchQuote(this.quote.launch), createdAt: Date.now(), } @@ -849,7 +1033,9 @@ export class SwapComposer { * Extract the actual output amount from the confirmed output transaction's inner transactions * * Analyzes only the output transaction (last app call in the swap) to find the - * inner transaction that transfers the output asset to the user. + * inner transaction that transfers the output asset to the user. On a launch + * buy the output is a balance on the HayLaunch app, so it is read from the + * curve buy call's return value instead. */ private async extractActualOutputAmount(): Promise { if (!this.summaryData?.outputTxnId) { @@ -858,16 +1044,39 @@ export class SwapComposer { const outputAssetId = this.summaryData.outputAssetId const userAddress = this.address + const launch = this.summaryData.launch try { const pendingInfo = await this.algodClient .pendingTransactionInformation(this.summaryData.outputTxnId) .do() - const innerTxns = pendingInfo.innerTxns - if (!innerTxns) return + if (launch?.side === 'buy') { + // The buy call returns the tokens credited to the buyer's balance + const tokensCredited = readUint64Return(pendingInfo.logs) + if (tokensCredited !== undefined) { + this.summaryData.outputAmount = tokensCredited + this.summaryData.outputSender = launch.appAddress + } - for (const innerTxn of innerTxns) { + // A buy that completes bonding refunds the unused bonding asset + for (const innerTxn of pendingInfo.innerTxns ?? []) { + const txn = innerTxn.txn.txn + if (launch.bondingTokenId === 0n) { + if (txn.payment?.receiver.toString() === userAddress) { + launch.refund += txn.payment.amount + } + } else if ( + txn.assetTransfer?.receiver.toString() === userAddress && + txn.assetTransfer.assetIndex === launch.bondingTokenId + ) { + launch.refund += txn.assetTransfer.amount + } + } + return + } + + for (const innerTxn of pendingInfo.innerTxns ?? []) { const txn = innerTxn.txn.txn const payment = txn.payment const assetTransfer = txn.assetTransfer @@ -898,5 +1107,18 @@ export class SwapComposer { } catch { // Silently fail - outputAmount will remain undefined } + + // On a launch sell, the curve call returns the bonding asset paid out after + // fees. It's looked up separately so a failure here keeps the output above. + if (launch?.side === 'sell' && launch.curveTxnId) { + try { + const curveInfo = await this.algodClient + .pendingTransactionInformation(launch.curveTxnId) + .do() + launch.bondingAmount = readUint64Return(curveInfo.logs) + } catch { + // Silently fail - bondingAmount will remain undefined + } + } } } diff --git a/packages/haystack/src/launch.ts b/packages/haystack/src/launch.ts new file mode 100644 index 0000000..7916fc4 --- /dev/null +++ b/packages/haystack/src/launch.ts @@ -0,0 +1,21 @@ +/** + * Helpers for pre-bonding HayLaunch token quotes + * @internal + */ + +import type { LaunchQuote, SwapLaunchQuote } from './types' + +/** + * Normalize a quote's raw launch object, coercing amounts to bigint and + * defaulting the fields the API omits when they don't apply + */ +export function toSwapLaunchQuote(launch: LaunchQuote): SwapLaunchQuote { + return { + side: launch.side, + tokenNum: launch.tokenNum, + bondingTokenId: launch.bondingTokenId, + bondingSurplus: BigInt(launch.bondingSurplus), + refund: BigInt(launch.refund ?? 0), + graduates: launch.graduates ?? false, + } +} diff --git a/packages/haystack/src/types.ts b/packages/haystack/src/types.ts index f02ba51..d3685b4 100644 --- a/packages/haystack/src/types.ts +++ b/packages/haystack/src/types.ts @@ -98,6 +98,16 @@ export interface FetchQuoteParams { /** Address of the account that will perform the swap (required if autoOptIn is enabled) */ readonly address?: string | null + /** + * Slippage tolerance as a percentage (e.g., 1 for 1%), in [0, 100) + * + * Pass the same value you will pass to `newSwap()`. Quotes for pre-bonding + * HayLaunch tokens use it to price the bonding curve on the amount the route + * actually pays it; without it, those quotes overstate the output by about + * the slippage. Other quotes ignore it. + */ + readonly slippage?: number + /** * ⚠️ **ADVANCED USE ONLY - NON-COMPOSABLE SWAPS** ⚠️ * @@ -201,6 +211,41 @@ export interface TxnPayload { readonly data: string } +/** + * Bonding-curve details for a quote that buys or sells a pre-bonding HayLaunch token + * + * Amounts are in base units of the bonding asset. + */ +export interface LaunchQuote { + /** `'buy'` when the launch token is the output, `'sell'` when it is the input */ + readonly side: 'buy' | 'sell' + /** HayLaunch token number */ + readonly tokenNum: number + /** Asset the token is bonded in (0 for ALGO) */ + readonly bondingTokenId: number + /** Bonding asset expected to be left in the wallet after the trade */ + readonly bondingSurplus: number + /** Bonding asset refunded when a buy completes bonding (omitted otherwise) */ + readonly refund?: number + /** Whether a buy completes bonding (omitted otherwise) */ + readonly graduates?: boolean +} + +/** + * Normalized bonding-curve details on a SwapQuote, with amounts coerced to bigint + */ +export type SwapLaunchQuote = Omit< + LaunchQuote, + 'bondingSurplus' | 'refund' | 'graduates' +> & { + /** Bonding asset expected to be left in the wallet after the trade */ + readonly bondingSurplus: bigint + /** Bonding asset refunded when a buy completes bonding (0n otherwise) */ + readonly refund: bigint + /** Whether a buy completes bonding */ + readonly graduates: boolean +} + /** * Quote response from the Haystack Router API */ @@ -239,6 +284,11 @@ export interface FetchQuoteResponse { readonly type: string /** Performance timing data */ readonly timing?: unknown + /** + * Bonding-curve details, present only when one side is a pre-bonding HayLaunch token. + * For a buy, `quote` is launch tokens out; for a sell, it is the output asset. + */ + readonly launch?: LaunchQuote } /** @@ -246,7 +296,7 @@ export interface FetchQuoteResponse { * * Extends the raw API response with additional metadata and type normalization. */ -export type SwapQuote = Omit & { +export type SwapQuote = Omit & { /** * The quoted output amount or input amount (coerced to bigint) * @@ -261,6 +311,12 @@ export type SwapQuote = Omit & { /** The address parameter from the quote request (if provided) */ readonly address?: string + /** The slippage sent with the quote request (if provided) */ + readonly slippage?: number + + /** Bonding-curve details, present only when one side is a pre-bonding HayLaunch token */ + readonly launch?: SwapLaunchQuote + /** Timestamp when the quote was created (in milliseconds) */ readonly createdAt: number } @@ -327,6 +383,26 @@ export interface FetchSwapTxnsResponse { readonly txns: SwapTransaction[] } +/** + * Bonding-curve leg of an executed pre-bonding HayLaunch swap + */ +export interface LaunchSummary { + /** `'buy'` when the launch token was the output, `'sell'` when it was the input */ + side: 'buy' | 'sell' + /** HayLaunch token number */ + tokenNum: bigint + /** Transaction ID of the curve buy or sell call */ + curveTxnId: string + /** + * Bonding asset that went through the curve, in base units: the payment into + * the curve on a buy, or the curve's payout on a sell. Undefined if it + * couldn't be determined. + */ + bondingAmount?: bigint + /** Bonding asset refunded by a buy that completed bonding (0n otherwise) */ + refund: bigint +} + /** * Summary of a swap transaction group after execution * @@ -338,9 +414,15 @@ export interface SwapSummary { inputAssetId: bigint /** Output asset ID (0 for ALGO) */ outputAssetId: bigint - /** Exact input amount in base units, from the user-signed transaction */ + /** + * Exact input amount in base units, from the user-signed transaction. + * For a launch sell, the launch tokens sold. + */ inputAmount: bigint - /** Exact output amount received in base units, from the inner transaction */ + /** + * Exact output amount received in base units, from the inner transaction. + * For a launch buy, the launch tokens credited by the curve. + */ outputAmount: bigint /** Quote type */ type: QuoteType @@ -348,14 +430,22 @@ export interface SwapSummary { totalFees: bigint /** Number of transactions in the group */ transactionCount: number - /** Transaction ID of the user-signed input transaction (payment/asset transfer) */ + /** + * Transaction ID of the user-signed input transaction (payment/asset transfer). + * For a launch sell, the curve sell call. + */ inputTxnId: string - /** Transaction ID of the app call containing the output transfer as an inner transaction */ + /** + * Transaction ID of the app call containing the output transfer as an inner transaction. + * For a launch buy, the curve buy call. + */ outputTxnId: string /** Address that sent the input asset (the user) */ inputSender: string - /** Address that sent the output asset to the user */ + /** Address that sent the output asset to the user (the HayLaunch app on a launch buy) */ outputSender: string + /** Bonding-curve details, present only for a pre-bonding HayLaunch swap */ + launch?: LaunchSummary } /** diff --git a/packages/haystack/tests/client.test.ts b/packages/haystack/tests/client.test.ts index 9d59753..ec7ad6f 100644 --- a/packages/haystack/tests/client.test.ts +++ b/packages/haystack/tests/client.test.ts @@ -1063,4 +1063,306 @@ describe('RouterClient', () => { expect(typeof composer.getStatus).toBe('function') }) }) + + describe('launch token quotes', () => { + let client: RouterClient + let mockRequest: ReturnType + + const validAddress = + '5BPCE3UNCPAIONAOMY4CVUXNU27SOCXYE4QSXEQFYXV6ORFQIKVTOR6ZTM' + + const launchQuote: Partial = { + fromASAID: 31566704, + toASAID: 3454502531, + quote: 5607413404650, + type: 'fixed-input', + route: [], + txnPayload: { iv: 'test-iv', data: 'test-data' }, + requiredAppOptIns: [], + launch: { + side: 'buy', + tokenNum: 1, + bondingTokenId: 0, + bondingSurplus: 867251, + }, + } + + const swapResponse = (): FetchSwapTxnsResponse => ({ + txns: [ + { + data: Buffer.from( + algosdk.encodeUnsignedTransaction( + algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: validAddress, + receiver: validAddress, + amount: 1000, + suggestedParams: { + fee: 1000, + firstValid: 1000, + lastValid: 2000, + genesisID: 'testnet-v1.0', + genesisHash: Buffer.from( + 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=', + 'base64', + ), + minFee: 1000, + }, + }), + ), + ).toString('base64'), + group: '', + logicSigBlob: false, + signature: false, + }, + ], + }) + + beforeEach(async () => { + client = new RouterClient(validConfig) + const requestModule = vi.mocked(await import('../src/utils'), { + partial: true, + }) + mockRequest = requestModule.request as ReturnType + mockRequest.mockReset() + }) + + it('should send slippage with the quote request when provided', async () => { + mockRequest.mockResolvedValue(launchQuote) + + await client.fetchQuote({ + fromASAID: 31566704, + toASAID: 3454502531, + amount: 10_000_000, + slippage: 1.5, + }) + + const callUrl = mockRequest.mock.calls?.[0]?.[0] as string + expect(new URL(callUrl).searchParams.get('slippage')).toBe('1.5') + }) + + it('should not send slippage when it is not provided', async () => { + mockRequest.mockResolvedValue(launchQuote) + + await client.fetchQuote({ + fromASAID: 0, + toASAID: 31566704, + amount: 1_000_000, + }) + + const callUrl = mockRequest.mock.calls?.[0]?.[0] as string + expect(new URL(callUrl).searchParams.has('slippage')).toBe(false) + }) + + it('should send zero slippage', async () => { + mockRequest.mockResolvedValue(launchQuote) + + await client.fetchQuote({ + fromASAID: 0, + toASAID: 31566704, + amount: 1_000_000, + slippage: 0, + }) + + const callUrl = mockRequest.mock.calls?.[0]?.[0] as string + expect(new URL(callUrl).searchParams.get('slippage')).toBe('0') + }) + + it.each([-0.1, 100, 150, Number.NaN, Number.POSITIVE_INFINITY])( + 'should reject slippage %s before calling the API', + async (slippage) => { + await expect( + client.fetchQuote({ + fromASAID: 0, + toASAID: 31566704, + amount: 1_000_000, + slippage, + }), + ).rejects.toThrow('Invalid slippage') + expect(mockRequest).not.toHaveBeenCalled() + }, + ) + + it('should normalize the launch object and record slippage in newQuote', async () => { + mockRequest.mockResolvedValue(launchQuote) + + const quote = await client.newQuote({ + fromASAID: 31566704, + toASAID: 3454502531, + amount: 10_000_000, + slippage: 1, + }) + + expect(quote.quote).toBe(5607413404650n) + expect(quote.slippage).toBe(1) + expect(quote.launch).toEqual({ + side: 'buy', + tokenNum: 1, + bondingTokenId: 0, + bondingSurplus: 867251n, + refund: 0n, + graduates: false, + }) + }) + + it('should carry the refund of a buy that completes bonding', async () => { + mockRequest.mockResolvedValue({ + ...launchQuote, + launch: { ...launchQuote.launch, refund: 2500000, graduates: true }, + }) + + const quote = await client.newQuote({ + fromASAID: 31566704, + toASAID: 3454502531, + amount: 10_000_000, + }) + + expect(quote.launch?.refund).toBe(2500000n) + expect(quote.launch?.graduates).toBe(true) + }) + + it('should leave launch undefined for a regular quote', async () => { + mockRequest.mockResolvedValue({ ...launchQuote, launch: undefined }) + + const quote = await client.newQuote({ + fromASAID: 31566704, + toASAID: 0, + amount: 10_000_000, + }) + + expect(quote.launch).toBeUndefined() + }) + + it('should warn when a launch quote is executed at a different slippage', async () => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => {}) + mockRequest.mockResolvedValueOnce(launchQuote) + const quote = await client.newQuote({ + fromASAID: 31566704, + toASAID: 3454502531, + amount: 10_000_000, + slippage: 1, + }) + + mockRequest.mockResolvedValueOnce(swapResponse()) + await client.newSwap({ + quote, + address: validAddress, + slippage: 2, + signer: async (txns: algosdk.Transaction[]) => + txns.map(() => new Uint8Array(0)), + }) + + expect(warn).toHaveBeenCalledOnce() + expect(warn.mock.calls[0]?.[0]).toContain('fetched with 1% slippage') + warn.mockRestore() + }) + + it('should warn when a launch quote was fetched without slippage', async () => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => {}) + mockRequest.mockResolvedValueOnce(launchQuote) + const quote = await client.newQuote({ + fromASAID: 31566704, + toASAID: 3454502531, + amount: 10_000_000, + }) + + mockRequest.mockResolvedValueOnce(swapResponse()) + await client.newSwap({ + quote, + address: validAddress, + slippage: 1, + signer: async (txns: algosdk.Transaction[]) => + txns.map(() => new Uint8Array(0)), + }) + + expect(warn).toHaveBeenCalledOnce() + expect(warn.mock.calls[0]?.[0]).toContain('fetched without slippage') + warn.mockRestore() + }) + + it('should not warn for a raw launch quote, whose slippage is unknown', async () => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => {}) + mockRequest.mockResolvedValueOnce(swapResponse()) + + await client.newSwap({ + quote: launchQuote as FetchQuoteResponse, + address: validAddress, + slippage: 5, + signer: async (txns: algosdk.Transaction[]) => + txns.map(() => new Uint8Array(0)), + }) + + expect(warn).not.toHaveBeenCalled() + warn.mockRestore() + }) + + it('should not warn when a launch quote is executed at the same slippage', async () => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => {}) + mockRequest.mockResolvedValueOnce(launchQuote) + const quote = await client.newQuote({ + fromASAID: 31566704, + toASAID: 3454502531, + amount: 10_000_000, + slippage: 1, + }) + + mockRequest.mockResolvedValueOnce(swapResponse()) + await client.newSwap({ + quote, + address: validAddress, + slippage: 1, + signer: async (txns: algosdk.Transaction[]) => + txns.map(() => new Uint8Array(0)), + }) + + expect(warn).not.toHaveBeenCalled() + warn.mockRestore() + }) + + it('should not warn for a regular quote executed at any slippage', async () => { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => {}) + mockRequest.mockResolvedValueOnce({ ...launchQuote, launch: undefined }) + const quote = await client.newQuote({ + fromASAID: 31566704, + toASAID: 0, + amount: 10_000_000, + }) + + mockRequest.mockResolvedValueOnce(swapResponse()) + await client.newSwap({ + quote, + address: validAddress, + slippage: 1, + signer: async (txns: algosdk.Transaction[]) => + txns.map(() => new Uint8Array(0)), + }) + + expect(warn).not.toHaveBeenCalled() + warn.mockRestore() + }) + + it('should record the slippage set by middleware', async () => { + const middlewareClient = new RouterClient({ + ...validConfig, + middleware: [ + { + name: 'SetSlippage', + version: '1.0.0', + shouldApply: async () => true, + adjustQuoteParams: async (params) => ({ ...params, slippage: 2 }), + }, + ], + }) + mockRequest.mockResolvedValue(launchQuote) + + const quote = await middlewareClient.newQuote({ + fromASAID: 31566704, + toASAID: 3454502531, + amount: 10_000_000, + }) + + expect(quote.slippage).toBe(2) + const callUrl = mockRequest.mock.calls?.[0]?.[0] as string + expect(new URL(callUrl).searchParams.get('slippage')).toBe('2') + }) + }) }) diff --git a/packages/haystack/tests/fixtures/launch/buy.json b/packages/haystack/tests/fixtures/launch/buy.json new file mode 100644 index 0000000..2feb8c1 --- /dev/null +++ b/packages/haystack/tests/fixtures/launch/buy.json @@ -0,0 +1,135 @@ +{ + "address": "OSS3CEB3KK2QGVW4DZYMHLDJMJIY7WKFQCPXV7KOZCGF6GPILAARBOGZHM", + "quote": { + "fromASAID": 31566704, + "toASAID": 3454502531, + "quote": 5607413404650, + "type": "fixed-input", + "launch": { + "bondingSurplus": 867251, + "bondingTokenId": 0, + "side": "buy", + "tokenNum": 1 + }, + "requiredAppOptIns": [], + "flattenedRoute": { + "HayLaunch": 1, + "algofi": 0.024, + "folks": 0.2, + "pact": 0.548, + "pact-v2": 0.228 + }, + "route": [], + "txnPayload": null + }, + "txns": [ + { + "data": "i6RhcGFhk8QE3NM248QIAAAAAAUrUgvECAAAAAAAAAAIpGFwYXOUzgHhq3DOGvcSmM455hxkzjnmJxCkYXBpZM69GVbDomZ2zgPu5ZKjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCD9I/fD5gtRqIHQOUrEhSqtbYBd5FvYtpl/waM15jYksKJsds4D7ul6pG5vdGXEFGRlZmxleC10ZXN0LTAuMTkwMTc2o3NuZMQgASXPAOUOW309WzC0LUv6s+DJSrIEFKULSESdX2PK9I2kdHlwZaRhcHBs", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jKRhYW10zgCYloCkYXJjdsQgJJ7tSYDoXgAAoG+8QrTmjs6fbpp2Geim8iP9hwacOmejZmVlzfIwomZ2zgPu5ZKjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCD9I/fD5gtRqIHQOUrEhSqtbYBd5FvYtpl/waM15jYksKJsds4D7ul6pG5vdGXEFGRlZmxleC10ZXN0LTAuMTkwMTc2o3NuZMQgdKWxEDtStQNW3B5ww6xpYlGP2UWAn3r9TsiMXxnoWAGkdHlwZaVheGZlcqR4YWlkzgHhq3A=", + "group": "", + "logicSigBlob": false, + "signature": false + }, + { + "data": "jqRhcGFhmsQEEzRH88QIAAAAAAAAAAHEGAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAMQwAAAAAAHhq3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxDAAAAAA3uLkeQAAAADZ621HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAJxAAAAAAAAAAAAAAAAAAAAAAxBgAAAAAAHXMQAAAAAAAAAAAAAAAAAAAAADEDAAGAAgACgAAAAAAAMQWABRkZWZsZXgtdGVzdC0wLjE5MDE3NqRhcGFzkc4B4atwpGFwYXSRxCB0pbEQO1K1A1bcHnDDrGliUY/ZRYCfev1OyIxfGehYAaRhcGJ4koKhaQGhbsQIAAAAAAAAAACCoWkBoW7ECAAAAAAB4atwpGFwZmGSztnrbUfO3uLkeaRhcGlkzr0ZVsOiZnbOA+7lkqNnZW6sbWFpbm5ldC12MS4womdoxCDAYcTY/B293tLXYEvkVo4/bQQZh6w3veS2ILWrOSSK36NncnDEIP0j98PmC1GogdA5SsSFKq1tgF3kW9i2mX/BozXmNiSwomx2zgPu6Xqkbm90ZcQUZGVmbGV4LXRlc3QtMC4xOTAxNzajc25kxCABJc8A5Q5bfT1bMLQtS/qz4MlKsgQUpQtIRJ1fY8r0jaR0eXBlpGFwcGw=", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEEzRH88QIAAAAAAAAAALEGAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAMQwAAAAAAHhq3AAAAAAGvcSmAAAAAAB4atwAAAAADnmJxAAAAAAAAAAAAAAAAAAAAAAxDAAAAAAQBlz+gAAAABVzRkRAAAAADnl9s0AAAAAOeWhBgAAAAAAAAAAAAAAAAAAAADEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAJxAAAAAAAAAnEAAAAAAAAAAAxBgAAAAAAGaKAAAAAAAAOMNAAAAAAAAAAADEDAAGAAgACgAAAAAAAMQWABRkZWZsZXgtdGVzdC0wLjE5MDE3NqRhcGFzk84B4atwzhr3EpjOOeYnEKRhcGF0kcQgdKWxEDtStQNW3B5ww6xpYlGP2UWAn3r9TsiMXxnoWAGkYXBmYZTOOeWhBs455fbNzkAZc/rOVc0ZEaRhcGlkzr0ZVsOiZnbOA+7lkqNnZW6sbWFpbm5ldC12MS4womdoxCDAYcTY/B293tLXYEvkVo4/bQQZh6w3veS2ILWrOSSK36NncnDEIP0j98PmC1GogdA5SsSFKq1tgF3kW9i2mX/BozXmNiSwomx2zgPu6Xqkbm90ZcQUZGVmbGV4LXRlc3QtMC4xOTAxNzajc25kxCABJc8A5Q5bfT1bMLQtS/qz4MlKsgQUpQtIRJ1fY8r0jaR0eXBlpGFwcGw=", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEEzRH88QIAAAAAAAAAAHEGAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAMQwAAAAADnmJxAAAAAAOeYcZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxDAAAAAAQopbuAAAAABVzRkRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAJxAAAAAAAAAAAAAAAAAAAAAAxBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEDAAGAAgACgAAAAAAAMQWABRkZWZsZXgtdGVzdC0wLjE5MDE3NqRhcGFzks455hxkzjnmJxCkYXBhdJHEIHSlsRA7UrUDVtwecMOsaWJRj9lFgJ96/U7IjF8Z6FgBpGFwZmGSzkKKW7jOVc0ZEaRhcGlkzr0ZVsOiZnbOA+7lkqNnZW6sbWFpbm5ldC12MS4womdoxCDAYcTY/B293tLXYEvkVo4/bQQZh6w3veS2ILWrOSSK36NncnDEIP0j98PmC1GogdA5SsSFKq1tgF3kW9i2mX/BozXmNiSwomx2zgPu6Xqkbm90ZcQUZGVmbGV4LXRlc3QtMC4xOTAxNzajc25kxCABJc8A5Q5bfT1bMLQtS/qz4MlKsgQUpQtIRJ1fY8r0jaR0eXBlpGFwcGw=", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEEzRH88QIAAAAAAAAAALEGAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAMQwAAAAAAHhq3AAAAAAAAAAAAAAAAAB4atwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxDAAAAAApFvv6AAAAABVzRkRAAAAAD/9LzwAAAAAVc0ZEQAAAAAAAAAAAAAAAAAAAADEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAJxAAAAAAAAAnEAAAAAAAAAAAxBgAAAAAACzcYAAAAAAAGaKAAAAAAAAAAADEDAAGAAgACgAAAAAAAMQWABRkZWZsZXgtdGVzdC0wLjE5MDE3NqRhcGFzkgDOAeGrcKRhcGF0kcQgdKWxEDtStQNW3B5ww6xpYlGP2UWAn3r9TsiMXxnoWAGkYXBmYZPOP/0vPM5VzRkRzqRb7+ikYXBpZM69GVbDomZ2zgPu5ZKjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCD9I/fD5gtRqIHQOUrEhSqtbYBd5FvYtpl/waM15jYksKJsds4D7ul6pG5vdGXEFGRlZmxleC10ZXN0LTAuMTkwMTc2o3NuZMQgASXPAOUOW309WzC0LUv6s+DJSrIEFKULSESdX2PK9I2kdHlwZaRhcHBs", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEEzRH88QIAAAAAAAAAALEGAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAMQwAAAAAAHhq3AAAAAAAAAAAAAAAAAB4atwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxDAAAAAAJQOi8gAAAABVzRkRAAAAACQdwgUAAAAAJBsQPAAAAAAAAAAAAAAAAAAAAADEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAJxAAAAAAAAAnEAAAAAAAAAAAxBgAAAAAAAOpgAAAAAAAAAAAAAAAAAAAAADEDAAGAAgACgAAAAAAAMQWABRkZWZsZXgtdGVzdC0wLjE5MDE3NqRhcGFzkgDOAeGrcKRhcGF0kcQgdKWxEDtStQNW3B5ww6xpYlGP2UWAn3r9TsiMXxnoWAGkYXBmYZTOJBsQPM4kHcIFziUDovLOVc0ZEaRhcGlkzr0ZVsOiZnbOA+7lkqNnZW6sbWFpbm5ldC12MS4womdoxCDAYcTY/B293tLXYEvkVo4/bQQZh6w3veS2ILWrOSSK36NncnDEIP0j98PmC1GogdA5SsSFKq1tgF3kW9i2mX/BozXmNiSwomx2zgPu6Xqkbm90ZcQUZGVmbGV4LXRlc3QtMC4xOTAxNzajc25kxCABJc8A5Q5bfT1bMLQtS/qz4MlKsgQUpQtIRJ1fY8r0jaR0eXBlpGFwcGw=", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEEzRH88QIAAAAAAAAAALEGAAAAAAAAAABAAAAAAAAAAcAAAAAAAAAAMQwAAAAABr3EpgAAAAAAAAAAAAAAAA55hxkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxDAAAAAApFzKEgAAAABVzRkRAAAAADnl50wAAAAAOeWhBgAAAAAAAAAAAAAAAAAAAADEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAJxAAAAAAAAAnEAAAAAAAAAAAxBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEDAAGAAgACgAAAAAAAMQWABRkZWZsZXgtdGVzdC0wLjE5MDE3NqRhcGFzkwDOGvcSmM455hxkpGFwYXSRxCB0pbEQO1K1A1bcHnDDrGliUY/ZRYCfev1OyIxfGehYAaRhcGZhlM455aEGzjnl50zOVc0ZEc6kXMoSpGFwaWTOvRlWw6Jmds4D7uWSo2dlbqxtYWlubmV0LXYxLjCiZ2jEIMBhxNj8Hb3e0tdgS+RWjj9tBBmHrDe95LYgtas5JIrfo2dycMQg/SP3w+YLUaiB0DlKxIUqrW2AXeRb2LaZf8GjNeY2JLCibHbOA+7peqRub3RlxBRkZWZsZXgtdGVzdC0wLjE5MDE3NqNzbmTEIAElzwDlDlt9PVswtC1L+rPgyUqyBBSlC0hEnV9jyvSNpHR5cGWkYXBwbA==", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEyJDcIMQBAMQBAcRQAAAAAAAAAAAAAAAAAeGrcAAAAAAa9xKYAAAAADnmHGQAAAAAOeYnEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADECAAAAAAFHhZYxAgAAAAAAAAAAMQBAcQBAsQBAsQIAAAAAAAAAAqkYXBhc5LOAeGrcACkYXBhdJLEIHSlsRA7UrUDVtwecMOsaWJRj9lFgJ96/U7IjF8Z6FgBxCAqdDkowyH96QyHAHDN9Sxgx1WxJS4H1Xpap9CLKQJgjKRhcGZhkc5VzRkRpGFwaWTOvRlWw6Jmds4D7uWSo2dlbqxtYWlubmV0LXYxLjCiZ2jEIMBhxNj8Hb3e0tdgS+RWjj9tBBmHrDe95LYgtas5JIrfo2dycMQg/SP3w+YLUaiB0DlKxIUqrW2AXeRb2LaZf8GjNeY2JLCibHbOA+7peqRub3RlxBRkZWZsZXgtdGVzdC0wLjE5MDE3NqNzbmTEIAElzwDlDlt9PVswtC1L+rPgyUqyBBSlC0hEnV9jyvSNpHR5cGWkYXBwbA==", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "i6RhcGFhkcQEMXLKnaRhcGlkzs3Lr82jZmVlzQPoomZ2zgPu5ZKjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCD9I/fD5gtRqIHQOUrEhSqtbYBd5FvYtpl/waM15jYksKJsds4D7ul6pG5vdGXEBWdhcy0wo3NuZMQgdKWxEDtStQNW3B5ww6xpYlGP2UWAn3r9TsiMXxnoWAGkdHlwZaRhcHBs", + "group": "", + "logicSigBlob": false, + "signature": false + }, + { + "data": "i6RhcGFhkcQEMXLKnaRhcGlkzs3Lr82jZmVlzQPoomZ2zgPu5ZKjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCD9I/fD5gtRqIHQOUrEhSqtbYBd5FvYtpl/waM15jYksKJsds4D7ul6pG5vdGXEBWdhcy0xo3NuZMQgdKWxEDtStQNW3B5ww6xpYlGP2UWAn3r9TsiMXxnoWAGkdHlwZaRhcHBs", + "group": "", + "logicSigBlob": false, + "signature": false + }, + { + "data": "iqNhbXTNV+SjZmVlzQPoomZ2zgPu5ZKjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCD9I/fD5gtRqIHQOUrEhSqtbYBd5FvYtpl/waM15jYksKJsds4D7ul6o3JjdsQgSzQKDME+cIQ3rCv5V6lAMk+vvsjd7onflAHlCHcr+ECjc25kxCB0pbEQO1K1A1bcHnDDrGliUY/ZRYCfev1OyIxfGehYAaR0eXBlo3BheQ==", + "group": "", + "logicSigBlob": false, + "signature": false + }, + { + "data": "iqNhbXTOBR4WWKNmZWXNA+iiZnbOA+7lkqNnZW6sbWFpbm5ldC12MS4womdoxCDAYcTY/B293tLXYEvkVo4/bQQZh6w3veS2ILWrOSSK36NncnDEIP0j98PmC1GogdA5SsSFKq1tgF3kW9i2mX/BozXmNiSwomx2zgPu6XqjcmN2xCBLNAoMwT5whDesK/lXqUAyT6++yN3uid+UAeUIdyv4QKNzbmTEIHSlsRA7UrUDVtwecMOsaWJRj9lFgJ96/U7IjF8Z6FgBpHR5cGWjcGF5", + "group": "", + "logicSigBlob": false, + "signature": false + }, + { + "data": "jaRhcGFhk8QEsOMFF8QIAAAAAAAAAAHECAAABQyFmvHLpGFwYXORzs3nhoOkYXBhdJLEILSJyX9NO4+VpJFV9tRR89UR9FIUQi3h2QRXti772Z6ZxCAqdDkowyH96QyHAHDN9Sxgx1WxJS4H1Xpap9CLKQJgjKRhcGJ4k4GhbsQJdAAAAAAAAAABgaFuxAlhAAAAAM3nhoOBoW7EKnVidKWxEDtStQNW3B5ww6xpYlGP2UWAn3r9TsiMXxnoWAEAAAAAAAAAAaRhcGlkzs3Lr82jZmVlzROIomZ2zgPu5ZKjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCD9I/fD5gtRqIHQOUrEhSqtbYBd5FvYtpl/waM15jYksKJsds4D7ul6o3NuZMQgdKWxEDtStQNW3B5ww6xpYlGP2UWAn3r9TsiMXxnoWAGkdHlwZaRhcHBs", + "group": "", + "logicSigBlob": false, + "signature": false + } + ] +} diff --git a/packages/haystack/tests/fixtures/launch/sell.json b/packages/haystack/tests/fixtures/launch/sell.json new file mode 100644 index 0000000..a3b975c --- /dev/null +++ b/packages/haystack/tests/fixtures/launch/sell.json @@ -0,0 +1,107 @@ +{ + "address": "MR3ZBZBFR5JUT3TYNYUFGQVJEPP7AYTUR7EO6MOV2FV7GCMA2UZH5IWMDQ", + "quote": { + "fromASAID": 3454502531, + "toASAID": 31566704, + "quote": 1109343, + "type": "fixed-input", + "launch": { + "bondingSurplus": 97484, + "bondingTokenId": 0, + "side": "sell", + "tokenNum": 1 + }, + "requiredAppOptIns": [], + "flattenedRoute": { + "HayLaunch": 1, + "pact": 0.21600000000000003, + "pact-v2": 0.362, + "tinyman-V2": 0.422 + }, + "route": [], + "txnPayload": null + }, + "txns": [ + { + "data": "i6RhcGFhkcQEMXLKnaRhcGlkzs3Lr82jZmVlzQPoomZ2zgPu5ZOjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCDUruD0k7sgRaeBovL+dgp3zzNl5d9U7pfxnecKgeFZWKJsds4D7ul7pG5vdGXEBWdhcy0wo3NuZMQgZHeQ5CWPU0nueG4oU0KpI9/wYnSPyO8x1dFr8wmA1TKkdHlwZaRhcHBs", + "group": "", + "logicSigBlob": false, + "signature": false + }, + { + "data": "jaRhcGFhlMQEAooGR8QIAAAAAAAAAAHECAAAAJm4y1KExAgAAAAAAJNCmKRhcGFzkc7N54aDpGFwYXSSxCC0icl/TTuPlaSRVfbUUfPVEfRSFEIt4dkEV7Yu+9memcQgKnQ5KMMh/ekMhwBwzfUsYMdVsSUuB9V6WqfQiykCYIykYXBieJKBoW7ECXQAAAAAAAAAAYGhbsQqdWJkd5DkJY9TSe54bihTQqkj3/BidI/I7zHV0WvzCYDVMgAAAAAAAAABpGFwaWTOzcuvzaNmZWXND6CiZnbOA+7lk6NnZW6sbWFpbm5ldC12MS4womdoxCDAYcTY/B293tLXYEvkVo4/bQQZh6w3veS2ILWrOSSK36NncnDEINSu4PSTuyBFp4Gi8v52CnfPM2Xl31Tul/Gd5wqB4VlYomx2zgPu6Xujc25kxCBkd5DkJY9TSe54bihTQqkj3/BidI/I7zHV0WvzCYDVMqR0eXBlpGFwcGw=", + "group": "", + "logicSigBlob": false, + "signature": false + }, + { + "data": "i6RhcGFhk8QE3NM248QIAAAAAAAQ7V/ECAAAAAAAAAAHpGFwYXOUzgHhq3DOF+CRc85jwAowzroVPeqkYXBpZM69GVbDomZ2zgPu5ZOjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCDUruD0k7sgRaeBovL+dgp3zzNl5d9U7pfxnecKgeFZWKJsds4D7ul7pG5vdGXEFGRlZmxleC10ZXN0LTAuNjYzNjc3o3NuZMQgTqyo+OZ5F7u8NVJ6S+GRITIwXm90pK4VVoenynuG1lGkdHlwZaRhcHBs", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "i6NhbXTOAJNCmKNmZWXNv2iiZnbOA+7lk6NnZW6sbWFpbm5ldC12MS4womdoxCDAYcTY/B293tLXYEvkVo4/bQQZh6w3veS2ILWrOSSK36NncnDEINSu4PSTuyBFp4Gi8v52CnfPM2Xl31Tul/Gd5wqB4VlYomx2zgPu6Xukbm90ZcQUZGVmbGV4LXRlc3QtMC42NjM2NzejcmN2xCAknu1JgOheAACgb7xCtOaOzp9umnYZ6KbyI/2HBpw6Z6NzbmTEIGR3kOQlj1NJ7nhuKFNCqSPf8GJ0j8jvMdXRa/MJgNUypHR5cGWjcGF5", + "group": "", + "logicSigBlob": false, + "signature": false + }, + { + "data": "jqRhcGFhmsQEEzRH88QIAAAAAAAAAAHEGAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAMQwAAAAAAAAAAAAAAAAAeGrcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxDAAAAAA3uLkeQAAAADZ621HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAJxAAAAAAAAAAAAAAAAAAAAAAxBgAAAAAAHXO4AAAAAAAAAAAAAAAAAAAAADEDAAGAAgACgAAAAAAAMQWABRkZWZsZXgtdGVzdC0wLjY2MzY3N6RhcGFzkc4B4atwpGFwYXSRxCBkd5DkJY9TSe54bihTQqkj3/BidI/I7zHV0WvzCYDVMqRhcGJ4koKhaQGhbsQIAAAAAAAAAACCoWkBoW7ECAAAAAAB4atwpGFwZmGSztnrbUfO3uLkeaRhcGlkzr0ZVsOiZnbOA+7lk6NnZW6sbWFpbm5ldC12MS4womdoxCDAYcTY/B293tLXYEvkVo4/bQQZh6w3veS2ILWrOSSK36NncnDEINSu4PSTuyBFp4Gi8v52CnfPM2Xl31Tul/Gd5wqB4VlYomx2zgPu6Xukbm90ZcQUZGVmbGV4LXRlc3QtMC42NjM2Nzejc25kxCBOrKj45nkXu7w1UnpL4ZEhMjBeb3SkrhVWh6fKe4bWUaR0eXBlpGFwcGw=", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEEzRH88QIAAAAAAAAAALEGAAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAMQwAAAAAAAAAAAAAAAAuhU96gAAAAC6FT3qAAAAAGPACjAAAAAAAAAAAAAAAAAAAAAAxDAAAAAAO8GTHQAAAAAAAAAAAAAAAL/tV/cAAAAAVc0ZEQAAAAAAAAAAAAAAAAAAAADEYOz7UMwufbWYpv6CcCCzOuVBb6LFNX5jiCorVIbq+Dv6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAJxAAAAAAAAAnEAAAAAAAAAAAxBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEFAAGABAAEgAIAAAAAAAAAAAAAAAAxBYAFGRlZmxleC10ZXN0LTAuNjYzNjc3pGFwYXOTAM5jwAowzroVPeqkYXBhdJLEIOz7UMwufbWYpv6CcCCzOuVBb6LFNX5jiCorVIbq+Dv6xCBkd5DkJY9TSe54bihTQqkj3/BidI/I7zHV0WvzCYDVMqRhcGZhk847wZMdzlXNGRHOv+1X96RhcGlkzr0ZVsOiZnbOA+7lk6NnZW6sbWFpbm5ldC12MS4womdoxCDAYcTY/B293tLXYEvkVo4/bQQZh6w3veS2ILWrOSSK36NncnDEINSu4PSTuyBFp4Gi8v52CnfPM2Xl31Tul/Gd5wqB4VlYomx2zgPu6Xukbm90ZcQUZGVmbGV4LXRlc3QtMC42NjM2Nzejc25kxCBOrKj45nkXu7w1UnpL4ZEhMjBeb3SkrhVWh6fKe4bWUaR0eXBlpGFwcGw=", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEEzRH88QIAAAAAAAAAALEGAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAMQwAAAAAGPACjAAAAAAF+CRcwAAAABjwAowAAAAABfgkXMAAAAAAAAAAAAAAAAAAAAAxDAAAAAAZFOQlAAAAABVzRkRAAAAADvBkx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ4Wf7JW1rjdYWqRmKNg0e/xBpyDohRcOrM3eDe0FS0sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAAyAAAAAAAAAnEAAAAAAAAAAAxBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEFAAGAAgAEgAAAAgAAAAAAAAAAAAAxBYAFGRlZmxleC10ZXN0LTAuNjYzNjc3pGFwYXOSzhfgkXPOY8AKMKRhcGF0ksQgJ4Wf7JW1rjdYWqRmKNg0e/xBpyDohRcOrM3eDe0FS0vEIGR3kOQlj1NJ7nhuKFNCqSPf8GJ0j8jvMdXRa/MJgNUypGFwZmGTzjvBkx3OVc0ZEc5kU5CUpGFwaWTOvRlWw6Jmds4D7uWTo2dlbqxtYWlubmV0LXYxLjCiZ2jEIMBhxNj8Hb3e0tdgS+RWjj9tBBmHrDe95LYgtas5JIrfo2dycMQg1K7g9JO7IEWngaLy/nYKd88zZeXfVO6X8Z3nCoHhWViibHbOA+7pe6Rub3RlxBRkZWZsZXgtdGVzdC0wLjY2MzY3N6NzbmTEIE6sqPjmeRe7vDVSekvhkSEyMF5vdKSuFVaHp8p7htZRpHR5cGWkYXBwbA==", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jqRhcGFhmsQEEzRH88QIAAAAAAAAAAHEGAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAMQwAAAAABfgkXMAAAAAAeGrcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxDAAAAAA2sHoJgAAAADZ621HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAH6QAAAAAAAAAAAAAAAAAAAAAxBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEDAAGAAgACgAAAAAAAMQWABRkZWZsZXgtdGVzdC0wLjY2MzY3N6RhcGFzks4B4atwzhfgkXOkYXBhdJHEIGR3kOQlj1NJ7nhuKFNCqSPf8GJ0j8jvMdXRa/MJgNUypGFwYniSgqFpAaFuxAgAAAAAAeGrcIKhaQGhbsQIAAAAABfgkXOkYXBmYZLO2ettR87awegmpGFwaWTOvRlWw6Jmds4D7uWTo2dlbqxtYWlubmV0LXYxLjCiZ2jEIMBhxNj8Hb3e0tdgS+RWjj9tBBmHrDe95LYgtas5JIrfo2dycMQg1K7g9JO7IEWngaLy/nYKd88zZeXfVO6X8Z3nCoHhWViibHbOA+7pe6Rub3RlxBRkZWZsZXgtdGVzdC0wLjY2MzY3N6NzbmTEIE6sqPjmeRe7vDVSekvhkSEyMF5vdKSuFVaHp8p7htZRpHR5cGWkYXBwbA==", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEEzRH88QIAAAAAAAAAAHEGAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAMQwAAAAABfgkXMAAAAAAeGrcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxDAAAAAAO8GTHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEYMi8GMqj1gEgQnY2auskdHJXouCpvGUhbVGz+YnN+7sKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQYAAAAAAAAJxAAAAAAAAAAAAAAAAAAAAAAxBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEFAAGABAAEgAIAAAAAAAAAAAAAAAAxBYAFGRlZmxleC10ZXN0LTAuNjYzNjc3pGFwYXOSzgHhq3DOF+CRc6RhcGF0ksQgZHeQ5CWPU0nueG4oU0KpI9/wYnSPyO8x1dFr8wmA1TLEIMi8GMqj1gEgQnY2auskdHJXouCpvGUhbVGz+YnN+7sKpGFwZmGRzjvBkx2kYXBpZM69GVbDomZ2zgPu5ZOjZ2VurG1haW5uZXQtdjEuMKJnaMQgwGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit+jZ3JwxCDUruD0k7sgRaeBovL+dgp3zzNl5d9U7pfxnecKgeFZWKJsds4D7ul7pG5vdGXEFGRlZmxleC10ZXN0LTAuNjYzNjc3o3NuZMQgTqyo+OZ5F7u8NVJ6S+GRITIwXm90pK4VVoenynuG1lGkdHlwZaRhcHBs", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + }, + { + "data": "jaRhcGFhmsQEyJDcIMQBAMQBAcRQAAAAAAAAAAAAAAAAAeGrcAAAAAAX4JFzAAAAAGPACjAAAAAAuhU96gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADECAAAAAAAEMIKxAgAAAAAAAAAAMQBAcQBAsQBAsQIAAAAAAAAAAqkYXBhc5IAzgHhq3CkYXBhdJLEIGR3kOQlj1NJ7nhuKFNCqSPf8GJ0j8jvMdXRa/MJgNUyxCAqdDkowyH96QyHAHDN9Sxgx1WxJS4H1Xpap9CLKQJgjKRhcGZhkc5VzRkRpGFwaWTOvRlWw6Jmds4D7uWTo2dlbqxtYWlubmV0LXYxLjCiZ2jEIMBhxNj8Hb3e0tdgS+RWjj9tBBmHrDe95LYgtas5JIrfo2dycMQg1K7g9JO7IEWngaLy/nYKd88zZeXfVO6X8Z3nCoHhWViibHbOA+7pe6Rub3RlxBRkZWZsZXgtdGVzdC0wLjY2MzY3N6NzbmTEIE6sqPjmeRe7vDVSekvhkSEyMF5vdKSuFVaHp8p7htZRpHR5cGWkYXBwbA==", + "group": "", + "logicSigBlob": false, + "signature": { + "type": "secret_key", + "value": "redacted" + } + } + ] +} diff --git a/packages/haystack/tests/launch.test.ts b/packages/haystack/tests/launch.test.ts new file mode 100644 index 0000000..cbbc7a8 --- /dev/null +++ b/packages/haystack/tests/launch.test.ts @@ -0,0 +1,907 @@ +import algosdk from 'algosdk' +import { describe, it, expect, beforeEach, vi } from 'vitest' +import { SwapComposer } from '../src/composer' +import buyFixture from './fixtures/launch/buy.json' +import sellFixture from './fixtures/launch/sell.json' +import type { SwapContext } from '../src/middleware' +import type { FetchQuoteResponse, SwapTransaction } from '../src/types' + +/** + * Launch-token swap groups captured from the router's fetchExecuteSwapTxns on + * 2026-10-14 (HayLaunch token #1, bonded in ALGO). Router signatures are + * redacted; these tests build and inspect groups but never sign router txns. + * + * Buy (14 txns): 0 router opt-in, 1 user USDC -> router, 2-8 router swaps, + * 9-10 user gas() calls, 11 user MBR pay, 12 user pay -> curve, + * 13 user buyWithAlgoWithLimit + * Sell (10 txns): 0 user gas(), 1 user sellWithLimit, 2 router opt-in, + * 3 user ALGO -> router, 4-9 router swaps + */ + +const ROUTER_ADDRESS = algosdk.getApplicationAddress(3172554435n).toString() +const HAYLAUNCH_ADDRESS = algosdk.getApplicationAddress(3452678093n).toString() + +const suggestedParams = { + fee: 1000, + firstValid: 1000, + lastValid: 2000, + minFee: 1000, + genesisID: 'mainnet-v1.0', + genesisHash: Buffer.from( + 'wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=', + 'base64', + ), +} + +interface Fixture { + address: string + quote: unknown + txns: unknown[] +} + +/** ARC-4 return log for a uint64 value */ +const returnLog = (value: bigint): Uint8Array => + new Uint8Array([ + ...Buffer.from('151f7c75', 'hex'), + ...algosdk.encodeUint64(value), + ]) + +/** An inner transaction as it appears in a pending transaction response */ +const inner = (txn: algosdk.Transaction) => ({ txn: { txn } }) + +/** Encode a transaction as the API returns it */ +const toSwapTxn = ( + txn: algosdk.Transaction, + signature: SwapTransaction['signature'] = false, +): SwapTransaction => ({ + data: Buffer.from(algosdk.encodeUnsignedTransaction(txn)).toString('base64'), + group: '', + logicSigBlob: false, + signature, +}) + +const ROUTER_SIGNATURE: SwapTransaction['signature'] = { + type: 'secret_key', + value: 'unused', +} + +describe('SwapComposer launch token swaps', () => { + let mockAlgodClient: algosdk.Algodv2 + let pendingInfo: Record + + beforeEach(() => { + pendingInfo = {} + mockAlgodClient = { + accountInformation: vi.fn().mockReturnValue({ + do: vi.fn().mockResolvedValue({ appsLocalState: [], assets: [] }), + }), + pendingTransactionInformation: vi.fn((txId: string) => ({ + do: vi.fn().mockResolvedValue(pendingInfo[txId] ?? {}), + })), + getTransactionParams: vi.fn().mockReturnValue({ + do: vi.fn().mockResolvedValue(suggestedParams), + }), + } as any + }) + + const createComposer = (fixture: Fixture, note?: Uint8Array) => + new SwapComposer({ + quote: fixture.quote as FetchQuoteResponse, + swapTxns: fixture.txns as SwapTransaction[], + algodClient: mockAlgodClient, + address: fixture.address, + signer: async (txns: algosdk.Transaction[]) => + txns.map(() => new Uint8Array(0)), + note, + }) + + /** Build the group and stub the ATC so execute() "confirms" it */ + const buildAndStubExecute = async (composer: SwapComposer) => { + await composer.addSwapTransactions() + const txIds = composer.buildGroup().map(({ txn }) => txn.txID()) + vi.spyOn((composer as any).atc, 'execute').mockResolvedValue({ + confirmedRound: 1n, + txIDs: txIds, + methodResults: [], + }) + return txIds + } + + describe('input transaction', () => { + it('picks the user transfer to the router on a buy, not the curve call', async () => { + const composer = createComposer(buyFixture) + await composer.addSwapTransactions() + const txns = composer.buildGroup() + + expect(txns).toHaveLength(14) + expect(txns[1]?.txn.assetTransfer?.receiver.toString()).toBe( + ROUTER_ADDRESS, + ) + expect(composer.getInputTransactionId()).toBe(txns[1]?.txn.txID()) + }) + + it('picks the user payment to the router on a sell', async () => { + const composer = createComposer(sellFixture) + await composer.addSwapTransactions() + const txns = composer.buildGroup() + + expect(txns).toHaveLength(10) + expect(txns[3]?.txn.payment?.receiver.toString()).toBe(ROUTER_ADDRESS) + expect(composer.getInputTransactionId()).toBe(txns[3]?.txn.txID()) + }) + }) + + describe('note', () => { + const note = new TextEncoder().encode('tracking-id-123') + const decode = (bytes: Uint8Array | undefined) => + new TextDecoder().decode(bytes) + + it('is set on the buy input only, keeping the gas() calls distinct', async () => { + const composer = createComposer(buyFixture, note) + await composer.addSwapTransactions() + const txns = composer.buildGroup() + + expect(txns[1]?.txn.note).toEqual(note) + expect(decode(txns[9]?.txn.note)).toBe('gas-0') + expect(decode(txns[10]?.txn.note)).toBe('gas-1') + expect(txns[9]?.txn.txID()).not.toBe(txns[10]?.txn.txID()) + for (const i of [11, 12, 13]) { + expect(txns[i]?.txn.note).not.toEqual(note) + } + }) + + it('is set on the sell input only', async () => { + const composer = createComposer(sellFixture, note) + await composer.addSwapTransactions() + const txns = composer.buildGroup() + + expect(txns[3]?.txn.note).toEqual(note) + expect(decode(txns[0]?.txn.note)).toBe('gas-0') + expect(txns[1]?.txn.note).not.toEqual(note) + }) + }) + + describe('getSummary', () => { + it('reports a buy with the tokens credited by the curve call', async () => { + const composer = createComposer(buyFixture) + const txIds = await buildAndStubExecute(composer) + pendingInfo[txIds[13]!] = { + logs: [returnLog(5_607_413_404_650n)], + innerTxns: [], + } + + await composer.execute() + + expect(composer.getSummary()).toMatchObject({ + inputAssetId: 31566704n, + outputAssetId: 3454502531n, + inputAmount: 10_000_000n, + outputAmount: 5_607_413_404_650n, + inputTxnId: txIds[1], + outputTxnId: txIds[13], + inputSender: buyFixture.address, + outputSender: HAYLAUNCH_ADDRESS, + transactionCount: 14, + launch: { + side: 'buy', + tokenNum: 1n, + curveTxnId: txIds[13], + bondingAmount: 85_857_880n, + refund: 0n, + }, + }) + }) + + it('reports the refund of a buy that completes bonding', async () => { + const composer = createComposer(buyFixture) + const txIds = await buildAndStubExecute(composer) + const refund = (amount: number) => + algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: HAYLAUNCH_ADDRESS, + receiver: buyFixture.address, + amount, + suggestedParams, + }) + const toSomeoneElse = algosdk.makePaymentTxnWithSuggestedParamsFromObject( + { + sender: HAYLAUNCH_ADDRESS, + receiver: ROUTER_ADDRESS, + amount: 999, + suggestedParams, + }, + ) + pendingInfo[txIds[13]!] = { + logs: [returnLog(4_000_000_000_000n)], + innerTxns: [ + inner(refund(1_000_000)), + inner(toSomeoneElse), + inner(refund(234_567)), + ], + } + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.outputAmount).toBe(4_000_000_000_000n) + expect(summary?.launch?.refund).toBe(1_234_567n) + }) + + it('falls back to a regular summary when no curve call is found', async () => { + const composer = createComposer({ + ...buyFixture, + txns: buyFixture.txns.slice(0, 13), + }) + const txIds = await buildAndStubExecute(composer) + expect(txIds).toHaveLength(13) + const output = algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: ROUTER_ADDRESS, + receiver: buyFixture.address, + amount: 42, + assetIndex: 3454502531, + suggestedParams, + }) + pendingInfo[txIds[12]!] = { innerTxns: [inner(output)] } + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.outputTxnId).toBe(txIds[12]) + expect(summary?.outputAmount).toBe(42n) + expect(summary?.launch).toBeUndefined() + }) + + it('is unavailable for a buy when the curve call has no return value', async () => { + const composer = createComposer(buyFixture) + const txIds = await buildAndStubExecute(composer) + pendingInfo[txIds[13]!] = { logs: [], innerTxns: [] } + + await composer.execute() + + expect(composer.getSummary()).toBeUndefined() + }) + + it('reports a sell with the tokens sold as input and the curve payout', async () => { + const composer = createComposer(sellFixture) + const txIds = await buildAndStubExecute(composer) + const output = algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: ROUTER_ADDRESS, + receiver: sellFixture.address, + amount: 1_109_343, + assetIndex: 31566704, + suggestedParams, + }) + pendingInfo[txIds[9]!] = { innerTxns: [inner(output)] } + pendingInfo[txIds[1]!] = { logs: [returnLog(9_748_324n)] } + + await composer.execute() + + expect(composer.getSummary()).toMatchObject({ + inputAssetId: 3454502531n, + outputAssetId: 31566704n, + inputAmount: 660_230_328_964n, + outputAmount: 1_109_343n, + inputTxnId: txIds[1], + outputTxnId: txIds[9], + inputSender: sellFixture.address, + outputSender: ROUTER_ADDRESS, + transactionCount: 10, + launch: { + side: 'sell', + tokenNum: 1n, + curveTxnId: txIds[1], + bondingAmount: 9_748_324n, + refund: 0n, + }, + }) + }) + + it('has no launch details when the quote has no launch object', async () => { + const composer = createComposer({ + ...sellFixture, + quote: { ...sellFixture.quote, launch: undefined }, + }) + const txIds = await buildAndStubExecute(composer) + const output = algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: ROUTER_ADDRESS, + receiver: sellFixture.address, + amount: 1_109_343, + assetIndex: 31566704, + suggestedParams, + }) + pendingInfo[txIds[9]!] = { innerTxns: [inner(output)] } + + await composer.execute() + + const summary = composer.getSummary() + // Without launch info the input is the route's input transfer + expect(summary?.inputAmount).toBe(9_650_840n) + expect(summary?.inputTxnId).toBe(txIds[3]) + expect(summary?.launch).toBeUndefined() + }) + + describe('sell when the curve payout is unavailable', () => { + const sellOutput = () => + algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: ROUTER_ADDRESS, + receiver: sellFixture.address, + amount: 1_109_343, + assetIndex: 31566704, + suggestedParams, + }) + + it('still reports the output when the curve call has no return value', async () => { + const composer = createComposer(sellFixture) + const txIds = await buildAndStubExecute(composer) + pendingInfo[txIds[9]!] = { innerTxns: [inner(sellOutput())] } + pendingInfo[txIds[1]!] = { logs: [] } + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.outputAmount).toBe(1_109_343n) + expect(summary?.launch?.curveTxnId).toBe(txIds[1]) + expect(summary?.launch?.bondingAmount).toBeUndefined() + }) + + it('still reports the output when the curve lookup fails', async () => { + const composer = createComposer(sellFixture) + const txIds = await buildAndStubExecute(composer) + pendingInfo[txIds[9]!] = { innerTxns: [inner(sellOutput())] } + mockAlgodClient.pendingTransactionInformation = vi.fn( + (txId: string) => ({ + do: vi.fn().mockImplementation(async () => { + if (txId === txIds[1]) throw new Error('not found') + return pendingInfo[txId] ?? {} + }), + }), + ) as any + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.outputAmount).toBe(1_109_343n) + expect(summary?.inputAmount).toBe(660_230_328_964n) + expect(summary?.launch?.bondingAmount).toBeUndefined() + }) + }) + + describe('return value parsing', () => { + it('reads the return from the last log, after event logs', async () => { + const composer = createComposer(buyFixture) + const txIds = await buildAndStubExecute(composer) + const eventLog = new Uint8Array([ + ...Buffer.from('a1b2c3d4', 'hex'), + ...algosdk.encodeUint64(1n), + ...algosdk.encodeUint64(2n), + ]) + pendingInfo[txIds[13]!] = { + logs: [eventLog, returnLog(950_000n)], + innerTxns: [], + } + + await composer.execute() + + expect(composer.getSummary()?.outputAmount).toBe(950_000n) + }) + + it('ignores a 12-byte last log without the ARC-4 return prefix', async () => { + const composer = createComposer(buyFixture) + const txIds = await buildAndStubExecute(composer) + const notAReturn = new Uint8Array([ + ...Buffer.from('deadbeef', 'hex'), + ...algosdk.encodeUint64(950_000n), + ]) + pendingInfo[txIds[13]!] = { logs: [notAReturn], innerTxns: [] } + + await composer.execute() + + expect(composer.getSummary()).toBeUndefined() + }) + }) + + describe('with other transactions ahead of the swap', () => { + const sellOutput = () => + algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: ROUTER_ADDRESS, + receiver: sellFixture.address, + amount: 1_109_343, + assetIndex: 31566704, + suggestedParams, + }) + + it('locates the curve call after required app opt-ins', async () => { + const composer = createComposer({ + ...sellFixture, + quote: { ...sellFixture.quote, requiredAppOptIns: [123456] }, + }) + const txIds = await buildAndStubExecute(composer) + // Index 0 is the app opt-in, so the sell fixture shifts by one + expect(txIds).toHaveLength(11) + pendingInfo[txIds[10]!] = { innerTxns: [inner(sellOutput())] } + pendingInfo[txIds[2]!] = { logs: [returnLog(9_748_324n)] } + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.inputTxnId).toBe(txIds[2]) + expect(summary?.launch?.curveTxnId).toBe(txIds[2]) + expect(summary?.launch?.bondingAmount).toBe(9_748_324n) + }) + + it('locates the curve call after a transaction added before a sell', async () => { + const composer = createComposer(sellFixture) + composer.addTransaction( + algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: sellFixture.address, + receiver: sellFixture.address, + amount: 0, + suggestedParams, + }), + ) + const txIds = await buildAndStubExecute(composer) + pendingInfo[txIds[10]!] = { innerTxns: [inner(sellOutput())] } + pendingInfo[txIds[2]!] = { logs: [returnLog(9_748_324n)] } + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.inputTxnId).toBe(txIds[2]) + expect(summary?.launch?.curveTxnId).toBe(txIds[2]) + expect(summary?.launch?.bondingAmount).toBe(9_748_324n) + }) + + it('locates the curve call after a transaction added before a buy', async () => { + const composer = createComposer(buyFixture) + composer.addTransaction( + algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: buyFixture.address, + receiver: buyFixture.address, + amount: 0, + suggestedParams, + }), + ) + const txIds = await buildAndStubExecute(composer) + pendingInfo[txIds[14]!] = { + logs: [returnLog(950_000n)], + innerTxns: [], + } + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.outputTxnId).toBe(txIds[14]) + expect(summary?.launch?.curveTxnId).toBe(txIds[14]) + expect(summary?.outputAmount).toBe(950_000n) + }) + }) + }) + + describe('middleware', () => { + it('sees the normalized launch details on a raw quote', async () => { + let seen: SwapContext['quote'] | undefined + const composer = new SwapComposer({ + quote: sellFixture.quote as unknown as FetchQuoteResponse, + swapTxns: sellFixture.txns as SwapTransaction[], + algodClient: mockAlgodClient, + address: sellFixture.address, + signer: async (txns: algosdk.Transaction[]) => + txns.map(() => new Uint8Array(0)), + middleware: [ + { + name: 'Capture', + version: '1.0.0', + shouldApply: async () => true, + beforeSwap: async (context) => { + seen = context.quote + return [] + }, + }, + ], + }) + + await composer.addSwapTransactions() + + expect(seen?.launch).toEqual({ + side: 'sell', + tokenNum: 1, + bondingTokenId: 0, + bondingSurplus: 97_484n, + refund: 0n, + graduates: false, + }) + }) + }) + + describe('buy of a token bonded in an ASA', () => { + const user = algosdk.generateAccount().addr.toString() + const BONDING_ASSET = 31566704 + const LAUNCH_ASSET = 3454502531 + const HAYLAUNCH_APP_ID = 3452678093n + const ROUTER_APP_ID = 3172554435n + + const routerCall = () => + algosdk.makeApplicationNoOpTxnFromObject({ + sender: ROUTER_ADDRESS, + appIndex: ROUTER_APP_ID, + suggestedParams, + }) + + const bondingTransfer = (receiver: string, amount: number) => + algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: user, + receiver, + amount, + assetIndex: BONDING_ASSET, + suggestedParams, + }) + + /** + * router opt-in, ALGO -> router, router swap, [beforeCurve], USDC -> curve, + * buyWithLimit(tokenNum 7, minTokensOut), [afterCurve] + */ + const buildBuy = ({ + beforeCurve, + afterCurve, + }: { + beforeCurve?: SwapTransaction + afterCurve?: SwapTransaction + } = {}) => { + const buyCall = algosdk.makeApplicationNoOpTxnFromObject({ + sender: user, + appIndex: HAYLAUNCH_APP_ID, + appArgs: [ + Buffer.from('9068a8d9', 'hex'), + algosdk.encodeUint64(7), + algosdk.encodeUint64(900_000), + ], + suggestedParams, + }) + const txns = [ + toSwapTxn(routerCall(), ROUTER_SIGNATURE), + toSwapTxn( + algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: user, + receiver: ROUTER_ADDRESS, + amount: 5_000_000, + suggestedParams, + }), + ), + toSwapTxn(routerCall(), ROUTER_SIGNATURE), + ...(beforeCurve ? [beforeCurve] : []), + toSwapTxn(bondingTransfer(HAYLAUNCH_ADDRESS, 1_000_000)), + toSwapTxn(buyCall), + ...(afterCurve ? [afterCurve] : []), + ] + return { + address: user, + quote: { + fromASAID: 0, + toASAID: LAUNCH_ASSET, + quote: '1000000', + type: 'fixed-input', + route: [], + txnPayload: null, + requiredAppOptIns: [], + launch: { + side: 'buy', + tokenNum: 7, + bondingTokenId: BONDING_ASSET, + bondingSurplus: 5000, + }, + }, + txns, + } + } + + it('reports tokens credited, the bonding payment and an ASA refund', async () => { + const fixture = buildBuy() + const composer = createComposer(fixture) + const txIds = await buildAndStubExecute(composer) + const refund = (amount: number) => + algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: HAYLAUNCH_ADDRESS, + receiver: user, + amount, + assetIndex: BONDING_ASSET, + suggestedParams, + }) + // An inner transfer of the launch token must not replace the return value + const launchTokenTransfer = + algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: ROUTER_ADDRESS, + receiver: user, + amount: 1, + assetIndex: LAUNCH_ASSET, + suggestedParams, + }) + const otherAsset = + algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: HAYLAUNCH_ADDRESS, + receiver: user, + amount: 42, + assetIndex: 999, + suggestedParams, + }) + const algoPayment = algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: HAYLAUNCH_ADDRESS, + receiver: user, + amount: 7, + suggestedParams, + }) + pendingInfo[txIds[4]!] = { + logs: [returnLog(950_000n)], + innerTxns: [ + inner(refund(200_000)), + inner(otherAsset), + inner(algoPayment), + inner(launchTokenTransfer), + inner(refund(50_000)), + ], + } + + await composer.execute() + + expect(composer.getSummary()).toMatchObject({ + inputAmount: 5_000_000n, + outputAmount: 950_000n, + inputTxnId: txIds[1], + outputTxnId: txIds[4], + outputSender: HAYLAUNCH_ADDRESS, + launch: { + side: 'buy', + tokenNum: 7n, + curveTxnId: txIds[4], + bondingAmount: 1_000_000n, + refund: 250_000n, + }, + }) + }) + + it('locates the user-signed curve call, not a pre-signed call with a curve selector', async () => { + const presigned = algosdk.makeApplicationNoOpTxnFromObject({ + sender: ROUTER_ADDRESS, + appIndex: HAYLAUNCH_APP_ID, + appArgs: [Buffer.from('b0e30517', 'hex'), algosdk.encodeUint64(7)], + suggestedParams, + }) + const fixture = buildBuy({ + beforeCurve: toSwapTxn(presigned, ROUTER_SIGNATURE), + }) + const composer = createComposer(fixture) + const txIds = await buildAndStubExecute(composer) + pendingInfo[txIds[5]!] = { logs: [returnLog(950_000n)], innerTxns: [] } + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.outputTxnId).toBe(txIds[5]) + expect(summary?.launch?.curveTxnId).toBe(txIds[5]) + expect(summary?.outputAmount).toBe(950_000n) + }) + + it('reads the output from the curve call even when it is not last', async () => { + const fixture = buildBuy({ + afterCurve: toSwapTxn(routerCall(), ROUTER_SIGNATURE), + }) + const composer = createComposer(fixture) + const txIds = await buildAndStubExecute(composer) + pendingInfo[txIds[4]!] = { logs: [returnLog(950_000n)], innerTxns: [] } + pendingInfo[txIds[5]!] = { logs: [returnLog(1n)], innerTxns: [] } + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.outputAmount).toBe(950_000n) + expect(summary?.outputTxnId).toBe(txIds[4]) + }) + + it('leaves the bonding amount undefined when the curve payment is not right before the buy', async () => { + const stray = toSwapTxn(bondingTransfer(user, 1)) + const fixture = buildBuy() + // Swap the bonding payment for a transfer that isn't to the curve + fixture.txns.splice(3, 1, stray) + const composer = createComposer(fixture) + const txIds = await buildAndStubExecute(composer) + pendingInfo[txIds[4]!] = { logs: [returnLog(950_000n)], innerTxns: [] } + + await composer.execute() + + const summary = composer.getSummary() + expect(summary?.outputAmount).toBe(950_000n) + expect(summary?.launch?.bondingAmount).toBeUndefined() + }) + }) +}) + +describe('SwapComposer input transaction selection', () => { + const user = algosdk.generateAccount().addr.toString() + const routerAppId = 123456n + const routerAddress = algosdk.getApplicationAddress(routerAppId).toString() + + const routerAppCall = () => + toSwapTxn( + algosdk.makeApplicationNoOpTxnFromObject({ + sender: routerAddress, + appIndex: routerAppId, + suggestedParams, + }), + ROUTER_SIGNATURE, + ) + const userPayTo = (receiver: string) => + toSwapTxn( + algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: user, + receiver, + amount: 5_000_000, + suggestedParams, + }), + ) + const userOptIn = () => + toSwapTxn( + algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: user, + receiver: user, + amount: 0, + assetIndex: 31566704, + suggestedParams, + }), + ) + const userAppCall = () => + toSwapTxn( + algosdk.makeApplicationNoOpTxnFromObject({ + sender: user, + appIndex: 999n, + suggestedParams, + }), + ) + + /** Index of getInputTransactionId() within the built group */ + const inputIndexOf = async (swapTxns: SwapTransaction[]) => { + const composer = new SwapComposer({ + quote: { + fromASAID: 0, + toASAID: 31566704, + quote: '1000000', + route: [], + txnPayload: null, + requiredAppOptIns: [], + } as unknown as FetchQuoteResponse, + swapTxns, + algodClient: { + accountInformation: vi.fn().mockReturnValue({ + do: vi.fn().mockResolvedValue({ appsLocalState: [], assets: [] }), + }), + } as any, + address: user, + signer: async (txns: algosdk.Transaction[]) => + txns.map(() => new Uint8Array(0)), + }) + await composer.addSwapTransactions() + const ids = composer.buildGroup().map(({ txn }) => txn.txID()) + return ids.indexOf(composer.getInputTransactionId()!) + } + + it('finds the router from its pre-signed call, not an earlier user-signed app call', async () => { + expect( + await inputIndexOf([ + userAppCall(), + routerAppCall(), + userPayTo(routerAddress), + userOptIn(), + ]), + ).toBe(2) + }) + + it('finds the router from its app call, not an earlier pre-signed payment', async () => { + const routerPayment = toSwapTxn( + algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: routerAddress, + receiver: user, + amount: 0, + suggestedParams, + }), + ROUTER_SIGNATURE, + ) + expect( + await inputIndexOf([ + routerPayment, + routerAppCall(), + userPayTo(routerAddress), + userOptIn(), + ]), + ).toBe(2) + }) + + it('picks a transfer to the router at index 0', async () => { + expect( + await inputIndexOf([ + userPayTo(routerAddress), + routerAppCall(), + userOptIn(), + ]), + ).toBe(0) + }) + + it('falls back to the last user-signed transaction without a router call', async () => { + expect(await inputIndexOf([userPayTo(user), userOptIn()])).toBe(1) + }) + + it('falls back to the last user-signed transaction when nothing is sent to the router', async () => { + expect( + await inputIndexOf([routerAppCall(), userOptIn(), userPayTo(user)]), + ).toBe(2) + }) + + it('skips a pre-signed transfer to the router', async () => { + const presignedToRouter = toSwapTxn( + algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: routerAddress, + receiver: routerAddress, + amount: 0, + suggestedParams, + }), + ROUTER_SIGNATURE, + ) + expect( + await inputIndexOf([ + routerAppCall(), + presignedToRouter, + userPayTo(routerAddress), + ]), + ).toBe(2) + }) + + it('picks the transfer to the router over a later user-signed transaction', async () => { + const routerCall = algosdk.makeApplicationNoOpTxnFromObject({ + sender: routerAddress, + appIndex: routerAppId, + suggestedParams, + }) + const input = algosdk.makePaymentTxnWithSuggestedParamsFromObject({ + sender: user, + receiver: routerAddress, + amount: 5_000_000, + suggestedParams, + }) + const optIn = algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({ + sender: user, + receiver: user, + amount: 0, + assetIndex: 31566704, + suggestedParams, + }) + const note = new TextEncoder().encode('tracking') + + const composer = new SwapComposer({ + quote: { + fromASAID: 0, + toASAID: 31566704, + quote: '1000000', + route: [], + txnPayload: null, + requiredAppOptIns: [], + } as unknown as FetchQuoteResponse, + swapTxns: [ + toSwapTxn(routerCall, ROUTER_SIGNATURE), + toSwapTxn(input), + toSwapTxn(optIn), + ], + algodClient: { + accountInformation: vi.fn().mockReturnValue({ + do: vi.fn().mockResolvedValue({ appsLocalState: [], assets: [] }), + }), + } as any, + address: user, + signer: async (txns: algosdk.Transaction[]) => + txns.map(() => new Uint8Array(0)), + note, + }) + + await composer.addSwapTransactions() + const txns = composer.buildGroup() + + expect(composer.getInputTransactionId()).toBe(txns[1]?.txn.txID()) + expect(txns[1]?.txn.note).toEqual(note) + expect(txns[2]?.txn.note).not.toEqual(note) + }) +}) From 68afffb13208a6f3d2638ce2d248f556675824ae Mon Sep 17 00:00:00 2001 From: Patrick Bennett <170563+pbennett@users.noreply.github.com> Date: Thu, 15 Oct 2026 22:49:23 -0400 Subject: [PATCH 4/4] docs: state node requirements and breaking-change convention --- .claude/CLAUDE.md | 1 + README.md | 2 +- packages/haystack/README.md | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index ac3bee4..9fc5bd2 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -63,3 +63,4 @@ The public API is whatever `src/index.ts` re-exports: client, composer, constant - Conventional commits with a **lowercase** subject after the colon, e.g. `fix(client): handle timeout`. Renovate's capitalized `chore(deps): Update…` commits are the exception. Scopes: `client`, `composer`, `middleware`, `types`, `deps`, `examples`, `docs`. - semantic-release runs on push to `main`. It derives the version from commit types (`feat`, `fix`, `refactor`, `perf` appear in release notes) and writes `packages/haystack/CHANGELOG.md` and the package version. Never edit either by hand. +- Mark a breaking change with a `BREAKING CHANGE:` footer only, never `feat!:`. The `angular` preset doesn't parse `!`, so the commit drops out of its release-notes section. PRs are squash-merged and semantic-release reads only the squash commit, so the footer must be in the squash message; trim GitHub's default squash body so footers from branch commits aren't repeated. diff --git a/README.md b/README.md index ec371ce..b5a3e31 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ This is a pnpm workspace monorepo. All packages and examples share dependencies - **Haystack Router API Key** - An API key is included for free tier usage (60 requests/min). For production rate limits, request a key from [support@txnlab.dev](mailto:support@txnlab.dev). - algosdk 3.0.0 or later (peer dependency) -- Node.js >= 22.22.2 +- Node.js `^22.22.2 || >=24.15` - pnpm 10.20.0 or later ### Installation diff --git a/packages/haystack/README.md b/packages/haystack/README.md index 3d693e9..9fd22ff 100644 --- a/packages/haystack/README.md +++ b/packages/haystack/README.md @@ -26,7 +26,7 @@ TypeScript/JavaScript SDK for [Haystack Order Router](https://txnlab.gitbook.io/ npm install @txnlab/haystack-router algosdk ``` -> **Note**: `algosdk` is a peer dependency and must be installed alongside `@txnlab/haystack-router`. +> **Note**: Requires Node.js 22 or later. `algosdk` is a peer dependency and must be installed alongside `@txnlab/haystack-router`. ## Quick Start