diff --git a/.changeset/giant-knives-rhyme.md b/.changeset/giant-knives-rhyme.md
new file mode 100644
index 0000000..bc95701
--- /dev/null
+++ b/.changeset/giant-knives-rhyme.md
@@ -0,0 +1,5 @@
+---
+"prool": minor
+---
+
+**Breaking:** Removed `silius`, `stackup`, `rundler` instances.
diff --git a/.changeset/lazy-toys-report.md b/.changeset/lazy-toys-report.md
new file mode 100644
index 0000000..39c162c
--- /dev/null
+++ b/.changeset/lazy-toys-report.md
@@ -0,0 +1,57 @@
+---
+"prool": minor
+---
+
+**Breaking:** Refactored to use namespace imports.
+
+### Imports
+
+```diff
+- import { createServer } from 'prool'
+- import { anvil, alto } from 'prool/instances'
+- import { defineInstance } from 'prool'
+- import { definePool } from 'prool'
++ import { Instance, Pool, Server } from 'prool'
+```
+
+### `Server.create` → `Server.create`
+
+```diff
+- const server = createServer({
+- instance: anvil(),
++ const server = Server.create({
++ instance: Instance.anvil(),
+ })
+```
+
+### `anvil`, `alto` → `Instance.anvil`, `Instance.alto`
+
+```diff
+- const instance = anvil({ ... })
++ const instance = Instance.anvil({ ... })
+
+- const instance = alto({ ... })
++ const instance = Instance.alto({ ... })
+```
+
+### `defineInstance` → `Instance.define`
+
+```diff
+- const foo = defineInstance((parameters) => {
++ const foo = Instance.define((parameters) => {
+ return {
+ name: 'foo',
+ // ...
+ }
+ })
+```
+
+### `definePool` → `Pool.define`
+
+```diff
+- const pool = definePool({
+- instance: anvil(),
++ const pool = Pool.define({
++ instance: Instance.anvil(),
+ })
+```
diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml
new file mode 100644
index 0000000..4123032
--- /dev/null
+++ b/.github/actions/install-dependencies/action.yml
@@ -0,0 +1,17 @@
+name: 'Install dependencies'
+description: 'Prepare repository and all dependencies'
+
+runs:
+ using: 'composite'
+ steps:
+ - name: Set up pnpm
+ uses: pnpm/action-setup@v4
+
+ - name: Set up Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '24.5'
+
+ - name: Install dependencies
+ shell: bash
+ run: pnpm install
diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml
deleted file mode 100644
index 29a6544..0000000
--- a/.github/workflows/close-issue.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-name: Close Issue
-
-on:
- workflow_dispatch:
- schedule:
- - cron: '0 0 * * *'
-
-jobs:
- close-issues:
- runs-on: ubuntu-latest
- steps:
- - name: Needs Reproduction
- uses: actions-cool/issues-helper@v3
- with:
- actions: 'close-issues'
- token: ${{ secrets.GITHUB_TOKEN }}
- labels: 'M: Needs Reproduction'
- inactive-day: 3
diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml
deleted file mode 100644
index 29b7e31..0000000
--- a/.github/workflows/label-issue.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-name: Label Issue
-
-on:
- issues:
- types: [labeled]
-
-jobs:
- reply-labeled:
- runs-on: ubuntu-latest
- steps:
- - name: Label needs reproduction
- if: github.event.label.name == 'Needs Reproduction'
- uses: peter-evans/close-issue@v3
- with:
- close-reason: not_planned
- comment: |
- Hello @${{ github.event.issue.user.login }}.
-
- Please provide a [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) using [StackBlitz](https://stackblitz.com), [TypeScript Playground](https://www.typescriptlang.org/play) (for type issues), or a separate minimal GitHub repository.
-
- Minimal reproductions are required as they save us a lot of time reproducing your config & environment, and trying to reproduce your issue. See [Why reproductions are required](https://antfu.me/posts/why-reproductions-are-required).
-
- Please reopen this issue when a reproduction is added.
- issue-number: ${{ github.event.issue.number }}
- token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..7881259
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,41 @@
+name: Main
+on:
+ push:
+ branches: [main]
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ verify:
+ name: Verify
+ uses: ./.github/workflows/verify.yml
+ secrets: inherit
+
+ changesets:
+ name: Changesets
+ permissions:
+ contents: write
+ id-token: write
+ pull-requests: write
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ uses: ./.github/actions/install-dependencies
+
+ - name: PR or publish
+ id: changesets
+ uses: changesets/action@v1
+ with:
+ title: 'chore: version packages'
+ commit: 'chore: version packages'
+ publish: pnpm run changeset:publish
+ version: pnpm run changeset:version
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/on-push-to-main.yml b/.github/workflows/on-push-to-main.yml
deleted file mode 100644
index 7ce37ca..0000000
--- a/.github/workflows/on-push-to-main.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-name: Main
-on:
- push:
- branches: [main]
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
-
-jobs:
- verify:
- name: Verify
- uses: ./.github/workflows/verify.yml
- secrets: inherit
-
- changesets:
- name: Changesets
- needs: verify
- permissions:
- contents: write
- id-token: write
- issues: write
- repository-projects: write
- deployments: write
- packages: write
- pull-requests: write
- runs-on: ubuntu-latest
- timeout-minutes: 5
-
- steps:
- - name: Clone repository
- uses: actions/checkout@v4
- with:
- # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
- fetch-depth: 0
-
- - name: Install dependencies
- uses: wevm/actions/.github/actions/pnpm@main
- with:
- node-version: 24.5
-
- - name: Create version pull request or publish to npm
- uses: changesets/action@v1
- with:
- title: 'chore: version packages'
- commit: 'chore: version packages'
- publish: pnpm changeset:release
- version: pnpm changeset:version
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Publish Prerelease
- if: steps.changesets.outputs.published != 'true'
- continue-on-error: true
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- git reset --hard origin/main
- pnpm clean
- pnpm changeset version --no-git-tag --snapshot canary
- pnpm changeset publish --no-git-tag --snapshot canary --tag canary
diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml
new file mode 100644
index 0000000..43134b5
--- /dev/null
+++ b/.github/workflows/prerelease.yml
@@ -0,0 +1,18 @@
+name: Prerelease
+on: [push, pull_request]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ uses: ./.github/actions/install-dependencies
+
+ - name: Prerelease
+ run: |
+ pnpm run build
+ pnpx pkg-pr-new publish --pnpm
diff --git a/.github/workflows/on-pull-request.yml b/.github/workflows/pull-request.yml
similarity index 87%
rename from .github/workflows/on-pull-request.yml
rename to .github/workflows/pull-request.yml
index 0b555d2..64e1a66 100644
--- a/.github/workflows/on-pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -1,4 +1,4 @@
-name: Pull request
+name: Pull Request
on:
pull_request:
types: [opened, reopened, synchronize, ready_for_review]
@@ -11,4 +11,4 @@ jobs:
verify:
name: Verify
uses: ./.github/workflows/verify.yml
- secrets: inherit
\ No newline at end of file
+ secrets: inherit
diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml
index 067c0fc..48733f5 100644
--- a/.github/workflows/verify.yml
+++ b/.github/workflows/verify.yml
@@ -4,81 +4,40 @@ on:
workflow_dispatch:
jobs:
- lint:
- name: Lint
+ checks:
+ name: Checks
runs-on: ubuntu-latest
- timeout-minutes: 5
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Install dependencies
- uses: wevm/actions/.github/actions/pnpm@main
- with:
- node-version: 22
+ uses: ./.github/actions/install-dependencies
- - name: Lint code
- run: pnpm lint
-
- - uses: stefanzweifel/git-auto-commit-action@v5
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- commit_message: 'chore: format'
- commit_user_name: 'github-actions[bot]'
- commit_user_email: 'github-actions[bot]@users.noreply.github.com'
+ - name: Check code
+ run: pnpm check
- types:
- name: Types
- runs-on: ubuntu-latest
+ - name: Check types
+ run: pnpm check:types
+ test:
+ name: Test
+ runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Install dependencies
- uses: wevm/actions/.github/actions/pnpm@main
- with:
- node-version: 22
-
- - name: Build
- run: pnpm build
-
- - name: Check types
- run: pnpm typecheck
-
- # test:
- # name: Test
- # runs-on: ubuntu-latest
- # steps:
- # - name: Clone repository
- # uses: actions/checkout@v4
-
- # - name: Install dependencies
- # uses: wevm/actions/.github/actions/pnpm@main
- # with:
- # node-version: 22
+ uses: ./.github/actions/install-dependencies
- # - name: Set up Foundry
- # uses: foundry-rs/foundry-toolchain@v1
+ - name: Set up Foundry
+ uses: foundry-rs/foundry-toolchain@v1
- # - name: Set up Rundler
- # uses: jaxxstorm/action-install-gh-release@v1.12.0
- # with:
- # repo: alchemyplatform/rundler
- # platform: linux
+ - name: Set up Docker
+ uses: docker/setup-docker-action@v4
- # - name: Set up Docker
- # uses: docker/setup-docker-action@v4
-
- # - name: Pull Silius
- # run: docker pull ghcr.io/silius-rs/silius:latest
-
- # - name: Pull Stackup
- # run: docker pull stackupwallet/stackup-bundler:latest
-
- # - name: Run tests
- # run: pnpm test
- # env:
- # VITE_FORK_URL: ${{ secrets.VITE_FORK_URL }}
+ - name: Run tests
+ run: pnpm test --bail=1
+ env:
+ VITE_FORK_URL: ${{ secrets.VITE_FORK_URL }}
diff --git a/.gitignore b/.gitignore
index f1be30c..ece6d9f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
.local
_lib
coverage
+dist
node_modules
tsconfig.*.tsbuildinfo
tsconfig.tsbuildinfo
\ No newline at end of file
diff --git a/src/CHANGELOG.md b/CHANGELOG.md
similarity index 100%
rename from src/CHANGELOG.md
rename to CHANGELOG.md
diff --git a/LICENSE b/LICENSE
deleted file mode 120000
index da348fc..0000000
--- a/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-src/LICENSE
\ No newline at end of file
diff --git a/src/LICENSE b/LICENSE.md
similarity index 99%
rename from src/LICENSE
rename to LICENSE.md
index 4116d58..4946416 100644
--- a/src/LICENSE
+++ b/LICENSE.md
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 120000
index 351df1d..0000000
--- a/README.md
+++ /dev/null
@@ -1 +0,0 @@
-src/README.md
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b018d80
--- /dev/null
+++ b/README.md
@@ -0,0 +1,267 @@
+
+
+
+
+
+
+
+
+
+
+ HTTP testing instances for Ethereum
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Introduction
+
+Prool is a library that provides programmatic HTTP testing instances for Ethereum. It is designed to be used in testing environments (e.g. [Vitest](https://vitest.dev/)) where you need to interact with an Ethereum server instance (e.g. Execution Node, 4337 Bundler, Indexer, etc) over HTTP or WebSocket.
+
+Prool contains a set of pre-configured instances that can be used to simulate Ethereum server environments, being:
+
+- **Local Execution Nodes:** [`anvil`](#anvil-execution-node), [`tempo`](#tempo-execution-node)
+- **ERC-4337 Bundler Nodes:** [`alto`](#alto-bundler-node)
+
+You can also create your own custom instances by using the [`Instance.define` function](#instancedefine).
+
+## Table of Contents
+
+- [Install](#install)
+- [Getting Started](#getting-started)
+ - [Anvil (Execution Node)](#anvil-execution-node)
+ - [Alto (ERC-4337 Bundler Node)](#alto-bundler-node)
+- [Reference](#reference)
+ - [`Server.create`](#servercreate)
+ - [`Instance.define`](#instancedefine)
+ - [`Pool.define`](#pooldefine)
+
+
+## Install
+
+```bash
+npm i prool
+```
+
+```bash
+pnpm add prool
+```
+
+```bash
+bun i prool
+```
+
+## Getting Started
+
+### Anvil (Execution Node)
+
+#### Requirements
+
+```bash
+curl -L https://foundry.paradigm.xyz | bash # Install Foundry
+```
+
+#### Usage
+
+```ts
+import { Instance, Server } from 'prool'
+
+const server = Server.create({
+ instance: Instance.anvil(),
+})
+
+await server.start()
+// Instances accessible at:
+// "http://localhost:8545/1"
+// "http://localhost:8545/2"
+// "http://localhost:8545/3"
+// "http://localhost:8545/n"
+```
+
+### Tempo (Execution Node)
+
+#### Requirements
+
+```bash
+curl -L https://tempo.xyz/install | bash # Install Tempo
+```
+
+#### Usage
+
+```ts
+import { Instance, Server } from 'prool'
+
+const server = Server.create({
+ instance: Instance.tempo(),
+})
+
+await server.start()
+// Instances accessible at:
+// "http://localhost:8545/1"
+// "http://localhost:8545/2"
+// "http://localhost:8545/3"
+// "http://localhost:8545/n"
+```
+
+### Alto (Bundler Node)
+
+#### Requirements
+
+- [`@pimlico/alto`](npm.im/@pimlico/alto): `npm i @pimlico/alto`
+
+#### Usage
+
+```ts
+import { Instance, Server } from 'prool'
+
+const executionServer = Server.create({
+ instance: Instance.anvil(),
+ port: 8545
+})
+await executionServer.start()
+// Instances accessible at:
+// "http://localhost:8545/1"
+// "http://localhost:8545/2"
+// "http://localhost:8545/3"
+// "http://localhost:8545/n"
+
+const bundlerServer = Server.create({
+ instance: (key) => Instance.alto({
+ entrypoints: ['0x0000000071727De22E5E9d8BAf0edAc6f37da032'],
+ rpcUrl: `http://localhost:8545/${key}`,
+ executorPrivateKeys: ['0x...'],
+ })
+})
+await bundlerServer.start()
+// Instances accessible at:
+// "http://localhost:3000/1" (→ http://localhost:8545/1)
+// "http://localhost:3000/2" (→ http://localhost:8545/2)
+// "http://localhost:3000/3" (→ http://localhost:8545/3)
+// "http://localhost:3000/n" (→ http://localhost:8545/n)
+```
+
+## Reference
+
+### `Server.create`
+
+Creates a server that manages a pool of instances via a proxy.
+
+#### Usage
+
+```ts
+import { Instance, Server } from 'prool'
+
+const executionServer = Server.create({
+ instance: Instance.anvil(),
+})
+await executionServer.start()
+// Instances accessible at:
+// "http://localhost:8545/1"
+// "http://localhost:8545/2"
+// "http://localhost:8545/3"
+// "http://localhost:8545/n"
+// "http://localhost:8545/n/start"
+// "http://localhost:8545/n/stop"
+// "http://localhost:8545/n/restart"
+// "http://localhost:8545/healthcheck"
+```
+
+**Endpoints:**
+- `/:key`: Proxy to instance at `key`.
+- `/:key/start`: Start instance at `key`.
+- `/:key/stop`: Stop instance at `key`.
+- `/:key/restart`: Restart instance at `key`.
+- `/healthcheck`: Healthcheck endpoint.
+
+#### API
+
+| Name | Description | Type |
+| ---------- | -------------------------------------------------------- | --------------------------------------- |
+| `instance` | Instance for the server. | `Instance \| (key: number) => Instance` |
+| `limit` | Number of instances that can be instantiated in the pool | `number` |
+| `host` | Host for the server. | `string` |
+| `port` | Port for the server. | `number` |
+| returns | Server | `Server.Server` |
+
+### `Instance.define`
+
+Creates an instance definition, that can be used with [`Server.create`](#servercreate) or [`Pool.define`](#pooldefine).
+
+#### Usage
+
+```ts
+import { Instance } from 'prool'
+
+const foo = Instance.define((parameters: FooParameters) => {
+ return {
+ name: 'foo',
+ host: 'localhost',
+ port: 3000,
+ async start() {
+ // ...
+ },
+ async stop() {
+ // ...
+ },
+ }
+})
+```
+
+#### API
+
+| Name | Description | Type |
+| ------- | -------------------- | ------------------ |
+| `fn` | Instance definition. | `DefineInstanceFn` |
+| returns | Instance. | `Instance` |
+
+### `Pool.define`
+
+Defines a pool of instances. Instances can be started, cached, and stopped against an identifier.
+
+#### Usage
+
+```ts
+import { Instance, Pool } from 'prool'
+
+const pool = Pool.define({
+ instance: Instance.anvil(),
+})
+const instance_1 = await pool.start(1)
+const instance_2 = await pool.start(2)
+const instance_3 = await pool.start(3)
+```
+
+#### API
+
+| Name | Description | Type |
+| ---------- | -------------------------------------------------------- | ---------- |
+| `instance` | Instance for the pool. | `Instance` |
+| `limit` | Number of instances that can be instantiated in the pool | `number` |
+| returns | Pool. | `Pool` |
+
+## Authors
+
+- [@jxom](https://github.com/jxom) (jxom.eth, [Twitter](https://twitter.com/jakemoxey))
+- [@tmm](https://github.com/tmm) (awkweb.eth, [Twitter](https://twitter.com/awkweb))
+
+## License
+
+[MIT](/LICENSE) License
\ No newline at end of file
diff --git a/biome.json b/biome.json
index f0293ad..c311831 100644
--- a/biome.json
+++ b/biome.json
@@ -1,17 +1,16 @@
{
- "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
+ "$schema": "https://biomejs.dev/schemas/2.3.8/schema.json",
"files": {
- "ignore": [
- "coverage",
- "node_modules",
- "src/_lib",
- "tsconfig.json",
- "tsconfig.*.json"
+ "includes": [
+ "**",
+ "!**/coverage",
+ "!**/node_modules",
+ "!**/src/_lib",
+ "!**/tsconfig.json",
+ "!**/tsconfig.*.json"
]
},
- "organizeImports": {
- "enabled": true
- },
+ "assist": { "actions": { "source": { "organizeImports": "on" } } },
"formatter": {
"enabled": true,
"indentStyle": "space",
@@ -22,7 +21,8 @@
"rules": {
"recommended": true,
"complexity": {
- "noBannedTypes": "off"
+ "noBannedTypes": "off",
+ "useLiteralKeys": "off"
},
"style": {
"noNonNullAssertion": "off"
@@ -36,7 +36,7 @@
"javascript": {
"formatter": {
"quoteStyle": "single",
- "trailingComma": "all",
+ "trailingCommas": "all",
"semicolons": "asNeeded"
}
}
diff --git a/package.json b/package.json
index 8b2940c..d054d93 100644
--- a/package.json
+++ b/package.json
@@ -1,32 +1,85 @@
{
- "name": "prool",
- "type": "module",
"scripts": {
- "build": "pnpm clean && tsc --project ./tsconfig.build.json",
- "changeset": "changeset",
- "changeset:release": "pnpm build && changeset publish",
- "changeset:version": "changeset version && pnpm install --lockfile-only && pnpm format",
- "clean": "rimraf src/_lib src/tsconfig.build.tsbuildinfo",
- "format": "biome format . --write",
- "lint": "biome check . --apply",
- "postinstall": "pnpm build",
- "test": "vitest --testTimeout 10000",
- "test:cov": "vitest --coverage",
- "typecheck": "tsc --noEmit"
+ "build": "zile",
+ "changeset:publish": "zile publish:prepare && changeset publish && zile publish:post",
+ "changeset:version": "changeset version",
+ "check": "biome check --fix --unsafe",
+ "check:types": "tsc",
+ "dev": "zile dev",
+ "postinstall": "pnpm dev",
+ "test": "vitest --testTimeout=10000"
},
"devDependencies": {
- "@biomejs/biome": "^1.7.3",
- "@changesets/changelog-github": "^0.5.0",
- "@changesets/cli": "^2.27.3",
+ "@biomejs/biome": "^2.3.8",
+ "@changesets/changelog-github": "^0.5.2",
+ "@changesets/cli": "^2.29.8",
"@pimlico/alto": "0.0.15",
- "@types/http-proxy": "^1.17.14",
- "@types/node": "^20.14.0",
- "@types/ws": "^8.5.10",
- "@vitest/coverage-v8": "^1.6.0",
- "rimraf": "^5.0.7",
- "typescript": "^5.4.5",
- "vitest": "^1.6.0",
- "ws": "^8.17.0"
+ "@types/http-proxy": "^1.17.17",
+ "@types/node": "^24.10.2",
+ "@types/ws": "^8.18.1",
+ "@vitest/coverage-v8": "^4.0.15",
+ "testcontainers": "^11.10.0",
+ "typescript": "^5.9.3",
+ "vitest": "^4.0.15",
+ "ws": "^8.18.3",
+ "zile": "^0.0.13"
+ },
+ "packageManager": "pnpm@10.25.0",
+ "[!start-pkg]": "",
+ "name": "prool",
+ "description": "HTTP testing instances for Ethereum",
+ "version": "0.0.25",
+ "type": "module",
+ "sideEffects": false,
+ "files": [
+ "src",
+ "dist"
+ ],
+ "engines": {
+ "node": ">=22"
+ },
+ "exports": {
+ ".": {
+ "src": "./src/index.ts",
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
+ }
+ },
+ "dependencies": {
+ "change-case": "5.4.4",
+ "eventemitter3": "^5.0.1",
+ "execa": "^9.1.0",
+ "get-port": "^7.1.0",
+ "http-proxy": "^1.18.1",
+ "tar": "7.2.0"
+ },
+ "peerDependencies": {
+ "@pimlico/alto": "*",
+ "testcontainers": ">=11.10.0"
+ },
+ "peerDependenciesMeta": {
+ "@pimlico/alto": {
+ "optional": true
+ },
+ "testcontainers": {
+ "optional": true
+ }
},
- "packageManager": "pnpm@9.1.0"
+ "license": "MIT",
+ "homepage": "https://wevm.dev",
+ "repository": "wevm/prool",
+ "authors": [
+ "awkweb",
+ "jxom"
+ ],
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/wevm"
+ }
+ ],
+ "keywords": [],
+ "main": "./dist/index.js",
+ "module": "./dist/index.js",
+ "types": "./dist/index.d.ts"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 84146b3..0373e3b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -7,45 +7,6 @@ settings:
importers:
.:
- devDependencies:
- '@biomejs/biome':
- specifier: ^1.7.3
- version: 1.7.3
- '@changesets/changelog-github':
- specifier: ^0.5.0
- version: 0.5.0
- '@changesets/cli':
- specifier: ^2.27.3
- version: 2.27.3
- '@pimlico/alto':
- specifier: 0.0.15
- version: 0.0.15(typescript@5.4.5)
- '@types/http-proxy':
- specifier: ^1.17.14
- version: 1.17.14
- '@types/node':
- specifier: ^20.14.0
- version: 20.14.0
- '@types/ws':
- specifier: ^8.5.10
- version: 8.5.10
- '@vitest/coverage-v8':
- specifier: ^1.6.0
- version: 1.6.0(vitest@1.6.0(@types/node@20.14.0))
- rimraf:
- specifier: ^5.0.7
- version: 5.0.7
- typescript:
- specifier: ^5.4.5
- version: 5.4.5
- vitest:
- specifier: ^1.6.0
- version: 1.6.0(@types/node@20.14.0)
- ws:
- specifier: ^8.17.0
- version: 8.17.0
-
- src:
dependencies:
change-case:
specifier: 5.4.4
@@ -65,38 +26,62 @@ importers:
tar:
specifier: 7.2.0
version: 7.2.0
+ devDependencies:
+ '@biomejs/biome':
+ specifier: ^2.3.8
+ version: 2.3.8
+ '@changesets/changelog-github':
+ specifier: ^0.5.2
+ version: 0.5.2
+ '@changesets/cli':
+ specifier: ^2.29.8
+ version: 2.29.8(@types/node@24.10.2)
+ '@pimlico/alto':
+ specifier: 0.0.15
+ version: 0.0.15(typescript@5.9.3)
+ '@types/http-proxy':
+ specifier: ^1.17.17
+ version: 1.17.17
+ '@types/node':
+ specifier: ^24.10.2
+ version: 24.10.2
+ '@types/ws':
+ specifier: ^8.18.1
+ version: 8.18.1
+ '@vitest/coverage-v8':
+ specifier: ^4.0.15
+ version: 4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(yaml@2.8.2))
+ testcontainers:
+ specifier: ^11.10.0
+ version: 11.10.0
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+ vitest:
+ specifier: ^4.0.15
+ version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(yaml@2.8.2)
+ ws:
+ specifier: ^8.18.3
+ version: 8.18.3
+ zile:
+ specifier: ^0.0.13
+ version: 0.0.13(typescript@5.9.3)
packages:
'@adraffy/ens-normalize@1.11.0':
resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==}
- '@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
-
- '@babel/code-frame@7.24.2':
- resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-string-parser@7.24.6':
- resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.24.5':
- resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.24.6':
- resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==}
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
- '@babel/highlight@7.24.5':
- resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
+ '@babel/helper-validator-identifier@7.28.5':
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.24.6':
- resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==}
+ '@babel/parser@7.28.5':
+ resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -104,259 +89,290 @@ packages:
resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.24.6':
- resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==}
+ '@babel/types@7.28.5':
+ resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
engines: {node: '>=6.9.0'}
- '@bcoe/v8-coverage@0.2.3':
- resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+ '@balena/dockerignore@1.0.2':
+ resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==}
+
+ '@bcoe/v8-coverage@1.0.2':
+ resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==}
+ engines: {node: '>=18'}
- '@biomejs/biome@1.7.3':
- resolution: {integrity: sha512-ogFQI+fpXftr+tiahA6bIXwZ7CSikygASdqMtH07J2cUzrpjyTMVc9Y97v23c7/tL1xCZhM+W9k4hYIBm7Q6cQ==}
+ '@biomejs/biome@2.3.8':
+ resolution: {integrity: sha512-Qjsgoe6FEBxWAUzwFGFrB+1+M8y/y5kwmg5CHac+GSVOdmOIqsAiXM5QMVGZJ1eCUCLlPZtq4aFAQ0eawEUuUA==}
engines: {node: '>=14.21.3'}
hasBin: true
- '@biomejs/cli-darwin-arm64@1.7.3':
- resolution: {integrity: sha512-eDvLQWmGRqrPIRY7AIrkPHkQ3visEItJKkPYSHCscSDdGvKzYjmBJwG1Gu8+QC5ed6R7eiU63LEC0APFBobmfQ==}
+ '@biomejs/cli-darwin-arm64@2.3.8':
+ resolution: {integrity: sha512-HM4Zg9CGQ3txTPflxD19n8MFPrmUAjaC7PQdLkugeeC0cQ+PiVrd7i09gaBS/11QKsTDBJhVg85CEIK9f50Qww==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [darwin]
- '@biomejs/cli-darwin-x64@1.7.3':
- resolution: {integrity: sha512-JXCaIseKRER7dIURsVlAJacnm8SG5I0RpxZ4ya3dudASYUc68WGl4+FEN03ABY3KMIq7hcK1tzsJiWlmXyosZg==}
+ '@biomejs/cli-darwin-x64@2.3.8':
+ resolution: {integrity: sha512-lUDQ03D7y/qEao7RgdjWVGCu+BLYadhKTm40HkpJIi6kn8LSv5PAwRlew/DmwP4YZ9ke9XXoTIQDO1vAnbRZlA==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [darwin]
- '@biomejs/cli-linux-arm64-musl@1.7.3':
- resolution: {integrity: sha512-c8AlO45PNFZ1BYcwaKzdt46kYbuP6xPGuGQ6h4j3XiEDpyseRRUy/h+6gxj07XovmyxKnSX9GSZ6nVbZvcVUAw==}
+ '@biomejs/cli-linux-arm64-musl@2.3.8':
+ resolution: {integrity: sha512-PShR4mM0sjksUMyxbyPNMxoKFPVF48fU8Qe8Sfx6w6F42verbwRLbz+QiKNiDPRJwUoMG1nPM50OBL3aOnTevA==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
- '@biomejs/cli-linux-arm64@1.7.3':
- resolution: {integrity: sha512-phNTBpo7joDFastnmZsFjYcDYobLTx4qR4oPvc9tJ486Bd1SfEVPHEvJdNJrMwUQK56T+TRClOQd/8X1nnjA9w==}
+ '@biomejs/cli-linux-arm64@2.3.8':
+ resolution: {integrity: sha512-Uo1OJnIkJgSgF+USx970fsM/drtPcQ39I+JO+Fjsaa9ZdCN1oysQmy6oAGbyESlouz+rzEckLTF6DS7cWse95g==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
- '@biomejs/cli-linux-x64-musl@1.7.3':
- resolution: {integrity: sha512-UdEHKtYGWEX3eDmVWvQeT+z05T9/Sdt2+F/7zmMOFQ7boANeX8pcO6EkJPK3wxMudrApsNEKT26rzqK6sZRTRA==}
+ '@biomejs/cli-linux-x64-musl@2.3.8':
+ resolution: {integrity: sha512-YGLkqU91r1276uwSjiUD/xaVikdxgV1QpsicT0bIA1TaieM6E5ibMZeSyjQ/izBn4tKQthUSsVZacmoJfa3pDA==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
- '@biomejs/cli-linux-x64@1.7.3':
- resolution: {integrity: sha512-vnedYcd5p4keT3iD48oSKjOIRPYcjSNNbd8MO1bKo9ajg3GwQXZLAH+0Cvlr+eMsO67/HddWmscSQwTFrC/uPA==}
+ '@biomejs/cli-linux-x64@2.3.8':
+ resolution: {integrity: sha512-QDPMD5bQz6qOVb3kiBui0zKZXASLo0NIQ9JVJio5RveBEFgDgsvJFUvZIbMbUZT3T00M/1wdzwWXk4GIh0KaAw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
- '@biomejs/cli-win32-arm64@1.7.3':
- resolution: {integrity: sha512-unNCDqUKjujYkkSxs7gFIfdasttbDC4+z0kYmcqzRk6yWVoQBL4dNLcCbdnJS+qvVDNdI9rHp2NwpQ0WAdla4Q==}
+ '@biomejs/cli-win32-arm64@2.3.8':
+ resolution: {integrity: sha512-H4IoCHvL1fXKDrTALeTKMiE7GGWFAraDwBYFquE/L/5r1927Te0mYIGseXi4F+lrrwhSWbSGt5qPFswNoBaCxg==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [win32]
- '@biomejs/cli-win32-x64@1.7.3':
- resolution: {integrity: sha512-ZmByhbrnmz/UUFYB622CECwhKIPjJLLPr5zr3edhu04LzbfcOrz16VYeNq5dpO1ADG70FORhAJkaIGdaVBG00w==}
+ '@biomejs/cli-win32-x64@2.3.8':
+ resolution: {integrity: sha512-RguzimPoZWtBapfKhKjcWXBVI91tiSprqdBYu7tWhgN8pKRZhw24rFeNZTNf6UiBfjCYCi9eFQs/JzJZIhuK4w==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [win32]
- '@changesets/apply-release-plan@7.0.1':
- resolution: {integrity: sha512-aPdSq/R++HOyfEeBGjEe6LNG8gs0KMSyRETD/J2092OkNq8mOioAxyKjMbvVUdzgr/HTawzMOz7lfw339KnsCA==}
+ '@changesets/apply-release-plan@7.0.14':
+ resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==}
- '@changesets/assemble-release-plan@6.0.0':
- resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==}
+ '@changesets/assemble-release-plan@6.0.9':
+ resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==}
- '@changesets/changelog-git@0.2.0':
- resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==}
+ '@changesets/changelog-git@0.2.1':
+ resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==}
- '@changesets/changelog-github@0.5.0':
- resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==}
+ '@changesets/changelog-github@0.5.2':
+ resolution: {integrity: sha512-HeGeDl8HaIGj9fQHo/tv5XKQ2SNEi9+9yl1Bss1jttPqeiASRXhfi0A2wv8yFKCp07kR1gpOI5ge6+CWNm1jPw==}
- '@changesets/cli@2.27.3':
- resolution: {integrity: sha512-ve/VpWApILlSs8cr0okNx5C2LKRawI9XZgvfmf58S8sar2nhx5DPJREFXYZBahs0FeTfvH0rdVl+nGe8QF45Ig==}
+ '@changesets/cli@2.29.8':
+ resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==}
hasBin: true
- '@changesets/config@3.0.0':
- resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==}
+ '@changesets/config@3.1.2':
+ resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==}
'@changesets/errors@0.2.0':
resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
- '@changesets/get-dependents-graph@2.0.0':
- resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==}
+ '@changesets/get-dependents-graph@2.1.3':
+ resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==}
- '@changesets/get-github-info@0.6.0':
- resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==}
+ '@changesets/get-github-info@0.7.0':
+ resolution: {integrity: sha512-+i67Bmhfj9V4KfDeS1+Tz3iF32btKZB2AAx+cYMqDSRFP7r3/ZdGbjCo+c6qkyViN9ygDuBjzageuPGJtKGe5A==}
- '@changesets/get-release-plan@4.0.0':
- resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==}
+ '@changesets/get-release-plan@4.0.14':
+ resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==}
'@changesets/get-version-range-type@0.4.0':
resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
- '@changesets/git@3.0.0':
- resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==}
+ '@changesets/git@3.0.4':
+ resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==}
+
+ '@changesets/logger@0.1.1':
+ resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==}
- '@changesets/logger@0.1.0':
- resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==}
+ '@changesets/parse@0.4.2':
+ resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==}
- '@changesets/parse@0.4.0':
- resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==}
+ '@changesets/pre@2.0.2':
+ resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==}
- '@changesets/pre@2.0.0':
- resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==}
+ '@changesets/read@0.6.6':
+ resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==}
- '@changesets/read@0.6.0':
- resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==}
+ '@changesets/should-skip-package@0.1.2':
+ resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==}
'@changesets/types@4.1.0':
resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
- '@changesets/types@6.0.0':
- resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==}
+ '@changesets/types@6.1.0':
+ resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==}
- '@changesets/write@0.3.1':
- resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==}
+ '@changesets/write@0.4.0':
+ resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==}
- '@esbuild/aix-ppc64@0.20.2':
- resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
- engines: {node: '>=12'}
+ '@clack/core@1.0.0-alpha.7':
+ resolution: {integrity: sha512-3vdh6Ar09D14rVxJZIm3VQJkU+ZOKKT5I5cC0cOVazy70CNyYYjiwRj9unwalhESndgxx6bGc/m6Hhs4EKF5XQ==}
+
+ '@clack/prompts@1.0.0-alpha.8':
+ resolution: {integrity: sha512-YZGC4BmTKSF5OturNKEz/y4xNjYGmGk6NI785CQucJ7OEdX0qbMmL/zok+9bL6c7qE3WSYffyK5grh2RnkGNtQ==}
+
+ '@esbuild/aix-ppc64@0.25.12':
+ resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
- '@esbuild/android-arm64@0.20.2':
- resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
- engines: {node: '>=12'}
+ '@esbuild/android-arm64@0.25.12':
+ resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [android]
- '@esbuild/android-arm@0.20.2':
- resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
- engines: {node: '>=12'}
+ '@esbuild/android-arm@0.25.12':
+ resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [android]
- '@esbuild/android-x64@0.20.2':
- resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
- engines: {node: '>=12'}
+ '@esbuild/android-x64@0.25.12':
+ resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [android]
- '@esbuild/darwin-arm64@0.20.2':
- resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
- engines: {node: '>=12'}
+ '@esbuild/darwin-arm64@0.25.12':
+ resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-x64@0.20.2':
- resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
- engines: {node: '>=12'}
+ '@esbuild/darwin-x64@0.25.12':
+ resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
- '@esbuild/freebsd-arm64@0.20.2':
- resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
- engines: {node: '>=12'}
+ '@esbuild/freebsd-arm64@0.25.12':
+ resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.20.2':
- resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
- engines: {node: '>=12'}
+ '@esbuild/freebsd-x64@0.25.12':
+ resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
- '@esbuild/linux-arm64@0.20.2':
- resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
- engines: {node: '>=12'}
+ '@esbuild/linux-arm64@0.25.12':
+ resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm@0.20.2':
- resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
- engines: {node: '>=12'}
+ '@esbuild/linux-arm@0.25.12':
+ resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [linux]
- '@esbuild/linux-ia32@0.20.2':
- resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
- engines: {node: '>=12'}
+ '@esbuild/linux-ia32@0.25.12':
+ resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
- '@esbuild/linux-loong64@0.20.2':
- resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
- engines: {node: '>=12'}
+ '@esbuild/linux-loong64@0.25.12':
+ resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
+ engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
- '@esbuild/linux-mips64el@0.20.2':
- resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
- engines: {node: '>=12'}
+ '@esbuild/linux-mips64el@0.25.12':
+ resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
+ engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-ppc64@0.20.2':
- resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
- engines: {node: '>=12'}
+ '@esbuild/linux-ppc64@0.25.12':
+ resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-riscv64@0.20.2':
- resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
- engines: {node: '>=12'}
+ '@esbuild/linux-riscv64@0.25.12':
+ resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
+ engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-s390x@0.20.2':
- resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
- engines: {node: '>=12'}
+ '@esbuild/linux-s390x@0.25.12':
+ resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
+ engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
- '@esbuild/linux-x64@0.20.2':
- resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
- engines: {node: '>=12'}
+ '@esbuild/linux-x64@0.25.12':
+ resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [linux]
- '@esbuild/netbsd-x64@0.20.2':
- resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
- engines: {node: '>=12'}
+ '@esbuild/netbsd-arm64@0.25.12':
+ resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.25.12':
+ resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-x64@0.20.2':
- resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
- engines: {node: '>=12'}
+ '@esbuild/openbsd-arm64@0.25.12':
+ resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.25.12':
+ resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
- '@esbuild/sunos-x64@0.20.2':
- resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
- engines: {node: '>=12'}
+ '@esbuild/openharmony-arm64@0.25.12':
+ resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/sunos-x64@0.25.12':
+ resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
- '@esbuild/win32-arm64@0.20.2':
- resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
- engines: {node: '>=12'}
+ '@esbuild/win32-arm64@0.25.12':
+ resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
- '@esbuild/win32-ia32@0.20.2':
- resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
- engines: {node: '>=12'}
+ '@esbuild/win32-ia32@0.25.12':
+ resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
- '@esbuild/win32-x64@0.20.2':
- resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
- engines: {node: '>=12'}
+ '@esbuild/win32-x64@0.25.12':
+ resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@@ -379,11 +395,29 @@ packages:
resolution: {integrity: sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg==}
engines: {node: '>=12.10.0'}
+ '@grpc/grpc-js@1.14.2':
+ resolution: {integrity: sha512-QzVUtEFyu05UNx2xr0fCQmStUO17uVQhGNowtxs00IgTZT6/W2PBLfUkj30s0FKJ29VtTa3ArVNIhNP6akQhqA==}
+ engines: {node: '>=12.10.0'}
+
'@grpc/proto-loader@0.7.13':
resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==}
engines: {node: '>=6'}
hasBin: true
+ '@grpc/proto-loader@0.8.0':
+ resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ '@inquirer/external-editor@1.0.3':
+ resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
'@ioredis/commands@1.2.0':
resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==}
@@ -395,32 +429,22 @@ packages:
resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
engines: {node: '>=18.0.0'}
- '@istanbuljs/schema@0.1.3':
- resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
- engines: {node: '>=8'}
-
- '@jest/schemas@29.6.3':
- resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
-
- '@jridgewell/gen-mapping@0.3.5':
- resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
- engines: {node: '>=6.0.0'}
-
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
- '@jridgewell/set-array@1.2.1':
- resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
- engines: {node: '>=6.0.0'}
-
'@jridgewell/sourcemap-codec@1.4.15':
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
'@js-sdsl/ordered-map@4.4.2':
resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==}
@@ -717,83 +741,113 @@ packages:
'@protobufjs/utf8@1.1.0':
resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
- '@rollup/rollup-android-arm-eabi@4.17.2':
- resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==}
+ '@rollup/rollup-android-arm-eabi@4.53.3':
+ resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.17.2':
- resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==}
+ '@rollup/rollup-android-arm64@4.53.3':
+ resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.17.2':
- resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==}
+ '@rollup/rollup-darwin-arm64@4.53.3':
+ resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.17.2':
- resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==}
+ '@rollup/rollup-darwin-x64@4.53.3':
+ resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.17.2':
- resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==}
+ '@rollup/rollup-freebsd-arm64@4.53.3':
+ resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.53.3':
+ resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
+ resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.17.2':
- resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==}
+ '@rollup/rollup-linux-arm-musleabihf@4.53.3':
+ resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.17.2':
- resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==}
+ '@rollup/rollup-linux-arm64-gnu@4.53.3':
+ resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.17.2':
- resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==}
+ '@rollup/rollup-linux-arm64-musl@4.53.3':
+ resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.17.2':
- resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==}
+ '@rollup/rollup-linux-loong64-gnu@4.53.3':
+ resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-gnu@4.53.3':
+ resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.17.2':
- resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==}
+ '@rollup/rollup-linux-riscv64-gnu@4.53.3':
+ resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-musl@4.53.3':
+ resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.17.2':
- resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==}
+ '@rollup/rollup-linux-s390x-gnu@4.53.3':
+ resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.17.2':
- resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==}
+ '@rollup/rollup-linux-x64-gnu@4.53.3':
+ resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.17.2':
- resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==}
+ '@rollup/rollup-linux-x64-musl@4.53.3':
+ resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.17.2':
- resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==}
+ '@rollup/rollup-openharmony-arm64@4.53.3':
+ resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rollup/rollup-win32-arm64-msvc@4.53.3':
+ resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.17.2':
- resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==}
+ '@rollup/rollup-win32-ia32-msvc@4.53.3':
+ resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.17.2':
- resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==}
+ '@rollup/rollup-win32-x64-gnu@4.53.3':
+ resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.53.3':
+ resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
cpu: [x64]
os: [win32]
@@ -833,21 +887,33 @@ packages:
resolution: {integrity: sha512-Vn9fcvwTq91wJvCd7WTMWozimqMi+dEZ3ie3EICELC2diONcN16ADFdzn65CQQbYwmUzRjN9EjDN2k41pKZWhQ==}
engines: {node: '>=8'}
- '@sinclair/typebox@0.27.8':
- resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
-
'@sindresorhus/merge-streams@4.0.0':
resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
engines: {node: '>=18'}
+ '@standard-schema/spec@1.0.0':
+ resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
+
+ '@types/chai@5.2.3':
+ resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
+
+ '@types/deep-eql@4.0.2':
+ resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+
+ '@types/docker-modem@3.0.6':
+ resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==}
+
+ '@types/dockerode@3.3.47':
+ resolution: {integrity: sha512-ShM1mz7rCjdssXt7Xz0u1/R2BJC7piWa3SJpUBiVjCf2A3XNn4cP6pUVaD8bLanpPVVn4IKzJuw3dOvkJ8IbYw==}
+
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
- '@types/http-proxy@1.17.14':
- resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==}
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
- '@types/minimist@1.2.5':
- resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
+ '@types/http-proxy@1.17.17':
+ resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==}
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
@@ -855,14 +921,8 @@ packages:
'@types/node@18.19.34':
resolution: {integrity: sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==}
- '@types/node@20.14.0':
- resolution: {integrity: sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==}
-
- '@types/normalize-package-data@2.4.4':
- resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
-
- '@types/semver@7.5.8':
- resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
+ '@types/node@24.10.2':
+ resolution: {integrity: sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==}
'@types/shimmer@1.0.5':
resolution: {integrity: sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==}
@@ -870,28 +930,55 @@ packages:
'@types/shimmer@1.2.0':
resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
- '@types/ws@8.5.10':
- resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==}
+ '@types/ssh2-streams@0.1.13':
+ resolution: {integrity: sha512-faHyY3brO9oLEA0QlcO8N2wT7R0+1sHWZvQ+y3rMLwdY1ZyS1z0W3t65j9PqT4HmQ6ALzNe7RZlNuCNE0wBSWA==}
+
+ '@types/ssh2@0.5.52':
+ resolution: {integrity: sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==}
+
+ '@types/ssh2@1.15.5':
+ resolution: {integrity: sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ==}
- '@vitest/coverage-v8@1.6.0':
- resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==}
+ '@types/ws@8.18.1':
+ resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
+
+ '@vitest/coverage-v8@4.0.15':
+ resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==}
+ peerDependencies:
+ '@vitest/browser': 4.0.15
+ vitest: 4.0.15
+ peerDependenciesMeta:
+ '@vitest/browser':
+ optional: true
+
+ '@vitest/expect@4.0.15':
+ resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==}
+
+ '@vitest/mocker@4.0.15':
+ resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==}
peerDependencies:
- vitest: 1.6.0
+ msw: ^2.4.9
+ vite: ^6.0.0 || ^7.0.0-0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
- '@vitest/expect@1.6.0':
- resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==}
+ '@vitest/pretty-format@4.0.15':
+ resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==}
- '@vitest/runner@1.6.0':
- resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==}
+ '@vitest/runner@4.0.15':
+ resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==}
- '@vitest/snapshot@1.6.0':
- resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==}
+ '@vitest/snapshot@4.0.15':
+ resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==}
- '@vitest/spy@1.6.0':
- resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==}
+ '@vitest/spy@4.0.15':
+ resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==}
- '@vitest/utils@1.6.0':
- resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==}
+ '@vitest/utils@4.0.15':
+ resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==}
abitype@0.8.11:
resolution: {integrity: sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A==}
@@ -931,10 +1018,6 @@ packages:
peerDependencies:
acorn: ^8
- acorn-walk@8.3.2:
- resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
- engines: {node: '>=0.4.0'}
-
acorn@8.11.3:
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
engines: {node: '>=0.4.0'}
@@ -966,68 +1049,113 @@ packages:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
-
ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
- ansi-styles@5.2.0:
- resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
- engines: {node: '>=10'}
-
ansi-styles@6.2.1:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
+ archiver-utils@5.0.2:
+ resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==}
+ engines: {node: '>= 14'}
+
+ archiver@7.0.1:
+ resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==}
+ engines: {node: '>= 14'}
+
argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
- array-buffer-byte-length@1.0.1:
- resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
- engines: {node: '>= 0.4'}
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
- array.prototype.flat@1.3.2:
- resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
- engines: {node: '>= 0.4'}
+ asn1@0.2.6:
+ resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
- arraybuffer.prototype.slice@1.0.3:
- resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
- engines: {node: '>= 0.4'}
+ assertion-error@2.0.1:
+ resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
+ engines: {node: '>=12'}
- arrify@1.0.1:
- resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
- engines: {node: '>=0.10.0'}
+ ast-v8-to-istanbul@0.3.8:
+ resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==}
- assertion-error@1.1.0:
- resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+ async-lock@1.4.1:
+ resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==}
async-mutex@0.4.1:
resolution: {integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==}
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
atomic-sleep@1.0.0:
resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
engines: {node: '>=8.0.0'}
- available-typed-arrays@1.0.7:
- resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
- engines: {node: '>= 0.4'}
-
avvio@8.3.2:
resolution: {integrity: sha512-st8e519GWHa/azv8S87mcJvZs4WsgTBjOw/Ih1CP6u+8SZvcOeAYNG6JbsIrAUUJJ7JfmrnOkR8ipDS+u9SIRQ==}
+ b4a@1.7.3:
+ resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==}
+ peerDependencies:
+ react-native-b4a: '*'
+ peerDependenciesMeta:
+ react-native-b4a:
+ optional: true
+
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ bare-events@2.8.2:
+ resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==}
+ peerDependencies:
+ bare-abort-controller: '*'
+ peerDependenciesMeta:
+ bare-abort-controller:
+ optional: true
+
+ bare-fs@4.5.2:
+ resolution: {integrity: sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==}
+ engines: {bare: '>=1.16.0'}
+ peerDependencies:
+ bare-buffer: '*'
+ peerDependenciesMeta:
+ bare-buffer:
+ optional: true
+
+ bare-os@3.6.2:
+ resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==}
+ engines: {bare: '>=1.14.0'}
+
+ bare-path@3.0.0:
+ resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
+
+ bare-stream@2.7.0:
+ resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==}
+ peerDependencies:
+ bare-buffer: '*'
+ bare-events: '*'
+ peerDependenciesMeta:
+ bare-buffer:
+ optional: true
+ bare-events:
+ optional: true
+
+ bare-url@2.3.2:
+ resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==}
+
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+ bcrypt-pbkdf@1.0.2:
+ resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}
+
better-path-resolve@1.0.0:
resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
engines: {node: '>=4'}
@@ -1035,8 +1163,8 @@ packages:
bintrees@1.0.2:
resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==}
- brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ bl@4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
brace-expansion@2.0.1:
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
@@ -1045,52 +1173,44 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- breakword@1.0.6:
- resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==}
+ buffer-crc32@1.0.0:
+ resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==}
+ engines: {node: '>=8.0.0'}
+
+ buffer@5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+ buildcheck@0.0.7:
+ resolution: {integrity: sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==}
+ engines: {node: '>=10.0.0'}
+
bull@4.16.5:
resolution: {integrity: sha512-lDsx2BzkKe7gkCYiT5Acj02DpTwDznl/VNN7Psn7M3USPG7Vs/BaClZJJTAG+ufAR9++N1/NiUTdaFBWDIl5TQ==}
engines: {node: '>=12'}
+ byline@5.0.0:
+ resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==}
+ engines: {node: '>=0.10.0'}
+
cac@6.7.14:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
- call-bind@1.0.7:
- resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
- engines: {node: '>= 0.4'}
-
- camelcase-keys@6.2.2:
- resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
- engines: {node: '>=8'}
-
- camelcase@5.3.1:
- resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
- engines: {node: '>=6'}
-
- chai@4.4.1:
- resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==}
- engines: {node: '>=4'}
-
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
-
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
+ chai@6.2.1:
+ resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==}
+ engines: {node: '>=18'}
change-case@5.4.4:
resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==}
- chardet@0.7.0:
- resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
+ chardet@2.1.1:
+ resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}
- check-error@1.0.3:
- resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+ chownr@1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
chownr@3.0.0:
resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
@@ -1103,82 +1223,55 @@ packages:
cjs-module-lexer@1.3.1:
resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==}
- cliui@6.0.0:
- resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
-
cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
- clone@1.0.4:
- resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
- engines: {node: '>=0.8'}
-
cluster-key-slot@1.1.2:
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
engines: {node: '>=0.10.0'}
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
-
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
- concat-map@0.0.1:
- resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
-
- confbox@0.1.7:
- resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==}
+ compress-commons@6.0.2:
+ resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==}
+ engines: {node: '>= 14'}
cookie@0.6.0:
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
- cron-parser@4.9.0:
- resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
- engines: {node: '>=12.0.0'}
-
- cross-spawn@5.1.0:
- resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- csv-generate@3.4.3:
- resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==}
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
- csv-parse@4.16.3:
- resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==}
-
- csv-stringify@5.6.5:
- resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==}
+ cpu-features@0.0.10:
+ resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==}
+ engines: {node: '>=10.0.0'}
- csv@5.5.3:
- resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==}
- engines: {node: '>= 0.1.90'}
+ crc-32@1.2.2:
+ resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
+ engines: {node: '>=0.8'}
+ hasBin: true
- data-view-buffer@1.0.1:
- resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
- engines: {node: '>= 0.4'}
+ crc32-stream@6.0.0:
+ resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==}
+ engines: {node: '>= 14'}
- data-view-byte-length@1.0.1:
- resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
- engines: {node: '>= 0.4'}
+ cron-parser@4.9.0:
+ resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
+ engines: {node: '>=12.0.0'}
- data-view-byte-offset@1.0.0:
- resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
- engines: {node: '>= 0.4'}
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
dataloader@1.4.0:
resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==}
@@ -1195,28 +1288,14 @@ packages:
supports-color:
optional: true
- decamelize-keys@1.1.1:
- resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
- engines: {node: '>=0.10.0'}
-
- decamelize@1.2.0:
- resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
- engines: {node: '>=0.10.0'}
-
- deep-eql@4.1.3:
- resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
- engines: {node: '>=6'}
-
- defaults@1.0.4:
- resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
-
- define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
-
- define-properties@1.2.1:
- resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
- engines: {node: '>= 0.4'}
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
denque@2.1.0:
resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
@@ -1230,14 +1309,22 @@ packages:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
- diff-sequences@29.6.3:
- resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
-
dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
+ docker-compose@1.3.0:
+ resolution: {integrity: sha512-7Gevk/5eGD50+eMD+XDnFnOrruFkL0kSd7jEG4cjmqweDSUhB7i0g8is/nBdVpl+Bx338SqIB2GLKm32M+Vs6g==}
+ engines: {node: '>= 6.0.0'}
+
+ docker-modem@5.0.6:
+ resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==}
+ engines: {node: '>= 8.0'}
+
+ dockerode@4.0.9:
+ resolution: {integrity: sha512-iND4mcOWhPaCNh54WmK/KoSb35AFqPAUWFMffTQcp52uQt36b5uNwEJTSXntJZBbeGad72Crbi/hvDIv6us/6Q==}
+ engines: {node: '>= 8.0'}
+
dotenv@16.4.5:
resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
engines: {node: '>=12'}
@@ -1265,49 +1352,18 @@ packages:
resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
engines: {node: '>=8.6'}
- error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ es-module-lexer@1.7.0:
+ resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
- es-abstract@1.23.3:
- resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
- engines: {node: '>= 0.4'}
-
- es-define-property@1.0.0:
- resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
- engines: {node: '>= 0.4'}
-
- es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
-
- es-object-atoms@1.0.0:
- resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
- engines: {node: '>= 0.4'}
-
- es-set-tostringtag@2.0.3:
- resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
- engines: {node: '>= 0.4'}
-
- es-shim-unscopables@1.0.2:
- resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
-
- es-to-primitive@1.2.1:
- resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
- engines: {node: '>= 0.4'}
-
- esbuild@0.20.2:
- resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
- engines: {node: '>=12'}
- hasBin: true
+ esbuild@0.25.12:
+ resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
+ engines: {node: '>=18'}
+ hasBin: true
escalade@3.1.2:
resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
engines: {node: '>=6'}
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
@@ -1326,25 +1382,24 @@ packages:
eventemitter3@5.0.1:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
+ events-universal@1.0.1:
+ resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==}
+
events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
- execa@8.0.1:
- resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
- engines: {node: '>=16.17'}
-
execa@9.1.0:
resolution: {integrity: sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==}
engines: {node: '>=18'}
+ expect-type@1.3.0:
+ resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==}
+ engines: {node: '>=12.0.0'}
+
extendable-error@0.1.7:
resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
- external-editor@3.1.0:
- resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
- engines: {node: '>=4'}
-
fast-content-type-parse@1.1.0:
resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==}
@@ -1357,6 +1412,9 @@ packages:
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+
fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
@@ -1386,6 +1444,15 @@ packages:
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
figures@6.1.0:
resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
engines: {node: '>=18'}
@@ -1402,13 +1469,6 @@ packages:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
engines: {node: '>=8'}
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- find-yarn-workspace-root2@1.2.16:
- resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==}
-
follow-redirects@1.15.6:
resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
engines: {node: '>=4.0'}
@@ -1418,9 +1478,6 @@ packages:
debug:
optional: true
- for-each@0.3.3:
- resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
-
foreground-child@3.1.1:
resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
engines: {node: '>=14'}
@@ -1429,6 +1486,9 @@ packages:
resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
engines: {node: '>= 0.6'}
+ fs-constants@1.0.0:
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+
fs-extra@7.0.1:
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
engines: {node: '>=6 <7 || >=8'}
@@ -1437,9 +1497,6 @@ packages:
resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
engines: {node: '>=6 <7 || >=8'}
- fs.realpath@1.0.0:
- resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
-
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -1448,24 +1505,10 @@ packages:
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
- function.prototype.name@1.1.6:
- resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
- engines: {node: '>= 0.4'}
-
- functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
-
get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
- get-func-name@2.0.2:
- resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
-
- get-intrinsic@1.2.4:
- resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
- engines: {node: '>= 0.4'}
-
get-port@5.1.1:
resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
engines: {node: '>=8'}
@@ -1474,18 +1517,10 @@ packages:
resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==}
engines: {node: '>=16'}
- get-stream@8.0.1:
- resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
- engines: {node: '>=16'}
-
get-stream@9.0.1:
resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
engines: {node: '>=18'}
- get-symbol-description@1.0.2:
- resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
- engines: {node: '>= 0.4'}
-
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -1495,57 +1530,17 @@ packages:
engines: {node: '>=16 || 14 >=14.18'}
hasBin: true
- glob@7.2.3:
- resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
-
- globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
-
globby@11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
- gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
-
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- grapheme-splitter@1.0.4:
- resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
-
- hard-rejection@2.1.0:
- resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
- engines: {node: '>=6'}
-
- has-bigints@1.0.2:
- resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
-
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
- has-proto@1.0.3:
- resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
-
- has-tostringtag@1.0.2:
- resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
- engines: {node: '>= 0.4'}
-
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
@@ -1553,9 +1548,6 @@ packages:
help-me@5.0.0:
resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==}
- hosted-git-info@2.8.9:
- resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
-
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
@@ -1563,19 +1555,16 @@ packages:
resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
engines: {node: '>=8.0.0'}
- human-id@1.0.2:
- resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
-
- human-signals@5.0.0:
- resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
- engines: {node: '>=16.17.0'}
+ human-id@4.1.3:
+ resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==}
+ hasBin: true
human-signals@7.0.0:
resolution: {integrity: sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==}
engines: {node: '>=18.18.0'}
- iconv-lite@0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ iconv-lite@0.7.0:
+ resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==}
engines: {node: '>=0.10.0'}
ieee754@1.2.1:
@@ -1594,21 +1583,9 @@ packages:
import-in-the-middle@1.7.1:
resolution: {integrity: sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==}
- indent-string@4.0.0:
- resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
- engines: {node: '>=8'}
-
- inflight@1.0.6:
- resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
-
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- internal-slot@1.0.7:
- resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
- engines: {node: '>= 0.4'}
-
ioredis@5.6.0:
resolution: {integrity: sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==}
engines: {node: '>=12.22.0'}
@@ -1617,35 +1594,9 @@ packages:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
- is-array-buffer@3.0.4:
- resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
- engines: {node: '>= 0.4'}
-
- is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-
- is-bigint@1.0.4:
- resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
-
- is-boolean-object@1.1.2:
- resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
- engines: {node: '>= 0.4'}
-
- is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
-
is-core-module@2.13.1:
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
- is-data-view@1.0.1:
- resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
- engines: {node: '>= 0.4'}
-
- is-date-object@1.0.5:
- resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
- engines: {node: '>= 0.4'}
-
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -1658,71 +1609,36 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
- is-negative-zero@2.0.3:
- resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
- engines: {node: '>= 0.4'}
-
- is-number-object@1.0.7:
- resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
- engines: {node: '>= 0.4'}
-
is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- is-plain-obj@1.1.0:
- resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
- engines: {node: '>=0.10.0'}
-
is-plain-obj@4.1.0:
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
engines: {node: '>=12'}
- is-regex@1.1.4:
- resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
- engines: {node: '>= 0.4'}
-
- is-shared-array-buffer@1.0.3:
- resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
- engines: {node: '>= 0.4'}
-
- is-stream@3.0.0:
- resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
is-stream@4.0.1:
resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
engines: {node: '>=18'}
- is-string@1.0.7:
- resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
- engines: {node: '>= 0.4'}
-
is-subdir@1.2.0:
resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
engines: {node: '>=4'}
- is-symbol@1.0.4:
- resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
- engines: {node: '>= 0.4'}
-
- is-typed-array@1.1.13:
- resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
- engines: {node: '>= 0.4'}
-
is-unicode-supported@2.0.0:
resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==}
engines: {node: '>=18'}
- is-weakref@1.0.2:
- resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
-
is-windows@1.0.2:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
- isarray@2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -1740,12 +1656,12 @@ packages:
resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
engines: {node: '>=10'}
- istanbul-lib-source-maps@5.0.4:
- resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==}
+ istanbul-lib-source-maps@5.0.6:
+ resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==}
engines: {node: '>=10'}
- istanbul-reports@3.1.7:
- resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
+ istanbul-reports@3.2.0:
+ resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==}
engines: {node: '>=8'}
jackspeak@3.1.2:
@@ -1756,18 +1672,16 @@ packages:
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
engines: {node: '>=10'}
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- js-tokens@9.0.0:
- resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==}
+ js-tokens@9.0.1:
+ resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
js-yaml@3.14.1:
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
hasBin: true
- json-parse-even-better-errors@2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+ js-yaml@4.1.1:
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ hasBin: true
json-schema-ref-resolver@1.0.1:
resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==}
@@ -1778,13 +1692,9 @@ packages:
jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
- kind-of@6.0.3:
- resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
- engines: {node: '>=0.10.0'}
-
- kleur@4.1.5:
- resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
- engines: {node: '>=6'}
+ lazystream@1.0.1:
+ resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
+ engines: {node: '>= 0.6.3'}
lie@3.1.1:
resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==}
@@ -1792,17 +1702,6 @@ packages:
light-my-request@5.13.0:
resolution: {integrity: sha512-9IjUN9ZyCS9pTG+KqTDEQo68Sui2lHsYBrfMyVUTTZ3XhH8PMZq7xO94Kr+eP9dhi/kcKsx4N41p2IXEBil1pQ==}
- lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-
- load-yaml-file@0.2.0:
- resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==}
- engines: {node: '>=6'}
-
- local-pkg@0.5.0:
- resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
- engines: {node: '>=14'}
-
localforage@1.10.0:
resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==}
@@ -1810,10 +1709,6 @@ packages:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
lodash.camelcase@4.3.0:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
@@ -1835,45 +1730,24 @@ packages:
long@5.2.3:
resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==}
- loupe@2.3.7:
- resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
-
lru-cache@10.2.2:
resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
engines: {node: 14 || >=16.14}
- lru-cache@4.1.5:
- resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
-
luxon@3.6.1:
resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==}
engines: {node: '>=12'}
- magic-string@0.30.10:
- resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- magicast@0.3.4:
- resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==}
+ magicast@0.5.1:
+ resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==}
make-dir@4.0.0:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
engines: {node: '>=10'}
- map-obj@1.0.1:
- resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
- engines: {node: '>=0.10.0'}
-
- map-obj@4.3.0:
- resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
- engines: {node: '>=8'}
-
- meow@6.1.1:
- resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==}
- engines: {node: '>=8'}
-
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
@@ -1882,25 +1756,18 @@ packages:
resolution: {integrity: sha512-Y4Ypn3oujJYxJcMacVgcs92wofTHxp9FzfDpQON4msDefoC0lb3ETvQLOdLcbhSwU1bz8HrL/1sygfBIHudrkQ==}
engines: {node: '>=8.6'}
- mimic-fn@4.0.0:
- resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
- engines: {node: '>=12'}
-
- min-indent@1.0.1:
- resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
- engines: {node: '>=4'}
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
minimatch@9.0.4:
resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
engines: {node: '>=16 || 14 >=14.17'}
- minimist-options@4.1.0:
- resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
- engines: {node: '>= 6'}
-
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
@@ -1912,24 +1779,32 @@ packages:
resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==}
engines: {node: '>= 18'}
- mixme@0.5.10:
- resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==}
- engines: {node: '>= 8.0.0'}
+ mkdirp-classic@0.5.3:
+ resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
+
+ mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
mkdirp@3.0.1:
resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
engines: {node: '>=10'}
hasBin: true
- mlly@1.7.0:
- resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==}
-
module-details-from-path@1.0.3:
resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==}
+ mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+
ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
msgpackr-extract@3.0.3:
resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==}
hasBin: true
@@ -1937,8 +1812,11 @@ packages:
msgpackr@1.11.2:
resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==}
- nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ nan@2.24.0:
+ resolution: {integrity: sha512-Vpf9qnVW1RaDkoNKFUvfxqAbtI8ncb8OJlqZ9wwpXzWPEsvsB1nvdUi6oYrHIkQ1Y/tMDnr1h4nczS0VB9Xykg==}
+
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
@@ -1955,23 +1833,16 @@ packages:
resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==}
hasBin: true
- normalize-package-data@2.5.0:
- resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
npm-run-path@5.3.0:
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- object-inspect@1.13.1:
- resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
-
- object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
-
- object.assign@4.1.5:
- resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
- engines: {node: '>= 0.4'}
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
on-exit-leak-free@2.1.2:
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
@@ -1980,20 +1851,12 @@ packages:
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- onetime@6.0.0:
- resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
- engines: {node: '>=12'}
-
opentelemetry-instrumentation-fetch-node@1.2.3:
resolution: {integrity: sha512-Qb11T7KvoCevMaSeuamcLsAD+pZnavkhDnlVL0kRozfhl42dKG5Q3anUklAFKJZjY3twLR+BnRa6DlwwkIE/+A==}
engines: {node: '>18.0.0'}
peerDependencies:
'@opentelemetry/api': ^1.6.0
- os-tmpdir@1.0.2:
- resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
- engines: {node: '>=0.10.0'}
-
outdent@0.5.0:
resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
@@ -2013,22 +1876,10 @@ packages:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
engines: {node: '>=6'}
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-limit@5.0.0:
- resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
- engines: {node: '>=18'}
-
p-locate@4.1.0:
resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
engines: {node: '>=8'}
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
p-map@2.1.0:
resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
engines: {node: '>=6'}
@@ -2037,9 +1888,8 @@ packages:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
- parse-json@5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
+ package-manager-detector@0.2.11:
+ resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==}
parse-ms@4.0.0:
resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
@@ -2049,10 +1899,6 @@ packages:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
- path-is-absolute@1.0.1:
- resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
- engines: {node: '>=0.10.0'}
-
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@@ -2072,19 +1918,24 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
- pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
- pathval@1.1.1:
- resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
- picocolors@1.0.1:
- resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
picomatch@4.0.2:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'}
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+
pify@4.0.1:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'}
@@ -2113,38 +1964,22 @@ packages:
resolution: {integrity: sha512-qUcgfrlyOtjwhNLdbhoL7NR4NkHjzykAPw0V2QLFbvu/zss29h4NkRnibyFzBrNCbzCOY3WZ9hhKSwfOkNggYA==}
hasBin: true
- pkg-dir@4.2.0:
- resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
- engines: {node: '>=8'}
-
- pkg-types@1.1.1:
- resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==}
-
- possible-typed-array-names@1.0.0:
- resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
- engines: {node: '>= 0.4'}
-
- postcss@8.4.38:
- resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
- preferred-pm@3.1.3:
- resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==}
- engines: {node: '>=10'}
-
prettier@2.8.8:
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
engines: {node: '>=10.13.0'}
hasBin: true
- pretty-format@29.7.0:
- resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
-
pretty-ms@9.0.0:
resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==}
engines: {node: '>=18'}
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
process-warning@3.0.0:
resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
@@ -2156,17 +1991,25 @@ packages:
resolution: {integrity: sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA==}
engines: {node: '>=10'}
+ proper-lockfile@4.1.2:
+ resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==}
+
+ properties-reader@2.3.0:
+ resolution: {integrity: sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==}
+ engines: {node: '>=14'}
+
protobufjs@7.3.0:
resolution: {integrity: sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==}
engines: {node: '>=12.0.0'}
+ protobufjs@7.5.4:
+ resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
+ engines: {node: '>=12.0.0'}
+
proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
- pseudomap@1.0.2:
- resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
-
pump@3.0.0:
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
@@ -2174,31 +2017,22 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
+ quansync@0.2.11:
+ resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
quick-format-unescaped@4.0.4:
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
- quick-lru@4.0.1:
- resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
- engines: {node: '>=8'}
-
- react-is@18.3.1:
- resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
-
- read-pkg-up@7.0.1:
- resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
- engines: {node: '>=8'}
-
- read-pkg@5.2.0:
- resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
- engines: {node: '>=8'}
-
read-yaml-file@1.1.0:
resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
engines: {node: '>=6'}
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
readable-stream@3.6.2:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
@@ -2207,14 +2041,13 @@ packages:
resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ readdir-glob@1.1.3:
+ resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
+
real-require@0.2.0:
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
engines: {node: '>= 12.13.0'}
- redent@3.0.0:
- resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
- engines: {node: '>=8'}
-
redis-errors@1.2.0:
resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==}
engines: {node: '>=4'}
@@ -2226,10 +2059,6 @@ packages:
regenerator-runtime@0.14.1:
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
- regexp.prototype.flags@1.5.2:
- resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
- engines: {node: '>= 0.4'}
-
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -2242,9 +2071,6 @@ packages:
resolution: {integrity: sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==}
engines: {node: '>=8.6.0'}
- require-main-filename@2.0.0:
- resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
-
requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
@@ -2260,6 +2086,10 @@ packages:
resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==}
engines: {node: '>=10'}
+ retry@0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+
reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -2272,25 +2102,20 @@ packages:
engines: {node: '>=14.18'}
hasBin: true
- rollup@4.17.2:
- resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==}
+ rollup@4.53.3:
+ resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- safe-array-concat@1.1.2:
- resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
- engines: {node: '>=0.4'}
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- safe-regex-test@1.0.3:
- resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
- engines: {node: '>= 0.4'}
-
safe-regex2@3.1.0:
resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==}
@@ -2304,41 +2129,18 @@ packages:
secure-json-parse@2.7.0:
resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
- semver@5.7.2:
- resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
- hasBin: true
-
semver@7.6.2:
resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
hasBin: true
- set-blocking@2.0.0:
- resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
-
set-cookie-parser@2.6.0:
resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
- set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
-
- set-function-name@2.0.2:
- resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
- engines: {node: '>= 0.4'}
-
- shebang-command@1.2.0:
- resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
- engines: {node: '>=0.10.0'}
-
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
- shebang-regex@1.0.0:
- resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
- engines: {node: '>=0.10.0'}
-
shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
@@ -2346,10 +2148,6 @@ packages:
shimmer@1.2.1:
resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
- side-channel@1.0.6:
- resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
- engines: {node: '>= 0.4'}
-
siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@@ -2360,39 +2158,28 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
+ sisteransi@1.0.5:
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+
slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
- smartwrap@2.0.2:
- resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==}
- engines: {node: '>=6'}
- hasBin: true
-
sonic-boom@3.8.1:
resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==}
sonic-boom@4.0.1:
resolution: {integrity: sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==}
- source-map-js@1.2.0:
- resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
- spawndamnit@2.0.0:
- resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==}
-
- spdx-correct@3.2.0:
- resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+ spawndamnit@3.0.1:
+ resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==}
- spdx-exceptions@2.5.0:
- resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
-
- spdx-expression-parse@3.0.1:
- resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
-
- spdx-license-ids@3.0.17:
- resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
+ split-ca@1.0.1:
+ resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==}
split2@4.2.0:
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
@@ -2401,20 +2188,27 @@ packages:
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ ssh-remote-port-forward@1.0.4:
+ resolution: {integrity: sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==}
+
+ ssh2@1.17.0:
+ resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==}
+ engines: {node: '>=10.16.0'}
+
stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
standard-as-callback@2.1.0:
resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
- std-env@3.7.0:
- resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
+ std-env@3.10.0:
+ resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
stream-shift@1.0.3:
resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
- stream-transform@2.1.3:
- resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==}
+ streamx@2.23.0:
+ resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==}
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
@@ -2424,16 +2218,8 @@ packages:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
- string.prototype.trim@1.2.9:
- resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimend@1.0.8:
- resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
-
- string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
@@ -2450,29 +2236,14 @@ packages:
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
engines: {node: '>=4'}
- strip-final-newline@3.0.0:
- resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
- engines: {node: '>=12'}
-
strip-final-newline@4.0.0:
resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
engines: {node: '>=18'}
- strip-indent@3.0.0:
- resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
- engines: {node: '>=8'}
-
strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
- strip-literal@2.1.0:
- resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==}
-
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -2481,6 +2252,19 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ tar-fs@2.1.4:
+ resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==}
+
+ tar-fs@3.1.1:
+ resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==}
+
+ tar-stream@2.2.0:
+ resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+ engines: {node: '>=6'}
+
+ tar-stream@3.1.7:
+ resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
+
tar@7.2.0:
resolution: {integrity: sha512-hctwP0Nb4AB60bj8WQgRYaMOuJYRAPMGiQUAotms5igN8ppfQM+IvjQ5HcKu1MaZh2Wy2KWVTe563Yj8dfc14w==}
engines: {node: '>=18'}
@@ -2492,9 +2276,11 @@ packages:
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
engines: {node: '>=8'}
- test-exclude@6.0.0:
- resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
- engines: {node: '>=8'}
+ testcontainers@11.10.0:
+ resolution: {integrity: sha512-8hwK2EnrOZfrHPpDC7CPe03q7H8Vv8j3aXdcmFFyNV8dzpBzgZYmqyDtduJ8YQ5kbzj+A+jUXMQ6zI8B5U3z+g==}
+
+ text-decoder@1.2.3:
+ resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
thread-stream@2.7.0:
resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==}
@@ -2502,24 +2288,24 @@ packages:
thread-stream@3.0.2:
resolution: {integrity: sha512-cBL4xF2A3lSINV4rD5tyqnKH4z/TgWPvT+NaVhJDSwK962oo/Ye7cHSMbDzwcu7tAE1SfU6Q4XtV6Hucmi6Hlw==}
- tinybench@2.8.0:
- resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==}
+ tinybench@2.9.0:
+ resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
- tinypool@0.8.4:
- resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==}
- engines: {node: '>=14.0.0'}
+ tinyexec@1.0.2:
+ resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
+ engines: {node: '>=18'}
- tinyspy@2.2.1:
- resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
- engines: {node: '>=14.0.0'}
+ tinyglobby@0.2.15:
+ resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
+ engines: {node: '>=12.0.0'}
- tmp@0.0.33:
- resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
- engines: {node: '>=0.6.0'}
+ tinyrainbow@3.0.3:
+ resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==}
+ engines: {node: '>=14.0.0'}
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
+ tmp@0.2.5:
+ resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==}
+ engines: {node: '>=14.14'}
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
@@ -2532,68 +2318,41 @@ packages:
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
- trim-newlines@3.0.1:
- resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
- engines: {node: '>=8'}
+ tsconfck@3.1.6:
+ resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
+ engines: {node: ^18 || >=20}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
tslib@2.6.3:
resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
- tty-table@4.2.3:
- resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==}
- engines: {node: '>=8.0.0'}
- hasBin: true
-
- type-detect@4.0.8:
- resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
- engines: {node: '>=4'}
-
- type-fest@0.13.1:
- resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
- engines: {node: '>=10'}
-
- type-fest@0.6.0:
- resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
- engines: {node: '>=8'}
-
- type-fest@0.8.1:
- resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
- engines: {node: '>=8'}
+ tweetnacl@0.14.5:
+ resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==}
type-fest@4.39.0:
resolution: {integrity: sha512-w2IGJU1tIgcrepg9ZJ82d8UmItNQtOFJG0HCUE3SzMokKkTsruVDALl2fAdiEzJlfduoU+VyXJWIIUZ+6jV+nw==}
engines: {node: '>=16'}
- typed-array-buffer@1.0.2:
- resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-length@1.0.1:
- resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-offset@1.0.2:
- resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
- engines: {node: '>= 0.4'}
-
- typed-array-length@1.0.6:
- resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
- engines: {node: '>= 0.4'}
-
- typescript@5.4.5:
- resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- ufo@1.5.3:
- resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==}
-
- unbox-primitive@1.0.2:
- resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ undici-types@7.16.0:
+ resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
+
+ undici@7.16.0:
+ resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==}
+ engines: {node: '>=20.18.1'}
+
universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
@@ -2604,13 +2363,14 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ uuid@10.0.0:
+ resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
+ hasBin: true
+
uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
- validate-npm-package-license@3.0.4:
- resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
-
viem@2.24.3:
resolution: {integrity: sha512-FAoW0hqqpGOlZvfL6GbizDNUd6ZvUyNYYF8HouXbGATrO0RLLh28MOElFNF63hg++uZi2R/EcISs0bvY185z8g==}
peerDependencies:
@@ -2619,56 +2379,72 @@ packages:
typescript:
optional: true
- vite-node@1.6.0:
- resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
-
- vite@5.2.11:
- resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ vite@7.2.7:
+ resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
+ '@types/node': ^20.19.0 || >=22.12.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
lightningcss: ^1.21.0
- sass: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
peerDependenciesMeta:
'@types/node':
optional: true
+ jiti:
+ optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
+ sass-embedded:
+ optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
- vitest@1.6.0:
- resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==}
- engines: {node: ^18.0.0 || >=20.0.0}
+ vitest@4.0.15:
+ resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==}
+ engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
- '@types/node': ^18.0.0 || >=20.0.0
- '@vitest/browser': 1.6.0
- '@vitest/ui': 1.6.0
+ '@opentelemetry/api': ^1.9.0
+ '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
+ '@vitest/browser-playwright': 4.0.15
+ '@vitest/browser-preview': 4.0.15
+ '@vitest/browser-webdriverio': 4.0.15
+ '@vitest/ui': 4.0.15
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
+ '@opentelemetry/api':
+ optional: true
'@types/node':
optional: true
- '@vitest/browser':
+ '@vitest/browser-playwright':
+ optional: true
+ '@vitest/browser-preview':
+ optional: true
+ '@vitest/browser-webdriverio':
optional: true
'@vitest/ui':
optional: true
@@ -2677,47 +2453,22 @@ packages:
jsdom:
optional: true
- wcwidth@1.0.1:
- resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
-
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
- which-boxed-primitive@1.0.2:
- resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
-
- which-module@2.0.1:
- resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
-
- which-pm@2.0.0:
- resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==}
- engines: {node: '>=8.15'}
-
- which-typed-array@1.1.15:
- resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
- engines: {node: '>= 0.4'}
-
- which@1.3.1:
- resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
- hasBin: true
-
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
hasBin: true
- why-is-node-running@2.2.2:
- resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==}
+ why-is-node-running@2.3.0:
+ resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
engines: {node: '>=8'}
hasBin: true
- wrap-ansi@6.2.0:
- resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
- engines: {node: '>=8'}
-
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -2729,8 +2480,8 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- ws@8.17.0:
- resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==}
+ ws@8.18.1:
+ resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
@@ -2741,8 +2492,8 @@ packages:
utf-8-validate:
optional: true
- ws@8.18.1:
- resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==}
+ ws@8.18.3:
+ resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
@@ -2753,48 +2504,47 @@ packages:
utf-8-validate:
optional: true
- y18n@4.0.3:
- resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
-
y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
- yallist@2.1.2:
- resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
-
yallist@5.0.0:
resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
engines: {node: '>=18'}
- yargs-parser@18.1.3:
- resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
- engines: {node: '>=6'}
+ yaml@2.8.2:
+ resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==}
+ engines: {node: '>= 14.6'}
+ hasBin: true
yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
- yargs@15.4.1:
- resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
- engines: {node: '>=8'}
-
yargs@17.7.2:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
- yocto-queue@1.0.0:
- resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
- engines: {node: '>=12.20'}
-
yoctocolors@2.0.2:
resolution: {integrity: sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==}
engines: {node: '>=18'}
+ zile@0.0.13:
+ resolution: {integrity: sha512-a6F5jiKqSd12kf/n1bVIjLpP5FbKr2g1sgdfysMvT+cpyjz0uN6ChY0HX93+7d0OkFa7UX+eiqBJG4ZPVlcIww==}
+ hasBin: true
+ peerDependencies:
+ '@typescript/native-preview': '>=7.0.0'
+ typescript: '>=5'
+ peerDependenciesMeta:
+ '@typescript/native-preview':
+ optional: true
+ typescript:
+ optional: true
+
+ zip-stream@6.0.1:
+ resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==}
+ engines: {node: '>= 14'}
+
zod-validation-error@1.5.0:
resolution: {integrity: sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==}
engines: {node: '>=16.0.0'}
@@ -2808,87 +2558,69 @@ snapshots:
'@adraffy/ens-normalize@1.11.0': {}
- '@ampproject/remapping@2.3.0':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
-
- '@babel/code-frame@7.24.2':
- dependencies:
- '@babel/highlight': 7.24.5
- picocolors: 1.0.1
+ '@babel/helper-string-parser@7.27.1': {}
- '@babel/helper-string-parser@7.24.6': {}
-
- '@babel/helper-validator-identifier@7.24.5': {}
-
- '@babel/helper-validator-identifier@7.24.6': {}
-
- '@babel/highlight@7.24.5':
- dependencies:
- '@babel/helper-validator-identifier': 7.24.5
- chalk: 2.4.2
- js-tokens: 4.0.0
- picocolors: 1.0.1
+ '@babel/helper-validator-identifier@7.28.5': {}
- '@babel/parser@7.24.6':
+ '@babel/parser@7.28.5':
dependencies:
- '@babel/types': 7.24.6
+ '@babel/types': 7.28.5
'@babel/runtime@7.24.5':
dependencies:
regenerator-runtime: 0.14.1
- '@babel/types@7.24.6':
+ '@babel/types@7.28.5':
dependencies:
- '@babel/helper-string-parser': 7.24.6
- '@babel/helper-validator-identifier': 7.24.6
- to-fast-properties: 2.0.0
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
- '@bcoe/v8-coverage@0.2.3': {}
+ '@balena/dockerignore@1.0.2': {}
- '@biomejs/biome@1.7.3':
+ '@bcoe/v8-coverage@1.0.2': {}
+
+ '@biomejs/biome@2.3.8':
optionalDependencies:
- '@biomejs/cli-darwin-arm64': 1.7.3
- '@biomejs/cli-darwin-x64': 1.7.3
- '@biomejs/cli-linux-arm64': 1.7.3
- '@biomejs/cli-linux-arm64-musl': 1.7.3
- '@biomejs/cli-linux-x64': 1.7.3
- '@biomejs/cli-linux-x64-musl': 1.7.3
- '@biomejs/cli-win32-arm64': 1.7.3
- '@biomejs/cli-win32-x64': 1.7.3
-
- '@biomejs/cli-darwin-arm64@1.7.3':
+ '@biomejs/cli-darwin-arm64': 2.3.8
+ '@biomejs/cli-darwin-x64': 2.3.8
+ '@biomejs/cli-linux-arm64': 2.3.8
+ '@biomejs/cli-linux-arm64-musl': 2.3.8
+ '@biomejs/cli-linux-x64': 2.3.8
+ '@biomejs/cli-linux-x64-musl': 2.3.8
+ '@biomejs/cli-win32-arm64': 2.3.8
+ '@biomejs/cli-win32-x64': 2.3.8
+
+ '@biomejs/cli-darwin-arm64@2.3.8':
optional: true
- '@biomejs/cli-darwin-x64@1.7.3':
+ '@biomejs/cli-darwin-x64@2.3.8':
optional: true
- '@biomejs/cli-linux-arm64-musl@1.7.3':
+ '@biomejs/cli-linux-arm64-musl@2.3.8':
optional: true
- '@biomejs/cli-linux-arm64@1.7.3':
+ '@biomejs/cli-linux-arm64@2.3.8':
optional: true
- '@biomejs/cli-linux-x64-musl@1.7.3':
+ '@biomejs/cli-linux-x64-musl@2.3.8':
optional: true
- '@biomejs/cli-linux-x64@1.7.3':
+ '@biomejs/cli-linux-x64@2.3.8':
optional: true
- '@biomejs/cli-win32-arm64@1.7.3':
+ '@biomejs/cli-win32-arm64@2.3.8':
optional: true
- '@biomejs/cli-win32-x64@1.7.3':
+ '@biomejs/cli-win32-x64@2.3.8':
optional: true
- '@changesets/apply-release-plan@7.0.1':
+ '@changesets/apply-release-plan@7.0.14':
dependencies:
- '@babel/runtime': 7.24.5
- '@changesets/config': 3.0.0
+ '@changesets/config': 3.1.2
'@changesets/get-version-range-type': 0.4.0
- '@changesets/git': 3.0.0
- '@changesets/types': 6.0.0
+ '@changesets/git': 3.0.4
+ '@changesets/should-skip-package': 0.1.2
+ '@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
detect-indent: 6.1.0
fs-extra: 7.0.1
@@ -2898,220 +2630,236 @@ snapshots:
resolve-from: 5.0.0
semver: 7.6.2
- '@changesets/assemble-release-plan@6.0.0':
+ '@changesets/assemble-release-plan@6.0.9':
dependencies:
- '@babel/runtime': 7.24.5
'@changesets/errors': 0.2.0
- '@changesets/get-dependents-graph': 2.0.0
- '@changesets/types': 6.0.0
+ '@changesets/get-dependents-graph': 2.1.3
+ '@changesets/should-skip-package': 0.1.2
+ '@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
semver: 7.6.2
- '@changesets/changelog-git@0.2.0':
+ '@changesets/changelog-git@0.2.1':
dependencies:
- '@changesets/types': 6.0.0
+ '@changesets/types': 6.1.0
- '@changesets/changelog-github@0.5.0':
+ '@changesets/changelog-github@0.5.2':
dependencies:
- '@changesets/get-github-info': 0.6.0
- '@changesets/types': 6.0.0
+ '@changesets/get-github-info': 0.7.0
+ '@changesets/types': 6.1.0
dotenv: 8.6.0
transitivePeerDependencies:
- encoding
- '@changesets/cli@2.27.3':
+ '@changesets/cli@2.29.8(@types/node@24.10.2)':
dependencies:
- '@babel/runtime': 7.24.5
- '@changesets/apply-release-plan': 7.0.1
- '@changesets/assemble-release-plan': 6.0.0
- '@changesets/changelog-git': 0.2.0
- '@changesets/config': 3.0.0
+ '@changesets/apply-release-plan': 7.0.14
+ '@changesets/assemble-release-plan': 6.0.9
+ '@changesets/changelog-git': 0.2.1
+ '@changesets/config': 3.1.2
'@changesets/errors': 0.2.0
- '@changesets/get-dependents-graph': 2.0.0
- '@changesets/get-release-plan': 4.0.0
- '@changesets/git': 3.0.0
- '@changesets/logger': 0.1.0
- '@changesets/pre': 2.0.0
- '@changesets/read': 0.6.0
- '@changesets/types': 6.0.0
- '@changesets/write': 0.3.1
+ '@changesets/get-dependents-graph': 2.1.3
+ '@changesets/get-release-plan': 4.0.14
+ '@changesets/git': 3.0.4
+ '@changesets/logger': 0.1.1
+ '@changesets/pre': 2.0.2
+ '@changesets/read': 0.6.6
+ '@changesets/should-skip-package': 0.1.2
+ '@changesets/types': 6.1.0
+ '@changesets/write': 0.4.0
+ '@inquirer/external-editor': 1.0.3(@types/node@24.10.2)
'@manypkg/get-packages': 1.1.3
- '@types/semver': 7.5.8
ansi-colors: 4.1.3
- chalk: 2.4.2
ci-info: 3.9.0
enquirer: 2.4.1
- external-editor: 3.1.0
fs-extra: 7.0.1
- human-id: 1.0.2
- meow: 6.1.1
- outdent: 0.5.0
+ mri: 1.2.0
p-limit: 2.3.0
- preferred-pm: 3.1.3
+ package-manager-detector: 0.2.11
+ picocolors: 1.1.1
resolve-from: 5.0.0
semver: 7.6.2
- spawndamnit: 2.0.0
+ spawndamnit: 3.0.1
term-size: 2.2.1
- tty-table: 4.2.3
+ transitivePeerDependencies:
+ - '@types/node'
- '@changesets/config@3.0.0':
+ '@changesets/config@3.1.2':
dependencies:
'@changesets/errors': 0.2.0
- '@changesets/get-dependents-graph': 2.0.0
- '@changesets/logger': 0.1.0
- '@changesets/types': 6.0.0
+ '@changesets/get-dependents-graph': 2.1.3
+ '@changesets/logger': 0.1.1
+ '@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
fs-extra: 7.0.1
- micromatch: 4.0.6
+ micromatch: 4.0.8
'@changesets/errors@0.2.0':
dependencies:
extendable-error: 0.1.7
- '@changesets/get-dependents-graph@2.0.0':
+ '@changesets/get-dependents-graph@2.1.3':
dependencies:
- '@changesets/types': 6.0.0
+ '@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
- chalk: 2.4.2
- fs-extra: 7.0.1
+ picocolors: 1.1.1
semver: 7.6.2
- '@changesets/get-github-info@0.6.0':
+ '@changesets/get-github-info@0.7.0':
dependencies:
dataloader: 1.4.0
node-fetch: 2.7.0
transitivePeerDependencies:
- encoding
- '@changesets/get-release-plan@4.0.0':
+ '@changesets/get-release-plan@4.0.14':
dependencies:
- '@babel/runtime': 7.24.5
- '@changesets/assemble-release-plan': 6.0.0
- '@changesets/config': 3.0.0
- '@changesets/pre': 2.0.0
- '@changesets/read': 0.6.0
- '@changesets/types': 6.0.0
+ '@changesets/assemble-release-plan': 6.0.9
+ '@changesets/config': 3.1.2
+ '@changesets/pre': 2.0.2
+ '@changesets/read': 0.6.6
+ '@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
'@changesets/get-version-range-type@0.4.0': {}
- '@changesets/git@3.0.0':
+ '@changesets/git@3.0.4':
dependencies:
- '@babel/runtime': 7.24.5
'@changesets/errors': 0.2.0
- '@changesets/types': 6.0.0
'@manypkg/get-packages': 1.1.3
is-subdir: 1.2.0
- micromatch: 4.0.6
- spawndamnit: 2.0.0
+ micromatch: 4.0.8
+ spawndamnit: 3.0.1
- '@changesets/logger@0.1.0':
+ '@changesets/logger@0.1.1':
dependencies:
- chalk: 2.4.2
+ picocolors: 1.1.1
- '@changesets/parse@0.4.0':
+ '@changesets/parse@0.4.2':
dependencies:
- '@changesets/types': 6.0.0
- js-yaml: 3.14.1
+ '@changesets/types': 6.1.0
+ js-yaml: 4.1.1
- '@changesets/pre@2.0.0':
+ '@changesets/pre@2.0.2':
dependencies:
- '@babel/runtime': 7.24.5
'@changesets/errors': 0.2.0
- '@changesets/types': 6.0.0
+ '@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
fs-extra: 7.0.1
- '@changesets/read@0.6.0':
+ '@changesets/read@0.6.6':
dependencies:
- '@babel/runtime': 7.24.5
- '@changesets/git': 3.0.0
- '@changesets/logger': 0.1.0
- '@changesets/parse': 0.4.0
- '@changesets/types': 6.0.0
- chalk: 2.4.2
+ '@changesets/git': 3.0.4
+ '@changesets/logger': 0.1.1
+ '@changesets/parse': 0.4.2
+ '@changesets/types': 6.1.0
fs-extra: 7.0.1
p-filter: 2.1.0
+ picocolors: 1.1.1
+
+ '@changesets/should-skip-package@0.1.2':
+ dependencies:
+ '@changesets/types': 6.1.0
+ '@manypkg/get-packages': 1.1.3
'@changesets/types@4.1.0': {}
- '@changesets/types@6.0.0': {}
+ '@changesets/types@6.1.0': {}
- '@changesets/write@0.3.1':
+ '@changesets/write@0.4.0':
dependencies:
- '@babel/runtime': 7.24.5
- '@changesets/types': 6.0.0
+ '@changesets/types': 6.1.0
fs-extra: 7.0.1
- human-id: 1.0.2
+ human-id: 4.1.3
prettier: 2.8.8
- '@esbuild/aix-ppc64@0.20.2':
+ '@clack/core@1.0.0-alpha.7':
+ dependencies:
+ picocolors: 1.1.1
+ sisteransi: 1.0.5
+
+ '@clack/prompts@1.0.0-alpha.8':
+ dependencies:
+ '@clack/core': 1.0.0-alpha.7
+ picocolors: 1.1.1
+ sisteransi: 1.0.5
+
+ '@esbuild/aix-ppc64@0.25.12':
+ optional: true
+
+ '@esbuild/android-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/android-arm@0.25.12':
+ optional: true
+
+ '@esbuild/android-x64@0.25.12':
optional: true
- '@esbuild/android-arm64@0.20.2':
+ '@esbuild/darwin-arm64@0.25.12':
optional: true
- '@esbuild/android-arm@0.20.2':
+ '@esbuild/darwin-x64@0.25.12':
optional: true
- '@esbuild/android-x64@0.20.2':
+ '@esbuild/freebsd-arm64@0.25.12':
optional: true
- '@esbuild/darwin-arm64@0.20.2':
+ '@esbuild/freebsd-x64@0.25.12':
optional: true
- '@esbuild/darwin-x64@0.20.2':
+ '@esbuild/linux-arm64@0.25.12':
optional: true
- '@esbuild/freebsd-arm64@0.20.2':
+ '@esbuild/linux-arm@0.25.12':
optional: true
- '@esbuild/freebsd-x64@0.20.2':
+ '@esbuild/linux-ia32@0.25.12':
optional: true
- '@esbuild/linux-arm64@0.20.2':
+ '@esbuild/linux-loong64@0.25.12':
optional: true
- '@esbuild/linux-arm@0.20.2':
+ '@esbuild/linux-mips64el@0.25.12':
optional: true
- '@esbuild/linux-ia32@0.20.2':
+ '@esbuild/linux-ppc64@0.25.12':
optional: true
- '@esbuild/linux-loong64@0.20.2':
+ '@esbuild/linux-riscv64@0.25.12':
optional: true
- '@esbuild/linux-mips64el@0.20.2':
+ '@esbuild/linux-s390x@0.25.12':
optional: true
- '@esbuild/linux-ppc64@0.20.2':
+ '@esbuild/linux-x64@0.25.12':
optional: true
- '@esbuild/linux-riscv64@0.20.2':
+ '@esbuild/netbsd-arm64@0.25.12':
optional: true
- '@esbuild/linux-s390x@0.20.2':
+ '@esbuild/netbsd-x64@0.25.12':
optional: true
- '@esbuild/linux-x64@0.20.2':
+ '@esbuild/openbsd-arm64@0.25.12':
optional: true
- '@esbuild/netbsd-x64@0.20.2':
+ '@esbuild/openbsd-x64@0.25.12':
optional: true
- '@esbuild/openbsd-x64@0.20.2':
+ '@esbuild/openharmony-arm64@0.25.12':
optional: true
- '@esbuild/sunos-x64@0.20.2':
+ '@esbuild/sunos-x64@0.25.12':
optional: true
- '@esbuild/win32-arm64@0.20.2':
+ '@esbuild/win32-arm64@0.25.12':
optional: true
- '@esbuild/win32-ia32@0.20.2':
+ '@esbuild/win32-ia32@0.25.12':
optional: true
- '@esbuild/win32-x64@0.20.2':
+ '@esbuild/win32-x64@0.25.12':
optional: true
'@fastify/ajv-compiler@3.5.0':
@@ -3134,7 +2882,7 @@ snapshots:
dependencies:
duplexify: 4.1.3
fastify-plugin: 4.5.1
- ws: 8.17.0
+ ws: 8.18.3
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -3144,6 +2892,11 @@ snapshots:
'@grpc/proto-loader': 0.7.13
'@js-sdsl/ordered-map': 4.4.2
+ '@grpc/grpc-js@1.14.2':
+ dependencies:
+ '@grpc/proto-loader': 0.8.0
+ '@js-sdsl/ordered-map': 4.4.2
+
'@grpc/proto-loader@0.7.13':
dependencies:
lodash.camelcase: 4.3.0
@@ -3151,6 +2904,20 @@ snapshots:
protobufjs: 7.3.0
yargs: 17.7.2
+ '@grpc/proto-loader@0.8.0':
+ dependencies:
+ lodash.camelcase: 4.3.0
+ long: 5.2.3
+ protobufjs: 7.5.4
+ yargs: 17.7.2
+
+ '@inquirer/external-editor@1.0.3(@types/node@24.10.2)':
+ dependencies:
+ chardet: 2.1.1
+ iconv-lite: 0.7.0
+ optionalDependencies:
+ '@types/node': 24.10.2
+
'@ioredis/commands@1.2.0': {}
'@isaacs/cliui@8.0.2':
@@ -3166,29 +2933,22 @@ snapshots:
dependencies:
minipass: 7.1.1
- '@istanbuljs/schema@0.1.3': {}
-
- '@jest/schemas@29.6.3':
- dependencies:
- '@sinclair/typebox': 0.27.8
-
- '@jridgewell/gen-mapping@0.3.5':
- dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.4.15
- '@jridgewell/trace-mapping': 0.3.25
-
'@jridgewell/resolve-uri@3.1.2': {}
- '@jridgewell/set-array@1.2.1': {}
-
'@jridgewell/sourcemap-codec@1.4.15': {}
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
'@jridgewell/trace-mapping@0.3.25':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+
'@js-sdsl/ordered-map@4.4.2': {}
'@manypkg/find-root@1.1.0':
@@ -3494,7 +3254,7 @@ snapshots:
'@opentelemetry/semantic-conventions@1.30.0': {}
- '@pimlico/alto@0.0.15(typescript@5.4.5)':
+ '@pimlico/alto@0.0.15(typescript@5.9.3)':
dependencies:
'@fastify/websocket': 10.0.1
'@opentelemetry/api': 1.9.0
@@ -3511,8 +3271,8 @@ snapshots:
'@pimlico/opentelemetry-instrumentation-viem': 0.0.4(@opentelemetry/api@1.9.0)
'@sentry/node': 7.116.0
'@types/node': 18.19.34
- '@types/ws': 8.5.10
- abitype: 0.8.11(typescript@5.4.5)(zod@3.23.8)
+ '@types/ws': 8.18.1
+ abitype: 0.8.11(typescript@5.9.3)(zod@3.23.8)
async-mutex: 0.4.1
bull: 4.16.5
dotenv: 16.4.5
@@ -3524,7 +3284,7 @@ snapshots:
pino-pretty: 10.3.1
prom-client: 14.2.0
type-fest: 4.39.0
- viem: 2.24.3(typescript@5.4.5)(zod@3.23.8)
+ viem: 2.24.3(typescript@5.9.3)(zod@3.23.8)
yargs: 17.7.2
zod: 3.23.8
zod-validation-error: 1.5.0(zod@3.23.8)
@@ -3567,52 +3327,70 @@ snapshots:
'@protobufjs/utf8@1.1.0': {}
- '@rollup/rollup-android-arm-eabi@4.17.2':
+ '@rollup/rollup-android-arm-eabi@4.53.3':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
optional: true
- '@rollup/rollup-android-arm64@4.17.2':
+ '@rollup/rollup-linux-arm-musleabihf@4.53.3':
optional: true
- '@rollup/rollup-darwin-arm64@4.17.2':
+ '@rollup/rollup-linux-arm64-gnu@4.53.3':
optional: true
- '@rollup/rollup-darwin-x64@4.17.2':
+ '@rollup/rollup-linux-arm64-musl@4.53.3':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.17.2':
+ '@rollup/rollup-linux-loong64-gnu@4.53.3':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.17.2':
+ '@rollup/rollup-linux-ppc64-gnu@4.53.3':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.17.2':
+ '@rollup/rollup-linux-riscv64-gnu@4.53.3':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.17.2':
+ '@rollup/rollup-linux-riscv64-musl@4.53.3':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.17.2':
+ '@rollup/rollup-linux-s390x-gnu@4.53.3':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.17.2':
+ '@rollup/rollup-linux-x64-gnu@4.53.3':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.17.2':
+ '@rollup/rollup-linux-x64-musl@4.53.3':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.17.2':
+ '@rollup/rollup-openharmony-arm64@4.53.3':
optional: true
- '@rollup/rollup-linux-x64-musl@4.17.2':
+ '@rollup/rollup-win32-arm64-msvc@4.53.3':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.17.2':
+ '@rollup/rollup-win32-ia32-msvc@4.53.3':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.17.2':
+ '@rollup/rollup-win32-x64-gnu@4.53.3':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.17.2':
+ '@rollup/rollup-win32-x64-msvc@4.53.3':
optional: true
'@scure/base@1.2.4': {}
@@ -3662,17 +3440,35 @@ snapshots:
dependencies:
'@sentry/types': 7.116.0
- '@sinclair/typebox@0.27.8': {}
-
'@sindresorhus/merge-streams@4.0.0': {}
- '@types/estree@1.0.5': {}
+ '@standard-schema/spec@1.0.0': {}
+
+ '@types/chai@5.2.3':
+ dependencies:
+ '@types/deep-eql': 4.0.2
+ assertion-error: 2.0.1
+
+ '@types/deep-eql@4.0.2': {}
+
+ '@types/docker-modem@3.0.6':
+ dependencies:
+ '@types/node': 24.10.2
+ '@types/ssh2': 1.15.5
- '@types/http-proxy@1.17.14':
+ '@types/dockerode@3.3.47':
dependencies:
- '@types/node': 20.14.0
+ '@types/docker-modem': 3.0.6
+ '@types/node': 24.10.2
+ '@types/ssh2': 1.15.5
- '@types/minimist@1.2.5': {}
+ '@types/estree@1.0.5': {}
+
+ '@types/estree@1.0.8': {}
+
+ '@types/http-proxy@1.17.17':
+ dependencies:
+ '@types/node': 24.10.2
'@types/node@12.20.55': {}
@@ -3680,79 +3476,96 @@ snapshots:
dependencies:
undici-types: 5.26.5
- '@types/node@20.14.0':
+ '@types/node@24.10.2':
dependencies:
- undici-types: 5.26.5
-
- '@types/normalize-package-data@2.4.4': {}
-
- '@types/semver@7.5.8': {}
+ undici-types: 7.16.0
'@types/shimmer@1.0.5': {}
'@types/shimmer@1.2.0': {}
- '@types/ws@8.5.10':
+ '@types/ssh2-streams@0.1.13':
dependencies:
- '@types/node': 20.14.0
+ '@types/node': 24.10.2
- '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.14.0))':
+ '@types/ssh2@0.5.52':
dependencies:
- '@ampproject/remapping': 2.3.0
- '@bcoe/v8-coverage': 0.2.3
- debug: 4.3.4
+ '@types/node': 24.10.2
+ '@types/ssh2-streams': 0.1.13
+
+ '@types/ssh2@1.15.5':
+ dependencies:
+ '@types/node': 18.19.34
+
+ '@types/ws@8.18.1':
+ dependencies:
+ '@types/node': 24.10.2
+
+ '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(yaml@2.8.2))':
+ dependencies:
+ '@bcoe/v8-coverage': 1.0.2
+ '@vitest/utils': 4.0.15
+ ast-v8-to-istanbul: 0.3.8
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
- istanbul-lib-source-maps: 5.0.4
- istanbul-reports: 3.1.7
- magic-string: 0.30.10
- magicast: 0.3.4
- picocolors: 1.0.1
- std-env: 3.7.0
- strip-literal: 2.1.0
- test-exclude: 6.0.0
- vitest: 1.6.0(@types/node@20.14.0)
+ istanbul-lib-source-maps: 5.0.6
+ istanbul-reports: 3.2.0
+ magicast: 0.5.1
+ obug: 2.1.1
+ std-env: 3.10.0
+ tinyrainbow: 3.0.3
+ vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
- '@vitest/expect@1.6.0':
+ '@vitest/expect@4.0.15':
+ dependencies:
+ '@standard-schema/spec': 1.0.0
+ '@types/chai': 5.2.3
+ '@vitest/spy': 4.0.15
+ '@vitest/utils': 4.0.15
+ chai: 6.2.1
+ tinyrainbow: 3.0.3
+
+ '@vitest/mocker@4.0.15(vite@7.2.7(@types/node@24.10.2)(yaml@2.8.2))':
dependencies:
- '@vitest/spy': 1.6.0
- '@vitest/utils': 1.6.0
- chai: 4.4.1
+ '@vitest/spy': 4.0.15
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ vite: 7.2.7(@types/node@24.10.2)(yaml@2.8.2)
- '@vitest/runner@1.6.0':
+ '@vitest/pretty-format@4.0.15':
dependencies:
- '@vitest/utils': 1.6.0
- p-limit: 5.0.0
- pathe: 1.1.2
+ tinyrainbow: 3.0.3
- '@vitest/snapshot@1.6.0':
+ '@vitest/runner@4.0.15':
dependencies:
- magic-string: 0.30.10
- pathe: 1.1.2
- pretty-format: 29.7.0
+ '@vitest/utils': 4.0.15
+ pathe: 2.0.3
- '@vitest/spy@1.6.0':
+ '@vitest/snapshot@4.0.15':
dependencies:
- tinyspy: 2.2.1
+ '@vitest/pretty-format': 4.0.15
+ magic-string: 0.30.21
+ pathe: 2.0.3
+
+ '@vitest/spy@4.0.15': {}
- '@vitest/utils@1.6.0':
+ '@vitest/utils@4.0.15':
dependencies:
- diff-sequences: 29.6.3
- estree-walker: 3.0.3
- loupe: 2.3.7
- pretty-format: 29.7.0
+ '@vitest/pretty-format': 4.0.15
+ tinyrainbow: 3.0.3
- abitype@0.8.11(typescript@5.4.5)(zod@3.23.8):
+ abitype@0.8.11(typescript@5.9.3)(zod@3.23.8):
dependencies:
- typescript: 5.4.5
+ typescript: 5.9.3
optionalDependencies:
zod: 3.23.8
- abitype@1.0.8(typescript@5.4.5)(zod@3.23.8):
+ abitype@1.0.8(typescript@5.9.3)(zod@3.23.8):
optionalDependencies:
- typescript: 5.4.5
+ typescript: 5.9.3
zod: 3.23.8
abort-controller@3.0.0:
@@ -3769,8 +3582,6 @@ snapshots:
dependencies:
acorn: 8.14.1
- acorn-walk@8.3.2: {}
-
acorn@8.11.3: {}
acorn@8.14.1: {}
@@ -3796,80 +3607,128 @@ snapshots:
ansi-regex@6.0.1: {}
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
-
ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
- ansi-styles@5.2.0: {}
-
ansi-styles@6.2.1: {}
+ archiver-utils@5.0.2:
+ dependencies:
+ glob: 10.3.16
+ graceful-fs: 4.2.11
+ is-stream: 2.0.1
+ lazystream: 1.0.1
+ lodash: 4.17.21
+ normalize-path: 3.0.0
+ readable-stream: 4.5.2
+
+ archiver@7.0.1:
+ dependencies:
+ archiver-utils: 5.0.2
+ async: 3.2.6
+ buffer-crc32: 1.0.0
+ readable-stream: 4.5.2
+ readdir-glob: 1.1.3
+ tar-stream: 3.1.7
+ zip-stream: 6.0.1
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
argparse@1.0.10:
dependencies:
sprintf-js: 1.0.3
- array-buffer-byte-length@1.0.1:
- dependencies:
- call-bind: 1.0.7
- is-array-buffer: 3.0.4
+ argparse@2.0.1: {}
array-union@2.1.0: {}
- array.prototype.flat@1.3.2:
+ asn1@0.2.6:
dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-shim-unscopables: 1.0.2
+ safer-buffer: 2.1.2
- arraybuffer.prototype.slice@1.0.3:
- dependencies:
- array-buffer-byte-length: 1.0.1
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
- is-array-buffer: 3.0.4
- is-shared-array-buffer: 1.0.3
+ assertion-error@2.0.1: {}
- arrify@1.0.1: {}
+ ast-v8-to-istanbul@0.3.8:
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ estree-walker: 3.0.3
+ js-tokens: 9.0.1
- assertion-error@1.1.0: {}
+ async-lock@1.4.1: {}
async-mutex@0.4.1:
dependencies:
tslib: 2.6.3
- atomic-sleep@1.0.0: {}
+ async@3.2.6: {}
- available-typed-arrays@1.0.7:
- dependencies:
- possible-typed-array-names: 1.0.0
+ atomic-sleep@1.0.0: {}
avvio@8.3.2:
dependencies:
'@fastify/error': 3.4.1
fastq: 1.17.1
+ b4a@1.7.3: {}
+
balanced-match@1.0.2: {}
+ bare-events@2.8.2: {}
+
+ bare-fs@4.5.2:
+ dependencies:
+ bare-events: 2.8.2
+ bare-path: 3.0.0
+ bare-stream: 2.7.0(bare-events@2.8.2)
+ bare-url: 2.3.2
+ fast-fifo: 1.3.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ optional: true
+
+ bare-os@3.6.2:
+ optional: true
+
+ bare-path@3.0.0:
+ dependencies:
+ bare-os: 3.6.2
+ optional: true
+
+ bare-stream@2.7.0(bare-events@2.8.2):
+ dependencies:
+ streamx: 2.23.0
+ optionalDependencies:
+ bare-events: 2.8.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ optional: true
+
+ bare-url@2.3.2:
+ dependencies:
+ bare-path: 3.0.0
+ optional: true
+
base64-js@1.5.1: {}
+ bcrypt-pbkdf@1.0.2:
+ dependencies:
+ tweetnacl: 0.14.5
+
better-path-resolve@1.0.0:
dependencies:
is-windows: 1.0.2
bintrees@1.0.2: {}
- brace-expansion@1.1.11:
+ bl@4.1.0:
dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
brace-expansion@2.0.1:
dependencies:
@@ -3879,15 +3738,21 @@ snapshots:
dependencies:
fill-range: 7.1.1
- breakword@1.0.6:
+ buffer-crc32@1.0.0: {}
+
+ buffer@5.7.1:
dependencies:
- wcwidth: 1.0.1
+ base64-js: 1.5.1
+ ieee754: 1.2.1
buffer@6.0.3:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
+ buildcheck@0.0.7:
+ optional: true
+
bull@4.16.5:
dependencies:
cron-parser: 4.9.0
@@ -3900,52 +3765,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- cac@6.7.14: {}
-
- call-bind@1.0.7:
- dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- set-function-length: 1.2.2
-
- camelcase-keys@6.2.2:
- dependencies:
- camelcase: 5.3.1
- map-obj: 4.3.0
- quick-lru: 4.0.1
-
- camelcase@5.3.1: {}
-
- chai@4.4.1:
- dependencies:
- assertion-error: 1.1.0
- check-error: 1.0.3
- deep-eql: 4.1.3
- get-func-name: 2.0.2
- loupe: 2.3.7
- pathval: 1.1.1
- type-detect: 4.0.8
+ byline@5.0.0: {}
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
+ cac@6.7.14: {}
- chalk@4.1.2:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
+ chai@6.2.1: {}
change-case@5.4.4: {}
- chardet@0.7.0: {}
+ chardet@2.1.1: {}
- check-error@1.0.3:
- dependencies:
- get-func-name: 2.0.2
+ chownr@1.1.4: {}
chownr@3.0.0: {}
@@ -3953,88 +3783,56 @@ snapshots:
cjs-module-lexer@1.3.1: {}
- cliui@6.0.0:
- dependencies:
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 6.2.0
-
cliui@8.0.1:
dependencies:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
- clone@1.0.4: {}
-
cluster-key-slot@1.1.2: {}
- color-convert@1.9.3:
- dependencies:
- color-name: 1.1.3
-
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
- color-name@1.1.3: {}
-
color-name@1.1.4: {}
colorette@2.0.20: {}
- concat-map@0.0.1: {}
-
- confbox@0.1.7: {}
+ compress-commons@6.0.2:
+ dependencies:
+ crc-32: 1.2.2
+ crc32-stream: 6.0.0
+ is-stream: 2.0.1
+ normalize-path: 3.0.0
+ readable-stream: 4.5.2
cookie@0.6.0: {}
- cron-parser@4.9.0:
- dependencies:
- luxon: 3.6.1
-
- cross-spawn@5.1.0:
- dependencies:
- lru-cache: 4.1.5
- shebang-command: 1.2.0
- which: 1.3.1
+ core-util-is@1.0.3: {}
- cross-spawn@7.0.3:
+ cpu-features@0.0.10:
dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- csv-generate@3.4.3: {}
-
- csv-parse@4.16.3: {}
-
- csv-stringify@5.6.5: {}
+ buildcheck: 0.0.7
+ nan: 2.24.0
+ optional: true
- csv@5.5.3:
- dependencies:
- csv-generate: 3.4.3
- csv-parse: 4.16.3
- csv-stringify: 5.6.5
- stream-transform: 2.1.3
+ crc-32@1.2.2: {}
- data-view-buffer@1.0.1:
+ crc32-stream@6.0.0:
dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-data-view: 1.0.1
+ crc-32: 1.2.2
+ readable-stream: 4.5.2
- data-view-byte-length@1.0.1:
+ cron-parser@4.9.0:
dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-data-view: 1.0.1
+ luxon: 3.6.1
- data-view-byte-offset@1.0.0:
+ cross-spawn@7.0.6:
dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-data-view: 1.0.1
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
dataloader@1.4.0: {}
@@ -4044,45 +3842,45 @@ snapshots:
dependencies:
ms: 2.1.2
- decamelize-keys@1.1.1:
+ debug@4.4.3:
dependencies:
- decamelize: 1.2.0
- map-obj: 1.0.1
+ ms: 2.1.3
- decamelize@1.2.0: {}
+ denque@2.1.0: {}
- deep-eql@4.1.3:
- dependencies:
- type-detect: 4.0.8
+ detect-indent@6.1.0: {}
- defaults@1.0.4:
- dependencies:
- clone: 1.0.4
+ detect-libc@2.0.3:
+ optional: true
- define-data-property@1.1.4:
+ dir-glob@3.0.1:
dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- gopd: 1.0.1
+ path-type: 4.0.0
- define-properties@1.2.1:
+ docker-compose@1.3.0:
dependencies:
- define-data-property: 1.1.4
- has-property-descriptors: 1.0.2
- object-keys: 1.1.1
-
- denque@2.1.0: {}
-
- detect-indent@6.1.0: {}
-
- detect-libc@2.0.3:
- optional: true
+ yaml: 2.8.2
- diff-sequences@29.6.3: {}
+ docker-modem@5.0.6:
+ dependencies:
+ debug: 4.4.3
+ readable-stream: 3.6.2
+ split-ca: 1.0.1
+ ssh2: 1.17.0
+ transitivePeerDependencies:
+ - supports-color
- dir-glob@3.0.1:
+ dockerode@4.0.9:
dependencies:
- path-type: 4.0.0
+ '@balena/dockerignore': 1.0.2
+ '@grpc/grpc-js': 1.14.2
+ '@grpc/proto-loader': 0.7.13
+ docker-modem: 5.0.6
+ protobufjs: 7.5.4
+ tar-fs: 2.1.4
+ uuid: 10.0.0
+ transitivePeerDependencies:
+ - supports-color
dotenv@16.4.5: {}
@@ -4110,115 +3908,39 @@ snapshots:
ansi-colors: 4.1.3
strip-ansi: 6.0.1
- error-ex@1.3.2:
- dependencies:
- is-arrayish: 0.2.1
-
- es-abstract@1.23.3:
- dependencies:
- array-buffer-byte-length: 1.0.1
- arraybuffer.prototype.slice: 1.0.3
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- data-view-buffer: 1.0.1
- data-view-byte-length: 1.0.1
- data-view-byte-offset: 1.0.0
- es-define-property: 1.0.0
- es-errors: 1.3.0
- es-object-atoms: 1.0.0
- es-set-tostringtag: 2.0.3
- es-to-primitive: 1.2.1
- function.prototype.name: 1.1.6
- get-intrinsic: 1.2.4
- get-symbol-description: 1.0.2
- globalthis: 1.0.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- hasown: 2.0.2
- internal-slot: 1.0.7
- is-array-buffer: 3.0.4
- is-callable: 1.2.7
- is-data-view: 1.0.1
- is-negative-zero: 2.0.3
- is-regex: 1.1.4
- is-shared-array-buffer: 1.0.3
- is-string: 1.0.7
- is-typed-array: 1.1.13
- is-weakref: 1.0.2
- object-inspect: 1.13.1
- object-keys: 1.1.1
- object.assign: 4.1.5
- regexp.prototype.flags: 1.5.2
- safe-array-concat: 1.1.2
- safe-regex-test: 1.0.3
- string.prototype.trim: 1.2.9
- string.prototype.trimend: 1.0.8
- string.prototype.trimstart: 1.0.8
- typed-array-buffer: 1.0.2
- typed-array-byte-length: 1.0.1
- typed-array-byte-offset: 1.0.2
- typed-array-length: 1.0.6
- unbox-primitive: 1.0.2
- which-typed-array: 1.1.15
-
- es-define-property@1.0.0:
- dependencies:
- get-intrinsic: 1.2.4
-
- es-errors@1.3.0: {}
-
- es-object-atoms@1.0.0:
- dependencies:
- es-errors: 1.3.0
-
- es-set-tostringtag@2.0.3:
- dependencies:
- get-intrinsic: 1.2.4
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
- es-shim-unscopables@1.0.2:
- dependencies:
- hasown: 2.0.2
-
- es-to-primitive@1.2.1:
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.0.5
- is-symbol: 1.0.4
+ es-module-lexer@1.7.0: {}
- esbuild@0.20.2:
+ esbuild@0.25.12:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.20.2
- '@esbuild/android-arm': 0.20.2
- '@esbuild/android-arm64': 0.20.2
- '@esbuild/android-x64': 0.20.2
- '@esbuild/darwin-arm64': 0.20.2
- '@esbuild/darwin-x64': 0.20.2
- '@esbuild/freebsd-arm64': 0.20.2
- '@esbuild/freebsd-x64': 0.20.2
- '@esbuild/linux-arm': 0.20.2
- '@esbuild/linux-arm64': 0.20.2
- '@esbuild/linux-ia32': 0.20.2
- '@esbuild/linux-loong64': 0.20.2
- '@esbuild/linux-mips64el': 0.20.2
- '@esbuild/linux-ppc64': 0.20.2
- '@esbuild/linux-riscv64': 0.20.2
- '@esbuild/linux-s390x': 0.20.2
- '@esbuild/linux-x64': 0.20.2
- '@esbuild/netbsd-x64': 0.20.2
- '@esbuild/openbsd-x64': 0.20.2
- '@esbuild/sunos-x64': 0.20.2
- '@esbuild/win32-arm64': 0.20.2
- '@esbuild/win32-ia32': 0.20.2
- '@esbuild/win32-x64': 0.20.2
+ '@esbuild/aix-ppc64': 0.25.12
+ '@esbuild/android-arm': 0.25.12
+ '@esbuild/android-arm64': 0.25.12
+ '@esbuild/android-x64': 0.25.12
+ '@esbuild/darwin-arm64': 0.25.12
+ '@esbuild/darwin-x64': 0.25.12
+ '@esbuild/freebsd-arm64': 0.25.12
+ '@esbuild/freebsd-x64': 0.25.12
+ '@esbuild/linux-arm': 0.25.12
+ '@esbuild/linux-arm64': 0.25.12
+ '@esbuild/linux-ia32': 0.25.12
+ '@esbuild/linux-loong64': 0.25.12
+ '@esbuild/linux-mips64el': 0.25.12
+ '@esbuild/linux-ppc64': 0.25.12
+ '@esbuild/linux-riscv64': 0.25.12
+ '@esbuild/linux-s390x': 0.25.12
+ '@esbuild/linux-x64': 0.25.12
+ '@esbuild/netbsd-arm64': 0.25.12
+ '@esbuild/netbsd-x64': 0.25.12
+ '@esbuild/openbsd-arm64': 0.25.12
+ '@esbuild/openbsd-x64': 0.25.12
+ '@esbuild/openharmony-arm64': 0.25.12
+ '@esbuild/sunos-x64': 0.25.12
+ '@esbuild/win32-arm64': 0.25.12
+ '@esbuild/win32-ia32': 0.25.12
+ '@esbuild/win32-x64': 0.25.12
escalade@3.1.2: {}
- escape-string-regexp@1.0.5: {}
-
esprima@4.0.1: {}
estree-walker@3.0.3:
@@ -4231,24 +3953,18 @@ snapshots:
eventemitter3@5.0.1: {}
- events@3.3.0: {}
-
- execa@8.0.1:
+ events-universal@1.0.1:
dependencies:
- cross-spawn: 7.0.3
- get-stream: 8.0.1
- human-signals: 5.0.0
- is-stream: 3.0.0
- merge-stream: 2.0.0
- npm-run-path: 5.3.0
- onetime: 6.0.0
- signal-exit: 4.1.0
- strip-final-newline: 3.0.0
+ bare-events: 2.8.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+
+ events@3.3.0: {}
execa@9.1.0:
dependencies:
'@sindresorhus/merge-streams': 4.0.0
- cross-spawn: 7.0.3
+ cross-spawn: 7.0.6
figures: 6.1.0
get-stream: 9.0.1
human-signals: 7.0.0
@@ -4260,13 +3976,9 @@ snapshots:
strip-final-newline: 4.0.0
yoctocolors: 2.0.2
- extendable-error@0.1.7: {}
+ expect-type@1.3.0: {}
- external-editor@3.1.0:
- dependencies:
- chardet: 0.7.0
- iconv-lite: 0.4.24
- tmp: 0.0.33
+ extendable-error@0.1.7: {}
fast-content-type-parse@1.1.0: {}
@@ -4276,6 +3988,8 @@ snapshots:
fast-deep-equal@3.1.3: {}
+ fast-fifo@1.3.2: {}
+
fast-glob@3.3.2:
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -4329,6 +4043,10 @@ snapshots:
dependencies:
reusify: 1.0.4
+ fdir@6.5.0(picomatch@4.0.3):
+ optionalDependencies:
+ picomatch: 4.0.3
+
figures@6.1.0:
dependencies:
is-unicode-supported: 2.0.0
@@ -4348,29 +4066,17 @@ snapshots:
locate-path: 5.0.0
path-exists: 4.0.0
- find-up@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
- find-yarn-workspace-root2@1.2.16:
- dependencies:
- micromatch: 4.0.6
- pkg-dir: 4.2.0
-
follow-redirects@1.15.6: {}
- for-each@0.3.3:
- dependencies:
- is-callable: 1.2.7
-
foreground-child@3.1.1:
dependencies:
- cross-spawn: 7.0.3
+ cross-spawn: 7.0.6
signal-exit: 4.1.0
forwarded@0.2.0: {}
+ fs-constants@1.0.0: {}
+
fs-extra@7.0.1:
dependencies:
graceful-fs: 4.2.11
@@ -4383,51 +4089,22 @@ snapshots:
jsonfile: 4.0.0
universalify: 0.1.2
- fs.realpath@1.0.0: {}
-
fsevents@2.3.3:
optional: true
function-bind@1.1.2: {}
- function.prototype.name@1.1.6:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- functions-have-names: 1.2.3
-
- functions-have-names@1.2.3: {}
-
get-caller-file@2.0.5: {}
- get-func-name@2.0.2: {}
-
- get-intrinsic@1.2.4:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- hasown: 2.0.2
-
get-port@5.1.1: {}
get-port@7.1.0: {}
- get-stream@8.0.1: {}
-
get-stream@9.0.1:
dependencies:
'@sec-ant/readable-stream': 0.4.1
is-stream: 4.0.1
- get-symbol-description@1.0.2:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
-
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -4440,20 +4117,6 @@ snapshots:
minipass: 7.1.1
path-scurry: 1.11.1
- glob@7.2.3:
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.1.2
- once: 1.4.0
- path-is-absolute: 1.0.1
-
- globalthis@1.0.4:
- dependencies:
- define-properties: 1.2.1
- gopd: 1.0.1
-
globby@11.1.0:
dependencies:
array-union: 2.1.0
@@ -4463,42 +4126,16 @@ snapshots:
merge2: 1.4.1
slash: 3.0.0
- gopd@1.0.1:
- dependencies:
- get-intrinsic: 1.2.4
-
graceful-fs@4.2.11: {}
- grapheme-splitter@1.0.4: {}
-
- hard-rejection@2.1.0: {}
-
- has-bigints@1.0.2: {}
-
- has-flag@3.0.0: {}
-
has-flag@4.0.0: {}
- has-property-descriptors@1.0.2:
- dependencies:
- es-define-property: 1.0.0
-
- has-proto@1.0.3: {}
-
- has-symbols@1.0.3: {}
-
- has-tostringtag@1.0.2:
- dependencies:
- has-symbols: 1.0.3
-
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
help-me@5.0.0: {}
- hosted-git-info@2.8.9: {}
-
html-escaper@2.0.2: {}
http-proxy@1.18.1:
@@ -4509,13 +4146,11 @@ snapshots:
transitivePeerDependencies:
- debug
- human-id@1.0.2: {}
-
- human-signals@5.0.0: {}
+ human-id@4.1.3: {}
human-signals@7.0.0: {}
- iconv-lite@0.4.24:
+ iconv-lite@0.7.0:
dependencies:
safer-buffer: 2.1.2
@@ -4539,21 +4174,8 @@ snapshots:
cjs-module-lexer: 1.3.1
module-details-from-path: 1.0.3
- indent-string@4.0.0: {}
-
- inflight@1.0.6:
- dependencies:
- once: 1.4.0
- wrappy: 1.0.2
-
inherits@2.0.4: {}
- internal-slot@1.0.7:
- dependencies:
- es-errors: 1.3.0
- hasown: 2.0.2
- side-channel: 1.0.6
-
ioredis@5.6.0:
dependencies:
'@ioredis/commands': 1.2.0
@@ -4570,36 +4192,10 @@ snapshots:
ipaddr.js@1.9.1: {}
- is-array-buffer@3.0.4:
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
-
- is-arrayish@0.2.1: {}
-
- is-bigint@1.0.4:
- dependencies:
- has-bigints: 1.0.2
-
- is-boolean-object@1.1.2:
- dependencies:
- call-bind: 1.0.7
- has-tostringtag: 1.0.2
-
- is-callable@1.2.7: {}
-
is-core-module@2.13.1:
dependencies:
hasown: 2.0.2
- is-data-view@1.0.1:
- dependencies:
- is-typed-array: 1.1.13
-
- is-date-object@1.0.5:
- dependencies:
- has-tostringtag: 1.0.2
-
is-extglob@2.1.1: {}
is-fullwidth-code-point@3.0.0: {}
@@ -4608,56 +4204,23 @@ snapshots:
dependencies:
is-extglob: 2.1.1
- is-negative-zero@2.0.3: {}
-
- is-number-object@1.0.7:
- dependencies:
- has-tostringtag: 1.0.2
-
is-number@7.0.0: {}
- is-plain-obj@1.1.0: {}
-
is-plain-obj@4.1.0: {}
- is-regex@1.1.4:
- dependencies:
- call-bind: 1.0.7
- has-tostringtag: 1.0.2
-
- is-shared-array-buffer@1.0.3:
- dependencies:
- call-bind: 1.0.7
-
- is-stream@3.0.0: {}
+ is-stream@2.0.1: {}
is-stream@4.0.1: {}
- is-string@1.0.7:
- dependencies:
- has-tostringtag: 1.0.2
-
is-subdir@1.2.0:
dependencies:
better-path-resolve: 1.0.0
- is-symbol@1.0.4:
- dependencies:
- has-symbols: 1.0.3
-
- is-typed-array@1.1.13:
- dependencies:
- which-typed-array: 1.1.15
-
is-unicode-supported@2.0.0: {}
- is-weakref@1.0.2:
- dependencies:
- call-bind: 1.0.7
-
is-windows@1.0.2: {}
- isarray@2.0.5: {}
+ isarray@1.0.0: {}
isexe@2.0.0: {}
@@ -4673,7 +4236,7 @@ snapshots:
make-dir: 4.0.0
supports-color: 7.2.0
- istanbul-lib-source-maps@5.0.4:
+ istanbul-lib-source-maps@5.0.6:
dependencies:
'@jridgewell/trace-mapping': 0.3.25
debug: 4.3.4
@@ -4681,7 +4244,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- istanbul-reports@3.1.7:
+ istanbul-reports@3.2.0:
dependencies:
html-escaper: 2.0.2
istanbul-lib-report: 3.0.1
@@ -4694,16 +4257,16 @@ snapshots:
joycon@3.1.1: {}
- js-tokens@4.0.0: {}
-
- js-tokens@9.0.0: {}
+ js-tokens@9.0.1: {}
js-yaml@3.14.1:
dependencies:
argparse: 1.0.10
esprima: 4.0.1
- json-parse-even-better-errors@2.3.1: {}
+ js-yaml@4.1.1:
+ dependencies:
+ argparse: 2.0.1
json-schema-ref-resolver@1.0.1:
dependencies:
@@ -4715,9 +4278,9 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
- kind-of@6.0.3: {}
-
- kleur@4.1.5: {}
+ lazystream@1.0.1:
+ dependencies:
+ readable-stream: 2.3.8
lie@3.1.1:
dependencies:
@@ -4729,20 +4292,6 @@ snapshots:
process-warning: 3.0.0
set-cookie-parser: 2.6.0
- lines-and-columns@1.2.4: {}
-
- load-yaml-file@0.2.0:
- dependencies:
- graceful-fs: 4.2.11
- js-yaml: 3.14.1
- pify: 4.0.1
- strip-bom: 3.0.0
-
- local-pkg@0.5.0:
- dependencies:
- mlly: 1.7.0
- pkg-types: 1.1.1
-
localforage@1.10.0:
dependencies:
lie: 3.1.1
@@ -4751,10 +4300,6 @@ snapshots:
dependencies:
p-locate: 4.1.0
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
-
lodash.camelcase@4.3.0: {}
lodash.defaults@4.2.0: {}
@@ -4769,53 +4314,24 @@ snapshots:
long@5.2.3: {}
- loupe@2.3.7:
- dependencies:
- get-func-name: 2.0.2
-
lru-cache@10.2.2: {}
- lru-cache@4.1.5:
- dependencies:
- pseudomap: 1.0.2
- yallist: 2.1.2
-
luxon@3.6.1: {}
- magic-string@0.30.10:
+ magic-string@0.30.21:
dependencies:
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.5
- magicast@0.3.4:
+ magicast@0.5.1:
dependencies:
- '@babel/parser': 7.24.6
- '@babel/types': 7.24.6
- source-map-js: 1.2.0
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+ source-map-js: 1.2.1
make-dir@4.0.0:
dependencies:
semver: 7.6.2
- map-obj@1.0.1: {}
-
- map-obj@4.3.0: {}
-
- meow@6.1.1:
- dependencies:
- '@types/minimist': 1.2.5
- camelcase-keys: 6.2.2
- decamelize-keys: 1.1.1
- hard-rejection: 2.1.0
- minimist-options: 4.1.0
- normalize-package-data: 2.5.0
- read-pkg-up: 7.0.1
- redent: 3.0.0
- trim-newlines: 3.0.1
- type-fest: 0.13.1
- yargs-parser: 18.1.3
-
- merge-stream@2.0.0: {}
-
merge2@1.4.1: {}
micromatch@4.0.6:
@@ -4823,23 +4339,18 @@ snapshots:
braces: 3.0.3
picomatch: 4.0.2
- mimic-fn@4.0.0: {}
-
- min-indent@1.0.1: {}
-
- minimatch@3.1.2:
+ micromatch@4.0.8:
dependencies:
- brace-expansion: 1.1.11
+ braces: 3.0.3
+ picomatch: 2.3.1
- minimatch@9.0.4:
+ minimatch@5.1.6:
dependencies:
brace-expansion: 2.0.1
- minimist-options@4.1.0:
+ minimatch@9.0.4:
dependencies:
- arrify: 1.0.1
- is-plain-obj: 1.1.0
- kind-of: 6.0.3
+ brace-expansion: 2.0.1
minimist@1.2.8: {}
@@ -4850,21 +4361,20 @@ snapshots:
minipass: 7.1.1
rimraf: 5.0.7
- mixme@0.5.10: {}
+ mkdirp-classic@0.5.3: {}
- mkdirp@3.0.1: {}
+ mkdirp@1.0.4: {}
- mlly@1.7.0:
- dependencies:
- acorn: 8.11.3
- pathe: 1.1.2
- pkg-types: 1.1.1
- ufo: 1.5.3
+ mkdirp@3.0.1: {}
module-details-from-path@1.0.3: {}
+ mri@1.2.0: {}
+
ms@2.1.2: {}
+ ms@2.1.3: {}
+
msgpackr-extract@3.0.3:
dependencies:
node-gyp-build-optional-packages: 5.2.2
@@ -4881,7 +4391,10 @@ snapshots:
optionalDependencies:
msgpackr-extract: 3.0.3
- nanoid@3.3.7: {}
+ nan@2.24.0:
+ optional: true
+
+ nanoid@3.3.11: {}
node-fetch@2.7.0:
dependencies:
@@ -4892,27 +4405,13 @@ snapshots:
detect-libc: 2.0.3
optional: true
- normalize-package-data@2.5.0:
- dependencies:
- hosted-git-info: 2.8.9
- resolve: 1.22.8
- semver: 5.7.2
- validate-npm-package-license: 3.0.4
+ normalize-path@3.0.0: {}
npm-run-path@5.3.0:
dependencies:
path-key: 4.0.0
- object-inspect@1.13.1: {}
-
- object-keys@1.1.1: {}
-
- object.assign@4.1.5:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- has-symbols: 1.0.3
- object-keys: 1.1.1
+ obug@2.1.1: {}
on-exit-leak-free@2.1.2: {}
@@ -4920,10 +4419,6 @@ snapshots:
dependencies:
wrappy: 1.0.2
- onetime@6.0.0:
- dependencies:
- mimic-fn: 4.0.0
-
opentelemetry-instrumentation-fetch-node@1.2.3(@opentelemetry/api@1.9.0):
dependencies:
'@opentelemetry/api': 1.9.0
@@ -4932,21 +4427,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
- os-tmpdir@1.0.2: {}
-
outdent@0.5.0: {}
- ox@0.6.9(typescript@5.4.5)(zod@3.23.8):
+ ox@0.6.9(typescript@5.9.3)(zod@3.23.8):
dependencies:
'@adraffy/ens-normalize': 1.11.0
'@noble/curves': 1.8.1
'@noble/hashes': 1.7.1
'@scure/bip32': 1.6.2
'@scure/bip39': 1.5.4
- abitype: 1.0.8(typescript@5.4.5)(zod@3.23.8)
+ abitype: 1.0.8(typescript@5.9.3)(zod@3.23.8)
eventemitter3: 5.0.1
optionalDependencies:
- typescript: 5.4.5
+ typescript: 5.9.3
transitivePeerDependencies:
- zod
@@ -4958,39 +4451,22 @@ snapshots:
dependencies:
p-try: 2.2.0
- p-limit@3.1.0:
- dependencies:
- yocto-queue: 0.1.0
-
- p-limit@5.0.0:
- dependencies:
- yocto-queue: 1.0.0
-
p-locate@4.1.0:
dependencies:
p-limit: 2.3.0
- p-locate@5.0.0:
- dependencies:
- p-limit: 3.1.0
-
p-map@2.1.0: {}
p-try@2.2.0: {}
- parse-json@5.2.0:
+ package-manager-detector@0.2.11:
dependencies:
- '@babel/code-frame': 7.24.2
- error-ex: 1.3.2
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
+ quansync: 0.2.11
parse-ms@4.0.0: {}
path-exists@4.0.0: {}
- path-is-absolute@1.0.1: {}
-
path-key@3.1.1: {}
path-key@4.0.0: {}
@@ -5004,14 +4480,16 @@ snapshots:
path-type@4.0.0: {}
- pathe@1.1.2: {}
+ pathe@2.0.3: {}
- pathval@1.1.1: {}
+ picocolors@1.1.1: {}
- picocolors@1.0.1: {}
+ picomatch@2.3.1: {}
picomatch@4.0.2: {}
+ picomatch@4.0.3: {}
+
pify@4.0.1: {}
pino-abstract-transport@1.2.0:
@@ -5075,43 +4553,20 @@ snapshots:
sonic-boom: 4.0.1
thread-stream: 3.0.2
- pkg-dir@4.2.0:
- dependencies:
- find-up: 4.1.0
-
- pkg-types@1.1.1:
- dependencies:
- confbox: 0.1.7
- mlly: 1.7.0
- pathe: 1.1.2
-
- possible-typed-array-names@1.0.0: {}
-
- postcss@8.4.38:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.0.1
- source-map-js: 1.2.0
-
- preferred-pm@3.1.3:
+ postcss@8.5.6:
dependencies:
- find-up: 5.0.0
- find-yarn-workspace-root2: 1.2.16
- path-exists: 4.0.0
- which-pm: 2.0.0
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
prettier@2.8.8: {}
- pretty-format@29.7.0:
- dependencies:
- '@jest/schemas': 29.6.3
- ansi-styles: 5.2.0
- react-is: 18.3.1
-
pretty-ms@9.0.0:
dependencies:
parse-ms: 4.0.0
+ process-nextick-args@2.0.1: {}
+
process-warning@3.0.0: {}
process@0.11.10: {}
@@ -5120,6 +4575,16 @@ snapshots:
dependencies:
tdigest: 0.1.2
+ proper-lockfile@4.1.2:
+ dependencies:
+ graceful-fs: 4.2.11
+ retry: 0.12.0
+ signal-exit: 3.0.7
+
+ properties-reader@2.3.0:
+ dependencies:
+ mkdirp: 1.0.4
+
protobufjs@7.3.0:
dependencies:
'@protobufjs/aspromise': 1.1.2
@@ -5132,7 +4597,22 @@ snapshots:
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.0
- '@types/node': 20.14.0
+ '@types/node': 24.10.2
+ long: 5.2.3
+
+ protobufjs@7.5.4:
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/base64': 1.1.2
+ '@protobufjs/codegen': 2.0.4
+ '@protobufjs/eventemitter': 1.1.0
+ '@protobufjs/fetch': 1.1.0
+ '@protobufjs/float': 1.0.2
+ '@protobufjs/inquire': 1.1.0
+ '@protobufjs/path': 1.1.2
+ '@protobufjs/pool': 1.1.0
+ '@protobufjs/utf8': 1.1.0
+ '@types/node': 24.10.2
long: 5.2.3
proxy-addr@2.0.7:
@@ -5140,8 +4620,6 @@ snapshots:
forwarded: 0.2.0
ipaddr.js: 1.9.1
- pseudomap@1.0.2: {}
-
pump@3.0.0:
dependencies:
end-of-stream: 1.4.4
@@ -5149,27 +4627,12 @@ snapshots:
punycode@2.3.1: {}
+ quansync@0.2.11: {}
+
queue-microtask@1.2.3: {}
quick-format-unescaped@4.0.4: {}
- quick-lru@4.0.1: {}
-
- react-is@18.3.1: {}
-
- read-pkg-up@7.0.1:
- dependencies:
- find-up: 4.1.0
- read-pkg: 5.2.0
- type-fest: 0.8.1
-
- read-pkg@5.2.0:
- dependencies:
- '@types/normalize-package-data': 2.4.4
- normalize-package-data: 2.5.0
- parse-json: 5.2.0
- type-fest: 0.6.0
-
read-yaml-file@1.1.0:
dependencies:
graceful-fs: 4.2.11
@@ -5177,6 +4640,16 @@ snapshots:
pify: 4.0.1
strip-bom: 3.0.0
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
readable-stream@3.6.2:
dependencies:
inherits: 2.0.4
@@ -5191,12 +4664,11 @@ snapshots:
process: 0.11.10
string_decoder: 1.3.0
- real-require@0.2.0: {}
-
- redent@3.0.0:
+ readdir-glob@1.1.3:
dependencies:
- indent-string: 4.0.0
- strip-indent: 3.0.0
+ minimatch: 5.1.6
+
+ real-require@0.2.0: {}
redis-errors@1.2.0: {}
@@ -5206,13 +4678,6 @@ snapshots:
regenerator-runtime@0.14.1: {}
- regexp.prototype.flags@1.5.2:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-errors: 1.3.0
- set-function-name: 2.0.2
-
require-directory@2.1.1: {}
require-from-string@2.0.2: {}
@@ -5225,8 +4690,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- require-main-filename@2.0.0: {}
-
requires-port@1.0.0: {}
resolve-from@5.0.0: {}
@@ -5239,6 +4702,8 @@ snapshots:
ret@0.4.3: {}
+ retry@0.12.0: {}
+
reusify@1.0.4: {}
rfdc@1.3.1: {}
@@ -5247,47 +4712,42 @@ snapshots:
dependencies:
glob: 10.3.16
- rollup@4.17.2:
+ rollup@4.53.3:
dependencies:
- '@types/estree': 1.0.5
+ '@types/estree': 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.17.2
- '@rollup/rollup-android-arm64': 4.17.2
- '@rollup/rollup-darwin-arm64': 4.17.2
- '@rollup/rollup-darwin-x64': 4.17.2
- '@rollup/rollup-linux-arm-gnueabihf': 4.17.2
- '@rollup/rollup-linux-arm-musleabihf': 4.17.2
- '@rollup/rollup-linux-arm64-gnu': 4.17.2
- '@rollup/rollup-linux-arm64-musl': 4.17.2
- '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2
- '@rollup/rollup-linux-riscv64-gnu': 4.17.2
- '@rollup/rollup-linux-s390x-gnu': 4.17.2
- '@rollup/rollup-linux-x64-gnu': 4.17.2
- '@rollup/rollup-linux-x64-musl': 4.17.2
- '@rollup/rollup-win32-arm64-msvc': 4.17.2
- '@rollup/rollup-win32-ia32-msvc': 4.17.2
- '@rollup/rollup-win32-x64-msvc': 4.17.2
+ '@rollup/rollup-android-arm-eabi': 4.53.3
+ '@rollup/rollup-android-arm64': 4.53.3
+ '@rollup/rollup-darwin-arm64': 4.53.3
+ '@rollup/rollup-darwin-x64': 4.53.3
+ '@rollup/rollup-freebsd-arm64': 4.53.3
+ '@rollup/rollup-freebsd-x64': 4.53.3
+ '@rollup/rollup-linux-arm-gnueabihf': 4.53.3
+ '@rollup/rollup-linux-arm-musleabihf': 4.53.3
+ '@rollup/rollup-linux-arm64-gnu': 4.53.3
+ '@rollup/rollup-linux-arm64-musl': 4.53.3
+ '@rollup/rollup-linux-loong64-gnu': 4.53.3
+ '@rollup/rollup-linux-ppc64-gnu': 4.53.3
+ '@rollup/rollup-linux-riscv64-gnu': 4.53.3
+ '@rollup/rollup-linux-riscv64-musl': 4.53.3
+ '@rollup/rollup-linux-s390x-gnu': 4.53.3
+ '@rollup/rollup-linux-x64-gnu': 4.53.3
+ '@rollup/rollup-linux-x64-musl': 4.53.3
+ '@rollup/rollup-openharmony-arm64': 4.53.3
+ '@rollup/rollup-win32-arm64-msvc': 4.53.3
+ '@rollup/rollup-win32-ia32-msvc': 4.53.3
+ '@rollup/rollup-win32-x64-gnu': 4.53.3
+ '@rollup/rollup-win32-x64-msvc': 4.53.3
fsevents: 2.3.3
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
- safe-array-concat@1.1.2:
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- has-symbols: 1.0.3
- isarray: 2.0.5
+ safe-buffer@5.1.2: {}
safe-buffer@5.2.1: {}
- safe-regex-test@1.0.3:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-regex: 1.1.4
-
safe-regex2@3.1.0:
dependencies:
ret: 0.4.3
@@ -5298,67 +4758,27 @@ snapshots:
secure-json-parse@2.7.0: {}
- semver@5.7.2: {}
-
semver@7.6.2: {}
- set-blocking@2.0.0: {}
-
set-cookie-parser@2.6.0: {}
- set-function-length@1.2.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
-
- set-function-name@2.0.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- functions-have-names: 1.2.3
- has-property-descriptors: 1.0.2
-
- shebang-command@1.2.0:
- dependencies:
- shebang-regex: 1.0.0
-
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
- shebang-regex@1.0.0: {}
-
shebang-regex@3.0.0: {}
shimmer@1.2.1: {}
- side-channel@1.0.6:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
- object-inspect: 1.13.1
-
siginfo@2.0.0: {}
signal-exit@3.0.7: {}
signal-exit@4.1.0: {}
- slash@3.0.0: {}
+ sisteransi@1.0.5: {}
- smartwrap@2.0.2:
- dependencies:
- array.prototype.flat: 1.3.2
- breakword: 1.0.6
- grapheme-splitter: 1.0.4
- strip-ansi: 6.0.1
- wcwidth: 1.0.1
- yargs: 15.4.1
+ slash@3.0.0: {}
sonic-boom@3.8.1:
dependencies:
@@ -5368,42 +4788,48 @@ snapshots:
dependencies:
atomic-sleep: 1.0.0
- source-map-js@1.2.0: {}
+ source-map-js@1.2.1: {}
- spawndamnit@2.0.0:
+ spawndamnit@3.0.1:
dependencies:
- cross-spawn: 5.1.0
- signal-exit: 3.0.7
-
- spdx-correct@3.2.0:
- dependencies:
- spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.17
-
- spdx-exceptions@2.5.0: {}
-
- spdx-expression-parse@3.0.1:
- dependencies:
- spdx-exceptions: 2.5.0
- spdx-license-ids: 3.0.17
+ cross-spawn: 7.0.6
+ signal-exit: 4.1.0
- spdx-license-ids@3.0.17: {}
+ split-ca@1.0.1: {}
split2@4.2.0: {}
sprintf-js@1.0.3: {}
+ ssh-remote-port-forward@1.0.4:
+ dependencies:
+ '@types/ssh2': 0.5.52
+ ssh2: 1.17.0
+
+ ssh2@1.17.0:
+ dependencies:
+ asn1: 0.2.6
+ bcrypt-pbkdf: 1.0.2
+ optionalDependencies:
+ cpu-features: 0.0.10
+ nan: 2.24.0
+
stackback@0.0.2: {}
standard-as-callback@2.1.0: {}
- std-env@3.7.0: {}
+ std-env@3.10.0: {}
stream-shift@1.0.3: {}
- stream-transform@2.1.3:
+ streamx@2.23.0:
dependencies:
- mixme: 0.5.10
+ events-universal: 1.0.1
+ fast-fifo: 1.3.2
+ text-decoder: 1.2.3
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
string-width@4.2.3:
dependencies:
@@ -5417,24 +4843,9 @@ snapshots:
emoji-regex: 9.2.2
strip-ansi: 7.1.0
- string.prototype.trim@1.2.9:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.23.3
- es-object-atoms: 1.0.0
-
- string.prototype.trimend@1.0.8:
+ string_decoder@1.1.1:
dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-object-atoms: 1.0.0
-
- string.prototype.trimstart@1.0.8:
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-object-atoms: 1.0.0
+ safe-buffer: 5.1.2
string_decoder@1.3.0:
dependencies:
@@ -5450,29 +4861,51 @@ snapshots:
strip-bom@3.0.0: {}
- strip-final-newline@3.0.0: {}
-
strip-final-newline@4.0.0: {}
- strip-indent@3.0.0:
+ strip-json-comments@3.1.1: {}
+
+ supports-color@7.2.0:
dependencies:
- min-indent: 1.0.1
+ has-flag: 4.0.0
- strip-json-comments@3.1.1: {}
+ supports-preserve-symlinks-flag@1.0.0: {}
- strip-literal@2.1.0:
+ tar-fs@2.1.4:
dependencies:
- js-tokens: 9.0.0
+ chownr: 1.1.4
+ mkdirp-classic: 0.5.3
+ pump: 3.0.0
+ tar-stream: 2.2.0
- supports-color@5.5.0:
+ tar-fs@3.1.1:
dependencies:
- has-flag: 3.0.0
+ pump: 3.0.0
+ tar-stream: 3.1.7
+ optionalDependencies:
+ bare-fs: 4.5.2
+ bare-path: 3.0.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
- supports-color@7.2.0:
+ tar-stream@2.2.0:
dependencies:
- has-flag: 4.0.0
+ bl: 4.1.0
+ end-of-stream: 1.4.4
+ fs-constants: 1.0.0
+ inherits: 2.0.4
+ readable-stream: 3.6.2
- supports-preserve-symlinks-flag@1.0.0: {}
+ tar-stream@3.1.7:
+ dependencies:
+ b4a: 1.7.3
+ fast-fifo: 1.3.2
+ streamx: 2.23.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
tar@7.2.0:
dependencies:
@@ -5489,11 +4922,34 @@ snapshots:
term-size@2.2.1: {}
- test-exclude@6.0.0:
+ testcontainers@11.10.0:
+ dependencies:
+ '@balena/dockerignore': 1.0.2
+ '@types/dockerode': 3.3.47
+ archiver: 7.0.1
+ async-lock: 1.4.1
+ byline: 5.0.0
+ debug: 4.4.3
+ docker-compose: 1.3.0
+ dockerode: 4.0.9
+ get-port: 7.1.0
+ proper-lockfile: 4.1.2
+ properties-reader: 2.3.0
+ ssh-remote-port-forward: 1.0.4
+ tar-fs: 3.1.1
+ tmp: 0.2.5
+ undici: 7.16.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+ - supports-color
+
+ text-decoder@1.2.3:
dependencies:
- '@istanbuljs/schema': 0.1.3
- glob: 7.2.3
- minimatch: 3.1.2
+ b4a: 1.7.3
+ transitivePeerDependencies:
+ - react-native-b4a
thread-stream@2.7.0:
dependencies:
@@ -5503,17 +4959,18 @@ snapshots:
dependencies:
real-require: 0.2.0
- tinybench@2.8.0: {}
-
- tinypool@0.8.4: {}
+ tinybench@2.9.0: {}
- tinyspy@2.2.1: {}
+ tinyexec@1.0.2: {}
- tmp@0.0.33:
+ tinyglobby@0.2.15:
dependencies:
- os-tmpdir: 1.0.2
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
- to-fast-properties@2.0.0: {}
+ tinyrainbow@3.0.3: {}
+
+ tmp@0.2.5: {}
to-regex-range@5.0.1:
dependencies:
@@ -5523,74 +4980,23 @@ snapshots:
tr46@0.0.3: {}
- trim-newlines@3.0.1: {}
+ tsconfck@3.1.6(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
tslib@2.6.3: {}
- tty-table@4.2.3:
- dependencies:
- chalk: 4.1.2
- csv: 5.5.3
- kleur: 4.1.5
- smartwrap: 2.0.2
- strip-ansi: 6.0.1
- wcwidth: 1.0.1
- yargs: 17.7.2
-
- type-detect@4.0.8: {}
-
- type-fest@0.13.1: {}
-
- type-fest@0.6.0: {}
-
- type-fest@0.8.1: {}
+ tweetnacl@0.14.5: {}
type-fest@4.39.0: {}
- typed-array-buffer@1.0.2:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- is-typed-array: 1.1.13
-
- typed-array-byte-length@1.0.1:
- dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
-
- typed-array-byte-offset@1.0.2:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
+ typescript@5.9.3: {}
- typed-array-length@1.0.6:
- dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-proto: 1.0.3
- is-typed-array: 1.1.13
- possible-typed-array-names: 1.0.0
-
- typescript@5.4.5: {}
-
- ufo@1.5.3: {}
+ undici-types@5.26.5: {}
- unbox-primitive@1.0.2:
- dependencies:
- call-bind: 1.0.7
- has-bigints: 1.0.2
- has-symbols: 1.0.3
- which-boxed-primitive: 1.0.2
+ undici-types@7.16.0: {}
- undici-types@5.26.5: {}
+ undici@7.16.0: {}
universalify@0.1.2: {}
@@ -5600,92 +5006,77 @@ snapshots:
util-deprecate@1.0.2: {}
- uuid@8.3.2: {}
+ uuid@10.0.0: {}
- validate-npm-package-license@3.0.4:
- dependencies:
- spdx-correct: 3.2.0
- spdx-expression-parse: 3.0.1
+ uuid@8.3.2: {}
- viem@2.24.3(typescript@5.4.5)(zod@3.23.8):
+ viem@2.24.3(typescript@5.9.3)(zod@3.23.8):
dependencies:
'@noble/curves': 1.8.1
'@noble/hashes': 1.7.1
'@scure/bip32': 1.6.2
'@scure/bip39': 1.5.4
- abitype: 1.0.8(typescript@5.4.5)(zod@3.23.8)
+ abitype: 1.0.8(typescript@5.9.3)(zod@3.23.8)
isows: 1.0.6(ws@8.18.1)
- ox: 0.6.9(typescript@5.4.5)(zod@3.23.8)
+ ox: 0.6.9(typescript@5.9.3)(zod@3.23.8)
ws: 8.18.1
optionalDependencies:
- typescript: 5.4.5
+ typescript: 5.9.3
transitivePeerDependencies:
- bufferutil
- utf-8-validate
- zod
- vite-node@1.6.0(@types/node@20.14.0):
- dependencies:
- cac: 6.7.14
- debug: 4.3.4
- pathe: 1.1.2
- picocolors: 1.0.1
- vite: 5.2.11(@types/node@20.14.0)
- transitivePeerDependencies:
- - '@types/node'
- - less
- - lightningcss
- - sass
- - stylus
- - sugarss
- - supports-color
- - terser
-
- vite@5.2.11(@types/node@20.14.0):
+ vite@7.2.7(@types/node@24.10.2)(yaml@2.8.2):
dependencies:
- esbuild: 0.20.2
- postcss: 8.4.38
- rollup: 4.17.2
+ esbuild: 0.25.12
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.53.3
+ tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 20.14.0
+ '@types/node': 24.10.2
fsevents: 2.3.3
-
- vitest@1.6.0(@types/node@20.14.0):
- dependencies:
- '@vitest/expect': 1.6.0
- '@vitest/runner': 1.6.0
- '@vitest/snapshot': 1.6.0
- '@vitest/spy': 1.6.0
- '@vitest/utils': 1.6.0
- acorn-walk: 8.3.2
- chai: 4.4.1
- debug: 4.3.4
- execa: 8.0.1
- local-pkg: 0.5.0
- magic-string: 0.30.10
- pathe: 1.1.2
- picocolors: 1.0.1
- std-env: 3.7.0
- strip-literal: 2.1.0
- tinybench: 2.8.0
- tinypool: 0.8.4
- vite: 5.2.11(@types/node@20.14.0)
- vite-node: 1.6.0(@types/node@20.14.0)
- why-is-node-running: 2.2.2
+ yaml: 2.8.2
+
+ vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.2)(yaml@2.8.2):
+ dependencies:
+ '@vitest/expect': 4.0.15
+ '@vitest/mocker': 4.0.15(vite@7.2.7(@types/node@24.10.2)(yaml@2.8.2))
+ '@vitest/pretty-format': 4.0.15
+ '@vitest/runner': 4.0.15
+ '@vitest/snapshot': 4.0.15
+ '@vitest/spy': 4.0.15
+ '@vitest/utils': 4.0.15
+ es-module-lexer: 1.7.0
+ expect-type: 1.3.0
+ magic-string: 0.30.21
+ obug: 2.1.1
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ std-env: 3.10.0
+ tinybench: 2.9.0
+ tinyexec: 1.0.2
+ tinyglobby: 0.2.15
+ tinyrainbow: 3.0.3
+ vite: 7.2.7(@types/node@24.10.2)(yaml@2.8.2)
+ why-is-node-running: 2.3.0
optionalDependencies:
- '@types/node': 20.14.0
+ '@opentelemetry/api': 1.9.0
+ '@types/node': 24.10.2
transitivePeerDependencies:
+ - jiti
- less
- lightningcss
+ - msw
- sass
+ - sass-embedded
- stylus
- sugarss
- - supports-color
- terser
-
- wcwidth@1.0.1:
- dependencies:
- defaults: 1.0.4
+ - tsx
+ - yaml
webidl-conversions@3.0.1: {}
@@ -5694,48 +5085,15 @@ snapshots:
tr46: 0.0.3
webidl-conversions: 3.0.1
- which-boxed-primitive@1.0.2:
- dependencies:
- is-bigint: 1.0.4
- is-boolean-object: 1.1.2
- is-number-object: 1.0.7
- is-string: 1.0.7
- is-symbol: 1.0.4
-
- which-module@2.0.1: {}
-
- which-pm@2.0.0:
- dependencies:
- load-yaml-file: 0.2.0
- path-exists: 4.0.0
-
- which-typed-array@1.1.15:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- for-each: 0.3.3
- gopd: 1.0.1
- has-tostringtag: 1.0.2
-
- which@1.3.1:
- dependencies:
- isexe: 2.0.0
-
which@2.0.2:
dependencies:
isexe: 2.0.0
- why-is-node-running@2.2.2:
+ why-is-node-running@2.3.0:
dependencies:
siginfo: 2.0.0
stackback: 0.0.2
- wrap-ansi@6.2.0:
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
-
wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -5750,39 +5108,18 @@ snapshots:
wrappy@1.0.2: {}
- ws@8.17.0: {}
-
ws@8.18.1: {}
- y18n@4.0.3: {}
+ ws@8.18.3: {}
y18n@5.0.8: {}
- yallist@2.1.2: {}
-
yallist@5.0.0: {}
- yargs-parser@18.1.3:
- dependencies:
- camelcase: 5.3.1
- decamelize: 1.2.0
+ yaml@2.8.2: {}
yargs-parser@21.1.1: {}
- yargs@15.4.1:
- dependencies:
- cliui: 6.0.0
- decamelize: 1.2.0
- find-up: 4.1.0
- get-caller-file: 2.0.5
- require-directory: 2.1.1
- require-main-filename: 2.0.0
- set-blocking: 2.0.0
- string-width: 4.2.3
- which-module: 2.0.1
- y18n: 4.0.3
- yargs-parser: 18.1.3
-
yargs@17.7.2:
dependencies:
cliui: 8.0.1
@@ -5793,11 +5130,21 @@ snapshots:
y18n: 5.0.8
yargs-parser: 21.1.1
- yocto-queue@0.1.0: {}
+ yoctocolors@2.0.2: {}
- yocto-queue@1.0.0: {}
+ zile@0.0.13(typescript@5.9.3):
+ dependencies:
+ '@clack/prompts': 1.0.0-alpha.8
+ cac: 6.7.14
+ tsconfck: 3.1.6(typescript@5.9.3)
+ optionalDependencies:
+ typescript: 5.9.3
- yoctocolors@2.0.2: {}
+ zip-stream@6.0.1:
+ dependencies:
+ archiver-utils: 5.0.2
+ compress-commons: 6.0.2
+ readable-stream: 4.5.2
zod-validation-error@1.5.0(zod@3.23.8):
dependencies:
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
deleted file mode 100644
index 430953b..0000000
--- a/pnpm-workspace.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-packages:
- - 'src'
diff --git a/src/instance.test.ts b/src/Instance.test.ts
similarity index 93%
rename from src/instance.test.ts
rename to src/Instance.test.ts
index 73ec175..fe68de5 100644
--- a/src/instance.test.ts
+++ b/src/Instance.test.ts
@@ -1,9 +1,9 @@
+import { Instance } from 'prool'
import { expect, test } from 'vitest'
-import { defineInstance } from './instance.js'
test('default', async () => {
let started = false
- const foo = defineInstance(() => {
+ const foo = Instance.define(() => {
return {
name: 'foo',
host: 'localhost',
@@ -28,7 +28,7 @@ test('default', async () => {
test('behavior: parameters', async () => {
let started = [false, {}]
- const foo = defineInstance((parameters: { bar: string }) => {
+ const foo = Instance.define((parameters: { bar: string }) => {
return {
name: 'foo',
host: 'localhost',
@@ -53,7 +53,7 @@ test('behavior: parameters', async () => {
test('behavior: start', async () => {
let count = 0
- const foo = defineInstance(() => {
+ const foo = Instance.define(() => {
return {
name: 'foo',
host: 'localhost',
@@ -91,7 +91,7 @@ test('behavior: start', async () => {
})
test('behavior: start (error)', async () => {
- const foo = defineInstance(() => {
+ const foo = Instance.define(() => {
return {
name: 'foo',
host: 'localhost',
@@ -114,7 +114,7 @@ test('behavior: start (error)', async () => {
test('behavior: stop', async () => {
let count = 0
- const foo = defineInstance(() => {
+ const foo = Instance.define(() => {
return {
name: 'foo',
host: 'localhost',
@@ -150,7 +150,7 @@ test('behavior: stop', async () => {
})
test('behavior: stop (error)', async () => {
- const foo = defineInstance(() => {
+ const foo = Instance.define(() => {
return {
name: 'foo',
host: 'localhost',
@@ -175,7 +175,7 @@ test('behavior: stop (error)', async () => {
test('behavior: restart', async () => {
let count = 0
- const foo = defineInstance(() => {
+ const foo = Instance.define(() => {
return {
name: 'foo',
host: 'localhost',
@@ -206,7 +206,7 @@ test('behavior: restart', async () => {
})
test('behavior: events', async () => {
- const foo = defineInstance(() => {
+ const foo = Instance.define(() => {
let count = 0
return {
name: 'foo',
@@ -263,7 +263,7 @@ test('behavior: events', async () => {
})
test('behavior: messages', async () => {
- const foo = defineInstance(() => {
+ const foo = Instance.define(() => {
return {
name: 'foo',
host: 'localhost',
@@ -306,7 +306,7 @@ test('behavior: messages', async () => {
})
test('options: timeout', async () => {
- const foo = defineInstance(() => {
+ const foo = Instance.define(() => {
return {
name: 'foo',
host: 'localhost',
@@ -323,7 +323,7 @@ test('options: timeout', async () => {
'Instance "foo" failed to start in time',
)
- const bar = defineInstance(() => {
+ const bar = Instance.define(() => {
return {
name: 'bar',
host: 'localhost',
diff --git a/src/instance.ts b/src/Instance.ts
similarity index 81%
rename from src/instance.ts
rename to src/Instance.ts
index 208c97c..e3f1b88 100644
--- a/src/instance.ts
+++ b/src/Instance.ts
@@ -1,5 +1,9 @@
import { EventEmitter } from 'eventemitter3'
+export { alto } from './instances/alto.js'
+export { anvil } from './instances/anvil.js'
+export { tempo, tempoDocker } from './instances/tempo.js'
+
type EventTypes = {
exit: [code: number | null, signal: NodeJS.Signals | null]
listening: []
@@ -8,34 +12,6 @@ type EventTypes = {
stdout: [message: string]
}
-export type InstanceStartOptions_internal = {
- emitter: EventEmitter
- status: Instance['status']
-}
-export type InstanceStopOptions_internal = {
- emitter: EventEmitter
- status: Instance['status']
-}
-
-export type InstanceStartOptions = {
- /**
- * Port to start the instance on.
- */
- port?: number | undefined
-}
-
-export type DefineInstanceFn<
- parameters,
- _internal extends object | undefined = object | undefined,
-> = (parameters: parameters) => Pick & {
- _internal?: _internal | undefined
- start(
- options: InstanceStartOptions,
- options_internal: InstanceStartOptions_internal,
- ): Promise
- stop(options_internal: InstanceStopOptions_internal): Promise
-}
-
export type Instance<
_internal extends object | undefined = object | undefined,
> = Pick<
@@ -111,15 +87,6 @@ export type InstanceOptions = {
timeout?: number
}
-export type DefineInstanceReturnType<
- _internal extends object | undefined = object | undefined,
- parameters = undefined,
-> = (
- ...parameters: parameters extends undefined
- ? [options?: InstanceOptions]
- : [parameters: parameters, options?: InstanceOptions]
-) => Instance<_internal>
-
/**
* Creates an instance definition.
*
@@ -127,7 +94,7 @@ export type DefineInstanceReturnType<
*
* @example
* ```ts
- * const foo = defineInstance((parameters: FooParameters) => {
+ * const foo = Instance.define((parameters: FooParameters) => {
* return {
* name: 'foo',
* host: 'localhost',
@@ -142,20 +109,22 @@ export type DefineInstanceReturnType<
* })
* ```
*/
-export function defineInstance<
+export function define<
_internal extends object | undefined,
parameters = undefined,
>(
- fn: DefineInstanceFn,
-): DefineInstanceReturnType<_internal, parameters> {
+ fn: define.DefineFn,
+): define.ReturnType<_internal, parameters> {
return (...[parametersOrOptions, options_]) => {
function create(createParameters: Parameters[0] = {}) {
const parameters = parametersOrOptions as parameters
const options = options_ || parametersOrOptions || {}
+ const instance = fn(parameters)
const { _internal, host, name, port, start, stop } = {
- ...fn(parameters),
+ ...instance,
...createParameters,
+ port: createParameters.port ?? instance.port,
}
const { messageBuffer = 20, timeout } = options
@@ -308,3 +277,43 @@ export function defineInstance<
return Object.assign(create(), { create })
}
}
+
+export declare namespace define {
+ export type DefineFn<
+ parameters,
+ _internal extends object | undefined = object | undefined,
+ > = (parameters: parameters) => Pick & {
+ _internal?: _internal | undefined
+ start(
+ options: InstanceStartOptions,
+ options_internal: InstanceStartOptions_internal,
+ ): Promise
+ stop(options_internal: InstanceStopOptions_internal): Promise
+ }
+
+ export type ReturnType<
+ _internal extends object | undefined = object | undefined,
+ parameters = undefined,
+ > = (
+ ...parameters: parameters extends undefined
+ ? [options?: InstanceOptions]
+ : [parameters: parameters, options?: InstanceOptions]
+ ) => Instance<_internal>
+
+ export type InstanceStartOptions_internal = {
+ emitter: EventEmitter
+ status: Instance['status']
+ }
+
+ export type InstanceStopOptions_internal = {
+ emitter: EventEmitter
+ status: Instance['status']
+ }
+
+ export type InstanceStartOptions = {
+ /**
+ * Port to start the instance on.
+ */
+ port?: number | undefined
+ }
+}
diff --git a/src/pool.test.ts b/src/Pool.test.ts
similarity index 75%
rename from src/pool.test.ts
rename to src/Pool.test.ts
index 8f00b71..e8c74f8 100644
--- a/src/pool.test.ts
+++ b/src/Pool.test.ts
@@ -1,22 +1,17 @@
import getPort from 'get-port'
+import { Instance, Pool, Server } from 'prool'
import { afterEach, beforeAll, describe, expect, test } from 'vitest'
-import { altoOptions, rundlerOptions, stackupOptions } from '../test/utils.js'
-import { rundler } from './exports/instances.js'
-import { alto } from './instances/alto.js'
-import { anvil } from './instances/anvil.js'
-import { stackup } from './instances/stackup.js'
-import { definePool } from './pool.js'
-import { createServer } from './server.js'
+import { altoOptions } from '../test/utils.js'
-let pool: ReturnType
+let pool: ReturnType
const port = await getPort()
beforeAll(() =>
- createServer({
- instance: anvil({
+ Server.create({
+ instance: Instance.anvil({
chainId: 1,
- forkUrl: process.env.VITE_FORK_URL ?? 'https://eth.merkle.io',
+ forkUrl: process.env['VITE_FORK_URL'] ?? 'https://eth.merkle.io',
}),
port,
}).start(),
@@ -31,19 +26,14 @@ afterEach(async () => {
})
describe.each([
- { instance: anvil({ port: await getPort() }) },
+ { instance: Instance.anvil({ port: await getPort() }) },
+ { instance: Instance.tempo({ port: await getPort() }) },
{
- instance: alto(altoOptions({ port, pool: true })),
- },
- {
- instance: stackup(stackupOptions({ port, pool: true })),
- },
- {
- instance: rundler(rundlerOptions({ port, pool: true })),
+ instance: Instance.alto(altoOptions({ port, pool: true })),
},
])('instance: $instance.name', ({ instance }) => {
test('default', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -51,7 +41,7 @@ describe.each([
})
test('start', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -72,7 +62,7 @@ describe.each([
test('callback instance', async () => {
const keys: (number | string)[] = []
- pool = definePool({
+ pool = Pool.define({
instance(key) {
keys.push(key)
return instance
@@ -87,7 +77,7 @@ describe.each([
})
test('stop / destroy', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -124,32 +114,28 @@ describe.each([
expect(pool.size).toEqual(0)
})
- test(
- 'restart',
- async () => {
- pool = definePool({
- instance,
- })
-
- const instance_1 = await pool.start(1)
- const instance_2 = await pool.start(2)
- const instance_3 = await pool.start(3)
-
- expect(instance_1.status).toBe('started')
- expect(instance_2.status).toBe('started')
- expect(instance_3.status).toBe('started')
- expect(pool.size).toEqual(3)
-
- const promise_1 = pool.restart(1)
- expect(instance_1.status).toBe('restarting')
- await promise_1
- expect(instance_1.status).toBe('started')
- },
- { timeout: 10_000 },
- )
+ test('restart', { timeout: 10_000 }, async () => {
+ pool = Pool.define({
+ instance,
+ })
+
+ const instance_1 = await pool.start(1)
+ const instance_2 = await pool.start(2)
+ const instance_3 = await pool.start(3)
+
+ expect(instance_1.status).toBe('started')
+ expect(instance_2.status).toBe('started')
+ expect(instance_3.status).toBe('started')
+ expect(pool.size).toEqual(3)
+
+ const promise_1 = pool.restart(1)
+ expect(instance_1.status).toBe('restarting')
+ await promise_1
+ expect(instance_1.status).toBe('started')
+ })
test('start > stop > start', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -164,7 +150,7 @@ describe.each([
})
test('stopAll / destroyAll', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -182,7 +168,7 @@ describe.each([
})
test('get', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -196,7 +182,7 @@ describe.each([
})
test('behavior: start more than once', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -210,7 +196,7 @@ describe.each([
})
test('behavior: clear more than once', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -227,7 +213,7 @@ describe.each([
})
test('behavior: restart more than once', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -248,7 +234,7 @@ describe.each([
})
test('behavior: stop more than once', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -265,7 +251,7 @@ describe.each([
test('error: start more than once on same port', async () => {
const port = await getPort()
- pool = definePool({
+ pool = Pool.define({
instance,
})
@@ -280,7 +266,7 @@ describe.each([
})
test('error: instance limit reached', async () => {
- pool = definePool({
+ pool = Pool.define({
instance,
limit: 2,
})
diff --git a/src/pool.ts b/src/Pool.ts
similarity index 88%
rename from src/pool.ts
rename to src/Pool.ts
index 533a994..82a449a 100644
--- a/src/pool.ts
+++ b/src/Pool.ts
@@ -1,6 +1,6 @@
import getPort from 'get-port'
-import type { Instance } from './instance.js'
+import type { Instance } from './Instance.js'
type Instance_ = Omit
@@ -14,30 +14,20 @@ export type Pool = Pick<
destroy(key: key): Promise
destroyAll(): Promise
restart(key: key): Promise
- start(key: key, options?: { port?: number }): Promise
+ start(
+ key: key,
+ options?: { port?: number | undefined } | undefined,
+ ): Promise
stop(key: key): Promise
stopAll(): Promise
}
-export type DefinePoolParameters<
- key extends number | string = number | string,
-> = {
- /** Instance for the pool. */
- instance: Instance | ((key: key) => Instance)
- /** The maximum number of instances that can be started. */
- limit?: number | number
-}
-
-export type DefinePoolReturnType<
- key extends number | string = number | string,
-> = Pool
-
/**
* Defines an instance pool. Instances can be started, cached, and stopped against an identifier.
*
* @example
* ```
- * const pool = definePool({
+ * const pool = Pool.define({
* instance: anvil(),
* })
*
@@ -46,9 +36,9 @@ export type DefinePoolReturnType<
* const instance_3 = await pool.start(3)
* ```
*/
-export function definePool(
- parameters: DefinePoolParameters,
-): DefinePoolReturnType {
+export function define(
+ parameters: define.Parameters,
+): define.ReturnType {
const { limit } = parameters
type Instance_ = Omit
@@ -198,3 +188,15 @@ export function definePool(
values: instances.values.bind(instances),
}
}
+
+export declare namespace define {
+ export type Parameters = {
+ /** Instance for the pool. */
+ instance: Instance | ((key: key) => Instance)
+ /** The maximum number of instances that can be started. */
+ limit?: number | undefined
+ }
+
+ export type ReturnType =
+ Pool
+}
diff --git a/src/README.md b/src/README.md
deleted file mode 100644
index 0678505..0000000
--- a/src/README.md
+++ /dev/null
@@ -1,384 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- HTTP testing instances for Ethereum
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## Introduction
-
-Prool is a library that provides programmatic HTTP testing instances for Ethereum. It is designed to be used in testing environments (e.g. [Vitest](https://vitest.dev/)) where you need to interact with an Ethereum server instance (e.g. Execution Node, 4337 Bundler, Indexer, etc) over HTTP or WebSocket.
-
-Prool contains a set of pre-configured instances that can be used to simulate Ethereum server environments, being:
-
-- **Local Execution Nodes:** [`anvil`](#anvil-execution-node)
-- **Bundler Nodes:** [`alto`](#alto-bundler-node), [`rundler`](#rundler-bundler-node), [`silius`](#silius-bundler-node), [`stackup`](#stackup-bundler-node)
-- **Indexer Nodes:** `ponder`⚠️
-
-⚠️ = soon
-
-You can also create your own custom instances by using the [`defineInstance` function](#defineinstance).
-
-## Table of Contents
-
-- [Install](#install)
-- [Getting Started](#getting-started)
- - [Anvil (Execution Node)](#anvil-execution-node)
- - [Alto (Bundler Node)](#alto-bundler-node)
- - [Rundler (Bundler Node)](#rundler-bundler-node)
- - [Silius (Bundler Node)](#silius-bundler-node)
- - [Stackup (Bundler Node)](#stackup-bundler-node)
-- [Reference](#reference)
- - [`createServer`](#createserver)
- - [`defineInstance`](#defineinstance)
- - [`definePool`](#definepool)
-
-
-## Install
-
-```bash
-npm i prool
-```
-
-```bash
-pnpm add prool
-```
-
-```bash
-bun i prool
-```
-
-## Getting Started
-
-### Anvil (Execution Node)
-
-#### Requirements
-
-- [Foundry](https://getfoundry.sh/) binary installed
- - Download: `curl -L https://foundry.paradigm.xyz | bash`
-
-#### Usage
-
-```ts
-import { createServer } from 'prool'
-import { anvil } from 'prool/instances'
-
-const server = createServer({
- instance: anvil(),
-})
-
-await server.start()
-// Instances accessible at:
-// "http://localhost:8545/1"
-// "http://localhost:8545/2"
-// "http://localhost:8545/3"
-// "http://localhost:8545/n"
-```
-
-#### Parameters
-
-See [`AnvilParameters`](https://github.com/wevm/prool/blob/801ede06ded8b2cb2d59c95294aae795e548897c/src/instances/anvil.ts#L5).
-
-### Alto (Bundler Node)
-
-#### Requirements
-
-- [`@pimlico/alto`](npm.im/@pimlico/alto): `npm i @pimlico/alto`
-
-#### Usage
-
-```ts
-import { createServer } from 'prool'
-import { anvil, alto } from 'prool/instances'
-
-const executionServer = createServer({
- instance: anvil(),
- port: 8545
-})
-await executionServer.start()
-// Instances accessible at:
-// "http://localhost:8545/1"
-// "http://localhost:8545/2"
-// "http://localhost:8545/3"
-// "http://localhost:8545/n"
-
-const bundlerServer = createServer({
- instance: (key) => alto({
- entrypoints: ['0x0000000071727De22E5E9d8BAf0edAc6f37da032'],
- rpcUrl: `http://localhost:8545/${key}`,
- executorPrivateKeys: ['0x...'],
- })
-})
-await bundlerServer.start()
-// Instances accessible at:
-// "http://localhost:3000/1" (→ http://localhost:8545/1)
-// "http://localhost:3000/2" (→ http://localhost:8545/2)
-// "http://localhost:3000/3" (→ http://localhost:8545/3)
-// "http://localhost:3000/n" (→ http://localhost:8545/n)
-```
-
-#### Parameters
-
-See [`AltoParameters`](https://github.com/wevm/prool/blob/801ede06ded8b2cb2d59c95294aae795e548897c/src/instances/alto.ts#L7).
-
-### Rundler (Bundler Node)
-
-#### Requirements
-
-- [Rundler](https://github.com/alchemyplatform/rundler) binary installed
- - [Download](https://github.com/alchemyplatform/rundler/releases)
-
-#### Usage
-
-```ts
-import { createServer } from 'prool'
-import { anvil, rundler } from 'prool/instances'
-
-const executionServer = createServer({
- instance: anvil(),
- port: 8545
-})
-await executionServer.start()
-// Instances accessible at:
-// "http://localhost:8545/1"
-// "http://localhost:8545/2"
-// "http://localhost:8545/3"
-// "http://localhost:8545/n"
-
-const bundlerServer = createServer({
- instance: (key) => rundler({
- nodeHttp: `http://localhost:8545/${key}`,
- })
-})
-await bundlerServer.start()
-// Instances accessible at:
-// "http://localhost:3000/1" (→ http://localhost:8545/1)
-// "http://localhost:3000/2" (→ http://localhost:8545/2)
-// "http://localhost:3000/3" (→ http://localhost:8545/3)
-// "http://localhost:3000/n" (→ http://localhost:8545/n)
-```
-
-#### Parameters
-
-See [RundlerParameters]().
-
-### Silius (Bundler Node)
-
-#### Requirements
-
-- [Docker](https://docs.docker.com/get-docker/)
-- Silius Docker Image: `docker pull silius-rs/silius`
-
-#### Usage
-
-```ts
-import { createServer } from 'prool'
-import { anvil, silius } from 'prool/instances'
-
-const executionServer = createServer({
- instance: anvil(),
- port: 8545
-})
-await executionServer.start()
-// Instances accessible at:
-// "http://localhost:8545/1"
-// "http://localhost:8545/2"
-// "http://localhost:8545/3"
-// "http://localhost:8545/n"
-
-const bundlerServer = createServer({
- instance: (key) => silius({
- ethClientAddress: `http://localhost:8545/${key}`,
- mnemonicPath: './keys/0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
- })
-})
-await bundlerServer.start()
-// Instances accessible at:
-// "http://localhost:4000/1" (→ http://localhost:8545/1)
-// "http://localhost:4000/2" (→ http://localhost:8545/2)
-// "http://localhost:4000/3" (→ http://localhost:8545/3)
-// "http://localhost:4000/n" (→ http://localhost:8545/n)
-```
-
-#### Parameters
-
-See [`SiliusParameters`]().
-
-### Stackup (Bundler Node)
-
-#### Requirements
-
-- [Docker](https://docs.docker.com/get-docker/)
-- Stackup Docker Image: `docker pull stackupwallet/stackup-bundler:latest`
-
-#### Usage
-
-```ts
-import { createServer } from 'prool'
-import { anvil, stackup } from 'prool/instances'
-
-const executionServer = createServer({
- instance: anvil(),
- port: 8545
-})
-await executionServer.start()
-// Instances accessible at:
-// "http://localhost:8545/1"
-// "http://localhost:8545/2"
-// "http://localhost:8545/3"
-// "http://localhost:8545/n"
-
-const bundlerServer = createServer({
- instance: (key) => stackup({
- ethClientUrl: `http://localhost:8545/${key}`,
- privateKey: '0x...',
- })
-})
-await bundlerServer.start()
-// Instances accessible at:
-// "http://localhost:4337/1" (→ http://localhost:8545/1)
-// "http://localhost:4337/2" (→ http://localhost:8545/2)
-// "http://localhost:4337/3" (→ http://localhost:8545/3)
-// "http://localhost:4337/n" (→ http://localhost:8545/n)
-```
-
-#### Parameters
-
-See [`StackupParameters`](https://github.com/wevm/prool/blob/801ede06ded8b2cb2d59c95294aae795e548897c/src/instances/stackup.ts#L5).
-
-## Reference
-
-### `createServer`
-
-Creates a server that manages a pool of instances via a proxy.
-
-#### Usage
-
-```ts
-import { createServer } from 'prool'
-import { anvil } from 'prool/instances'
-
-const executionServer = createServer({
- instance: anvil(),
-})
-await executionServer.start()
-// Instances accessible at:
-// "http://localhost:8545/1"
-// "http://localhost:8545/2"
-// "http://localhost:8545/3"
-// "http://localhost:8545/n"
-// "http://localhost:8545/n/start"
-// "http://localhost:8545/n/stop"
-// "http://localhost:8545/n/restart"
-// "http://localhost:8545/healthcheck"
-```
-
-**Endpoints:**
-- `/:key`: Proxy to instance at `key`.
-- `/:key/start`: Start instance at `key`.
-- `/:key/stop`: Stop instance at `key`.
-- `/:key/restart`: Restart instance at `key`.
-- `/healthcheck`: Healthcheck endpoint.
-
-#### API
-
-| Name | Description | Type |
-| ---------- | -------------------------------------------------------- | --------------------------------------- |
-| `instance` | Instance for the server. | `Instance \| (key: number) => Instance` |
-| `limit` | Number of instances that can be instantiated in the pool | `number` |
-| `host` | Host for the server. | `string` |
-| `port` | Port for the server. | `number` |
-| returns | Server | `CreateServerReturnType` |
-
-### `defineInstance`
-
-Creates an instance definition, that can be used with [`createServer`](#createserver) or [`definePool`](#definepool).
-
-#### Usage
-
-```ts
-import { defineInstance } from 'prool'
-
-const foo = defineInstance((parameters: FooParameters) => {
- return {
- name: 'foo',
- host: 'localhost',
- port: 3000,
- async start() {
- // ...
- },
- async stop() {
- // ...
- },
- }
-})
-```
-
-#### API
-
-| Name | Description | Type |
-| ------- | -------------------- | ------------------ |
-| `fn` | Instance definition. | `DefineInstanceFn` |
-| returns | Instance. | `Instance` |
-
-### `definePool`
-
-Defines a pool of instances. Instances can be started, cached, and stopped against an identifier.
-
-#### Usage
-
-```ts
-import { definePool } from 'prool'
-import { anvil } from 'prool/instances'
-
-const pool = definePool({
- instance: anvil(),
-})
-const instance_1 = await pool.start(1)
-const instance_2 = await pool.start(2)
-const instance_3 = await pool.start(3)
-```
-
-#### API
-
-| Name | Description | Type |
-| ---------- | -------------------------------------------------------- | ---------- |
-| `instance` | Instance for the pool. | `Instance` |
-| `limit` | Number of instances that can be instantiated in the pool | `number` |
-| returns | Pool. | `Pool` |
-
-## Authors
-
-- [@jxom](https://github.com/jxom) (jxom.eth, [Twitter](https://twitter.com/jakemoxey))
-- [@tmm](https://github.com/tmm) (awkweb.eth, [Twitter](https://twitter.com/awkweb))
-
-## License
-
-[MIT](/LICENSE) License
diff --git a/src/server.test.ts b/src/Server.test.ts
similarity index 69%
rename from src/server.test.ts
rename to src/Server.test.ts
index 7986b17..fba35eb 100644
--- a/src/server.test.ts
+++ b/src/Server.test.ts
@@ -1,44 +1,30 @@
import getPort from 'get-port'
+import { Instance, Server } from 'prool'
import { beforeAll, describe, expect, test } from 'vitest'
import { type MessageEvent, WebSocket } from 'ws'
-import {
- altoOptions,
- rundlerOptions,
- siliusOptions,
- stackupOptions,
-} from '../test/utils.js'
-import { rundler, silius } from './exports/instances.js'
-import { alto } from './instances/alto.js'
-import { anvil } from './instances/anvil.js'
-import { stackup } from './instances/stackup.js'
-import { createServer } from './server.js'
+import { altoOptions } from '../test/utils.js'
const port = await getPort()
beforeAll(async () => {
- await createServer({
- instance: anvil({
+ await Server.create({
+ instance: Instance.anvil({
chainId: 1,
- forkUrl: process.env.VITE_FORK_URL ?? 'https://eth.merkle.io',
+ forkUrl: process.env['VITE_FORK_URL'] ?? 'https://eth.merkle.io',
}),
port,
}).start()
})
describe.each([
- { instance: anvil() },
+ { instance: Instance.anvil({ port: await getPort() }) },
+ { instance: Instance.tempo({ port: await getPort() }) },
{
- instance: alto(altoOptions({ port, pool: true })),
- },
- {
- instance: stackup(stackupOptions({ port, pool: true })),
- },
- {
- instance: rundler(rundlerOptions({ port, pool: true })),
+ instance: Instance.alto(altoOptions({ port, pool: true })),
},
])('instance: $instance.name', ({ instance }) => {
test('default', async () => {
- const server = createServer({
+ const server = Server.create({
instance,
})
expect(server).toBeDefined()
@@ -59,7 +45,7 @@ describe.each([
})
test('args: port', async () => {
- const server = createServer({
+ const server = Server.create({
instance,
port: 3000,
})
@@ -71,7 +57,7 @@ describe.each([
})
test('args: host', async () => {
- const server = createServer({
+ const server = Server.create({
instance,
host: 'localhost',
port: 3000,
@@ -85,7 +71,7 @@ describe.each([
})
test('request: /healthcheck', async () => {
- const server = createServer({
+ const server = Server.create({
instance,
})
@@ -98,7 +84,7 @@ describe.each([
})
test('request: /start + /stop', async () => {
- const server = createServer({
+ const server = Server.create({
instance,
})
@@ -127,7 +113,7 @@ describe.each([
})
test('request: /restart', async () => {
- const server = createServer({
+ const server = Server.create({
instance,
})
@@ -142,8 +128,8 @@ describe.each([
describe("instance: 'anvil'", () => {
test('request: /{id}', async () => {
- const server = createServer({
- instance: anvil(),
+ const server = Server.create({
+ instance: Instance.anvil(),
})
const stop = await server.start()
@@ -253,8 +239,8 @@ describe("instance: 'anvil'", () => {
})
test('request: /restart', async () => {
- const server = createServer({
- instance: anvil(),
+ const server = Server.create({
+ instance: Instance.anvil(),
})
const stop = await server.start()
@@ -323,8 +309,8 @@ describe("instance: 'anvil'", () => {
})
test('request: /messages', async () => {
- const server = createServer({
- instance: anvil(),
+ const server = Server.create({
+ instance: Instance.anvil(),
})
const stop = await server.start()
@@ -352,8 +338,8 @@ describe("instance: 'anvil'", () => {
})
test('ws', async () => {
- const server = createServer({
- instance: anvil(),
+ const server = Server.create({
+ instance: Instance.anvil(),
})
const stop = await server.start()
@@ -380,8 +366,8 @@ describe("instance: 'anvil'", () => {
describe("instance: 'alto'", () => {
test('request: /{id}', async () => {
- const server = createServer({
- instance: alto(altoOptions({ port, pool: true })),
+ const server = Server.create({
+ instance: Instance.alto(altoOptions({ port, pool: true })),
})
const stop = await server.start()
@@ -413,118 +399,9 @@ describe("instance: 'alto'", () => {
})
})
-describe("instance: 'stackup'", () => {
- test('request: /{id}', async () => {
- const server = createServer({
- instance: stackup(stackupOptions({ port, pool: true })),
- })
-
- const stop = await server.start()
- const { port: port_2 } = server.address()!
- const response = await fetch(`http://localhost:${port_2}/1`, {
- body: JSON.stringify({
- method: 'eth_supportedEntryPoints',
- params: [],
- id: 0,
- jsonrpc: '2.0',
- }),
- headers: {
- 'Content-Type': 'application/json',
- },
- method: 'POST',
- })
- expect(response.status).toBe(200)
- expect(await response.json()).toMatchInlineSnapshot(`
- {
- "id": 0,
- "jsonrpc": "2.0",
- "result": [
- "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
- ],
- }
- `)
-
- await stop()
- })
-})
-
-describe("instance: 'rundler'", () => {
- test('request: /{id}', async () => {
- const server = createServer({
- instance: rundler(rundlerOptions({ port, pool: true })),
- })
-
- const stop = await server.start()
- const { port: port_2 } = server.address()!
- const response = await fetch(`http://localhost:${port_2}/1`, {
- body: JSON.stringify({
- method: 'eth_supportedEntryPoints',
- params: [],
- id: 0,
- jsonrpc: '2.0',
- }),
- headers: {
- 'Content-Type': 'application/json',
- },
- method: 'POST',
- })
- expect(response.status).toBe(200)
- expect(await response.json()).toMatchInlineSnapshot(`
- {
- "id": 0,
- "jsonrpc": "2.0",
- "result": [
- "0x0000000071727De22E5E9d8BAf0edAc6f37da032",
- ],
- }
- `)
-
- await stop()
- })
-})
-
-describe("instance: 'silius'", () => {
- test(
- 'request: /{id}',
- async () => {
- const server = createServer({
- instance: silius(siliusOptions({ port, pool: true })),
- })
-
- const stop = await server.start()
- const { port: port_2 } = server.address()!
- const response = await fetch(`http://localhost:${port_2}/1`, {
- body: JSON.stringify({
- method: 'eth_supportedEntryPoints',
- params: [],
- id: 0,
- jsonrpc: '2.0',
- }),
- headers: {
- 'Content-Type': 'application/json',
- },
- method: 'POST',
- })
- expect(response.status).toBe(200)
- expect(await response.json()).toMatchInlineSnapshot(`
- {
- "id": 0,
- "jsonrpc": "2.0",
- "result": [
- "0x0000000071727De22E5E9d8BAf0edAc6f37da032",
- ],
- }
- `)
-
- await stop()
- },
- { timeout: 10_000 },
- )
-})
-
test('404', async () => {
- const server = createServer({
- instance: anvil(),
+ const server = Server.create({
+ instance: Instance.anvil(),
})
const stop = await server.start()
diff --git a/src/server.ts b/src/Server.ts
similarity index 92%
rename from src/server.ts
rename to src/Server.ts
index 34f64b7..f99a3ed 100644
--- a/src/server.ts
+++ b/src/Server.ts
@@ -1,18 +1,17 @@
import {
+ createServer as createServer_,
type IncomingMessage,
type Server,
type ServerResponse,
- createServer as createServer_,
} from 'node:http'
import type { AddressInfo } from 'node:net'
import httpProxy from 'http-proxy'
-
-import { type DefinePoolParameters, definePool } from './pool.js'
-import { extractPath } from './utils.js'
+import { extractPath } from './internal/utils.js'
+import * as Pool from './Pool.js'
const { createProxyServer } = httpProxy
-export type CreateServerParameters = DefinePoolParameters &
+export type CreateServerParameters = Pool.define.Parameters &
(
| {
/** Host to run the server on. */
@@ -40,11 +39,10 @@ export type CreateServerReturnType = Omit<
*
* @example
* ```
- * import { createServer } from 'prool'
- * import { anvil } from 'prool/instances'
+ * import { Instance, Server } from 'prool'
*
- * const server = createServer({
- * instance: anvil(),
+ * const server = Server.create({
+ * instance: Instance.anvil(),
* })
*
* const server = await server.start()
@@ -59,12 +57,12 @@ export type CreateServerReturnType = Omit<
* // "http://localhost:8545/healthcheck"
* ```
*/
-export function createServer(
+export function create(
parameters: CreateServerParameters,
): CreateServerReturnType {
const { host = '::', instance, limit, port } = parameters
- const pool = definePool({ instance, limit })
+ const pool = Pool.define({ instance, limit })
const proxy = createProxyServer({
ignorePath: true,
ws: true,
diff --git a/src/exports/index.test.ts b/src/exports/index.test.ts
deleted file mode 100644
index 44a68c3..0000000
--- a/src/exports/index.test.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { expect, test } from 'vitest'
-import * as exports from './index.js'
-
-test('exports', () => {
- expect(Object.keys(exports)).toMatchInlineSnapshot(`
- [
- "defineInstance",
- "definePool",
- "createServer",
- "extractPath",
- "stripColors",
- "toArgs",
- "toFlagCase",
- ]
- `)
-})
diff --git a/src/exports/index.ts b/src/exports/index.ts
deleted file mode 100644
index 691d07c..0000000
--- a/src/exports/index.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-export {
- type DefineInstanceFn,
- type DefineInstanceReturnType,
- type Instance,
- type InstanceOptions,
- type InstanceStartOptions,
- defineInstance,
-} from '../instance.js'
-
-export {
- type DefinePoolParameters,
- type DefinePoolReturnType,
- type Pool,
- definePool,
-} from '../pool.js'
-
-export {
- type CreateServerParameters,
- type CreateServerReturnType,
- createServer,
-} from '../server.js'
-
-export {
- type ExtractPathReturnType,
- extractPath,
- stripColors,
- toArgs,
- toFlagCase,
-} from '../utils.js'
diff --git a/src/exports/instances.test.ts b/src/exports/instances.test.ts
deleted file mode 100644
index d58d744..0000000
--- a/src/exports/instances.test.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { expect, test } from 'vitest'
-import * as exports from './instances.js'
-
-test('exports', () => {
- expect(Object.keys(exports)).toMatchInlineSnapshot(`
- [
- "alto",
- "anvil",
- "rundler",
- "silius",
- "stackup",
- "defineInstance",
- ]
- `)
-})
diff --git a/src/exports/instances.ts b/src/exports/instances.ts
deleted file mode 100644
index c944cb5..0000000
--- a/src/exports/instances.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export { alto, type AltoParameters } from '../instances/alto.js'
-export { anvil, type AnvilParameters } from '../instances/anvil.js'
-export { rundler, type RundlerParameters } from '../instances/rundler.js'
-export { silius, type SiliusParameters } from '../instances/silius.js'
-export { stackup, type StackupParameters } from '../instances/stackup.js'
-export {
- defineInstance,
- type DefineInstanceFn,
- type DefineInstanceReturnType,
- type Instance,
- type InstanceOptions,
- type InstanceStartOptions,
-} from '../instance.js'
diff --git a/src/exports/processes.test.ts b/src/exports/processes.test.ts
deleted file mode 100644
index 2205431..0000000
--- a/src/exports/processes.test.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { expect, test } from 'vitest'
-import * as exports from './processes.js'
-
-test('exports', () => {
- expect(Object.keys(exports)).toMatchInlineSnapshot(`
- [
- "execa",
- ]
- `)
-})
diff --git a/src/exports/processes.ts b/src/exports/processes.ts
deleted file mode 100644
index 7d546fd..0000000
--- a/src/exports/processes.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export {
- type ExecaParameters,
- type ExecaProcess,
- type ExecaReturnType,
- type ExecaStartOptions,
- type Process_internal,
- execa,
-} from '../processes/execa.js'
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..078cfac
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,3 @@
+export * as Instance from './Instance.js'
+export * as Pool from './Pool.js'
+export * as Server from './Server.js'
diff --git a/src/instances/alto.test.ts b/src/instances/alto.test.ts
index 0c8abdf..a7966ad 100644
--- a/src/instances/alto.test.ts
+++ b/src/instances/alto.test.ts
@@ -1,17 +1,14 @@
import getPort from 'get-port'
+import { Instance } from 'prool'
import { afterEach, beforeAll, expect, test } from 'vitest'
-
import { altoOptions } from '../../test/utils.js'
-import type { Instance } from '../instance.js'
-import { type AltoParameters, alto } from './alto.js'
-import { anvil } from './anvil.js'
-const instances: Instance[] = []
+const instances: Instance.Instance[] = []
const port = await getPort()
-const defineInstance = (parameters: Partial = {}) => {
- const instance = alto({
+const defineInstance = (parameters: Partial = {}) => {
+ const instance = Instance.alto({
...altoOptions({ port, pool: false }),
...parameters,
})
@@ -20,8 +17,8 @@ const defineInstance = (parameters: Partial = {}) => {
}
beforeAll(() =>
- anvil({
- forkUrl: process.env.VITE_FORK_URL ?? 'https://eth.merkle.io',
+ Instance.anvil({
+ forkUrl: process.env['VITE_FORK_URL'] ?? 'https://eth.merkle.io',
port,
}).start(),
)
@@ -64,7 +61,7 @@ test.skip('behavior: instance errored (duplicate ports)', async () => {
await expect(() => instance_2.start()).rejects.toThrowError()
})
-test('behavior: start and stop multiple times', async () => {
+test.skip('behavior: start and stop multiple times', async () => {
const instance = defineInstance()
await instance.start()
@@ -100,7 +97,7 @@ test.skip('behavior: can subscribe to stderr', async () => {
test('behavior: exit', async () => {
const instance = defineInstance()
- let exitCode: number | null | undefined = undefined
+ let exitCode: number | null | undefined
instance.on('exit', (code) => {
exitCode = code
})
diff --git a/src/instances/alto.ts b/src/instances/alto.ts
index b6aecb1..ae92470 100644
--- a/src/instances/alto.ts
+++ b/src/instances/alto.ts
@@ -1,230 +1,14 @@
import { resolve } from 'node:path'
-import { defineInstance } from '../instance.js'
+import * as Instance from '../Instance.js'
+import { toArgs } from '../internal/utils.js'
import { execa } from '../processes/execa.js'
-import { toArgs } from '../utils.js'
-
-export type AltoParameters = {
- /**
- * API version (used for internal Pimlico versioning compatibility).
- */
- apiVersion?: readonly string[] | undefined
- /**
- * Override the sender native token balance during estimation
- */
- balanceOverride?: boolean | undefined
- /**
- * Binary path of the `alto` executable.
- */
- binary?: string | undefined
- /**
- * Address of the `BundleBulker` contract.
- */
- bundleBulkerAddress?: `0x${string}` | undefined
- /**
- * Set if the bundler bundle user operations automatically or only when calling `debug_bundler_sendBundleNow`.
- * @default "auto"
- */
- bundleMode?: 'auto' | 'manual' | undefined
- /**
- * Indicates weather the chain is a OP stack chain, arbitrum chain, or default EVM chain.
- */
- chainType?: 'default' | 'op-stack' | 'arbitrum' | undefined
- /**
- * Path to JSON config file.
- */
- config?: string | undefined
- /**
- * Skip user operation validation, use with caution.
- */
- dangerousSkipUserOperationValidation?: boolean | undefined
- /**
- * Default API version.
- */
- defaultApiVersion?: string | undefined
- /**
- * Enable debug endpoints.
- * @default false
- */
- enableDebugEndpoints?: boolean | undefined
- /**
- * Include user ops with the same sender in the single bundle.
- * @default true
- */
- enforceUniqueSendersPerBundle?: boolean | undefined
- /**
- * EntryPoint contract addresses.
- */
- entrypoints: readonly `0x${string}`[]
- /**
- * Address of the EntryPoint simulations contract.
- */
- entrypointSimulationContract?: `0x${string}` | undefined
- /**
- * Private keys of the executor accounts.
- */
- executorPrivateKeys?: readonly `0x${string}`[]
- /**
- * Interval to refill the signer balance (seconds).
- * @default 1200
- */
- executorRefillInterval?: number | undefined
- /**
- * Should the node make expiration checks.
- * @default true
- */
- expirationCheck?: boolean | undefined
- /**
- * Amount to multiply the gas prices fetched from the node.
- * @default "100"
- */
- gasPriceBump?: string | undefined
- /**
- * Maximum that the gas prices fetched using pimlico_getUserOperationGasPrice will be accepted for (seconds).
- * @default 10
- */
- gasPriceExpiry?: number | undefined
- /**
- * The minimum percentage of incoming user operation gas prices compared to the gas price used by the bundler to submit bundles.
- * @default 101
- */
- gasPriceFloorPercent?: number | undefined
- /**
- * Amount to multiply the gas prices fetched using `pimlico_getUserOperationGasPrice`.
- * @default "105,110,115"
- */
- gasPriceMultipliers?: readonly string[] | undefined
- /**
- * Use a fixed value for gas limits during bundle transaction gas limit estimations
- */
- fixedGasLimitForEstimation?: string | undefined
- /**
- * Flush stuck transactions with old nonces during bundler startup.
- */
- flushStuckTransactionsDuringStartup?: boolean | undefined
- /**
- * Log in JSON format.
- */
- json?: boolean | undefined
- /**
- * Send legacy transactions instead of an EIP-1559 transactions.
- * @default false
- */
- legacyTransactions?: boolean | undefined
- /**
- * Calculate the bundle transaction gas limits locally instead of using the RPC gas limit estimation.
- */
- localGasLimitCalculation?: boolean | undefined
- /**
- * Default log level.
- */
- logLevel?: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal' | undefined
- /**
- * Max block range for `eth_getLogs` calls.
- */
- maxBlockRange?: number | undefined
- /**
- * Maximum number of operations allowed in the mempool before a bundle is submitted.
- * @default 10
- */
- maxBundleSize?: number | undefined
- /**
- * Maximum time to wait for a bundle to be submitted (ms).
- * @default 1000
- */
- maxBundleWait?: number | undefined
- /**
- * Maximum amount of gas per bundle.
- * @default "5000000"
- */
- maxGasPerBundle?: string | undefined
- /**
- * Maximum number of executor accounts to use from the list of executor private keys.
- */
- maxExecutors?: number | undefined
- /**
- * Maximum amount of parallel user ops to keep in the meempool (same sender, different nonce keys).
- * @default 10
- */
- mempoolMaxParallelOps?: number | undefined
- /**
- * Maximum amount of sequential user ops to keep in the mempool (same sender and nonce key, different nonce values).
- * @default 0
- */
- mempoolMaxQueuedOps?: number | undefined
- /**
- * Minimum stake required for a relay (in 10e18).
- * @default 1
- */
- minEntityStake?: number | undefined
- /**
- * Minimum unstake delay (seconds).
- * @default 1
- */
- minEntityUnstakeDelay?: number | undefined
- /**
- * Minimum balance required for each executor account (below which the utility account will refill).
- */
- minExecutorBalance?: string | undefined
- /**
- * Name of the network (used for metrics).
- * @default "localhost"
- */
- networkName?: string | undefined
- /**
- * Amount to multiply the paymaster gas limits fetched from simulations.
- */
- paymasterGasLimitMultiplier?: string | undefined
- /**
- * Address of the `PerOpInflator` contract.
- */
- perOpInflatorAddress?: `0x${string}` | undefined
- /**
- * Polling interval for querying for new blocks (ms).
- * @default 1000
- */
- pollingInterval?: number | undefined
- /**
- * Port to listen on.
- * @default 3000
- */
- port?: number | undefined
- /**
- * RPC url to connect to.
- */
- rpcUrl: string
- /**
- * Enable safe mode (enforcing all ERC-4337 rules).
- * @default true
- */
- safeMode?: boolean | undefined
- /**
- * RPC url to send transactions to (e.g. flashbots relay).
- */
- sendTransactionRpcUrl?: string | undefined
- /**
- * Timeout for incoming requests (in ms).
- */
- timeout?: number | undefined
- /**
- * Private key of the utility account.
- */
- utilityPrivateKey?: string | undefined
- /**
- * Maximum payload size for websocket messages in bytes (default to 1MB).
- */
- websocketMaxPayloadSize?: number | undefined
- /**
- * Enable websocket server.
- */
- websocket?: boolean | undefined
-}
/**
* Defines an Alto instance.
*
* @example
* ```ts
- * const instance = alto({
+ * const instance = Instance.alto({
* entrypoints: ['0x0000000071727De22E5E9d8BAf0edAc6f37da032'],
* rpcUrl: `http://localhost:8545`,
* executorPrivateKeys: ['0x...'],
@@ -234,8 +18,8 @@ export type AltoParameters = {
* await instance.stop()
* ```
*/
-export const alto = defineInstance((parameters?: AltoParameters) => {
- const { ...args } = (parameters || {}) as AltoParameters
+export const alto = Instance.define((parameters?: alto.Parameters) => {
+ const { ...args } = (parameters || {}) as alto.Parameters
const name = 'alto'
const process = execa({ name })
@@ -278,3 +62,228 @@ export const alto = defineInstance((parameters?: AltoParameters) => {
},
}
})
+
+export declare namespace alto {
+ export type Parameters = {
+ /**
+ * API version (used for internal Pimlico versioning compatibility).
+ */
+ apiVersion?: readonly string[] | undefined
+ /**
+ * Override the sender native token balance during estimation
+ */
+ balanceOverride?: boolean | undefined
+ /**
+ * Binary path of the `alto` executable.
+ */
+ binary?: string | undefined
+ /**
+ * Address of the `BundleBulker` contract.
+ */
+ bundleBulkerAddress?: `0x${string}` | undefined
+ /**
+ * Set if the bundler bundle user operations automatically or only when calling `debug_bundler_sendBundleNow`.
+ * @default "auto"
+ */
+ bundleMode?: 'auto' | 'manual' | undefined
+ /**
+ * Indicates weather the chain is a OP stack chain, arbitrum chain, or default EVM chain.
+ */
+ chainType?: 'default' | 'op-stack' | 'arbitrum' | undefined
+ /**
+ * Path to JSON config file.
+ */
+ config?: string | undefined
+ /**
+ * Skip user operation validation, use with caution.
+ */
+ dangerousSkipUserOperationValidation?: boolean | undefined
+ /**
+ * Default API version.
+ */
+ defaultApiVersion?: string | undefined
+ /**
+ * Enable debug endpoints.
+ * @default false
+ */
+ enableDebugEndpoints?: boolean | undefined
+ /**
+ * Include user ops with the same sender in the single bundle.
+ * @default true
+ */
+ enforceUniqueSendersPerBundle?: boolean | undefined
+ /**
+ * EntryPoint contract addresses.
+ */
+ entrypoints: readonly `0x${string}`[]
+ /**
+ * Address of the EntryPoint simulations contract.
+ */
+ entrypointSimulationContract?: `0x${string}` | undefined
+ /**
+ * Private keys of the executor accounts.
+ */
+ executorPrivateKeys?: readonly `0x${string}`[]
+ /**
+ * Interval to refill the signer balance (seconds).
+ * @default 1200
+ */
+ executorRefillInterval?: number | undefined
+ /**
+ * Should the node make expiration checks.
+ * @default true
+ */
+ expirationCheck?: boolean | undefined
+ /**
+ * Amount to multiply the gas prices fetched from the node.
+ * @default "100"
+ */
+ gasPriceBump?: string | undefined
+ /**
+ * Maximum that the gas prices fetched using pimlico_getUserOperationGasPrice will be accepted for (seconds).
+ * @default 10
+ */
+ gasPriceExpiry?: number | undefined
+ /**
+ * The minimum percentage of incoming user operation gas prices compared to the gas price used by the bundler to submit bundles.
+ * @default 101
+ */
+ gasPriceFloorPercent?: number | undefined
+ /**
+ * Amount to multiply the gas prices fetched using `pimlico_getUserOperationGasPrice`.
+ * @default "105,110,115"
+ */
+ gasPriceMultipliers?: readonly string[] | undefined
+ /**
+ * Use a fixed value for gas limits during bundle transaction gas limit estimations
+ */
+ fixedGasLimitForEstimation?: string | undefined
+ /**
+ * Flush stuck transactions with old nonces during bundler startup.
+ */
+ flushStuckTransactionsDuringStartup?: boolean | undefined
+ /**
+ * Log in JSON format.
+ */
+ json?: boolean | undefined
+ /**
+ * Send legacy transactions instead of an EIP-1559 transactions.
+ * @default false
+ */
+ legacyTransactions?: boolean | undefined
+ /**
+ * Calculate the bundle transaction gas limits locally instead of using the RPC gas limit estimation.
+ */
+ localGasLimitCalculation?: boolean | undefined
+ /**
+ * Default log level.
+ */
+ logLevel?:
+ | 'trace'
+ | 'debug'
+ | 'info'
+ | 'warn'
+ | 'error'
+ | 'fatal'
+ | undefined
+ /**
+ * Max block range for `eth_getLogs` calls.
+ */
+ maxBlockRange?: number | undefined
+ /**
+ * Maximum number of operations allowed in the mempool before a bundle is submitted.
+ * @default 10
+ */
+ maxBundleSize?: number | undefined
+ /**
+ * Maximum time to wait for a bundle to be submitted (ms).
+ * @default 1000
+ */
+ maxBundleWait?: number | undefined
+ /**
+ * Maximum amount of gas per bundle.
+ * @default "5000000"
+ */
+ maxGasPerBundle?: string | undefined
+ /**
+ * Maximum number of executor accounts to use from the list of executor private keys.
+ */
+ maxExecutors?: number | undefined
+ /**
+ * Maximum amount of parallel user ops to keep in the meempool (same sender, different nonce keys).
+ * @default 10
+ */
+ mempoolMaxParallelOps?: number | undefined
+ /**
+ * Maximum amount of sequential user ops to keep in the mempool (same sender and nonce key, different nonce values).
+ * @default 0
+ */
+ mempoolMaxQueuedOps?: number | undefined
+ /**
+ * Minimum stake required for a relay (in 10e18).
+ * @default 1
+ */
+ minEntityStake?: number | undefined
+ /**
+ * Minimum unstake delay (seconds).
+ * @default 1
+ */
+ minEntityUnstakeDelay?: number | undefined
+ /**
+ * Minimum balance required for each executor account (below which the utility account will refill).
+ */
+ minExecutorBalance?: string | undefined
+ /**
+ * Name of the network (used for metrics).
+ * @default "localhost"
+ */
+ networkName?: string | undefined
+ /**
+ * Amount to multiply the paymaster gas limits fetched from simulations.
+ */
+ paymasterGasLimitMultiplier?: string | undefined
+ /**
+ * Address of the `PerOpInflator` contract.
+ */
+ perOpInflatorAddress?: `0x${string}` | undefined
+ /**
+ * Polling interval for querying for new blocks (ms).
+ * @default 1000
+ */
+ pollingInterval?: number | undefined
+ /**
+ * Port to listen on.
+ * @default 3000
+ */
+ port?: number | undefined
+ /**
+ * RPC url to connect to.
+ */
+ rpcUrl: string
+ /**
+ * Enable safe mode (enforcing all ERC-4337 rules).
+ * @default true
+ */
+ safeMode?: boolean | undefined
+ /**
+ * RPC url to send transactions to (e.g. flashbots relay).
+ */
+ sendTransactionRpcUrl?: string | undefined
+ /**
+ * Timeout for incoming requests (in ms).
+ */
+ timeout?: number | undefined
+ /**
+ * Private key of the utility account.
+ */
+ utilityPrivateKey?: string | undefined
+ /**
+ * Maximum payload size for websocket messages in bytes (default to 1MB).
+ */
+ websocketMaxPayloadSize?: number | undefined
+ /**
+ * Enable websocket server.
+ */
+ websocket?: boolean | undefined
+ }
+}
diff --git a/src/instances/anvil.test.ts b/src/instances/anvil.test.ts
index d543690..9e25e44 100644
--- a/src/instances/anvil.test.ts
+++ b/src/instances/anvil.test.ts
@@ -1,12 +1,11 @@
+import { Instance } from 'prool'
import { afterEach, expect, test } from 'vitest'
-import type { Instance } from '../instance.js'
-import { type AnvilParameters, anvil } from './anvil.js'
-const instances: Instance[] = []
+const instances: Instance.Instance[] = []
const timestamp = 1717114065
-const defineInstance = (parameters: AnvilParameters = {}) => {
- const instance = anvil(parameters)
+const defineInstance = (parameters: Instance.anvil.Parameters = {}) => {
+ const instance = Instance.anvil(parameters)
instances.push(instance)
return instance
}
@@ -100,7 +99,7 @@ test.skip('behavior: starts anvil with custom options', async () => {
test('behavior: exit', async () => {
const instance = defineInstance({ timestamp })
- let exitCode: number | null | undefined = undefined
+ let exitCode: number | null | undefined
instance.on('exit', (code) => {
exitCode = code
})
diff --git a/src/instances/anvil.ts b/src/instances/anvil.ts
index 281ab42..a9b8682 100644
--- a/src/instances/anvil.ts
+++ b/src/instances/anvil.ts
@@ -1,262 +1,19 @@
-import { defineInstance } from '../instance.js'
+import * as Instance from '../Instance.js'
+import { toArgs } from '../internal/utils.js'
import { execa } from '../processes/execa.js'
-import { toArgs } from '../utils.js'
-
-export type AnvilParameters = {
- /**
- * Number of dev accounts to generate and configure.
- *
- * @defaultValue 10
- */
- accounts?: number | undefined
- /**
- * Set the Access-Control-Allow-Origin response header (CORS).
- *
- * @defaultValue *
- */
- allowOrigin?: string | undefined
- /**
- * Enable autoImpersonate on startup
- */
- autoImpersonate?: boolean | undefined
- /**
- * The balance of every dev account in Ether.
- *
- * @defaultValue 10000
- */
- balance?: number | bigint | undefined
- /**
- * The base fee in a block.
- */
- blockBaseFeePerGas?: number | bigint | undefined
- /**
- * Block time in seconds for interval mining.
- */
- blockTime?: number | undefined
- /**
- * Path or alias to the Anvil binary.
- */
- binary?: string | undefined
- /**
- * The chain id.
- */
- chainId?: number | undefined
- /**
- * EIP-170: Contract code size limit in bytes. Useful to increase this because of tests.
- *
- * @defaultValue 0x6000 (~25kb)
- */
- codeSizeLimit?: number | undefined
- /**
- * Sets the number of assumed available compute units per second for this fork provider.
- *
- * @defaultValue 350
- * @see https://github.com/alchemyplatform/alchemy-docs/blob/master/documentation/compute-units.md#rate-limits-cups
- */
- computeUnitsPerSecond?: number | undefined
- /**
- * Writes output of `anvil` as json to user-specified file.
- */
- configOut?: string | undefined
- /**
- * Sets the derivation path of the child key to be derived.
- *
- * @defaultValue m/44'/60'/0'/0/
- */
- derivationPath?: string | undefined
- /**
- * Disable the `call.gas_limit <= block.gas_limit` constraint.
- */
- disableBlockGasLimit?: boolean | undefined
- /**
- * Dump the state of chain on exit to the given file. If the value is a directory, the state will be
- * written to `/state.json`.
- */
- dumpState?: string | undefined
- /**
- * Fetch state over a remote endpoint instead of starting from an empty state.
- *
- * If you want to fetch state from a specific block number, add a block number like `http://localhost:8545@1400000`
- * or use the `forkBlockNumber` option.
- */
- forkUrl?: string | undefined
- /**
- * Fetch state from a specific block number over a remote endpoint.
- *
- * Requires `forkUrl` to be set.
- */
- forkBlockNumber?: number | bigint | undefined
- /**
- * Specify chain id to skip fetching it from remote endpoint. This enables offline-start mode.
- *
- * You still must pass both `forkUrl` and `forkBlockNumber`, and already have your required state cached
- * on disk, anything missing locally would be fetched from the remote.
- */
- forkChainId?: number | undefined
- /**
- * Specify headers to send along with any request to the remote JSON-RPC server in forking mode.
- *
- * e.g. "User-Agent: test-agent"
- *
- * Requires `forkUrl` to be set.
- */
- forkHeader?: Record | undefined
- /**
- * Initial retry backoff on encountering errors.
- */
- forkRetryBackoff?: number | undefined
- /**
- * The block gas limit.
- */
- gasLimit?: number | bigint | undefined
- /**
- * The gas price.
- */
- gasPrice?: number | bigint | undefined
- /**
- * The EVM hardfork to use.
- */
- hardfork?:
- | 'Frontier'
- | 'Homestead'
- | 'Dao'
- | 'Tangerine'
- | 'SpuriousDragon'
- | 'Byzantium'
- | 'Constantinople'
- | 'Petersburg'
- | 'Istanbul'
- | 'Muirglacier'
- | 'Berlin'
- | 'London'
- | 'ArrowGlacier'
- | 'GrayGlacier'
- | 'Paris'
- | 'Shanghai'
- | 'Cancun'
- | 'Prague'
- | 'Latest'
- | undefined
- /**
- * The host the server will listen on.
- */
- host?: string | undefined
- /**
- * Initialize the genesis block with the given `genesis.json` file.
- */
- init?: string | undefined
- /**
- * Launch an ipc server at the given path or default path = `/tmp/anvil.ipc`.
- */
- ipc?: string | undefined
- /**
- * Initialize the chain from a previously saved state snapshot.
- */
- loadState?: string | undefined
- /**
- * BIP39 mnemonic phrase used for generating accounts.
- */
- mnemonic?: string | undefined
- /**
- * Automatically generates a BIP39 mnemonic phrase, and derives accounts from it.
- */
- mnemonicRandom?: boolean | undefined
- /**
- * Disable CORS.
- */
- noCors?: boolean | undefined
- /**
- * Disable auto and interval mining, and mine on demand instead.
- */
- noMining?: boolean | undefined
- /**
- * Disables rate limiting for this node's provider.
- *
- * @defaultValue false
- * @see https://github.com/alchemyplatform/alchemy-docs/blob/master/documentation/compute-units.md#rate-limits-cups
- */
- noRateLimit?: boolean | undefined
- /**
- * Explicitly disables the use of RPC caching.
- *
- * All storage slots are read entirely from the endpoint.
- */
- noStorageCaching?: boolean | undefined
- /**
- * How transactions are sorted in the mempool.
- *
- * @defaultValue fees
- */
- order?: string | undefined
- /**
- * Run an Optimism chain.
- */
- optimism?: boolean | undefined
- /**
- * Port number to listen on.
- *
- * @defaultValue 8545
- */
- port?: number | undefined
- /**
- * Don't keep full chain history. If a number argument is specified, at most this number of states is kept in memory.
- */
- pruneHistory?: number | undefined | boolean
- /**
- * Number of retry requests for spurious networks (timed out requests).
- *
- * @defaultValue 5
- */
- retries?: number | undefined
- /**
- * Don't print anything on startup and don't print logs.
- */
- silent?: boolean | undefined
- /**
- * Slots in an epoch.
- */
- slotsInAnEpoch?: number | undefined
- /**
- * Enable steps tracing used for debug calls returning geth-style traces.
- */
- stepsTracing?: boolean | undefined
- /**
- * Interval in seconds at which the status is to be dumped to disk.
- */
- stateInterval?: number | undefined
- /**
- * This is an alias for both `loadState` and `dumpState`. It initializes the chain with the state stored at the
- * file, if it exists, and dumps the chain's state on exit
- */
- state?: string | undefined
- /**
- * Timeout in ms for requests sent to remote JSON-RPC server in forking mode.
- *
- * @defaultValue 45000
- */
- timeout?: number | undefined
- /**
- * The timestamp of the genesis block.
- */
- timestamp?: number | bigint | undefined
- /**
- * Number of blocks with transactions to keep in memory.
- */
- transactionBlockKeeper?: number | undefined
-}
/**
* Defines an Anvil instance.
*
* @example
* ```ts
- * const instance = anvil({ forkRpcUrl: 'https://cloudflare-eth.com', port: 8546 })
+ * const instance = Instance.anvil({ forkRpcUrl: 'https://cloudflare-eth.com', port: 8546 })
* await instance.start()
* // ...
* await instance.stop()
* ```
*/
-export const anvil = defineInstance((parameters?: AnvilParameters) => {
+export const anvil = Instance.define((parameters?: anvil.Parameters) => {
const { binary = 'anvil', ...args } = parameters || {}
const name = 'anvil'
@@ -302,3 +59,248 @@ export const anvil = defineInstance((parameters?: AnvilParameters) => {
},
}
})
+
+export declare namespace anvil {
+ export type Parameters = {
+ /**
+ * Number of dev accounts to generate and configure.
+ *
+ * @defaultValue 10
+ */
+ accounts?: number | undefined
+ /**
+ * Set the Access-Control-Allow-Origin response header (CORS).
+ *
+ * @defaultValue *
+ */
+ allowOrigin?: string | undefined
+ /**
+ * Enable autoImpersonate on startup
+ */
+ autoImpersonate?: boolean | undefined
+ /**
+ * The balance of every dev account in Ether.
+ *
+ * @defaultValue 10000
+ */
+ balance?: number | bigint | undefined
+ /**
+ * The base fee in a block.
+ */
+ blockBaseFeePerGas?: number | bigint | undefined
+ /**
+ * Block time in seconds for interval mining.
+ */
+ blockTime?: number | undefined
+ /**
+ * Path or alias to the Anvil binary.
+ */
+ binary?: string | undefined
+ /**
+ * The chain id.
+ */
+ chainId?: number | undefined
+ /**
+ * EIP-170: Contract code size limit in bytes. Useful to increase this because of tests.
+ *
+ * @defaultValue 0x6000 (~25kb)
+ */
+ codeSizeLimit?: number | undefined
+ /**
+ * Sets the number of assumed available compute units per second for this fork provider.
+ *
+ * @defaultValue 350
+ * @see https://github.com/alchemyplatform/alchemy-docs/blob/master/documentation/compute-units.md#rate-limits-cups
+ */
+ computeUnitsPerSecond?: number | undefined
+ /**
+ * Writes output of `anvil` as json to user-specified file.
+ */
+ configOut?: string | undefined
+ /**
+ * Sets the derivation path of the child key to be derived.
+ *
+ * @defaultValue m/44'/60'/0'/0/
+ */
+ derivationPath?: string | undefined
+ /**
+ * Disable the `call.gas_limit <= block.gas_limit` constraint.
+ */
+ disableBlockGasLimit?: boolean | undefined
+ /**
+ * Dump the state of chain on exit to the given file. If the value is a directory, the state will be
+ * written to `/state.json`.
+ */
+ dumpState?: string | undefined
+ /**
+ * Fetch state over a remote endpoint instead of starting from an empty state.
+ *
+ * If you want to fetch state from a specific block number, add a block number like `http://localhost:8545@1400000`
+ * or use the `forkBlockNumber` option.
+ */
+ forkUrl?: string | undefined
+ /**
+ * Fetch state from a specific block number over a remote endpoint.
+ *
+ * Requires `forkUrl` to be set.
+ */
+ forkBlockNumber?: number | bigint | undefined
+ /**
+ * Specify chain id to skip fetching it from remote endpoint. This enables offline-start mode.
+ *
+ * You still must pass both `forkUrl` and `forkBlockNumber`, and already have your required state cached
+ * on disk, anything missing locally would be fetched from the remote.
+ */
+ forkChainId?: number | undefined
+ /**
+ * Specify headers to send along with any request to the remote JSON-RPC server in forking mode.
+ *
+ * e.g. "User-Agent: test-agent"
+ *
+ * Requires `forkUrl` to be set.
+ */
+ forkHeader?: Record | undefined
+ /**
+ * Initial retry backoff on encountering errors.
+ */
+ forkRetryBackoff?: number | undefined
+ /**
+ * The block gas limit.
+ */
+ gasLimit?: number | bigint | undefined
+ /**
+ * The gas price.
+ */
+ gasPrice?: number | bigint | undefined
+ /**
+ * The EVM hardfork to use.
+ */
+ hardfork?:
+ | 'Frontier'
+ | 'Homestead'
+ | 'Dao'
+ | 'Tangerine'
+ | 'SpuriousDragon'
+ | 'Byzantium'
+ | 'Constantinople'
+ | 'Petersburg'
+ | 'Istanbul'
+ | 'Muirglacier'
+ | 'Berlin'
+ | 'London'
+ | 'ArrowGlacier'
+ | 'GrayGlacier'
+ | 'Paris'
+ | 'Shanghai'
+ | 'Cancun'
+ | 'Prague'
+ | 'Latest'
+ | undefined
+ /**
+ * The host the server will listen on.
+ */
+ host?: string | undefined
+ /**
+ * Initialize the genesis block with the given `genesis.json` file.
+ */
+ init?: string | undefined
+ /**
+ * Launch an ipc server at the given path or default path = `/tmp/anvil.ipc`.
+ */
+ ipc?: string | undefined
+ /**
+ * Initialize the chain from a previously saved state snapshot.
+ */
+ loadState?: string | undefined
+ /**
+ * BIP39 mnemonic phrase used for generating accounts.
+ */
+ mnemonic?: string | undefined
+ /**
+ * Automatically generates a BIP39 mnemonic phrase, and derives accounts from it.
+ */
+ mnemonicRandom?: boolean | undefined
+ /**
+ * Disable CORS.
+ */
+ noCors?: boolean | undefined
+ /**
+ * Disable auto and interval mining, and mine on demand instead.
+ */
+ noMining?: boolean | undefined
+ /**
+ * Disables rate limiting for this node's provider.
+ *
+ * @defaultValue false
+ * @see https://github.com/alchemyplatform/alchemy-docs/blob/master/documentation/compute-units.md#rate-limits-cups
+ */
+ noRateLimit?: boolean | undefined
+ /**
+ * Explicitly disables the use of RPC caching.
+ *
+ * All storage slots are read entirely from the endpoint.
+ */
+ noStorageCaching?: boolean | undefined
+ /**
+ * How transactions are sorted in the mempool.
+ *
+ * @defaultValue fees
+ */
+ order?: string | undefined
+ /**
+ * Run an Optimism chain.
+ */
+ optimism?: boolean | undefined
+ /**
+ * Port number to listen on.
+ *
+ * @defaultValue 8545
+ */
+ port?: number | undefined
+ /**
+ * Don't keep full chain history. If a number argument is specified, at most this number of states is kept in memory.
+ */
+ pruneHistory?: number | undefined | boolean
+ /**
+ * Number of retry requests for spurious networks (timed out requests).
+ *
+ * @defaultValue 5
+ */
+ retries?: number | undefined
+ /**
+ * Don't print anything on startup and don't print logs.
+ */
+ silent?: boolean | undefined
+ /**
+ * Slots in an epoch.
+ */
+ slotsInAnEpoch?: number | undefined
+ /**
+ * Enable steps tracing used for debug calls returning geth-style traces.
+ */
+ stepsTracing?: boolean | undefined
+ /**
+ * Interval in seconds at which the status is to be dumped to disk.
+ */
+ stateInterval?: number | undefined
+ /**
+ * This is an alias for both `loadState` and `dumpState`. It initializes the chain with the state stored at the
+ * file, if it exists, and dumps the chain's state on exit
+ */
+ state?: string | undefined
+ /**
+ * Timeout in ms for requests sent to remote JSON-RPC server in forking mode.
+ *
+ * @defaultValue 45000
+ */
+ timeout?: number | undefined
+ /**
+ * The timestamp of the genesis block.
+ */
+ timestamp?: number | bigint | undefined
+ /**
+ * Number of blocks with transactions to keep in memory.
+ */
+ transactionBlockKeeper?: number | undefined
+ }
+}
diff --git a/src/instances/package.json b/src/instances/package.json
deleted file mode 100644
index d724bf4..0000000
--- a/src/instances/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "type": "module",
- "types": "../_lib/exports/instances/index.d.ts",
- "module": "../_lib/exports/instances/index.js"
-}
diff --git a/src/instances/rundler.test.ts b/src/instances/rundler.test.ts
deleted file mode 100644
index 0a18d1e..0000000
--- a/src/instances/rundler.test.ts
+++ /dev/null
@@ -1,111 +0,0 @@
-import { afterEach, expect, test } from 'vitest'
-import type { Instance } from '../instance.js'
-import { type RundlerParameters, rundler } from './rundler.js'
-
-const instances: Instance[] = []
-
-const defineInstance = (parameters: RundlerParameters = {}) => {
- const instance = rundler(parameters)
- instances.push(instance)
- return instance
-}
-
-afterEach(async () => {
- for (const instance of instances) await instance.stop()
-})
-
-test('default', async () => {
- const messages: string[] = []
- const stdouts: string[] = []
-
- const instance = defineInstance()
-
- instance.on('message', (m) => messages.push(m))
- instance.on('stdout', (m) => stdouts.push(m))
-
- expect(instance.messages.get()).toMatchInlineSnapshot('[]')
-
- await instance.start()
- expect(instance.status).toEqual('started')
-
- expect(messages.join('')).toBeDefined()
- expect(stdouts.join('')).toBeDefined()
- expect(instance.messages.get().join('')).toBeDefined()
-
- await instance.stop()
- expect(instance.status).toEqual('stopped')
-
- expect(messages.join('')).toBeDefined()
- expect(stdouts.join('')).toBeDefined()
- expect(instance.messages.get()).toMatchInlineSnapshot('[]')
-})
-
-test('behavior: instance errored (duplicate ports)', async () => {
- const instance_1 = defineInstance({
- rpc: {
- port: 1337,
- },
- })
- const instance_2 = defineInstance({
- rpc: {
- port: 1337,
- },
- })
-
- await instance_1.start()
- await expect(() => instance_2.start()).rejects.toThrowError(
- 'Failed to start process "rundler"',
- )
-})
-
-test('behavior: start and stop multiple times', async () => {
- const instance = defineInstance()
-
- await instance.start()
- await instance.stop()
- await instance.start()
- await instance.stop()
- await instance.start()
- await instance.stop()
- await instance.start()
- await instance.stop()
-})
-
-test('behavior: can subscribe to stderr', async () => {
- const messages: string[] = []
-
- const instance_1 = defineInstance({
- rpc: {
- port: 1338,
- },
- })
- const instance_2 = defineInstance({
- rpc: {
- port: 1338,
- },
- })
-
- await instance_1.start()
- instance_2.on('stderr', (message) => messages.push(message))
- await expect(() => instance_2.start()).rejects.toThrowError(
- 'Failed to start process "rundler"',
- )
-})
-
-test('behavior: exit', async () => {
- const instance = defineInstance()
-
- let exitCode: number | null | undefined = undefined
- instance.on('exit', (code) => {
- exitCode = code
- })
-
- await instance.start()
- expect(instance.status).toEqual('started')
-
- instance._internal.process.kill()
-
- await new Promise((res) => setTimeout(res, 100))
- expect(instance.status).toEqual('stopped')
- expect(typeof exitCode !== 'undefined').toBeTruthy()
-})
diff --git a/src/instances/rundler.ts b/src/instances/rundler.ts
deleted file mode 100644
index b9ddf1e..0000000
--- a/src/instances/rundler.ts
+++ /dev/null
@@ -1,451 +0,0 @@
-import getPort from 'get-port'
-
-import { defineInstance } from '../instance.js'
-import { execa } from '../processes/execa.js'
-import { toArgs } from '../utils.js'
-
-export type RundlerParameters = {
- /**
- * The path to the rundler binary
- *
- * @default rundler
- */
- binary?: string
-
- /**
- * The version of the entrypoint to use
- *
- * @default 0.6.0
- */
- entryPointVersion?: '0.6.0' | '0.7.0'
-
- /**
- * Network to look up a hardcoded chain spec.
- * @default dev
- */
- network?: string
-
- /**
- * Path to a chain spec TOML file.
- */
- chainSpec?: string
-
- /**
- * EVM Node HTTP URL to use.
- *
- * @default http://localhost:8545
- */
- nodeHttp?: string
-
- /**
- * Maximum verification gas.
- * @default 5000000
- */
- maxVerificationGas?: number
-
- /**
- * Maximum bundle gas.
- * @default 25000000
- */
- maxBundleGas?: number
-
- /**
- * Minimum stake value.
- * @default 1000000000000000000
- */
- minStakeValue?: number
-
- /**
- * Minimum unstake delay.
- * @default 84600
- */
- minUnstakeDelay?: number
-
- /**
- * Number of blocks to search when calling eth_getUserOperationByHash.
- * @default 100
- */
- userOperationEventBlockDistance?: number
-
- /**
- * Maximum gas for simulating handle operations.
- * @default 20000000
- */
- maxSimulateHandleOpsGas?: number
-
- /**
- * The gas fee to use during verification estimation.
- * @default 1000000000000 10K gwei
- */
- verificationEstimationGasFee?: number
-
- /**
- * Bundle transaction priority fee overhead over network value.
- * @default 0
- */
- bundlePriorityFeeOverheadPercent?: number
-
- /**
- * Priority fee mode kind.
- * Possible values are base_fee_percent and priority_fee_increase_percent.
- * @default priority_fee_increase_percent
- */
- priorityFeeModeKind?: 'base_fee_percent' | 'priority_fee_increase_percent'
-
- /**
- * Priority fee mode value.
- * @default 0
- */
- priorityFeeModeValue?: number
-
- /**
- * Percentage of the current network fees a user operation must have in order to be accepted into the mempool.
- * @default 100
- */
- baseFeeAcceptPercent?: number
-
- /**
- * AWS region.
- * @default us-east-1
- */
- awsRegion?: string
-
- /**
- * Interval at which the builder polls an RPC node for new blocks and mined transactions.
- * @default 100
- */
- ethPollIntervalMillis?: number
-
- /**
- * Flag for unsafe bundling mode. When set Rundler will skip checking simulation rules (and any debug_traceCall).
- *
- * @default true
- */
- unsafe?: boolean
-
- /**
- * Path to the mempool configuration file.
- * This path can either be a local file path or an S3 url.
- */
- mempoolConfigPath?: string
-
- metrics?: {
- /**
- * Port to listen on for metrics requests.
- * @default 8080
- */
- port?: number
-
- /**
- * Host to listen on for metrics requests.
- * @default 0.0.0.0
- */
- host?: string
-
- /**
- * Tags for metrics in the format key1=value1,key2=value2,...
- */
- tags?: string
-
- /**
- * Sample interval to use for sampling metrics.
- * @default 1000
- */
- sampleIntervalMillis?: number
- }
-
- logging?: {
- /**
- * Log file. If not provided, logs will be written to stdout.
- */
- file?: string
-
- /**
- * If set, logs will be written in JSON format.
- */
- json?: boolean
- }
-
- rpc?: {
- /**
- * Port to listen on for JSON-RPC requests.
- * @default 3000
- */
- port?: number
-
- /**
- * Host to listen on for JSON-RPC requests.
- * @default 127.0.0.1
- */
- host?: string
-
- /**
- * Which APIs to expose over the RPC interface.
- * @default eth,rundler
- */
- api?: string
-
- /**
- * Timeout for RPC requests.
- * @default 20
- */
- timeoutSeconds?: number
-
- /**
- * Maximum number of concurrent connections.
- * @default 100
- */
- maxConnections?: number
- }
-
- pool?: {
- /**
- * Maximum size in bytes for the pool.
- * @default 500000000, 0.5 GB
- */
- maxSizeInBytes?: number
-
- /**
- * Maximum number of user operations for an unstaked sender.
- * @default 4
- */
- sameSenderMempoolCount?: number
-
- /**
- * Minimum replacement fee increase percentage.
- * @default 10
- */
- minReplacementFeeIncreasePercentage?: number
-
- /**
- * Path to a blocklist file.
- * This path can either be a local file path or an S3 url.
- */
- blocklistPath?: string
-
- /**
- * Path to an allowlist file.
- * This path can either be a local file path or an S3 url.
- */
- allowlistPath?: string
-
- /**
- * Size of the chain history.
- */
- chainHistorySize?: number
-
- /**
- * Boolean field that sets whether the pool server starts with paymaster tracking enabled.
- * @default true
- */
- paymasterTrackingEnabled?: boolean
-
- /**
- * Length of the paymaster cache.
- * @default 10_000
- */
- paymasterCacheLength?: number
-
- /**
- * Boolean field that sets whether the pool server starts with reputation tracking enabled.
- * @default true
- */
- reputationTrackingEnabled?: boolean
-
- /**
- * The minimum number of blocks that a UO must stay in the mempool before it can be requested to be dropped by the user.
- * @default 10
- */
- dropMinNumBlocks?: number
- }
-
- builder?: {
- /**
- * Private key to use for signing transactions.
- * If used with awsKmsKeyIds, then explicitly pass in `null` here.
- *
- * @default 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
- */
- privateKey?: string
-
- /**
- * AWS KMS key IDs to use for signing transactions (comma-separated).
- * Only required if privateKey is not provided.
- */
- awsKmsKeyIds?: string
-
- /**
- * Redis URI to use for KMS leasing.
- * Only required when awsKmsKeyIds are provided.
- *
- * @default ""
- */
- redisUri?: string
-
- /**
- * Redis lock TTL in milliseconds.
- * Only required when awsKmsKeyIds are provided.
- * @default 60000
- */
- redisLockTtlMillis?: number
-
- /**
- * Maximum number of ops to include in one bundle.
- * @default 128
- */
- maxBundleSize?: number
-
- /**
- * If present, the URL of the ETH provider that will be used to send transactions.
- * Defaults to the value of nodeHttp.
- */
- submitUrl?: string
-
- /**
- * Choice of what sender type to use for transaction submission.
- * @default raw
- * options: raw, conditional, flashbots, polygon_bloxroute
- */
- sender?: 'raw' | 'conditional' | 'flashbots' | 'polygonBloxroute'
-
- /**
- * After submitting a bundle transaction, the maximum number of blocks to wait for that transaction to mine before trying to resend with higher gas fees.
- * @default 2
- */
- maxBlocksToWaitForMine?: number
-
- /**
- * Percentage amount to increase gas fees when retrying a transaction after it failed to mine.
- * @default 10
- */
- replacementFeePercentIncrease?: number
-
- /**
- * Maximum number of fee increases to attempt.
- * Seven increases of 10% is roughly 2x the initial fees.
- * @default 7
- */
- maxFeeIncreases?: number
-
- /**
- * Additional builders to send bundles to through the Flashbots relay RPC (comma-separated).
- * List of builders that the Flashbots RPC supports can be found here.
- * @default flashbots
- */
- flashbotsRelayBuilders?: string
-
- /**
- * Authorization key to use with the Flashbots relay.
- * See here for more info.
- * @default None
- */
- flashbotsRelayAuthKey?: string
-
- /**
- * If using the bloxroute transaction sender on Polygon, this is the auth header to supply with the requests.
- * @default None
- */
- bloxrouteAuthHeader?: string
-
- /**
- * If running multiple builder processes, this is the index offset to assign unique indexes to each bundle sender.
- * @default 0
- */
- indexOffset?: number
- }
-}
-
-/**
- * Defines a Rundler instance.
- *
- * @example
- * ```ts
- * const instance = rundler({
- * nodeHttp: 'http://localhost:8545',
- * });
- *
- * await instance.start()
- * // ...
- * await instance.stop()
- * ```
- */
-export const rundler = defineInstance((parameters?: RundlerParameters) => {
- const { binary = 'rundler', ...args } = (parameters ??
- {}) as RundlerParameters
-
- const host = '127.0.0.1'
- const name = 'rundler'
- const process = execa({ name })
-
- return {
- _internal: {
- args,
- get process() {
- return process._internal.process
- },
- },
- host,
- port: args.rpc?.port ?? 3000,
- name,
- async start({ port = args.rpc?.port ?? 3000 }, options) {
- const args_ = {
- ...args,
- builder: {
- ...args.builder,
- privateKey:
- args.builder?.privateKey ??
- '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
- },
- entryPointVersion: undefined,
- maxVerificationGas: args.maxVerificationGas ?? 10000000,
- network: args.network ?? 'dev',
- nodeHttp: args.nodeHttp ?? 'http://localhost:8545',
- metrics: {
- ...args.metrics,
- port: await getPort(),
- },
- rpc: {
- ...args.rpc,
- port,
- },
- unsafe: args.unsafe ?? true,
- userOperationEventBlockDistance:
- args.userOperationEventBlockDistance ?? 100,
- } satisfies RundlerParameters
-
- const entrypointArgs = (() => {
- if (args.entryPointVersion === '0.6.0')
- return ['--disable_entry_point_v0_7']
- return ['--disable_entry_point_v0_6']
- })()
-
- return await process.start(
- ($) =>
- $(
- binary,
- ['node', ...toArgs(args_, { casing: 'snake' }), ...entrypointArgs],
- {
- env: {
- RUST_LOG: 'debug',
- },
- },
- ),
- {
- ...options,
- resolver({ process, reject, resolve }) {
- process.stdout.on('data', (data) => {
- const message = data.toString()
- if (message.includes('Started RPC server')) resolve()
- })
- process.stderr.on('data', (data) => {
- reject(data.toString())
- })
- },
- },
- )
- },
- async stop() {
- await process.stop()
- },
- }
-})
diff --git a/src/instances/silius.ts b/src/instances/silius.ts
deleted file mode 100644
index d306045..0000000
--- a/src/instances/silius.ts
+++ /dev/null
@@ -1,347 +0,0 @@
-import { platform } from 'node:os'
-
-import { rmSync } from 'node:fs'
-import { defineInstance } from '../instance.js'
-import { execa } from '../processes/execa.js'
-import { toArgs } from '../utils.js'
-
-export type SiliusParameters = {
- /**
- * The bundler beneficiary address.
- */
- beneficiary?: string | undefined
- /**
- * The bundle interval in seconds.
- * @default 10
- */
- bundleInterval?: number | undefined
- bundler?:
- | {
- /**
- * Bundler gRPC address to listen on.
- * @default '127.0.0.1'
- */
- addr?: string | undefined
- /**
- * Bundler gRPC port to listen on.
- * @default 3003
- */
- port?: number | undefined
- }
- | undefined
- /**
- * The chain id.
- * @default 1
- */
- chain?: number | undefined
- /**
- * Path to the data directory.
- */
- dataDir?: string | undefined
- discovery?:
- | {
- /**
- * The udp4 port to broadcast to peers in order to reach back for discovery.
- * @default 9000
- */
- port?: number | undefined
- }
- | undefined
- /**
- * Indicates whether the access list is enabled.
- */
- enableAccessList?: boolean | undefined
- /**
- * Indicates whether the P2P mode is enabled.
- */
- enableP2p?: boolean | undefined
- /**
- * Indicates whether the metrics are enabled.
- */
- enableMetrics?: boolean | undefined
- /**
- * The entry points for the bundler.
- */
- entryPoints?: string[] | undefined
- /**
- * RPC URL of the execution client.
- */
- ethClientAddress?: string | undefined
- /**
- * Ethereum execution client proxy HTTP RPC endpoint.
- */
- ethClientProxyAddress?: string | undefined
- http?:
- | {
- /**
- * HTTP address to listen on.
- * @default '127.0.0.1'
- */
- addr?: string | undefined
- /**
- * Configures the HTTP RPC API modules
- * @default 'eth'
- */
- api?: string[] | undefined
- /**
- * Configures the allowed CORS domains.
- * @default '*'
- */
- corsdomain?: string[] | undefined
- /**
- * HTTP port to listen on.
- * @default 3000
- */
- port?: number | undefined
- }
- | undefined
- /**
- * Maximum gas for verification.
- * @default 5000000
- */
- maxVerificationGas?: bigint | undefined
- metrics?:
- | {
- /**
- * Metrics address to listen on.
- * @default '127.0.0.1'
- */
- addr?: string | undefined
- /**
- * Metrics port to listen on.
- * @default 3030
- */
- port?: number | undefined
- }
- | undefined
- /**
- * Minimum balance for the beneficiary account.
- * @default 100000000000000000 wei
- */
- minBalance?: bigint | undefined
- /**
- * Minimum priority fee per gas.
- * @default 0
- */
- minPriorityFeePerGas?: bigint | undefined
- /**
- * Minimum stake required for entities.
- * @default 1
- */
- minStake?: number | undefined
- /**
- * Path to the mnemonic file.
- */
- mnemonicPath: string | undefined
- /**
- * The path to the file where the p2p private key is stored.
- */
- nodekey?: string | undefined
- /**
- * The path to the file where the p2p enr is stored.
- */
- nodeenr?: string | undefined
- p2p?:
- | {
- /**
- * Sets the p2p listen address
- * @default '0.0.0.0'
- */
- addr?: string | undefined
- /**
- * The ipv4 address to broadcast to peers about which address we are listening on.
- */
- baddr?: string | undefined
- /**
- * The tcp4 port to boardcast to peers in order to reach back for discovery.
- * @default 9000
- */
- bport?: number | undefined
- }
- | undefined
- /**
- * Poll interval event filters and pending transactions in milliseconds.
- * @default 500
- */
- pollInterval?: number | undefined
- /**
- * Port to start the instance on.
- */
- port?: number | undefined
- /**
- * Sets the send bundle mode.
- * @default "ethereum-client"
- */
- sendBundleMode?: string | undefined
- uopool?:
- | {
- /**
- * UoPool gRPC address to listen on.
- * @default '127.0.0.1'
- */
- addr?: string | undefined
- /**
- * UoPool gRPC port to listen on.
- * @default 3002
- */
- port?: number | undefined
- }
- | undefined
- /**
- * Sets the UoPool mode.
- */
- uopoolMode?: string | undefined
- /**
- * Sets the verbosity level.
- * @default 2
- */
- verbosity?: number | undefined
- /**
- * Addresses of whitelisted entities.
- */
- whitelist?: string[] | undefined
- ws?:
- | {
- /**
- * WS address to listen on.
- * @default '127.0.0.1'
- */
- addr?: string | undefined
- /**
- * Configures the HTTP RPC API modules
- * @default 'eth'
- */
- api?: string[] | undefined
- /**
- * Configures the allowed WS origins.
- * @default '*'
- */
- origins?: string[] | undefined
- /**
- * WS port to listen on.
- * @default 3001
- */
- port?: number | undefined
- }
- | undefined
-}
-
-/**
- * Defines an Anvil instance.
- *
- * @example
- * ```ts
- * const instance = silius({
- * port: 4337,
- * })
- * await instance.start()
- * // ...
- * await instance.stop()
- * ```
- */
-export const silius = defineInstance((parameters?: SiliusParameters) => {
- const args = (parameters || {}) as SiliusParameters
- const { dataDir = '.local', mnemonicPath, port: _, ...rest } = args
-
- const host = 'localhost'
- const name = 'silius'
- const process = execa({ name })
- let port = args.port ?? 4000
-
- return {
- _internal: {
- args,
- get process() {
- return process._internal.process
- },
- },
- host,
- name,
- port,
- async start({ port: port_ = port }, options) {
- port = port_
-
- const args_ = [
- ...(platform() === 'linux' ? ['--net', 'host'] : []),
- '--add-host',
- 'host.docker.internal:host-gateway',
- '--add-host',
- 'localhost:host-gateway',
- '-p',
- `${port}:${port}`,
- '-v',
- `${mnemonicPath}:/data/silius/mnemonic`,
- '-v',
- `./${dataDir}/${port_}/db:/data/silius/db`,
- 'ghcr.io/silius-rs/silius:latest',
- 'node',
- '--datadir',
- 'data/silius',
- '--mnemonic-file',
- 'data/silius/mnemonic',
- '--http',
- '--ws',
- ...toArgs({
- ...rest,
- beneficiary:
- rest.beneficiary ?? '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
- bundler: {
- ...rest.bundler,
- addr: rest.bundler?.addr ?? '0.0.0.0',
- },
- entryPoints: rest.entryPoints ?? [
- '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
- ],
- ethClientAddress: rest.ethClientAddress?.replaceAll(
- /127\.0\.0\.1|0\.0\.0\.0/g,
- 'host.docker.internal',
- ),
- ethClientProxyAddress: rest.ethClientProxyAddress?.replaceAll(
- /127\.0\.0\.1|0\.0\.0\.0/g,
- 'host.docker.internal',
- ),
- http: {
- ...rest.http,
- addr: rest.http?.addr ?? '0.0.0.0',
- api: rest.http?.api ?? ['eth', 'debug', 'web3'],
- port,
- },
- metrics: {
- ...rest.metrics,
- addr: rest.metrics?.addr ?? '0.0.0.0',
- },
- uopool: {
- ...rest.uopool,
- addr: rest.uopool?.addr ?? '0.0.0.0',
- },
- ws: {
- ...rest.ws,
- addr: rest.ws?.addr ?? '0.0.0.0',
- api: rest.ws?.api ?? ['eth', 'debug', 'web3'],
- port: rest.ws?.port ?? 4001,
- },
- } satisfies Partial),
- ]
-
- return await process.start(($) => $`docker run ${args_}`, {
- ...options,
- resolver({ process, resolve, reject }) {
- process.stdout.on('data', (data) => {
- const message = data.toString()
- if (message.includes('Started bundler JSON-RPC server')) resolve()
- })
- process.stderr.on('data', (data) => {
- if (data.toString().includes('WARNING')) return
- reject(data)
- })
- },
- })
- },
- async stop() {
- try {
- rmSync(`${dataDir}/${port}`, { recursive: true, force: true })
- } catch {}
- await process.stop()
- },
- }
-})
diff --git a/src/instances/stackup.test.ts b/src/instances/stackup.test.ts
deleted file mode 100644
index 329ec95..0000000
--- a/src/instances/stackup.test.ts
+++ /dev/null
@@ -1,106 +0,0 @@
-import getPort from 'get-port'
-import { afterEach, beforeAll, expect, test } from 'vitest'
-
-import { stackupOptions } from '../../test/utils.js'
-import type { Instance } from '../instance.js'
-import { anvil } from './anvil.js'
-import { type StackupParameters, stackup } from './stackup.js'
-
-const instances: Instance[] = []
-
-const port = await getPort()
-
-const defineInstance = (parameters?: Partial) => {
- const instance = stackup({
- ...stackupOptions({ port, pool: false }),
- ...parameters,
- })
- instances.push(instance)
- return instance
-}
-
-beforeAll(() => anvil({ port }).start())
-
-afterEach(async () => {
- for (const instance of instances) await instance.stop().catch(() => {})
-})
-
-test('default', async () => {
- const messages: string[] = []
- const stdouts: string[] = []
-
- const instance = defineInstance()
-
- instance.on('message', (m) => messages.push(m))
- instance.on('stdout', (m) => stdouts.push(m))
-
- expect(instance.messages.get()).toMatchInlineSnapshot('[]')
-
- await instance.start()
- expect(instance.status).toEqual('started')
-
- expect(messages.join('')).toBeDefined()
- expect(stdouts.join('')).toBeDefined()
- expect(instance.messages.get().join('')).toBeDefined()
-
- await instance.stop()
- expect(instance.status).toEqual('stopped')
-
- expect(messages.join('')).toBeDefined()
- expect(stdouts.join('')).toBeDefined()
- expect(instance.messages.get()).toMatchInlineSnapshot('[]')
-})
-
-test('behavior: instance errored (duplicate ports)', async () => {
- const instance_1 = defineInstance({
- port: 1337,
- })
- const instance_2 = defineInstance({
- port: 1337,
- })
-
- await instance_1.start()
- await expect(() => instance_2.start()).rejects.toThrowError()
-})
-
-test('behavior: start and stop multiple times', async () => {
- const instance = defineInstance()
-
- await instance.start()
- await instance.stop()
- await instance.start()
- await instance.stop()
- await instance.start()
- await instance.stop()
- await instance.start()
- await instance.stop()
-})
-
-test('behavior: can subscribe to stderr', async () => {
- const messages: string[] = []
-
- const instance_1 = defineInstance({ port: 1337 })
- const instance_2 = defineInstance({ port: 1337 })
-
- await instance_1.start()
- instance_2.on('stderr', (message) => messages.push(message))
- await expect(instance_2.start()).rejects.toThrowError()
-})
-
-test('behavior: exit', async () => {
- const instance = defineInstance()
-
- let exitCode: number | null | undefined = undefined
- instance.on('exit', (code) => {
- exitCode = code
- })
-
- await instance.start()
- expect(instance.status).toEqual('started')
-
- instance._internal.process.kill()
-
- await new Promise((res) => setTimeout(res, 100))
- expect(instance.status).toEqual('stopped')
- expect(typeof exitCode !== 'undefined').toBeTruthy()
-})
diff --git a/src/instances/stackup.ts b/src/instances/stackup.ts
deleted file mode 100644
index c6fb12c..0000000
--- a/src/instances/stackup.ts
+++ /dev/null
@@ -1,162 +0,0 @@
-import { platform } from 'node:os'
-import { defineInstance } from '../instance.js'
-import { execa } from '../processes/execa.js'
-
-export type StackupParameters = {
- /**
- * The name of the native tracer to use during validation. This will be "bundlerCollectorTracer" if using builds from ERC-4337 execution client repo.
- * Defaults to address of `privateKey`.
- */
- beneficiary?: string | undefined
- /**
- * Directory to store the embedded database.
- * @default /tmp/stackup_bundler
- */
- dataDirectory?: string | undefined
- /**
- * RPC url to the execution client.
- */
- ethClientUrl: string
- /**
- * A boolean value for bundlers on an Arbitrum stack network to properly account for the L1 callData cost.
- * @default false
- */
- isArbStackNetwork?: boolean | undefined
- /**
- * A boolean value for bundlers on an OP stack network to properly account for the L1 callData cost.
- * @default false
- */
- isOpStackNetwork?: boolean | undefined
- /**
- * A boolean value for bundlers on a network that supports RIP-7212 precompile for secp256r1 signature verification.
- * @default false
- */
- isRip7212Supported?: boolean | undefined
- /**
- * The maximum gas limit that can be submitted per UserOperation batch.
- * @default 18_000_000
- */
- maxBatchGasLimit?: number | undefined
- /**
- * The maximum duration that a userOp can stay in the mempool before getting dropped.
- * @default 180
- */
- maxOpTtlSeconds?: number | undefined
- /**
- * The maximum verificationGasLimit on a received UserOperation.
- * @default 6_000_000
- */
- maxVerificationGas?: number | undefined
- /**
- * The maximum block range when looking up a User Operation with eth_getUserOperationReceipt or eth_getUserOperationByHash.
- *
- * Higher limits allow for fetching older User Operations but will result in higher request latency due to additional compute on the underlying node.
- *
- * @default 2_000
- */
- opLookupLimit?: number | undefined
- /**
- * Port to start the instance on.
- */
- port?: number | undefined
- /**
- * The private key for the EOA used to relay User Operation bundles to the EntryPoint.
- */
- privateKey: string
- /**
- * EntryPoint addresses to support. The first address is the preferred EntryPoint.
- */
- supportedEntryPoints?: string[]
-}
-
-/**
- * Defines an Anvil instance.
- *
- * @example
- * ```ts
- * const instance = stackup({
- * ethClientUrl: 'http://localhost:8545',
- * port: 4337,
- * privateKey: '0x...'
- * })
- * await instance.start()
- * // ...
- * await instance.stop()
- * ```
- */
-export const stackup = defineInstance((parameters?: StackupParameters) => {
- const args = (parameters || {}) as StackupParameters
-
- const host = 'localhost'
- const name = 'stackup'
- const process = execa({ name })
-
- return {
- _internal: {
- args,
- get process() {
- return process._internal.process
- },
- },
- host,
- name,
- port: args.port ?? 4337,
- async start({ port = args.port }, options) {
- const args_ = [
- ...(platform() === 'linux' ? ['--net', 'host'] : []),
- '--add-host',
- 'host.docker.internal:host-gateway',
- '--add-host',
- 'localhost:host-gateway',
- '-p',
- `${port}:${port}`,
- '-e',
- `ERC4337_BUNDLER_PORT=${port}`,
- ...Object.entries(args).flatMap(([key, value]) => {
- if (key === 'port') return []
- if (value === undefined) return []
-
- if (key === 'ethClientUrl')
- value = (value as string).replaceAll(
- /127\.0\.0\.1|0\.0\.0\.0/g,
- 'host.docker.internal',
- )
- if (key === 'privateKey') value = (value as string).replace('0x', '')
-
- return [
- '-e',
- `ERC4337_BUNDLER_${key
- .replace(/([a-z])([A-Z])/g, '$1_$2')
- .toUpperCase()}=${value}`,
- ]
- }),
- 'stackupwallet/stackup-bundler:latest',
- '/app/stackup-bundler',
- 'start',
- '--mode',
- 'private',
- ]
- return await process.start(($) => $`docker run ${args_}`, {
- ...options,
- resolver({ process, resolve, reject }) {
- process.stderr.on('data', async (data) => {
- const message = data.toString()
- // For some reason, `stackup-bundler` logs to stderr. So we have to try
- // and dissect what is an error, and what is not. 😅
- if (message.includes('Set nextTxnTs to'))
- setTimeout(() => resolve(), 100)
- else if (
- message
- .toLowerCase()
- .match(/panic|error|connection refused|address already in use/)
- )
- reject(data)
- })
- },
- })
- },
- async stop() {
- await process.stop()
- },
- }
-})
diff --git a/src/instances/silius.test.ts b/src/instances/tempo.test.ts
similarity index 56%
rename from src/instances/silius.test.ts
rename to src/instances/tempo.test.ts
index 019c88f..fb79b91 100644
--- a/src/instances/silius.test.ts
+++ b/src/instances/tempo.test.ts
@@ -1,26 +1,17 @@
import getPort from 'get-port'
-import { afterEach, beforeAll, expect, test } from 'vitest'
+import { Instance } from 'prool'
+import { afterEach, expect, test } from 'vitest'
-import { siliusOptions } from '../../test/utils.js'
-import type { Instance } from '../instance.js'
-import { anvil } from './anvil.js'
-import { silius } from './silius.js'
-
-const instances: Instance[] = []
+const instances: Instance.Instance[] = []
const port = await getPort()
-const defineInstance = (parameters?: Partial<{}>) => {
- const instance = silius({
- ...siliusOptions({ port, pool: false }),
- ...parameters,
- })
+const defineInstance = (parameters: Instance.tempo.Parameters = {}) => {
+ const instance = Instance.tempo({ port, ...parameters })
instances.push(instance)
return instance
}
-beforeAll(() => anvil({ port }).start())
-
afterEach(async () => {
for (const instance of instances) await instance.stop().catch(() => {})
})
@@ -52,15 +43,11 @@ test('default', async () => {
})
test('behavior: instance errored (duplicate ports)', async () => {
- const instance_1 = defineInstance({
- port: 1337,
- })
- const instance_2 = defineInstance({
- port: 1337,
- })
+ const instance_1 = defineInstance({ port: 8546 })
+ const instance_2 = defineInstance({ port: 8546 })
await instance_1.start()
- await expect(() => instance_2.start()).rejects.toThrowError()
+ await expect(() => instance_2.start()).rejects.toThrowError('Failed to start')
})
test('behavior: start and stop multiple times', async () => {
@@ -76,33 +63,22 @@ test('behavior: start and stop multiple times', async () => {
await instance.stop()
})
-test('behavior: can subscribe to stderr', async () => {
+test('behavior: can subscribe to stdout', async () => {
const messages: string[] = []
-
- const instance_1 = defineInstance({ port: 1338 })
- const instance_2 = defineInstance({ port: 1338 })
-
- await instance_1.start()
- instance_2.on('stderr', (message) => messages.push(message))
- await expect(instance_2.start()).rejects.toThrowError()
-})
-
-test('behavior: exit', async () => {
const instance = defineInstance()
- const { promise, resolve } = Promise.withResolvers()
-
- let exitCode: number | null | undefined = undefined
- instance.on('exit', (code) => {
- exitCode = code
- resolve()
- })
+ instance.on('stdout', (message) => messages.push(message))
await instance.start()
- expect(instance.status).toEqual('started')
+ expect(messages.length).toBeGreaterThanOrEqual(1)
+})
- instance._internal.process.kill()
+test('behavior: can subscribe to stderr', async () => {
+ const messages: string[] = []
- await promise
- expect(instance.status).toEqual('stopped')
- expect(typeof exitCode !== 'undefined').toBeTruthy()
+ const instance_1 = defineInstance({ port: 8546 })
+ const instance_2 = defineInstance({ port: 8546 })
+
+ await instance_1.start()
+ instance_2.on('stderr', (message) => messages.push(message))
+ await expect(instance_2.start()).rejects.toThrow('Failed to start')
})
diff --git a/src/instances/tempo.ts b/src/instances/tempo.ts
new file mode 100644
index 0000000..26d28eb
--- /dev/null
+++ b/src/instances/tempo.ts
@@ -0,0 +1,278 @@
+import * as os from 'node:os'
+import * as path from 'node:path'
+import {
+ GenericContainer,
+ type StartedTestContainer,
+ Wait,
+} from 'testcontainers'
+import * as Instance from '../Instance.js'
+import { execa } from '../processes/execa.js'
+
+export function command(parameters: tempo.Parameters): string[] {
+ const { faucet, port } = parameters
+ const dataDir = path.join(os.tmpdir(), '.prool', `tempo.${port}`)
+ return [
+ 'node',
+ `--authrpc.port=${port! + 30}`,
+ `--datadir=${dataDir}`,
+ '--dev',
+ `--dev.block-time=${parameters?.blockTime ?? '50ms'}`,
+ '--engine.disable-precompile-cache',
+ '--engine.legacy-state-root',
+ '--faucet.address',
+ ...(faucet?.addresses ?? [
+ '0x20c0000000000000000000000000000000000000',
+ '0x20c0000000000000000000000000000000000001',
+ '0x20c0000000000000000000000000000000000002',
+ '0x20c0000000000000000000000000000000000003',
+ ]),
+ `--faucet.amount=${faucet?.amount ?? '1000000000000'}`,
+ '--faucet.enabled',
+ `--faucet.private-key=${faucet?.privateKey ?? '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'}`,
+ '--http',
+ '--http.addr=0.0.0.0',
+ '--http.api=all',
+ '--http.corsdomain=*',
+ `--http.port=${port!}`,
+ `--port=${port! + 10}`,
+ '--txpool.basefee-max-count=10000000000000',
+ '--txpool.basefee-max-size=10000',
+ '--txpool.max-account-slots=500000',
+ '--txpool.pending-max-count=10000000000000',
+ '--txpool.pending-max-size=10000',
+ '--txpool.queued-max-count=10000000000000',
+ '--txpool.queued-max-size=10000',
+ `--ws.port=${port! + 20}`,
+ ]
+}
+
+/**
+ * Defines a Tempo instance.
+ *
+ * @example
+ * ```ts
+ * const instance = Instance.tempo({ port: 8545 })
+ * await instance.start()
+ * // ...
+ * await instance.stop()
+ * ```
+ */
+export const tempo = Instance.define((parameters?: tempo.Parameters) => {
+ const { binary = 'tempo', log: log_, ...args } = parameters || {}
+
+ const log = (() => {
+ try {
+ return JSON.parse(log_ as string)
+ } catch {
+ return log_
+ }
+ })()
+ const RUST_LOG = log && typeof log !== 'boolean' ? log : ''
+
+ const name = 'tempo'
+ const process = execa({ name })
+
+ return {
+ _internal: {
+ args,
+ get process() {
+ return process._internal.process
+ },
+ },
+ host: args.host ?? 'localhost',
+ name,
+ port: args.port ?? 8545,
+ async start({ port = args.port }, options) {
+ return await process.start(
+ ($) =>
+ $({
+ env: {
+ RUST_LOG,
+ },
+ })`${[binary, ...command({ ...parameters, port })]}`,
+ {
+ ...options,
+ // Resolve when the process is listening via "RPC HTTP server started" message.
+ resolver({ process, reject, resolve }) {
+ process.stdout.on('data', (data) => {
+ const message = data.toString()
+ if (log) console.log(message)
+ if (message.includes('RPC HTTP server started')) resolve()
+ if (message.includes('shutting down')) reject('shutting down')
+ })
+ process.stderr.on('data', (data) => {
+ const message = data.toString()
+ if (log) console.error(message)
+ })
+ },
+ },
+ )
+ },
+ async stop() {
+ await process.stop()
+ },
+ }
+})
+
+export declare namespace tempo {
+ export type Parameters = {
+ /**
+ * Path or alias to the Tempo binary.
+ */
+ binary?: string | undefined
+ /**
+ * Interval between blocks.
+ */
+ blockTime?: string | undefined
+ /**
+ * Faucet options.
+ */
+ faucet?:
+ | {
+ /**
+ * Target token addresses for the faucet to be funding with
+ */
+ addresses?: string[] | undefined
+ /**
+ * Amount for each faucet funding transaction
+ */
+ amount?: bigint | undefined
+ /**
+ * Faucet funding mnemonic
+ */
+ privateKey?: string | undefined
+ }
+ | undefined
+ /**
+ * Rust log level configuration (sets RUST_LOG environment variable).
+ * Can be a log level or a custom filter string.
+ */
+ log?:
+ | 'trace'
+ | 'debug'
+ | 'info'
+ | 'warn'
+ | 'error'
+ | (string & {})
+ | boolean
+ | undefined
+ /**
+ * Host the server will listen on.
+ */
+ host?: string | undefined
+ /**
+ * Port the server will listen on.
+ */
+ port?: number | undefined
+ }
+}
+
+/**
+ * Defines a Tempo instance.
+ *
+ * @example
+ * ```ts
+ * const instance = Instance.tempoDocker({ port: 8545 })
+ * await instance.start()
+ * // ...
+ * await instance.stop()
+ * ```
+ */
+export const tempoDocker = Instance.define(
+ (parameters?: tempoDocker.Parameters) => {
+ const {
+ containerName = `tempo.${crypto.randomUUID()}`,
+ image = 'ghcr.io/tempoxyz/tempo:latest',
+ log: log_,
+ ...args
+ } = parameters || {}
+
+ const log = (() => {
+ try {
+ return JSON.parse(log_ as string)
+ } catch {
+ return log_
+ }
+ })()
+ const RUST_LOG = log && typeof log !== 'boolean' ? log : ''
+
+ const name = 'tempo'
+ let container: StartedTestContainer | undefined
+
+ return {
+ _internal: {
+ args,
+ },
+ host: args.host ?? 'localhost',
+ name,
+ port: args.port ?? 8545,
+ async start({ port = args.port }, { emitter }) {
+ const promise = Promise.withResolvers()
+
+ const c = new GenericContainer(image)
+ .withPlatform('linux/x86_64')
+ .withNetworkMode('host')
+ .withExtraHosts([
+ { host: 'host.docker.internal', ipAddress: 'host-gateway' },
+ { host: 'localhost', ipAddress: 'host-gateway' },
+ ])
+ .withName(containerName)
+ .withEnvironment({ RUST_LOG })
+ .withCommand(command({ ...parameters, port }))
+ .withWaitStrategy(Wait.forLogMessage(/RPC HTTP server started/))
+ .withLogConsumer((stream) => {
+ stream.on('data', (data) => {
+ const message = data.toString()
+ emitter.emit('message', message)
+ emitter.emit('stdout', message)
+ if (log) console.log(message)
+ if (message.includes('shutting down'))
+ promise.reject(new Error(`Failed to start: ${message}`))
+ })
+ stream.on('error', (error) => {
+ if (log) console.error(error.message)
+ emitter.emit('message', error.message)
+ emitter.emit('stderr', error.message)
+ promise.reject(new Error(`Failed to start: ${error.message}`))
+ })
+ })
+ .withStartupTimeout(10_000)
+
+ c.start()
+ .then((c) => {
+ container = c
+ promise.resolve()
+ })
+ .catch(promise.reject)
+
+ return promise.promise
+ },
+ async stop() {
+ if (!container) return
+ await container.stop()
+ container = undefined
+ },
+ }
+ },
+)
+
+export declare namespace tempoDocker {
+ export type Parameters = Omit & {
+ /**
+ * Name of the container.
+ */
+ containerName?: string | undefined
+ /**
+ * Docker image to use.
+ */
+ image?: string | undefined
+ /**
+ * Host the server will listen on.
+ */
+ host?: string | undefined
+ /**
+ * Port the server will listen on.
+ */
+ port?: number | undefined
+ }
+}
diff --git a/src/utils.test.ts b/src/internal/utils.test.ts
similarity index 91%
rename from src/utils.test.ts
rename to src/internal/utils.test.ts
index 4b8e62e..b9d3f66 100644
--- a/src/utils.test.ts
+++ b/src/internal/utils.test.ts
@@ -43,12 +43,12 @@ test.each([
[{ foo: { barBaz: 'test' } }, { casing: 'snake' }],
['--foo.bar_baz', 'test'],
],
-] as [Parameters, string[]][])(
- 'toArgs(%o) -> %o',
- ([input, options], expected) => {
- expect(toArgs(input, options)).toEqual(expected)
- },
-)
+] as [Parameters, string[]][])('toArgs(%o) -> %o', ([
+ input,
+ options,
+], expected) => {
+ expect(toArgs(input, options)).toEqual(expected)
+})
test.each([
['foo', '--foo'],
diff --git a/src/utils.ts b/src/internal/utils.ts
similarity index 97%
rename from src/utils.ts
rename to src/internal/utils.ts
index b9253a5..9a4e826 100644
--- a/src/utils.ts
+++ b/src/internal/utils.ts
@@ -30,7 +30,7 @@ export function extractPath(request: string): ExtractPathReturnType {
}
const ansiColorRegex =
- // biome-ignore lint/suspicious/noControlCharactersInRegex:
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: _
/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g
/**
diff --git a/src/package.json b/src/package.json
deleted file mode 100644
index 8c3345c..0000000
--- a/src/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "prool",
- "description": "HTTP testing instances for Ethereum",
- "version": "0.0.25",
- "type": "module",
- "module": "_lib/exports/index.mjs",
- "types": "_lib/exports/index.d.ts",
- "typings": "_lib/exports/index.d.ts",
- "sideEffects": false,
- "engines": {
- "node": ">=22"
- },
- "exports": {
- ".": {
- "types": "./_lib/exports/index.d.ts",
- "default": "./_lib/exports/index.js"
- },
- "./processes": {
- "types": "./_lib/exports/processes.d.ts",
- "default": "./_lib/exports/processes.js"
- },
- "./instances": {
- "types": "./_lib/exports/instances.d.ts",
- "default": "./_lib/exports/instances.js"
- }
- },
- "dependencies": {
- "change-case": "5.4.4",
- "eventemitter3": "^5.0.1",
- "execa": "^9.1.0",
- "get-port": "^7.1.0",
- "http-proxy": "^1.18.1",
- "tar": "7.2.0"
- },
- "peerDependencies": {
- "@pimlico/alto": "*"
- },
- "peerDependenciesMeta": {
- "@pimlico/alto": {
- "optional": true
- }
- },
- "license": "MIT",
- "homepage": "https://wevm.dev",
- "repository": "wevm/prool",
- "authors": ["awkweb", "jxom"],
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/wevm"
- }
- ],
- "keywords": []
-}
diff --git a/src/processes/execa.test.ts b/src/processes/execa.test.ts
index a373812..9432b06 100644
--- a/src/processes/execa.test.ts
+++ b/src/processes/execa.test.ts
@@ -1,8 +1,9 @@
import { EventEmitter } from 'eventemitter3'
+import getPort from 'get-port'
import { afterEach, expect, test } from 'vitest'
-import { type ExecaProcess, execa } from './execa.js'
+import { execa } from './execa.js'
-const processes: ExecaProcess[] = []
+const processes: execa.ReturnType[] = []
function createProcess() {
const process = execa({ name: 'foo' })
processes.push(process)
@@ -82,14 +83,7 @@ test('start (error)', async () => {
process.stderr.on('data', reject)
},
}),
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
- [Error: Failed to start process "foo": error: unexpected argument '--lol' found
-
- Usage: anvil [OPTIONS] [COMMAND]
-
- For more information, try '--help'.
- ]
- `)
+ ).rejects.toThrowError('Failed to start process "foo"')
await expect(resolvers.message.promise).resolves.toBeDefined()
await expect(resolvers.stderr.promise).resolves.toBeDefined()
})
@@ -128,7 +122,8 @@ test('behavior: exit when status is starting', async () => {
emitter.on('exit', resolvers.exit.resolve)
// Invalid argument
- await process.start(($) => $`anvil`, {
+ const port = await getPort()
+ await process.start(($) => $`anvil --port ${port}`, {
emitter,
status: 'starting',
resolver({ process, resolve }) {
diff --git a/src/processes/execa.ts b/src/processes/execa.ts
index ab68c3e..7be5b74 100644
--- a/src/processes/execa.ts
+++ b/src/processes/execa.ts
@@ -1,21 +1,20 @@
import type { SignalConstants } from 'node:os'
-import { type ResultPromise, execa as exec } from 'execa'
-import type { InstanceStartOptions_internal } from '../instance.js'
-import { stripColors } from '../utils.js'
+import { execa as exec, type ResultPromise } from 'execa'
+import type * as Instance from '../Instance.js'
+import { stripColors } from '../internal/utils.js'
export type Process_internal = ResultPromise<{ cleanup: true; reject: false }>
-export type ExecaStartOptions = InstanceStartOptions_internal & {
- resolver(options: {
- process: Process_internal
- reject(data: string): Promise
- resolve(): void
- }): void
-}
-
-export type ExecaParameters = { name: string }
+export type ExecaStartOptions =
+ Instance.define.InstanceStartOptions_internal & {
+ resolver(options: {
+ process: Process_internal
+ reject(data: string): Promise
+ resolve(): void
+ }): void
+ }
-export type ExecaProcess = {
+export type Process = {
_internal: {
process: Process_internal
}
@@ -26,9 +25,8 @@ export type ExecaProcess = {
): Promise
stop(signal?: keyof SignalConstants | number): Promise
}
-export type ExecaReturnType = ExecaProcess
-export function execa(parameters: ExecaParameters): ExecaReturnType {
+export function execa(parameters: execa.Parameters): execa.ReturnType {
const { name } = parameters
const errorMessages: string[] = []
@@ -112,3 +110,9 @@ export function execa(parameters: ExecaParameters): ExecaReturnType {
},
}
}
+
+export declare namespace execa {
+ export type Parameters = { name: string }
+
+ export type ReturnType = Process
+}
diff --git a/src/processes/index.ts b/src/processes/index.ts
new file mode 100644
index 0000000..1335055
--- /dev/null
+++ b/src/processes/index.ts
@@ -0,0 +1 @@
+export * as execa from './execa.js'
diff --git a/src/processes/package.json b/src/processes/package.json
deleted file mode 100644
index a71f0b8..0000000
--- a/src/processes/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "type": "module",
- "types": "../_lib/exports/processes/index.d.ts",
- "module": "../_lib/exports/processes/index.js"
-}
diff --git a/test/silius/keys/0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 b/test/silius/keys/0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
deleted file mode 100644
index 66eeda6..0000000
--- a/test/silius/keys/0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
+++ /dev/null
@@ -1 +0,0 @@
-test test test test test test test test test test test junk
\ No newline at end of file
diff --git a/test/utils.ts b/test/utils.ts
index 22b9d21..d347476 100644
--- a/test/utils.ts
+++ b/test/utils.ts
@@ -1,5 +1,3 @@
-import { resolve } from 'node:path'
-
const poolId = Math.floor(Math.random() * 10000)
export const altoOptions = ({ port, pool }: { port: number; pool: boolean }) =>
@@ -12,37 +10,3 @@ export const altoOptions = ({ port, pool }: { port: number; pool: boolean }) =>
utilityPrivateKey:
'0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
}) as const
-
-export const rundlerOptions = ({
- port,
- pool,
-}: { port: number; pool: boolean }) =>
- ({
- nodeHttp: `http://localhost:${port}${pool ? `/${poolId}` : ''}`,
- builder: {
- privateKey:
- '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
- },
- }) as const
-
-export const siliusOptions = ({
- port,
- pool,
-}: { port: number; pool: boolean }) =>
- ({
- ethClientAddress: `http://localhost:${port}${pool ? `/${poolId}` : ''}`,
- mnemonicPath: resolve(
- import.meta.dirname,
- './silius/keys/0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
- ),
- }) as const
-
-export const stackupOptions = ({
- port,
- pool,
-}: { port: number; pool: boolean }) =>
- ({
- ethClientUrl: `http://localhost:${port}${pool ? `/${poolId}` : ''}`,
- privateKey:
- '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
- }) as const
diff --git a/tsconfig.base.json b/tsconfig.base.json
deleted file mode 100644
index 18513c9..0000000
--- a/tsconfig.base.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- // This tsconfig file contains the shared config for the build (tsconfig.build.json) and type checking (tsconfig.json) config.
- "include": [],
- "compilerOptions": {
- // Incremental builds
- // NOTE: Enabling incremental builds speeds up `tsc`. Keep in mind though that it does not reliably bust the cache when the `tsconfig.json` file changes.
- "incremental": true,
-
- // Type checking
- "strict": true,
- "useDefineForClassFields": true, // Not enabled by default in `strict` mode unless we bump `target` to ES2022.
- "noFallthroughCasesInSwitch": true, // Not enabled by default in `strict` mode.
- "noImplicitReturns": true, // Not enabled by default in `strict` mode.
- "noUncheckedIndexedAccess": true,
- "useUnknownInCatchVariables": true, // TODO: This would normally be enabled in `strict` mode but would require some adjustments to the codebase.
- "noImplicitOverride": true, // Not enabled by default in `strict` mode.
- "noUnusedLocals": true, // Not enabled by default in `strict` mode.
- "noUnusedParameters": true, // Not enabled by default in `strict` mode.
-
- // JavaScript support
- "allowJs": false,
- "checkJs": false,
-
- // Interop constraints
- "esModuleInterop": false,
- "allowSyntheticDefaultImports": false,
- "forceConsistentCasingInFileNames": true,
- "verbatimModuleSyntax": true,
- "importHelpers": true, // This is only used for build validation. Since we do not have `tslib` installed, this will fail if we accidentally make use of anything that'd require injection of helpers.
-
- // Language and environment
- "moduleResolution": "NodeNext",
- "module": "NodeNext",
- "target": "ESNext",
- "lib": ["ESNext"],
- "types": ["@types/node"],
-
- // Skip type checking for node modules
- "skipLibCheck": true
-
- // "noErrorTruncation": true
- }
-}
diff --git a/tsconfig.build.json b/tsconfig.build.json
deleted file mode 100644
index a3894fc..0000000
--- a/tsconfig.build.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- // This file is used to compile the for cjs and esm (see package.json build scripts). It should exclude all test files.
- "extends": "./tsconfig.base.json",
- "include": ["src"],
- "exclude": [
- "src/**/*.test.ts",
- "src/**/*.test-d.ts"
- ],
- "compilerOptions": {
- "declaration": true,
- "declarationMap": true,
- "sourceMap": true,
- "outDir": "./src/_lib",
- "rootDir": "./src"
- }
-}
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index 32813c8..51506fe 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,5 +1,40 @@
{
- // This configuration is used for local development and type checking.
- "extends": "./tsconfig.base.json",
- "include": ["src", "test"]
+ // Visit https://aka.ms/tsconfig to read more about this file
+ "compilerOptions": {
+ // Environment Settings
+ // See also https://aka.ms/tsconfig/module
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
+ "target": "esnext",
+ "paths": {
+ "prool": ["./src/index.ts"]
+ },
+ "types": ["node", "vitest/globals"],
+
+ // Other Outputs
+ "sourceMap": true,
+ "declaration": true,
+ "declarationMap": true,
+
+ // Stricter Typechecking Options
+ "noUncheckedIndexedAccess": true,
+ "exactOptionalPropertyTypes": true,
+
+ // Style Options
+ "noImplicitReturns": true,
+ "noImplicitOverride": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "noPropertyAccessFromIndexSignature": true,
+
+ // Recommended Options
+ "strict": true,
+ "verbatimModuleSyntax": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "noUncheckedSideEffectImports": true,
+ "moduleDetection": "force",
+ "skipLibCheck": true
+ }
}