From 45a740490077f03f23ee02af9d049562e60e1753 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 May 2026 16:54:15 +0000 Subject: [PATCH 01/60] chore(deps): bump actions/setup-node from 5 to 6 Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/contracts-ci.yml | 2 +- .github/workflows/frontend-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/contracts-ci.yml b/.github/workflows/contracts-ci.yml index 9523615..168bc40 100644 --- a/.github/workflows/contracts-ci.yml +++ b/.github/workflows/contracts-ci.yml @@ -163,7 +163,7 @@ jobs: submodules: recursive - name: Setup Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: "20" package-manager-cache: false diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index 1a54291..31c67c8 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -43,7 +43,7 @@ jobs: submodules: recursive - name: Setup Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node }} package-manager-cache: false From b62b1d8f3c110fd58d75be4dc78b8f8b3ad75a55 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 May 2026 16:54:19 +0000 Subject: [PATCH 02/60] chore(deps): bump actions/upload-artifact from 4 to 7 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/contracts-evidence-manifest.yml | 4 ++-- .github/workflows/contracts-mainnet-readiness.yml | 2 +- .github/workflows/contracts-production-lock-verify.yml | 2 +- .github/workflows/contracts-promotion-checklist.yml | 2 +- .github/workflows/contracts-staging-rehearsal.yml | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/contracts-evidence-manifest.yml b/.github/workflows/contracts-evidence-manifest.yml index ff3cb6a..ec91571 100644 --- a/.github/workflows/contracts-evidence-manifest.yml +++ b/.github/workflows/contracts-evidence-manifest.yml @@ -109,7 +109,7 @@ jobs: - name: Upload self-test manifest artifact if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: mark-evidence-manifest-self-test path: | @@ -180,7 +180,7 @@ jobs: - name: Upload manifest artifact if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: mark-evidence-manifest path: | diff --git a/.github/workflows/contracts-mainnet-readiness.yml b/.github/workflows/contracts-mainnet-readiness.yml index 4f9c148..41b0d77 100644 --- a/.github/workflows/contracts-mainnet-readiness.yml +++ b/.github/workflows/contracts-mainnet-readiness.yml @@ -73,7 +73,7 @@ jobs: - name: Upload readiness artifact if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: mark-mainnet-readiness-artifact path: contracts/${{ inputs.artifact_path }} diff --git a/.github/workflows/contracts-production-lock-verify.yml b/.github/workflows/contracts-production-lock-verify.yml index 03b5bf5..1ac785a 100644 --- a/.github/workflows/contracts-production-lock-verify.yml +++ b/.github/workflows/contracts-production-lock-verify.yml @@ -105,7 +105,7 @@ jobs: - name: Upload verification artifact if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: mark-production-lock-verify path: contracts/broadcast/mark-production-lock-verify.json diff --git a/.github/workflows/contracts-promotion-checklist.yml b/.github/workflows/contracts-promotion-checklist.yml index e644862..904ac3e 100644 --- a/.github/workflows/contracts-promotion-checklist.yml +++ b/.github/workflows/contracts-promotion-checklist.yml @@ -69,7 +69,7 @@ jobs: - name: Upload checklist artifacts if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: mark-promotion-checklist path: | diff --git a/.github/workflows/contracts-staging-rehearsal.yml b/.github/workflows/contracts-staging-rehearsal.yml index 92c916e..cee5cfa 100644 --- a/.github/workflows/contracts-staging-rehearsal.yml +++ b/.github/workflows/contracts-staging-rehearsal.yml @@ -103,7 +103,7 @@ jobs: - name: Upload release artifact if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: mark-staging-release path: contracts/${{ env.MARK_RELEASE_ARTIFACT_PATH }} @@ -111,7 +111,7 @@ jobs: - name: Upload rehearsal artifact if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: mark-staging-rehearsal path: contracts/${{ env.MARK_REHEARSAL_ARTIFACT_PATH }} From a797411ad0e9c0aae23f484ed69d569f9391c33a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 May 2026 16:54:25 +0000 Subject: [PATCH 03/60] chore(deps): bump actions/checkout from 5 to 6 Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/contracts-ci.yml | 8 ++++---- .github/workflows/contracts-env-guard.yml | 2 +- .github/workflows/contracts-evidence-manifest.yml | 4 ++-- .github/workflows/contracts-mainnet-readiness.yml | 2 +- .github/workflows/contracts-production-lock-verify.yml | 2 +- .github/workflows/contracts-promotion-checklist.yml | 2 +- .github/workflows/contracts-slither.yml | 2 +- .github/workflows/contracts-staging-rehearsal.yml | 2 +- .github/workflows/frontend-ci.yml | 2 +- .github/workflows/governance-policy-guard.yml | 2 +- .github/workflows/secrets-drift-guard.yml | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/contracts-ci.yml b/.github/workflows/contracts-ci.yml index 9523615..36ff374 100644 --- a/.github/workflows/contracts-ci.yml +++ b/.github/workflows/contracts-ci.yml @@ -31,7 +31,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive @@ -67,7 +67,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive @@ -130,7 +130,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive @@ -158,7 +158,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/contracts-env-guard.yml b/.github/workflows/contracts-env-guard.yml index 75a802e..921a687 100644 --- a/.github/workflows/contracts-env-guard.yml +++ b/.github/workflows/contracts-env-guard.yml @@ -25,7 +25,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/contracts-evidence-manifest.yml b/.github/workflows/contracts-evidence-manifest.yml index ff3cb6a..c0bf7f1 100644 --- a/.github/workflows/contracts-evidence-manifest.yml +++ b/.github/workflows/contracts-evidence-manifest.yml @@ -59,7 +59,7 @@ jobs: working-directory: contracts steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive @@ -149,7 +149,7 @@ jobs: fi - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/contracts-mainnet-readiness.yml b/.github/workflows/contracts-mainnet-readiness.yml index 4f9c148..6d043a8 100644 --- a/.github/workflows/contracts-mainnet-readiness.yml +++ b/.github/workflows/contracts-mainnet-readiness.yml @@ -46,7 +46,7 @@ jobs: fi - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/contracts-production-lock-verify.yml b/.github/workflows/contracts-production-lock-verify.yml index 03b5bf5..42e4c9d 100644 --- a/.github/workflows/contracts-production-lock-verify.yml +++ b/.github/workflows/contracts-production-lock-verify.yml @@ -59,7 +59,7 @@ jobs: fi - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/contracts-promotion-checklist.yml b/.github/workflows/contracts-promotion-checklist.yml index e644862..6c7d8d0 100644 --- a/.github/workflows/contracts-promotion-checklist.yml +++ b/.github/workflows/contracts-promotion-checklist.yml @@ -60,7 +60,7 @@ jobs: fi - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/contracts-slither.yml b/.github/workflows/contracts-slither.yml index e2fe0af..0365b9e 100644 --- a/.github/workflows/contracts-slither.yml +++ b/.github/workflows/contracts-slither.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/contracts-staging-rehearsal.yml b/.github/workflows/contracts-staging-rehearsal.yml index 92c916e..125dbb1 100644 --- a/.github/workflows/contracts-staging-rehearsal.yml +++ b/.github/workflows/contracts-staging-rehearsal.yml @@ -76,7 +76,7 @@ jobs: fi - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index 1a54291..b0094fc 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -38,7 +38,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/governance-policy-guard.yml b/.github/workflows/governance-policy-guard.yml index cbd6034..eace5c2 100644 --- a/.github/workflows/governance-policy-guard.yml +++ b/.github/workflows/governance-policy-guard.yml @@ -26,7 +26,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Run governance policy validator run: bash scripts/ci/validate-governance-policy.sh diff --git a/.github/workflows/secrets-drift-guard.yml b/.github/workflows/secrets-drift-guard.yml index 6677ad3..a70365a 100644 --- a/.github/workflows/secrets-drift-guard.yml +++ b/.github/workflows/secrets-drift-guard.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 From e504b6a339b62d1df03c52713b56a88d1de8bd8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 May 2026 16:54:27 +0000 Subject: [PATCH 04/60] chore(deps): bump actions/github-script from 7 to 9 Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 9. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v7...v9) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: '9' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release-evidence-validator.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-evidence-validator.yml b/.github/workflows/release-evidence-validator.yml index 8db2e2f..77df87b 100644 --- a/.github/workflows/release-evidence-validator.yml +++ b/.github/workflows/release-evidence-validator.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Validate release PR fields and evidence - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const pr = context.payload.pull_request; From deff8a2c71ef71addd71c6f9373479fd55b39a6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 May 2026 16:59:40 +0000 Subject: [PATCH 05/60] chore(deps): bump the frontend-minor-patch group with 13 updates Bumps the frontend-minor-patch group with 13 updates: | Package | From | To | | --- | --- | --- | | [@eth-optimism/viem](https://github.com/ethereum-optimism/ecosystem/tree/HEAD/packages/viem) | `0.3.2` | `0.4.15` | | [@radix-ui/react-separator](https://github.com/radix-ui/primitives) | `1.1.2` | `1.1.8` | | [@radix-ui/react-slot](https://github.com/radix-ui/primitives) | `1.1.2` | `1.2.4` | | [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.0.6` | `4.2.4` | | [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) | `5.66.0` | `5.100.8` | | [abitype](https://github.com/wevm/abitype) | `1.0.8` | `1.2.4` | | [tailwind-merge](https://github.com/dcastil/tailwind-merge) | `3.0.1` | `3.5.0` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.0.6` | `4.2.4` | | [viem](https://github.com/wevm/viem) | `2.23.1` | `2.48.8` | | [eslint-plugin-react-refresh](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) | `0.4.19` | `0.5.2` | | [mprocs](https://github.com/pvolok/mprocs) | `0.7.2` | `0.9.2` | | [prettier](https://github.com/prettier/prettier) | `3.5.0` | `3.8.3` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.24.0` | `8.59.1` | Updates `@eth-optimism/viem` from 0.3.2 to 0.4.15 - [Changelog](https://github.com/ethereum-optimism/ecosystem/blob/main/packages/viem/CHANGELOG.md) - [Commits](https://github.com/ethereum-optimism/ecosystem/commits/HEAD/packages/viem) Updates `@radix-ui/react-separator` from 1.1.2 to 1.1.8 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@radix-ui/react-slot` from 1.1.2 to 1.2.4 - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) Updates `@tailwindcss/vite` from 4.0.6 to 4.2.4 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/@tailwindcss-vite) Updates `@tanstack/react-query` from 5.66.0 to 5.100.8 - [Release notes](https://github.com/TanStack/query/releases) - [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md) - [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.100.8/packages/react-query) Updates `abitype` from 1.0.8 to 1.2.4 - [Release notes](https://github.com/wevm/abitype/releases) - [Commits](https://github.com/wevm/abitype/compare/abitype@1.0.8...abitype@1.2.4) Updates `tailwind-merge` from 3.0.1 to 3.5.0 - [Release notes](https://github.com/dcastil/tailwind-merge/releases) - [Commits](https://github.com/dcastil/tailwind-merge/compare/v3.0.1...v3.5.0) Updates `tailwindcss` from 4.0.6 to 4.2.4 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/tailwindcss) Updates `viem` from 2.23.1 to 2.48.8 - [Release notes](https://github.com/wevm/viem/releases) - [Commits](https://github.com/wevm/viem/compare/viem@2.23.1...viem@2.48.8) Updates `eslint-plugin-react-refresh` from 0.4.19 to 0.5.2 - [Release notes](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/releases) - [Changelog](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/main/CHANGELOG.md) - [Commits](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/compare/v0.4.19...v0.5.2) Updates `mprocs` from 0.7.2 to 0.9.2 - [Release notes](https://github.com/pvolok/mprocs/releases) - [Changelog](https://github.com/pvolok/mprocs/blob/master/CHANGELOG.md) - [Commits](https://github.com/pvolok/mprocs/compare/v0.7.2...v0.9.2) Updates `prettier` from 3.5.0 to 3.8.3 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.5.0...3.8.3) Updates `typescript-eslint` from 8.24.0 to 8.59.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.1/packages/typescript-eslint) --- updated-dependencies: - dependency-name: "@eth-optimism/viem" dependency-version: 0.4.15 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: "@radix-ui/react-separator" dependency-version: 1.1.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: frontend-minor-patch - dependency-name: "@radix-ui/react-slot" dependency-version: 1.2.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: "@tailwindcss/vite" dependency-version: 4.2.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: "@tanstack/react-query" dependency-version: 5.100.8 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: abitype dependency-version: 1.2.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: tailwind-merge dependency-version: 3.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: tailwindcss dependency-version: 4.2.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: viem dependency-version: 2.48.8 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: eslint-plugin-react-refresh dependency-version: 0.5.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: mprocs dependency-version: 0.9.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: prettier dependency-version: 3.8.3 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: frontend-minor-patch - dependency-name: typescript-eslint dependency-version: 8.59.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: frontend-minor-patch ... Signed-off-by: dependabot[bot] --- package.json | 26 +- pnpm-lock.yaml | 1301 ++++++++++++++++++++++++++++-------------------- 2 files changed, 780 insertions(+), 547 deletions(-) diff --git a/package.json b/package.json index 875f6a5..e591874 100644 --- a/package.json +++ b/package.json @@ -25,21 +25,21 @@ "shadcn:add": "pnpm dlx shadcn@canary add" }, "dependencies": { - "@eth-optimism/viem": "^0.3.2", - "@radix-ui/react-separator": "^1.1.2", - "@radix-ui/react-slot": "^1.1.2", - "@tailwindcss/vite": "^4.0.6", - "@tanstack/react-query": "^5.66.0", - "abitype": "^1.0.8", + "@eth-optimism/viem": "^0.4.15", + "@radix-ui/react-separator": "^1.1.8", + "@radix-ui/react-slot": "^1.2.4", + "@tailwindcss/vite": "^4.2.4", + "@tanstack/react-query": "^5.100.8", + "abitype": "^1.2.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.475.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "tailwind-merge": "^3.0.1", - "tailwindcss": "^4.0.6", + "tailwind-merge": "^3.5.0", + "tailwindcss": "^4.2.4", "tailwindcss-animate": "^1.0.7", - "viem": "^2.23.1", + "viem": "^2.48.8", "wagmi": "^2.14.11" }, "devDependencies": { @@ -51,13 +51,13 @@ "@vitejs/plugin-react": "^4.3.4", "eslint": "^9.19.0", "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-react-refresh": "^0.4.18", + "eslint-plugin-react-refresh": "^0.5.2", "globals": "^15.14.0", - "mprocs": "^0.7.2", - "prettier": "^3.5.0", + "mprocs": "^0.9.2", + "prettier": "^3.8.3", "supersim": "0.1.0-alpha.45", "typescript": "~5.7.2", - "typescript-eslint": "^8.22.0", + "typescript-eslint": "^8.59.1", "vite": "^6.1.0", "wait-port": "^1.1.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c8d61d..41fbfb2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,23 +9,23 @@ importers: .: dependencies: '@eth-optimism/viem': - specifier: ^0.3.2 - version: 0.3.2(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + specifier: ^0.4.15 + version: 0.4.15(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) '@radix-ui/react-separator': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.1.8 + version: 1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': - specifier: ^1.1.2 - version: 1.1.2(@types/react@18.3.18)(react@18.3.1) + specifier: ^1.2.4 + version: 1.2.4(@types/react@18.3.18)(react@18.3.1) '@tailwindcss/vite': - specifier: ^4.0.6 - version: 4.0.6(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)) + specifier: ^4.2.4 + version: 4.2.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0)) '@tanstack/react-query': - specifier: ^5.66.0 - version: 5.66.0(react@18.3.1) + specifier: ^5.100.8 + version: 5.100.8(react@18.3.1) abitype: - specifier: ^1.0.8 - version: 1.0.8(typescript@5.7.3)(zod@3.24.1) + specifier: ^1.2.4 + version: 1.2.4(typescript@5.7.3)(zod@3.24.1) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -42,27 +42,27 @@ importers: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) tailwind-merge: - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^3.5.0 + version: 3.5.0 tailwindcss: - specifier: ^4.0.6 - version: 4.0.6 + specifier: ^4.2.4 + version: 4.2.4 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@4.0.6) + version: 1.0.7(tailwindcss@4.2.4) viem: - specifier: ^2.23.1 - version: 2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + specifier: ^2.48.8 + version: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) wagmi: specifier: ^2.14.11 - version: 2.14.11(@tanstack/query-core@5.66.0)(@tanstack/react-query@5.66.0(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.0.9)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) + version: 2.14.11(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.0.9)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) devDependencies: '@eslint/js': specifier: ^9.19.0 version: 9.20.0 '@eth-optimism/super-cli': specifier: ^0.0.13 - version: 0.0.13(@tanstack/query-core@5.66.0)(@types/react@18.3.18)(bufferutil@4.0.9)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)) + version: 0.0.13(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(bufferutil@4.0.9)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0)) '@types/node': specifier: ^22.13.1 version: 22.13.1 @@ -74,25 +74,25 @@ importers: version: 18.3.5(@types/react@18.3.18) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)) + version: 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0)) eslint: specifier: ^9.19.0 - version: 9.20.0(jiti@2.4.2) + version: 9.20.0(jiti@2.6.1) eslint-plugin-react-hooks: specifier: ^5.0.0 - version: 5.1.0(eslint@9.20.0(jiti@2.4.2)) + version: 5.1.0(eslint@9.20.0(jiti@2.6.1)) eslint-plugin-react-refresh: - specifier: ^0.4.18 - version: 0.4.19(eslint@9.20.0(jiti@2.4.2)) + specifier: ^0.5.2 + version: 0.5.2(eslint@9.20.0(jiti@2.6.1)) globals: specifier: ^15.14.0 version: 15.14.0 mprocs: - specifier: ^0.7.2 - version: 0.7.2 + specifier: ^0.9.2 + version: 0.9.2 prettier: - specifier: ^3.5.0 - version: 3.5.0 + specifier: ^3.8.3 + version: 3.8.3 supersim: specifier: 0.1.0-alpha.45 version: 0.1.0-alpha.45 @@ -100,19 +100,19 @@ importers: specifier: ~5.7.2 version: 5.7.3 typescript-eslint: - specifier: ^8.22.0 - version: 8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^8.59.1 + version: 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) vite: specifier: ^6.1.0 - version: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1) + version: 6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0) wait-port: specifier: ^1.1.0 version: 1.1.0 packages: - '@adraffy/ens-normalize@1.11.0': - resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==} + '@adraffy/ens-normalize@1.11.1': + resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} '@alcalzone/ansi-tokenize@0.1.3': resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} @@ -373,10 +373,20 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/config-array@0.19.2': resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -410,8 +420,13 @@ packages: engines: {node: '>=18.20'} hasBin: true - '@eth-optimism/viem@0.3.2': - resolution: {integrity: sha512-oH8T3uY8oTPMNF1ZHI6k6i226w9KuhMGT/KEeNhdaR9U8ertzITW095nPuQoD8OYtK7o+3kJuPa9wJciwEeP1Q==} + '@eth-optimism/viem@0.3.3': + resolution: {integrity: sha512-WN1rzyJVRLSQvnqu+9cjz+zucVlNXXlwSBuQ8QNXOsB/z8zFkPxosbuLDE+7GZGc6R2KoBs6HKXMxK8O/NgKgQ==} + peerDependencies: + viem: ^2.17.9 + + '@eth-optimism/viem@0.4.15': + resolution: {integrity: sha512-7tExoHdybGUAfQRbpoE1hKnsob7vMRHvorZtuO+W5zGUheo0vTVVWbH7y9lSUfoaWaO8nnbNJCU6HQN+050EgA==} peerDependencies: viem: ^2.17.9 @@ -463,10 +478,16 @@ packages: peerDependencies: ink: '>=5' + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -475,12 +496,15 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@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==} + '@libsql/client@0.14.0': resolution: {integrity: sha512-/9HEKfn6fwXB5aTEEoMeFh4CtG0ZzbncBb1e++OCdVpgKZ/xyMsIVYXm0w7Pv4RUel803vE6LwniB3PqD72R0Q==} @@ -578,6 +602,7 @@ packages: '@metamask/sdk-communication-layer@0.32.0': resolution: {integrity: sha512-dmj/KFjMi1fsdZGIOtbhxdg3amxhKL/A5BqSU4uh/SyDKPub/OT+x5pX8bGjpTL1WPWY/Q0OIlvFyX3VWnT06Q==} + deprecated: No longer maintained, superseded by https://docs.metamask.io/metamask-connect peerDependencies: cross-fetch: ^4.0.0 eciesjs: '*' @@ -587,9 +612,11 @@ packages: '@metamask/sdk-install-modal-web@0.32.0': resolution: {integrity: sha512-TFoktj0JgfWnQaL3yFkApqNwcaqJ+dw4xcnrJueMP3aXkSNev2Ido+WVNOg4IIMxnmOrfAC9t0UJ0u/dC9MjOQ==} + deprecated: No longer maintained, superseded by https://docs.metamask.io/metamask-connect '@metamask/sdk@0.32.0': resolution: {integrity: sha512-WmGAlP1oBuD9hk4CsdlG1WJFuPtYJY+dnTHJMeCyohTWD2GgkcLMUUuvu9lO1/NVzuOoSi1OrnjbuY1O/1NZ1g==} + deprecated: No longer maintained, superseded by https://docs.metamask.io/metamask-connect '@metamask/superstruct@3.1.0': resolution: {integrity: sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==} @@ -635,42 +662,35 @@ packages: '@neon-rs/load@0.0.4': resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} - '@noble/ciphers@1.2.1': - resolution: {integrity: sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==} + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} '@noble/curves@1.4.2': resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} - '@noble/curves@1.8.1': - resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} + '@noble/curves@1.9.1': + resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.7': + resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} engines: {node: ^14.21.3 || >=16} '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} - '@noble/hashes@1.7.1': - resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - '@paulmillr/qr@0.2.1': resolution: {integrity: sha512-IHnV6A+zxU7XwmKFinmYjUcwlyK9+xkG3/s9KcQhI9BjQKycrJ1JRO+FbNYPwZiPKW3je/DR0k7w8/gLa5eaxQ==} + deprecated: 'The package is now available as "qr": npm install qr' - '@radix-ui/react-compose-refs@1.1.1': - resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -678,8 +698,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-primitive@2.0.2': - resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} + '@radix-ui/react-primitive@2.1.4': + resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -691,8 +711,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-separator@1.1.2': - resolution: {integrity: sha512-oZfHcaAp2Y6KFBX6I5P1u7CQoy4lheCGiYj+pGFrHy8E/VNRb5E39TkTr3JrV520csPBTZjkuKFdEsjS5EUNKQ==} + '@radix-ui/react-separator@1.1.8': + resolution: {integrity: sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -704,8 +724,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slot@1.1.2': - resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -821,20 +841,20 @@ packages: '@scure/base@1.1.9': resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} - '@scure/base@1.2.4': - resolution: {integrity: sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==} + '@scure/base@1.2.6': + resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} '@scure/bip32@1.4.0': resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} - '@scure/bip32@1.6.2': - resolution: {integrity: sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==} + '@scure/bip32@1.7.0': + resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} '@scure/bip39@1.3.0': resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - '@scure/bip39@1.5.4': - resolution: {integrity: sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==} + '@scure/bip39@1.6.0': + resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -893,89 +913,101 @@ packages: '@stablelib/x25519@1.0.3': resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} - '@tailwindcss/node@4.0.6': - resolution: {integrity: sha512-jb6E0WeSq7OQbVYcIJ6LxnZTeC4HjMvbzFBMCrQff4R50HBlo/obmYNk6V2GCUXDeqiXtvtrQgcIbT+/boB03Q==} + '@tailwindcss/node@4.2.4': + resolution: {integrity: sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==} - '@tailwindcss/oxide-android-arm64@4.0.6': - resolution: {integrity: sha512-xDbym6bDPW3D2XqQqX3PjqW3CKGe1KXH7Fdkc60sX5ZLVUbzPkFeunQaoP+BuYlLc2cC1FoClrIRYnRzof9Sow==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-android-arm64@4.2.4': + resolution: {integrity: sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g==} + engines: {node: '>= 20'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.0.6': - resolution: {integrity: sha512-1f71/ju/tvyGl5c2bDkchZHy8p8EK/tDHCxlpYJ1hGNvsYihZNurxVpZ0DefpN7cNc9RTT8DjrRoV8xXZKKRjg==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-arm64@4.2.4': + resolution: {integrity: sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==} + engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.0.6': - resolution: {integrity: sha512-s/hg/ZPgxFIrGMb0kqyeaqZt505P891buUkSezmrDY6lxv2ixIELAlOcUVTkVh245SeaeEiUVUPiUN37cwoL2g==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-x64@4.2.4': + resolution: {integrity: sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg==} + engines: {node: '>= 20'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.0.6': - resolution: {integrity: sha512-Z3Wo8FWZnmio8+xlcbb7JUo/hqRMSmhQw8IGIRoRJ7GmLR0C+25Wq+bEX/135xe/yEle2lFkhu9JBHd4wZYiig==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-freebsd-x64@4.2.4': + resolution: {integrity: sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw==} + engines: {node: '>= 20'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.6': - resolution: {integrity: sha512-SNSwkkim1myAgmnbHs4EjXsPL7rQbVGtjcok5EaIzkHkCAVK9QBQsWeP2Jm2/JJhq4wdx8tZB9Y7psMzHYWCkA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': + resolution: {integrity: sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA==} + engines: {node: '>= 20'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.0.6': - resolution: {integrity: sha512-tJ+mevtSDMQhKlwCCuhsFEFg058kBiSy4TkoeBG921EfrHKmexOaCyFKYhVXy4JtkaeeOcjJnCLasEeqml4i+Q==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': + resolution: {integrity: sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.0.6': - resolution: {integrity: sha512-IoArz1vfuTR4rALXMUXI/GWWfx2EaO4gFNtBNkDNOYhlTD4NVEwE45nbBoojYiTulajI4c2XH8UmVEVJTOJKxA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-musl@4.2.4': + resolution: {integrity: sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.0.6': - resolution: {integrity: sha512-QtsUfLkEAeWAC3Owx9Kg+7JdzE+k9drPhwTAXbXugYB9RZUnEWWx5x3q/au6TvUYcL+n0RBqDEO2gucZRvRFgQ==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-gnu@4.2.4': + resolution: {integrity: sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.0.6': - resolution: {integrity: sha512-QthvJqIji2KlGNwLcK/PPYo7w1Wsi/8NK0wAtRGbv4eOPdZHkQ9KUk+oCoP20oPO7i2a6X1aBAFQEL7i08nNMA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-musl@4.2.4': + resolution: {integrity: sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-win32-arm64-msvc@4.0.6': - resolution: {integrity: sha512-+oka+dYX8jy9iP00DJ9Y100XsqvbqR5s0yfMZJuPR1H/lDVtDfsZiSix1UFBQ3X1HWxoEEl6iXNJHWd56TocVw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-wasm32-wasi@4.2.4': + resolution: {integrity: sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': + resolution: {integrity: sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ==} + engines: {node: '>= 20'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.0.6': - resolution: {integrity: sha512-+o+juAkik4p8Ue/0LiflQXPmVatl6Av3LEZXpBTfg4qkMIbZdhCGWFzHdt2NjoMiLOJCFDddoV6GYaimvK1Olw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-win32-x64-msvc@4.2.4': + resolution: {integrity: sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw==} + engines: {node: '>= 20'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.0.6': - resolution: {integrity: sha512-lVyKV2y58UE9CeKVcYykULe9QaE1dtKdxDEdrTPIdbzRgBk6bdxHNAoDqvcqXbIGXubn3VOl1O/CFF77v/EqSA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide@4.2.4': + resolution: {integrity: sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q==} + engines: {node: '>= 20'} - '@tailwindcss/vite@4.0.6': - resolution: {integrity: sha512-O25vZ/URWbZ2JHdk2o8wH7jOKqEGCsYmX3GwGmYS5DjE4X3mpf93a72Rn7VRnefldNauBzr5z2hfZptmBNtTUQ==} + '@tailwindcss/vite@4.2.4': + resolution: {integrity: sha512-pCvohwOCspk3ZFn6eJzrrX3g4n2JY73H6MmYC87XfGPyTty4YsCjYTMArRZm/zOI8dIt3+EcrLHAFPe5A4bgtw==} peerDependencies: - vite: ^5.2.0 || ^6 + vite: ^5.2.0 || ^6 || ^7 || ^8 - '@tanstack/query-core@5.66.0': - resolution: {integrity: sha512-J+JeBtthiKxrpzUu7rfIPDzhscXF2p5zE/hVdrqkACBP8Yu0M96mwJ5m/8cPPYQE9aRNvXztXHlNwIh4FEeMZw==} + '@tanstack/query-core@5.100.8': + resolution: {integrity: sha512-ceYwSFOqjPwET5TA6IOYxzxlGc0ekyH/gfOtWkP0PX43rzX9bxW48Iuw8KAduKCToi4rJAQ6nRy2kAe8gszdmg==} - '@tanstack/react-query@5.66.0': - resolution: {integrity: sha512-z3sYixFQJe8hndFnXgWu7C79ctL+pI0KAelYyW+khaNJ1m22lWrhJU2QrsTcRKMuVPtoZvfBYrTStIdKo+x0Xw==} + '@tanstack/react-query@5.100.8': + resolution: {integrity: sha512-iNNEekixXU5vtAGKKZX2lx3jTooG5yNY+kv0wSgEdEYG0Mj0JM5bcuQtC35ZAP3nDopT6jciUK3xeX65U7AnfA==} peerDependencies: react: ^18 || ^19 @@ -994,6 +1026,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -1035,51 +1070,63 @@ packages: '@types/ws@8.5.14': resolution: {integrity: sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==} - '@typescript-eslint/eslint-plugin@8.24.0': - resolution: {integrity: sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==} + '@typescript-eslint/eslint-plugin@8.59.1': + resolution: {integrity: sha512-BOziFIfE+6osHO9FoJG4zjoHUcvI7fTNBSpdAwrNH0/TLvzjsk2oo8XSSOT2HhqUyhZPfHv4UOffoJ9oEEQ7Ag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.59.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.59.1': + resolution: {integrity: sha512-HDQH9O/47Dxi1ceDhBXdaldtf/WV9yRYMjbjCuNk3qnaTD564qwv61Y7+gTxwxRKzSrgO5uhtw584igXVuuZkA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.24.0': - resolution: {integrity: sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==} + '@typescript-eslint/project-service@8.59.1': + resolution: {integrity: sha512-+MuHQlHiEr00Of/IQbE/MmEoi44znZHbR/Pz7Opq4HryUOlRi+/44dro9Ycy8Fyo+/024IWtw8m4JUMCGTYxDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.24.0': - resolution: {integrity: sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==} + '@typescript-eslint/scope-manager@8.59.1': + resolution: {integrity: sha512-LwuHQI4pDOYVKvmH2dkaJo6YZCSgouVgnS/z7yBPKBMvgtBvyLqiLy9Z6b7+m/TRcX1NFYUqZetI5Y+aT4GEfg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.24.0': - resolution: {integrity: sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==} + '@typescript-eslint/tsconfig-utils@8.59.1': + resolution: {integrity: sha512-/0nEyPbX7gRsk0Uwfe4ALwwgxuA66d/l2mhRDNlAvaj4U3juhUtJNq0DsY8M2AYwwb9rEq2hrC3IcIcEt++iJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.24.0': - resolution: {integrity: sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==} + '@typescript-eslint/type-utils@8.59.1': + resolution: {integrity: sha512-klWPBR2ciQHS3f++ug/mVnWKPjBUo7icEL3FAO1lhAR1Z1i5NQYZ1EannMSRYcq5qCv5wNALlXr6fksRHyYl7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.59.1': + resolution: {integrity: sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.24.0': - resolution: {integrity: sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==} + '@typescript-eslint/typescript-estree@8.59.1': + resolution: {integrity: sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.24.0': - resolution: {integrity: sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==} + '@typescript-eslint/utils@8.59.1': + resolution: {integrity: sha512-3pIeoXhCeYH9FSCBI8P3iNwJlGuzPlYKkTlen2O9T1DSeeg8UG8jstq6BLk+Mda0qup7mgk4z4XL4OzRaxZ8LA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.24.0': - resolution: {integrity: sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==} + '@typescript-eslint/visitor-keys@8.59.1': + resolution: {integrity: sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitejs/plugin-react@4.3.4': @@ -1119,6 +1166,7 @@ packages: '@walletconnect/ethereum-provider@2.17.0': resolution: {integrity: sha512-b+KTAXOb6JjoxkwpgYQQKPUcTwENGmdEdZoIDLeRicUmZTn/IQKfkMoC2frClB4YxkyoVMtj1oMV2JAax+yu9A==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' '@walletconnect/events@1.0.1': resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} @@ -1160,6 +1208,7 @@ packages: '@walletconnect/modal@2.7.0': resolution: {integrity: sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw==} + deprecated: Please follow the migration guide on https://docs.reown.com/appkit/upgrade/wcm '@walletconnect/relay-api@1.0.11': resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==} @@ -1172,6 +1221,7 @@ packages: '@walletconnect/sign-client@2.17.0': resolution: {integrity: sha512-sErYwvSSHQolNXni47L3Bm10ptJc1s1YoJvJd34s5E9h9+d3rj7PrhbiW9X82deN+Dm5oA8X9tC4xty1yIBrVg==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' '@walletconnect/time@1.0.2': resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} @@ -1181,6 +1231,7 @@ packages: '@walletconnect/universal-provider@2.17.0': resolution: {integrity: sha512-d3V5Be7AqLrvzcdMZSBS8DmGDRdqnyLk1DWmRKAGgR6ieUWykhhUKlvfeoZtvJrIXrY7rUGYpH1X41UtFkW5Pw==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' '@walletconnect/utils@2.17.0': resolution: {integrity: sha512-1aeQvjwsXy4Yh9G6g2eGmXrEl+BzkNjHRdCrGdMYqFTFa8ROEJfTGsSH3pLsNDlOY94CoBUvJvM55q/PMoN/FQ==} @@ -1191,11 +1242,22 @@ packages: '@walletconnect/window-metadata@1.0.1': resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} - abitype@1.0.8: - resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==} + abitype@1.2.3: + resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.2.4: + resolution: {integrity: sha512-dpKH+N27vRjarMVTFFkeY445VTKftzGWpL0FiT7xmVmzQRKazZexzC5uHG0f6XKsVLAuUlndnbGau6lRejClxg==} peerDependencies: typescript: '>=5.0.4' - zod: ^3 >=3.22.0 + zod: ^3.22.0 || ^4.0.0 peerDependenciesMeta: typescript: optional: true @@ -1267,6 +1329,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1274,11 +1340,11 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bn.js@4.12.1: - resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} + bn.js@4.12.3: + resolution: {integrity: sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==} - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + bn.js@5.2.3: + resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==} bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} @@ -1286,8 +1352,9 @@ packages: brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -1312,6 +1379,10 @@ packages: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + call-bind@1.0.8: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} @@ -1320,6 +1391,10 @@ packages: resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1464,6 +1539,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -1508,15 +1592,14 @@ packages: detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - detect-libc@2.0.2: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} @@ -1652,8 +1735,8 @@ packages: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + enhanced-resolve@5.21.0: + resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} engines: {node: '>=10.13.0'} environment@1.1.0: @@ -1698,10 +1781,10 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-refresh@0.4.19: - resolution: {integrity: sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==} + eslint-plugin-react-refresh@0.5.2: + resolution: {integrity: sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==} peerDependencies: - eslint: '>=8.40' + eslint: ^9 || ^10 eslint-scope@8.2.0: resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} @@ -1715,6 +1798,10 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.20.0: resolution: {integrity: sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1768,6 +1855,9 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -1779,10 +1869,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -1796,8 +1882,14 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fastq@1.19.0: - resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} @@ -1883,6 +1975,10 @@ packages: resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} engines: {node: '>= 0.4'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} @@ -1918,9 +2014,6 @@ packages: resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} engines: {node: '>=10'} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - h3@1.15.0: resolution: {integrity: sha512-OsjX4JW8J4XGgCgEcad20pepFQWnuKH+OwkCJjogF3C+9AZ1iYdtB4hX6vAb5DskBiu5ljEXqApINjR8CqoCMQ==} @@ -1946,6 +2039,10 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} @@ -1970,6 +2067,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + immer@10.1.1: resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} @@ -2114,16 +2215,19 @@ packages: isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isows@1.0.6: - resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} + isows@1.0.7: + resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} peerDependencies: ws: '*' - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true js-base64@3.7.7: @@ -2182,70 +2286,77 @@ packages: libsql@0.4.7: resolution: {integrity: sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==} + cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] - lightningcss-darwin-arm64@1.29.1: - resolution: {integrity: sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.29.1: - resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==} + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.29.1: - resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==} + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.29.1: - resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==} + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.29.1: - resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==} + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.29.1: - resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.29.1: - resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.29.1: - resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.29.1: - resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.29.1: - resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==} + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.29.1: - resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==} + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} lit-element@3.3.3: @@ -2267,6 +2378,7 @@ packages: lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -2286,21 +2398,16 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -2319,13 +2426,13 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - mipd@0.0.7: resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} peerDependencies: @@ -2337,8 +2444,8 @@ packages: motion@10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} - mprocs@0.7.2: - resolution: {integrity: sha512-EtHuUzkNMmw0ltswa4vHfulbl34l2e5RLgB59Kd9A1WKYDAZ/zmQbjk1q5lTFWNlsYh9rHTylM4u94Ho+NglIw==} + mprocs@0.9.2: + resolution: {integrity: sha512-FSHarRnBDw1w3deGWkIR1ZuU6HX2XAZdGDPLv7gcvNyTHjQkOaRjqXcJjtwdhyxbUygCQ8CBaZzwLyGzvLw2qw==} engines: {node: '>=0.10.0'} hasBin: true @@ -2362,6 +2469,7 @@ packages: node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead node-fetch-native@1.6.6: resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} @@ -2424,8 +2532,8 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ox@0.6.7: - resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==} + ox@0.14.20: + resolution: {integrity: sha512-rby38C3nDn8eQkf29Zgw4hkCZJ64Qqi0zRPWL8ENUQ7JVuoITqrVtwWQgM/He19SCMUEc7hS/Sjw0jIOSLJhOw==} peerDependencies: typescript: '>=5.4.0' peerDependenciesMeta: @@ -2483,10 +2591,14 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} @@ -2528,12 +2640,15 @@ packages: preact@10.25.4: resolution: {integrity: sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==} + preact@10.29.1: + resolution: {integrity: sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.5.0: - resolution: {integrity: sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==} + prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} engines: {node: '>=14'} hasBin: true @@ -2568,9 +2683,6 @@ packages: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} @@ -2640,18 +2752,11 @@ packages: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.34.6: resolution: {integrity: sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -2673,8 +2778,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true @@ -2685,8 +2790,9 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + sha.js@2.4.12: + resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} + engines: {node: '>= 0.10'} hasBin: true shebang-command@2.0.0: @@ -2805,19 +2911,19 @@ packages: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} engines: {node: '>=8'} - tailwind-merge@3.0.1: - resolution: {integrity: sha512-AvzE8FmSoXC7nC+oU5GlQJbip2UO7tmOhOfQyOmPhrStOGXHU08j8mZEHZ4BmCqY5dWTCo4ClWkNyRNx1wpT0g==} + tailwind-merge@3.5.0: + resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' - tailwindcss@4.0.6: - resolution: {integrity: sha512-mysewHYJKaXgNOW6pp5xon/emCsfAMnO8WMaGKZZ35fomnR/T5gYnRg2/yRTTrtXiEl1tiVkeRt0eMO6HxEZqw==} + tailwindcss@4.2.4: + resolution: {integrity: sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} terminal-link@3.0.0: @@ -2830,9 +2936,17 @@ packages: tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + tinygradient@1.1.5: resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2840,8 +2954,8 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - ts-api-utils@2.0.1: - resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -2864,12 +2978,16 @@ packages: resolution: {integrity: sha512-6kSc32kT0rbwxD6QL1CYe8IqdzN/J/ILMrNK+HMQCKH3insCDRY/3ITb0vcBss0a3t72fzh2YSzj8ko1HgwT3g==} engines: {node: '>=16'} - typescript-eslint@8.24.0: - resolution: {integrity: sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.59.1: + resolution: {integrity: sha512-xqDcFVBmlrltH64lklOVp1wYxgJr6LVdg3NamBgH2OOQDLFdTKfIZXF5PfghrnXQKXZGTQs8tr1vL7fJvq8CTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' typescript@5.7.3: resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} @@ -2982,10 +3100,12 @@ packages: uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true validate-npm-package-license@3.0.4: @@ -3003,8 +3123,8 @@ packages: react: optional: true - viem@2.23.1: - resolution: {integrity: sha512-c5AyJCTA5LeNI/KCu++vkbqbh7irYjUSHxLIAHPKJ6IEcBNMt8+7sPG7gjMXpqVWnqPMzaW9CA2n+yUsKWttDA==} + viem@2.48.8: + resolution: {integrity: sha512-Xj3Nrt66SKtn06kczU91ELn9Difr84ZM5A62BTlaisT5lpgt058i2mBkfMZCXHGb1ocOLjzC2ztPhD0Lvky7uQ==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -3140,8 +3260,20 @@ packages: utf-8-validate: optional: true - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3228,7 +3360,7 @@ packages: snapshots: - '@adraffy/ens-normalize@1.11.0': {} + '@adraffy/ens-normalize@1.11.1': {} '@alcalzone/ansi-tokenize@0.1.3': dependencies: @@ -3357,28 +3489,28 @@ snapshots: '@coinbase/wallet-sdk@3.9.3': dependencies: - bn.js: 5.2.1 + bn.js: 5.2.3 buffer: 6.0.3 clsx: 1.2.1 eth-block-tracker: 7.1.0 eth-json-rpc-filters: 6.0.1 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 keccak: 3.0.4 - preact: 10.25.4 - sha.js: 2.4.11 + preact: 10.29.1 + sha.js: 2.4.12 transitivePeerDependencies: - supports-color '@coinbase/wallet-sdk@4.3.0': dependencies: - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.8.0 clsx: 1.2.1 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 preact: 10.25.4 - '@ecies/ciphers@0.2.2(@noble/ciphers@1.2.1)': + '@ecies/ciphers@0.2.2(@noble/ciphers@1.3.0)': dependencies: - '@noble/ciphers': 1.2.1 + '@noble/ciphers': 1.3.0 '@esbuild/aix-ppc64@0.24.2': optional: true @@ -3455,13 +3587,20 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.20.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.20.0(jiti@2.6.1))': dependencies: - eslint: 9.20.0(jiti@2.4.2) + eslint: 9.20.0(jiti@2.6.1) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.1(eslint@9.20.0(jiti@2.6.1))': + dependencies: + eslint: 9.20.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} + '@eslint/config-array@0.19.2': dependencies: '@eslint/object-schema': 2.1.6 @@ -3501,16 +3640,16 @@ snapshots: '@eslint/core': 0.10.0 levn: 0.4.1 - '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.66.0)(@types/react@18.3.18)(bufferutil@4.0.9)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1))': + '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(bufferutil@4.0.9)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0))': dependencies: - '@eth-optimism/viem': 0.3.2(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@eth-optimism/viem': 0.3.3(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) '@hono/node-server': 1.13.8(hono@4.7.0) '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10)) '@libsql/client': 0.14.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@tanstack/react-query': 5.66.0(react@18.3.1) - '@vitejs/plugin-react': 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.66.0)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) - abitype: 1.0.8(typescript@5.7.3)(zod@3.24.1) + '@tanstack/react-query': 5.100.8(react@18.3.1) + '@vitejs/plugin-react': 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0)) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + abitype: 1.2.4(typescript@5.7.3)(zod@3.24.1) chalk: 5.4.1 dependency-graph: 1.0.0 dotenv: 16.4.7 @@ -3527,8 +3666,8 @@ snapshots: pastel: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(zod@3.24.1) react: 18.3.1 smol-toml: 1.3.1 - viem: 2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - wagmi: 2.14.11(@tanstack/query-core@5.66.0)(@tanstack/react-query@5.66.0(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.0.9)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) + viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + wagmi: 2.14.11(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.0.9)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) zod: 3.24.1 zod-validation-error: 3.4.0(zod@3.24.1) zustand: 5.0.3(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) @@ -3587,9 +3726,13 @@ snapshots: - utf-8-validate - vite - '@eth-optimism/viem@0.3.2(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': + '@eth-optimism/viem@0.3.3(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': dependencies: - viem: 2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + + '@eth-optimism/viem@0.4.15(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': + dependencies: + viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) '@ethereumjs/common@3.2.0': dependencies: @@ -3636,22 +3779,37 @@ snapshots: figures: 6.1.0 ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 '@libsql/client@0.14.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: @@ -3689,7 +3847,7 @@ snapshots: '@libsql/isomorphic-ws@0.1.5(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@types/ws': 8.5.14 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -3790,7 +3948,7 @@ snapshots: bufferutil: 4.0.9 cross-fetch: 4.1.0 date-fns: 2.30.0 - debug: 4.4.0 + debug: 4.4.3 eciesjs: 0.4.13 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -3814,7 +3972,7 @@ snapshots: '@paulmillr/qr': 0.2.1 bowser: 2.11.0 cross-fetch: 4.1.0 - debug: 4.4.0 + debug: 4.4.3 eciesjs: 0.4.13 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 @@ -3836,9 +3994,9 @@ snapshots: '@metamask/utils@5.0.2': dependencies: '@ethereumjs/tx': 4.2.0 - '@types/debug': 4.1.12 - debug: 4.4.0 - semver: 7.7.1 + '@types/debug': 4.1.13 + debug: 4.4.3 + semver: 7.7.4 superstruct: 1.0.4 transitivePeerDependencies: - supports-color @@ -3847,12 +4005,12 @@ snapshots: dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.1.0 - '@noble/hashes': 1.7.1 - '@scure/base': 1.2.4 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.4.0 + debug: 4.4.3 pony-cause: 2.1.11 - semver: 7.7.1 + semver: 7.7.4 uuid: 9.0.1 transitivePeerDependencies: - supports-color @@ -3861,12 +4019,12 @@ snapshots: dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.1.0 - '@noble/hashes': 1.7.1 - '@scure/base': 1.2.4 - '@types/debug': 4.1.12 - debug: 4.4.0 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + '@types/debug': 4.1.13 + debug: 4.4.3 pony-cause: 2.1.11 - semver: 7.7.1 + semver: 7.7.4 uuid: 9.0.1 transitivePeerDependencies: - supports-color @@ -3918,61 +4076,53 @@ snapshots: '@neon-rs/load@0.0.4': {} - '@noble/ciphers@1.2.1': {} + '@noble/ciphers@1.3.0': {} '@noble/curves@1.4.2': dependencies: '@noble/hashes': 1.4.0 - '@noble/curves@1.8.1': + '@noble/curves@1.9.1': dependencies: - '@noble/hashes': 1.7.1 - - '@noble/hashes@1.4.0': {} - - '@noble/hashes@1.7.1': {} + '@noble/hashes': 1.8.0 - '@nodelib/fs.scandir@2.1.5': + '@noble/curves@1.9.7': dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + '@noble/hashes': 1.8.0 - '@nodelib/fs.stat@2.0.5': {} + '@noble/hashes@1.4.0': {} - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.0 + '@noble/hashes@1.8.0': {} '@paulmillr/qr@0.2.1': {} - '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.18)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.18)(react@18.3.1)': dependencies: react: 18.3.1 optionalDependencies: '@types/react': 18.3.18 - '@radix-ui/react-primitive@2.0.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-slot': 1.1.2(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-slot': 1.2.4(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 '@types/react-dom': 18.3.5(@types/react@18.3.18) - '@radix-ui/react-separator@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-separator@1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.18 '@types/react-dom': 18.3.5(@types/react@18.3.18) - '@radix-ui/react-slot@1.1.2(@types/react@18.3.18)(react@18.3.1)': + '@radix-ui/react-slot@1.2.4(@types/react@18.3.18)(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 optionalDependencies: '@types/react': 18.3.18 @@ -4047,7 +4197,7 @@ snapshots: '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.22.9 - viem: 2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) transitivePeerDependencies: - bufferutil - typescript @@ -4058,7 +4208,7 @@ snapshots: '@scure/base@1.1.9': {} - '@scure/base@1.2.4': {} + '@scure/base@1.2.6': {} '@scure/bip32@1.4.0': dependencies: @@ -4066,21 +4216,21 @@ snapshots: '@noble/hashes': 1.4.0 '@scure/base': 1.1.9 - '@scure/bip32@1.6.2': + '@scure/bip32@1.7.0': dependencies: - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 - '@scure/base': 1.2.4 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 '@scure/bip39@1.3.0': dependencies: '@noble/hashes': 1.4.0 '@scure/base': 1.1.9 - '@scure/bip39@1.5.4': + '@scure/bip39@1.6.0': dependencies: - '@noble/hashes': 1.7.1 - '@scure/base': 1.2.4 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 '@socket.io/component-emitter@3.1.2': {} @@ -4164,72 +4314,79 @@ snapshots: '@stablelib/random': 1.0.2 '@stablelib/wipe': 1.0.1 - '@tailwindcss/node@4.0.6': + '@tailwindcss/node@4.2.4': dependencies: - enhanced-resolve: 5.18.1 - jiti: 2.4.2 - tailwindcss: 4.0.6 + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.21.0 + jiti: 2.6.1 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.2.4 - '@tailwindcss/oxide-android-arm64@4.0.6': + '@tailwindcss/oxide-android-arm64@4.2.4': optional: true - '@tailwindcss/oxide-darwin-arm64@4.0.6': + '@tailwindcss/oxide-darwin-arm64@4.2.4': optional: true - '@tailwindcss/oxide-darwin-x64@4.0.6': + '@tailwindcss/oxide-darwin-x64@4.2.4': optional: true - '@tailwindcss/oxide-freebsd-x64@4.0.6': + '@tailwindcss/oxide-freebsd-x64@4.2.4': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.6': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.0.6': + '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.0.6': + '@tailwindcss/oxide-linux-arm64-musl@4.2.4': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.0.6': + '@tailwindcss/oxide-linux-x64-gnu@4.2.4': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.0.6': + '@tailwindcss/oxide-linux-x64-musl@4.2.4': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.0.6': + '@tailwindcss/oxide-wasm32-wasi@4.2.4': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.0.6': + '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': optional: true - '@tailwindcss/oxide@4.0.6': + '@tailwindcss/oxide-win32-x64-msvc@4.2.4': + optional: true + + '@tailwindcss/oxide@4.2.4': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.0.6 - '@tailwindcss/oxide-darwin-arm64': 4.0.6 - '@tailwindcss/oxide-darwin-x64': 4.0.6 - '@tailwindcss/oxide-freebsd-x64': 4.0.6 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.6 - '@tailwindcss/oxide-linux-arm64-gnu': 4.0.6 - '@tailwindcss/oxide-linux-arm64-musl': 4.0.6 - '@tailwindcss/oxide-linux-x64-gnu': 4.0.6 - '@tailwindcss/oxide-linux-x64-musl': 4.0.6 - '@tailwindcss/oxide-win32-arm64-msvc': 4.0.6 - '@tailwindcss/oxide-win32-x64-msvc': 4.0.6 - - '@tailwindcss/vite@4.0.6(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1))': - dependencies: - '@tailwindcss/node': 4.0.6 - '@tailwindcss/oxide': 4.0.6 - lightningcss: 1.29.1 - tailwindcss: 4.0.6 - vite: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1) - - '@tanstack/query-core@5.66.0': {} - - '@tanstack/react-query@5.66.0(react@18.3.1)': - dependencies: - '@tanstack/query-core': 5.66.0 + '@tailwindcss/oxide-android-arm64': 4.2.4 + '@tailwindcss/oxide-darwin-arm64': 4.2.4 + '@tailwindcss/oxide-darwin-x64': 4.2.4 + '@tailwindcss/oxide-freebsd-x64': 4.2.4 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.4 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.4 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.4 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.4 + '@tailwindcss/oxide-linux-x64-musl': 4.2.4 + '@tailwindcss/oxide-wasm32-wasi': 4.2.4 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 + + '@tailwindcss/vite@4.2.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0))': + dependencies: + '@tailwindcss/node': 4.2.4 + '@tailwindcss/oxide': 4.2.4 + tailwindcss: 4.2.4 + vite: 6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0) + + '@tanstack/query-core@5.100.8': {} + + '@tanstack/react-query@5.100.8(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.100.8 react: 18.3.1 '@types/babel__core@7.20.5': @@ -4257,6 +4414,10 @@ snapshots: dependencies: '@types/ms': 2.1.0 + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + '@types/estree@1.0.6': {} '@types/gensync@1.0.4': {} @@ -4294,104 +4455,118 @@ snapshots: dependencies: '@types/node': 22.13.1 - '@typescript-eslint/eslint-plugin@8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3))(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.24.0 - '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.0 - eslint: 9.20.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 5.3.2 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.59.1 + '@typescript-eslint/type-utils': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) + '@typescript-eslint/utils': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.59.1 + eslint: 9.20.0(jiti@2.6.1) + ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.7.3) + ts-api-utils: 2.5.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/parser@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.24.0 - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.0 - debug: 4.4.0 - eslint: 9.20.0(jiti@2.4.2) + '@typescript-eslint/scope-manager': 8.59.1 + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.59.1 + debug: 4.4.3 + eslint: 9.20.0(jiti@2.6.1) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.24.0': + '@typescript-eslint/project-service@8.59.1(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/visitor-keys': 8.24.0 + '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.7.3) + '@typescript-eslint/types': 8.59.1 + debug: 4.4.3 + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color - '@typescript-eslint/type-utils@8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/scope-manager@8.59.1': + dependencies: + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/visitor-keys': 8.59.1 + + '@typescript-eslint/tsconfig-utils@8.59.1(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - debug: 4.4.0 - eslint: 9.20.0(jiti@2.4.2) - ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + + '@typescript-eslint/type-utils@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) + debug: 4.4.3 + eslint: 9.20.0(jiti@2.6.1) + ts-api-utils: 2.5.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.24.0': {} + '@typescript-eslint/types@8.59.1': {} - '@typescript-eslint/typescript-estree@8.24.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.59.1(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/visitor-keys': 8.24.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.0.1(typescript@5.7.3) + '@typescript-eslint/project-service': 8.59.1(typescript@5.7.3) + '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.7.3) + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/visitor-keys': 8.59.1 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/utils@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.24.0 - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) - eslint: 9.20.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.20.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.59.1 + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.7.3) + eslint: 9.20.0(jiti@2.6.1) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.24.0': + '@typescript-eslint/visitor-keys@8.59.1': dependencies: - '@typescript-eslint/types': 8.24.0 - eslint-visitor-keys: 4.2.0 + '@typescript-eslint/types': 8.59.1 + eslint-visitor-keys: 5.0.1 - '@vitejs/plugin-react@4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1))': + '@vitejs/plugin-react@4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0))': dependencies: '@babel/core': 7.26.8 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.8) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.8) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1) + vite: 6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0) transitivePeerDependencies: - supports-color - '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.66.0)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)': + '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)': dependencies: '@coinbase/wallet-sdk': 4.3.0 '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.66.0)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) '@walletconnect/ethereum-provider': 2.17.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - viem: 2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -4421,14 +4596,14 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.16.4(@tanstack/query-core@5.66.0)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': + '@wagmi/core@2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.7.3) - viem: 2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) zustand: 5.0.0(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) optionalDependencies: - '@tanstack/query-core': 5.66.0 + '@tanstack/query-core': 5.100.8 typescript: 5.7.3 transitivePeerDependencies: - '@types/react' @@ -4781,7 +4956,12 @@ snapshots: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 - abitype@1.0.8(typescript@5.7.3)(zod@3.24.1): + abitype@1.2.3(typescript@5.7.3)(zod@3.24.1): + optionalDependencies: + typescript: 5.7.3 + zod: 3.24.1 + + abitype@1.2.4(typescript@5.7.3)(zod@3.24.1): optionalDependencies: typescript: 5.7.3 zod: 3.24.1 @@ -4820,7 +5000,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 argparse@2.0.1: {} @@ -4840,13 +5020,15 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + base64-js@1.5.1: {} binary-extensions@2.3.0: {} - bn.js@4.12.1: {} + bn.js@4.12.3: {} - bn.js@5.2.1: {} + bn.js@5.2.3: {} bowser@2.11.0: {} @@ -4855,9 +5037,9 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@5.0.5: dependencies: - balanced-match: 1.0.2 + balanced-match: 4.0.4 braces@3.0.3: dependencies: @@ -4886,6 +5068,11 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.1 @@ -4898,6 +5085,11 @@ snapshots: call-bind-apply-helpers: 1.0.1 get-intrinsic: 1.2.7 + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + callsites@3.1.0: {} camelcase@5.3.1: {} @@ -5023,6 +5215,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decamelize@1.2.0: {} decamelize@6.0.0: {} @@ -5053,10 +5249,10 @@ snapshots: detect-browser@5.3.0: {} - detect-libc@1.0.3: {} - detect-libc@2.0.2: {} + detect-libc@2.1.2: {} + dijkstrajs@1.0.3: {} dotenv@16.4.7: {} @@ -5082,16 +5278,16 @@ snapshots: eciesjs@0.4.13: dependencies: - '@ecies/ciphers': 0.2.2(@noble/ciphers@1.2.1) - '@noble/ciphers': 1.2.1 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@ecies/ciphers': 0.2.2(@noble/ciphers@1.3.0) + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 electron-to-chromium@1.5.97: {} elliptic@6.6.1: dependencies: - bn.js: 4.12.1 + bn.js: 4.12.3 brorand: 1.1.0 hash.js: 1.1.7 hmac-drbg: 1.0.1 @@ -5123,10 +5319,10 @@ snapshots: engine.io-parser@5.2.3: {} - enhanced-resolve@5.18.1: + enhanced-resolve@5.21.0: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.3.3 environment@1.1.0: {} @@ -5174,13 +5370,13 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@5.1.0(eslint@9.20.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.1.0(eslint@9.20.0(jiti@2.6.1)): dependencies: - eslint: 9.20.0(jiti@2.4.2) + eslint: 9.20.0(jiti@2.6.1) - eslint-plugin-react-refresh@0.4.19(eslint@9.20.0(jiti@2.4.2)): + eslint-plugin-react-refresh@0.5.2(eslint@9.20.0(jiti@2.6.1)): dependencies: - eslint: 9.20.0(jiti@2.4.2) + eslint: 9.20.0(jiti@2.6.1) eslint-scope@8.2.0: dependencies: @@ -5191,9 +5387,11 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.20.0(jiti@2.4.2): + eslint-visitor-keys@5.0.1: {} + + eslint@9.20.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.2 '@eslint/core': 0.11.0 @@ -5228,7 +5426,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.4.2 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -5288,6 +5486,8 @@ snapshots: eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} + events@3.3.0: {} extension-port-stream@3.0.0: @@ -5297,14 +5497,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -5313,9 +5505,9 @@ snapshots: fast-safe-stringify@2.1.1: {} - fastq@1.19.0: - dependencies: - reusify: 1.0.4 + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 fetch-blob@3.2.0: dependencies: @@ -5395,6 +5587,19 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.3 + math-intrinsics: 1.1.0 + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 @@ -5423,8 +5628,6 @@ snapshots: chalk: 4.1.2 tinygradient: 1.1.5 - graphemer@1.4.0: {} - h3@1.15.0: dependencies: cookie-es: 1.2.2 @@ -5459,6 +5662,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + hey-listen@1.0.8: {} hmac-drbg@1.0.1: @@ -5479,6 +5686,8 @@ snapshots: ignore@5.3.2: {} + ignore@7.0.5: {} + immer@10.1.1: {} import-fresh@3.3.1: @@ -5540,7 +5749,7 @@ snapshots: type-fest: 4.34.1 widest-line: 5.0.0 wrap-ansi: 9.0.0 - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) yoga-wasm-web: 0.3.3 optionalDependencies: '@types/react': 18.3.18 @@ -5624,13 +5833,15 @@ snapshots: isarray@1.0.0: {} + isarray@2.0.5: {} + isexe@2.0.0: {} - isows@1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + isows@1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - jiti@2.4.2: {} + jiti@2.6.1: {} js-base64@3.7.7: {} @@ -5691,50 +5902,54 @@ snapshots: '@libsql/linux-x64-musl': 0.4.7 '@libsql/win32-x64-msvc': 0.4.7 - lightningcss-darwin-arm64@1.29.1: + lightningcss-android-arm64@1.32.0: optional: true - lightningcss-darwin-x64@1.29.1: + lightningcss-darwin-arm64@1.32.0: optional: true - lightningcss-freebsd-x64@1.29.1: + lightningcss-darwin-x64@1.32.0: optional: true - lightningcss-linux-arm-gnueabihf@1.29.1: + lightningcss-freebsd-x64@1.32.0: optional: true - lightningcss-linux-arm64-gnu@1.29.1: + lightningcss-linux-arm-gnueabihf@1.32.0: optional: true - lightningcss-linux-arm64-musl@1.29.1: + lightningcss-linux-arm64-gnu@1.32.0: optional: true - lightningcss-linux-x64-gnu@1.29.1: + lightningcss-linux-arm64-musl@1.32.0: optional: true - lightningcss-linux-x64-musl@1.29.1: + lightningcss-linux-x64-gnu@1.32.0: optional: true - lightningcss-win32-arm64-msvc@1.29.1: + lightningcss-linux-x64-musl@1.32.0: optional: true - lightningcss-win32-x64-msvc@1.29.1: + lightningcss-win32-arm64-msvc@1.32.0: optional: true - lightningcss@1.29.1: + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: dependencies: - detect-libc: 1.0.3 + detect-libc: 2.1.2 optionalDependencies: - lightningcss-darwin-arm64: 1.29.1 - lightningcss-darwin-x64: 1.29.1 - lightningcss-freebsd-x64: 1.29.1 - lightningcss-linux-arm-gnueabihf: 1.29.1 - lightningcss-linux-arm64-gnu: 1.29.1 - lightningcss-linux-arm64-musl: 1.29.1 - lightningcss-linux-x64-gnu: 1.29.1 - lightningcss-linux-x64-musl: 1.29.1 - lightningcss-win32-arm64-msvc: 1.29.1 - lightningcss-win32-x64-msvc: 1.29.1 + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 lit-element@3.3.3: dependencies: @@ -5778,17 +5993,14 @@ snapshots: dependencies: react: 18.3.1 - math-intrinsics@1.1.0: {} + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 - merge2@1.4.1: {} + math-intrinsics@1.1.0: {} micro-ftch@0.3.1: {} - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - mime-db@1.52.0: {} mime-types@2.1.35: @@ -5801,13 +6013,13 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} - minimatch@3.1.2: + minimatch@10.2.5: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 5.0.5 - minimatch@9.0.5: + minimatch@3.1.2: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 1.1.11 mipd@0.0.7(typescript@5.7.3): optionalDependencies: @@ -5822,7 +6034,7 @@ snapshots: '@motionone/utils': 10.18.0 '@motionone/vue': 10.16.4 - mprocs@0.7.2: {} + mprocs@0.9.2: {} ms@2.1.3: {} @@ -5857,7 +6069,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.1 + semver: 7.7.4 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -5897,14 +6109,15 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ox@0.6.7(typescript@5.7.3)(zod@3.24.1): + ox@0.14.20(typescript@5.7.3)(zod@3.24.1): 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.7.3)(zod@3.24.1) + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.4(typescript@5.7.3)(zod@3.24.1) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.7.3 @@ -5959,7 +6172,9 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} + + picomatch@4.0.4: {} pify@3.0.0: {} @@ -6004,9 +6219,11 @@ snapshots: preact@10.25.4: {} + preact@10.29.1: {} + prelude-ls@1.2.1: {} - prettier@3.5.0: {} + prettier@3.8.3: {} process-nextick-args@2.0.1: {} @@ -6043,8 +6260,6 @@ snapshots: split-on-first: 1.1.0 strict-uri-encode: 2.0.0 - queue-microtask@1.2.3: {} - quick-format-unescaped@4.0.4: {} radix3@1.1.2: {} @@ -6101,7 +6316,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 real-require@0.1.0: {} @@ -6118,8 +6333,6 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - reusify@1.0.4: {} - rollup@4.34.6: dependencies: '@types/estree': 1.0.6 @@ -6145,10 +6358,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.6 fsevents: 2.3.3 - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -6167,7 +6376,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.1: {} + semver@7.7.4: {} set-blocking@2.0.0: {} @@ -6180,10 +6389,11 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 - sha.js@2.4.11: + sha.js@2.4.12: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + to-buffer: 1.2.2 shebang-command@2.0.0: dependencies: @@ -6306,15 +6516,15 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 - tailwind-merge@3.0.1: {} + tailwind-merge@3.5.0: {} - tailwindcss-animate@1.0.7(tailwindcss@4.0.6): + tailwindcss-animate@1.0.7(tailwindcss@4.2.4): dependencies: - tailwindcss: 4.0.6 + tailwindcss: 4.2.4 - tailwindcss@4.0.6: {} + tailwindcss@4.2.4: {} - tapable@2.2.1: {} + tapable@2.3.3: {} terminal-link@3.0.0: dependencies: @@ -6327,18 +6537,29 @@ snapshots: tinycolor2@1.6.0: {} + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinygradient@1.1.5: dependencies: '@types/tinycolor2': 1.4.6 tinycolor2: 1.6.0 + to-buffer@1.2.2: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 tr46@0.0.3: {} - ts-api-utils@2.0.1(typescript@5.7.3): + ts-api-utils@2.5.0(typescript@5.7.3): dependencies: typescript: 5.7.3 @@ -6354,12 +6575,19 @@ snapshots: type-fest@4.34.1: {} - typescript-eslint@8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3): + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typescript-eslint@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.0(eslint@9.20.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.20.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3))(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) + '@typescript-eslint/parser': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) + eslint: 9.20.0(jiti@2.6.1) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -6440,16 +6668,16 @@ snapshots: '@types/react': 18.3.18 react: 18.3.1 - viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1): + viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1): 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.7.3)(zod@3.24.1) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.6.7(typescript@5.7.3)(zod@3.24.1) - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.7.3)(zod@3.24.1) + isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ox: 0.14.20(typescript@5.7.3)(zod@3.24.1) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -6457,7 +6685,7 @@ snapshots: - utf-8-validate - zod - vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1): + vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0): dependencies: esbuild: 0.24.2 postcss: 8.5.1 @@ -6465,17 +6693,17 @@ snapshots: optionalDependencies: '@types/node': 22.13.1 fsevents: 2.3.3 - jiti: 2.4.2 - lightningcss: 1.29.1 + jiti: 2.6.1 + lightningcss: 1.32.0 - wagmi@2.14.11(@tanstack/query-core@5.66.0)(@tanstack/react-query@5.66.0(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.0.9)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1): + wagmi@2.14.11(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.0.9)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1): dependencies: - '@tanstack/react-query': 5.66.0(react@18.3.1) - '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.66.0)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.66.0)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@tanstack/react-query': 5.100.8(react@18.3.1) + '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) react: 18.3.1 use-sync-external-store: 1.4.0(react@18.3.1) - viem: 2.23.1(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -6575,7 +6803,12 @@ snapshots: bufferutil: 4.0.9 utf-8-validate: 5.0.10 - ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.9 utf-8-validate: 5.0.10 From 729b438777dfc1c0d2ba10b829cf9e57acf72707 Mon Sep 17 00:00:00 2001 From: Iko Date: Sun, 3 May 2026 23:18:26 +0700 Subject: [PATCH 06/60] fix(readiness): run pre-checks before contracts working directory exists --- .github/workflows/contracts-mainnet-readiness.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/contracts-mainnet-readiness.yml b/.github/workflows/contracts-mainnet-readiness.yml index fea3494..f345401 100644 --- a/.github/workflows/contracts-mainnet-readiness.yml +++ b/.github/workflows/contracts-mainnet-readiness.yml @@ -27,9 +27,6 @@ jobs: name: Mainnet Readiness Gate runs-on: ubuntu-latest environment: production - defaults: - run: - working-directory: contracts env: MARK_MAINNET_GATE_MODE: ${{ inputs.mode }} RPC_URL: ${{ inputs.rpc_url }} @@ -69,6 +66,7 @@ jobs: uses: foundry-rs/foundry-toolchain@v1 - name: Run mainnet readiness gate + working-directory: contracts run: ./script/ops/mainnet-readiness.sh - name: Upload readiness artifact From 42160a71dd15509424028c5797544473d794808a Mon Sep 17 00:00:00 2001 From: Iko Date: Sun, 3 May 2026 23:42:33 +0700 Subject: [PATCH 07/60] fix(frontend): remove non-component export from button ui --- src/components/ui/button.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx index 1d23e35..8d7f5ab 100644 --- a/src/components/ui/button.tsx +++ b/src/components/ui/button.tsx @@ -52,4 +52,4 @@ function Button({ ); } -export { Button, buttonVariants }; +export { Button }; From 62c7c34eb40d487dabb5cda23c4b24fd6969cc50 Mon Sep 17 00:00:00 2001 From: Iko Date: Mon, 4 May 2026 01:47:40 +0700 Subject: [PATCH 08/60] ci(security): add codeql and dependency review gates --- .github/dependabot.yml | 10 ++++-- .github/workflows/codeql.yml | 47 +++++++++++++++++++++++++ .github/workflows/dependency-review.yml | 29 +++++++++++++++ 3 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/codeql.yml create mode 100644 .github/workflows/dependency-review.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ba50c1b..8bf9291 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -2,12 +2,13 @@ version: 2 updates: - package-ecosystem: "github-actions" directory: "/" + target-branch: "dev" schedule: interval: "weekly" day: "monday" time: "03:00" timezone: "UTC" - open-pull-requests-limit: 10 + open-pull-requests-limit: 5 labels: - "dependencies" - "ci" @@ -16,15 +17,20 @@ updates: - package-ecosystem: "npm" directory: "/" + target-branch: "dev" schedule: interval: "weekly" day: "monday" time: "03:30" timezone: "UTC" - open-pull-requests-limit: 10 + open-pull-requests-limit: 8 labels: - "dependencies" - "frontend" + - "security" + allow: + - dependency-type: "direct" + - dependency-type: "indirect" groups: frontend-minor-patch: update-types: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..41af7c2 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,47 @@ +name: CodeQL + +on: + push: + branches: + - dev + - canary + - main + pull_request: + branches: + - dev + - canary + - main + schedule: + - cron: '22 3 * * 1' + +permissions: + actions: read + contents: read + security-events: write + +jobs: + analyze: + name: Analyze (JavaScript/TypeScript) + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: + - javascript-typescript + + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + queries: security-extended + + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 0000000..4455621 --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,29 @@ +name: Dependency Review + +on: + pull_request: + branches: + - dev + - canary + - main + +permissions: + contents: read + +jobs: + dependency-review: + name: Dependency Review + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Review dependency changes + uses: actions/dependency-review-action@v4 + with: + fail-on-severity: high + warn-only: false + comment-summary-in-pr: always From dd0b1a88c27dc2e4ef9d0871f737af2e99dfe3c1 Mon Sep 17 00:00:00 2001 From: Iko Date: Mon, 4 May 2026 02:13:16 +0700 Subject: [PATCH 09/60] chore(security): add local slither install and core scan targets --- contracts/Makefile | 25 ++++++++++++++++++++++++- contracts/README.md | 12 +++--------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/contracts/Makefile b/contracts/Makefile index 37f168a..4c7ab13 100644 --- a/contracts/Makefile +++ b/contracts/Makefile @@ -1,4 +1,4 @@ -.PHONY: ci-local ci-fast ci-full test-core test-invariants release-gate architecture-guard layering-guard smoke-production-mode test-production-lock verify-production-lock dispatch-production-lock-verify dispatch-release-evidence-sequence bootstrap-release-secrets rehearse-production-lock generate-promotion-checklist validate-prod-env validate-prod-env-all generate-evidence-manifest verify-evidence-manifest sign-evidence-manifest verify-evidence-signature +.PHONY: ci-local ci-fast ci-full test-core test-invariants release-gate architecture-guard layering-guard smoke-production-mode test-production-lock verify-production-lock dispatch-production-lock-verify dispatch-release-evidence-sequence bootstrap-release-secrets rehearse-production-lock generate-promotion-checklist validate-prod-env validate-prod-env-all generate-evidence-manifest verify-evidence-manifest sign-evidence-manifest verify-evidence-signature slither-install slither-core # Fast local loop: guards + unit/e2e tests (excludes invariants and integration profile tests). ci-fast: architecture-guard layering-guard test-core @@ -73,3 +73,26 @@ sign-evidence-manifest: verify-evidence-signature: @./script/ops/verify-evidence-signature.sh + +slither-install: + @python3 -m pip install --user slither-analyzer + +slither-core: + @command -v slither >/dev/null 2>&1 || { \ + echo "slither not found in PATH. Try: export PATH=\"$$HOME/Library/Python/3.9/bin:$$PATH\""; \ + echo "or run: make slither-install"; \ + exit 1; \ + } + @for target in \ + src/token/RYLA.sol \ + src/bridge/MARKBridgeAdapter.sol \ + src/settlement/MARKSettlementModule.sol \ + src/settlement/verifier/AttestedSettlementVerifier.sol; \ + do \ + slither "$$target" \ + --solc-remaps "@interop-lib/=lib/interop-lib/src/ @openzeppelin/=lib/createx/lib/openzeppelin-contracts/" \ + --exclude-dependencies \ + --exclude "naming-convention,timestamp,arbitrary-send-erc20,reentrancy-balance,reentrancy-benign" \ + --filter-paths "lib|test|script|out|cache" \ + --fail-medium; \ + done diff --git a/contracts/README.md b/contracts/README.md index 12c4cc1..42e568f 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -405,15 +405,9 @@ Run Slither locally on MARK core contracts: ```bash cd /Users/iap/mark/contracts -slither \ - src/token/RYLA.sol \ - src/bridge/MARKBridgeAdapter.sol \ - src/settlement/MARKSettlementModule.sol \ - src/settlement/verifier/AttestedSettlementVerifier.sol \ - --solc-remaps "@interop-lib/=lib/interop-lib/src/ @openzeppelin/=lib/createx/lib/openzeppelin-contracts/" \ - --exclude-dependencies \ - --filter-paths "lib|test|script|out|cache" \ - --fail-medium +make slither-install +export PATH="$HOME/Library/Python/3.9/bin:$PATH" +make slither-core ``` CI workflow: From 1dcab6caef55a48f9a7491dce66c624eef7f8c77 Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 00:08:47 +0700 Subject: [PATCH 10/60] docs(phase1): add comprehensive contributor & deployment runbooks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add Phase 1 foundation documentation for team scaling and professional maintenance: CONTRIBUTING.md: - Local development setup instructions (Node, Foundry, super-cli) - Feature branch workflow with conventional commits - Code standards (TypeScript, Solidity, Testing) - PR submission checklist and review process - Testing guidelines and test structure - Troubleshooting for common dev issues DEPLOYMENT.md: - Step-by-step staging deployment runbook (OP Sepolia) - Mainnet deployment procedures with gates - Pre/post-deployment checklists - Evidence generation and verification - Monitoring and health checks - Rollback procedures for emergency scenarios - Comprehensive troubleshooting guide - Command cheat sheet and timeline estimates TROUBLESHOOTING.md: - Development setup issues (pnpm, Node, Foundry, super-cli, git hooks) - Smart contract issues (architecture guard, layering guard, Slither findings) - Frontend development issues (port conflicts, TypeScript errors, module resolution) - Testing issues (hanging tests, gas, balance) - Deployment issues (insufficient funds, timeouts, RPC problems) - CI/CD workflow issues (stuck workflows, secrets, version mismatches) - Network & RPC issues (timeouts, contract not found, chain ID) .github/CODEOWNERS: - Enhanced documentation with clear sections - Added review requirements annotations - Better organization for team scaling - Maintains strict single-owner model (ready for multi-owner when scaling) Impact: - Enables solo maintainer to self-document workflows - Provides clear onboarding path for new contributors - Establishes professional deployment procedures - Reduces support burden with comprehensive troubleshooting - Foundation for team collaboration (docs ready for team addition) - Production-ready documentation for auditors and stakeholders This commit fulfills Phase 1 foundation requirements: ✅ CONTRIBUTING.md created ✅ DEPLOYMENT.md runbook created ✅ TROUBLESHOOTING.md created ✅ CODEOWNERS enhanced and documented Ready for: Phase 2 (interactive UI) and Phase 3 (security audit planning) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/CODEOWNERS | 85 +++- CONTRIBUTING.md | 461 +++++++++++++++++++++ DEPLOYMENT.md | 761 +++++++++++++++++++++++++++++++++++ TROUBLESHOOTING.md | 980 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2281 insertions(+), 6 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 DEPLOYMENT.md create mode 100644 TROUBLESHOOTING.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 234ec4e..82363e4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,14 +1,87 @@ -# Global default owner +# ============================================================================ +# CODEOWNERS - MARK Protocol Code Ownership & Review Requirements +# ============================================================================ +# Format: @owner [additional-reviewers] +# Paths are matched top-to-bottom; first match wins +# ============================================================================ + +# Global default owner (catches everything not explicitly listed) * @iap -# Protocol-critical scope -/contracts/src/** @iap -/contracts/script/** @iap -/contracts/test/** @iap +# ============================================================================ +# PROTOCOL-CRITICAL: Smart Contracts +# ============================================================================ +# All contract changes require owner review +# Consider requiring 2 approvals for main/canary deployments + +/contracts/src/token/** @iap +/contracts/src/bridge/** @iap +/contracts/src/settlement/** @iap +/contracts/src/errors/** @iap +/contracts/src/interfaces/** @iap + +# ============================================================================ +# TESTING: Contract Tests +# ============================================================================ + +/contracts/test/unit/** @iap +/contracts/test/e2e/** @iap +/contracts/test/invariant/** @iap + +# ============================================================================ +# DEPLOYMENT & OPERATIONS: Scripts & Automation +# ============================================================================ +# Deployment scripts are critical - require careful review + +/contracts/script/deploy/** @iap +/contracts/script/ops/** @iap +/contracts/script/ci/** @iap /contracts/RUNBOOK.md @iap /contracts/README.md @iap +/contracts/Makefile @iap + +# ============================================================================ +# CI/CD & GOVERNANCE: Workflows & Branch Protection +# ============================================================================ +# Workflow changes affect all deployments - require review +# Governance changes must be kept in sync with policy -# CI and governance /.github/workflows/** @iap /.github/PRODUCTION_GOVERNANCE_CHECKLIST.md @iap +/.github/CODEOWNERS @iap + /BRANCHING.md @iap +/CONTRIBUTING.md @iap +/DEPLOYMENT.md @iap +/TROUBLESHOOTING.md @iap +/AGENTS.md @iap + +# ============================================================================ +# FRONTEND APPLICATION +# ============================================================================ + +/src/** @iap +/index.html @iap + +# ============================================================================ +# CONFIGURATION & BUILD +# ============================================================================ + +/package.json @iap +/pnpm-lock.yaml @iap +/tsconfig*.json @iap +/vite.config.ts @iap +/eslint.config.js @iap +/.prettierrc.json @iap +/mprocs.yaml @iap +/remappings.txt @iap + +/contracts/foundry.toml @iap +/contracts/Makefile @iap + +# ============================================================================ +# DOCUMENTATION +# ============================================================================ + +/README.md @iap +/LICENSE @iap diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..97876eb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,461 @@ +# Contributing to MARK Protocol + +Thank you for your interest in contributing to MARK Protocol! This guide will walk you through the development workflow, code standards, and release procedures. + +## Table of Contents + +- [Getting Started](#getting-started) +- [Development Workflow](#development-workflow) +- [Code Standards](#code-standards) +- [Testing](#testing) +- [Submitting a PR](#submitting-a-pr) +- [Release Process](#release-process) +- [Troubleshooting](#troubleshooting) + +--- + +## Getting Started + +### Prerequisites + +- **Node.js**: 20 or 22 (check `.nvmrc` for pinned version) +- **pnpm**: 9.0.2+ (managed via corepack) +- **Foundry**: Latest version ([install](https://book.getfoundry.sh/getting-started/installation)) +- **super-cli**: Latest version ([install](https://github.com/ethereum-optimism/super-cli)) + +### Local Setup + +```bash +# Clone the repository +git clone https://github.com/iap/mark.git +cd mark + +# Install dependencies (pnpm is auto-managed via corepack) +pnpm i + +# Verify setup +pnpm typecheck # TypeScript check +pnpm lint # Linting +cd contracts && make ci-fast # Contract tests +``` + +### Start Development + +```bash +# Start the full multi-process dev environment +pnpm dev + +# This will: +# - Start local Superchain (supersim) with L1 + 2 L2 chains +# - Launch Vite dev server at http://localhost:5173 +# - Deploy contracts to local network +# - Watch for file changes + +# In separate terminals, you can also run individually: +pnpm dev:frontend # Frontend only (port 5173) +pnpm dev:supersim # Local Superchain only +pnpm build:contracts # Compile contracts +``` + +--- + +## Development Workflow + +### Branching Strategy + +MARK uses a **three-track branch model**: + +- **`dev`** — Active integration branch (default for features) +- **`canary`** — Staging/stabilization branch +- **`main`** — Production-ready (release branch) + +### Feature Development + +1. **Create a feature branch from `dev`**: + ```bash + git checkout dev + git pull origin dev + git checkout -b feature/your-feature-name + ``` + +2. **Use conventional commit naming**: + - `feature/add-settlement-ui` ✅ + - `feature/fix-bridge-relay` ✅ + - `feature/docs-update` ✅ + - `feature/123` ❌ (use descriptive names) + +3. **Make changes and commit**: + ```bash + git add . + git commit -m "feat(settlement): add transaction confirmation ui" + ``` + + **Commit format**: `(): ` + + - **Types**: `feat`, `fix`, `chore`, `ci`, `refactor`, `docs`, `test` + - **Scope**: Component area (`settlement`, `bridge`, `token`, `frontend`, `workflows`, etc.) + - **Subject**: Clear, imperative tone + +### Before Submitting PR + +1. **Run all checks locally**: + ```bash + # Type checking + pnpm typecheck + + # Linting + pnpm lint + + # Format code + pnpm format + + # Contract compilation and tests + cd contracts && make ci-fast + ``` + +2. **Verify no secrets in code**: + ```bash + # Check for common patterns (key, password, token, secret) + git diff HEAD^ HEAD | grep -i "password\|api_key\|private_key" + # Should return nothing + ``` + +3. **Update documentation** if your changes affect: + - Contract APIs + - Environment setup + - Release procedures + - Architecture + +--- + +## Code Standards + +### TypeScript/React + +- **Use TypeScript** for all `.ts`/`.tsx` files (no `any` types without justification) +- **ESLint** enforces rules automatically +- **Prettier** formats code consistently +- Prefer **functional components** with hooks +- **Component files** should be small and focused + +Example component: +```typescript +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; + +interface SettlementCardProps { + id: string; + status: 'pending' | 'confirmed' | 'failed'; + onExecute: () => void; +} + +export function SettlementCard({ id, status, onExecute }: SettlementCardProps) { + return ( + + + Settlement {id} + + +
Status: {status}
+ +
+
+ ); +} +``` + +### Solidity + +- **Use PascalCase** for contract names (`MARKSettlementModule`, not `mark_settlement_module`) +- **Keep modules focused**: one contract per file (with related errors/interfaces ok) +- **Document with NatSpec comments** for all public functions +- **Follow existing patterns** in `src/token`, `src/bridge`, `src/settlement` +- **No cross-domain imports** (enforced by `make architecture-guard`) + +Example contract: +```solidity +/// @title MARKSettlementModule +/// @notice Handles cross-chain settlement execution +contract MARKSettlementModule is ISettlement { + /// @notice Execute a settlement transaction + /// @param id The settlement ID + /// @param proof The zero-knowledge proof + function settle(bytes32 id, bytes calldata proof) external { + // Implementation + } +} +``` + +### Testing + +- **Test names** should describe behavior: `testSettlementSucceeds()`, not `test1()` +- **Arrange-Act-Assert** pattern for clarity +- **One assertion per test** (or group related assertions with comments) + +Example test: +```solidity +function testSettlementExecutesWithValidProof() public { + // Arrange: Set up settlement state + bytes32 settlementId = keccak256("test"); + bytes memory proof = _generateValidProof(); + + // Act: Execute settlement + vm.prank(user); + settlement.execute(settlementId, proof); + + // Assert: Verify result + assertEq(settlement.status(settlementId), Status.EXECUTED); +} +``` + +--- + +## Testing + +### Running Tests + +```bash +cd contracts + +# Fast tests (guards + unit/e2e, ~30 seconds) +make ci-fast + +# Full test suite (includes invariants, ~2 minutes) +make ci-full + +# Specific test file +forge test --match-path "test/unit/RYLA.t.sol" -v + +# Specific test function +forge test --match-test "testMintSucceeds" -v + +# With gas reporting +forge test --gas-report +``` + +### Test Structure + +``` +contracts/test/ +├── unit/ # Unit tests (isolated contract behavior) +│ ├── settlement/ +│ ├── bridge/ +│ ├── token/ +│ └── ... +├── e2e/ # End-to-end tests (integration scenarios) +│ └── settlement/ +└── invariant/ # Invariant-based fuzzing tests + └── settlement/ +``` + +### Writing Tests + +1. **Unit tests** should test single functions in isolation +2. **E2E tests** should test complete flows (e.g., bridge → settlement) +3. **Invariants** should test protocol properties that always hold + +See `contracts/test/unit/RYLA.t.sol` for examples. + +--- + +## Submitting a PR + +### PR Checklist + +Before opening a PR, verify: + +- [ ] Feature branch created from `dev` (or `main` for hotfixes) +- [ ] All local tests pass: `pnpm typecheck && pnpm lint && cd contracts && make ci-fast` +- [ ] No secrets/private keys added +- [ ] Commits follow conventional format +- [ ] Documentation updated (if applicable) +- [ ] Branch name is descriptive (e.g., `feature/add-settlement-ui`) + +### Creating the PR + +1. **Push your branch**: + ```bash + git push origin feature/your-feature-name + ``` + +2. **Open PR on GitHub**: + - Target: `dev` (unless hotfix → `main`) + - Title: Use conventional format (e.g., "feat(settlement): add confirmation ui") + - Description: Use the PR template (auto-populated) + +3. **Fill in the PR template**: + - **Summary**: What does this change do? + - **Scope**: Which areas are affected? + - **Verification**: Show commands you ran locally + - **Risk**: Any potential issues? + - **Linked Context**: Related issues/PRs? + +### PR Review Process + +1. **Automated checks run**: + - TypeScript compilation + - ESLint linting + - Contracts CI (unit + invariant tests) + - Slither security scan (if contracts touched) + - CodeQL security scanning + - Secrets drift detection + +2. **Manual code review**: + - CODEOWNERS (see `.github/CODEOWNERS`) required + - May request changes or ask questions + - Approval required before merge + +3. **Merge**: + - Squash commits into single commit (auto on GitHub) + - Branch auto-deleted after merge + - PR closed + +--- + +## Release Process + +**For full details**, see `DEPLOYMENT.md` (detailed runbook) or `BRANCHING.md` (policy). + +### Quick Summary + +``` +1. Create PR: dev → canary + ↓ (Staging rehearsal auto-triggers) + +2. After staging passes, create PR: canary → main + ↓ (All production gates triggered) + +3. After approval, manual dispatch: + - Run mainnet readiness workflow + +4. Tag release: v0.1.0 +``` + +### For Solo Maintainers + +```bash +cd contracts + +# Validate everything works +make ci-full + +# Generate release evidence +make generate-evidence-manifest + +# Sign evidence +make sign-evidence-manifest + +# Verify before deployment +make verify-evidence-manifest +``` + +See `DEPLOYMENT.md` for step-by-step walkthrough. + +--- + +## Troubleshooting + +### Common Issues + +#### "pnpm command not found" + +```bash +# pnpm is managed by corepack. Enable it: +corepack enable +corepack prepare + +# Then verify: +pnpm --version +``` + +#### "Foundry not installed" + +```bash +# Install Foundry +curl -L https://foundry.paradigm.xyz | bash +source $HOME/.bashrc # or .zshrc +foundryup +``` + +#### Tests fail with "address already in use" + +```bash +# Kill leftover anvil processes +pkill -f anvil +# Or restart dev server +pnpm dev +``` + +#### "architecture-guard failed: forbidden import" + +This means a contract imported from wrong domain. Check: +- bridge contracts shouldn't import from `src/settlement/` +- settlement contracts shouldn't import from `src/bridge/` +- token/errors/interfaces are allowed everywhere + +Fix: Remove the forbidden import, use interfaces instead. + +#### "Slither findings not in report" + +Some findings are intentionally excluded. See `contracts/Makefile`: +```makefile +--exclude "naming-convention,timestamp,arbitrary-send-erc20,reentrancy-balance,reentrancy-benign" +``` + +Each exclusion is documented in the codebase. If you disagree with an exclusion, discuss in PR. + +### Getting Help + +1. **Check existing issues**: GitHub Issues tab +2. **Read existing PRs**: Similar changes may have docs/discussions +3. **Review TROUBLESHOOTING.md**: Common solutions +4. **Ask in PR/issue**: Context helps maintainers help you + +--- + +## Best Practices + +### Commits +- ✅ Atomic commits (one logical change per commit) +- ✅ Descriptive messages (what + why, not just what) +- ✅ Conventional format (feat/fix/chore/etc.) +- ❌ "wip", "asdf", "fix stuff" commits + +### Code Review +- ✅ Ask questions if unclear +- ✅ Suggest improvements, don't demand +- ✅ Acknowledge good solutions +- ❌ Personal criticism + +### Testing +- ✅ Test new code before submitting +- ✅ Add tests for bug fixes +- ✅ Update tests when changing behavior +- ❌ "I'll add tests later" (won't happen) + +### Documentation +- ✅ Update docs for API changes +- ✅ Add comments for complex logic +- ✅ Include examples +- ❌ "Code is self-documenting" (it's not always) + +--- + +## Additional Resources + +- [BRANCHING.md](./BRANCHING.md) — Release strategy & branch protection +- [DEPLOYMENT.md](./DEPLOYMENT.md) — Step-by-step release runbook +- [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) — Common issues & solutions +- [contracts/ARCHITECTURE.md](./contracts/ARCHITECTURE.md) — Module architecture +- [README.md](./README.md) — Project overview + +--- + +## Questions? + +Feel free to open an issue or ask in a PR. We're here to help! + +--- + +**Happy contributing!** 🚀 + +*Last updated: 2026-05-06* diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md new file mode 100644 index 0000000..a08d7a9 --- /dev/null +++ b/DEPLOYMENT.md @@ -0,0 +1,761 @@ +# MARK Protocol Deployment Runbook + +**Purpose**: Step-by-step procedures for deploying MARK Protocol to staging (OP Sepolia) and mainnet. + +**Audience**: Release maintainer, DevOps, protocol stewards. + +**Last Updated**: 2026-05-06 + +--- + +## Table of Contents + +1. [Pre-Deployment Checklist](#pre-deployment-checklist) +2. [Staging Deployment (OP Sepolia)](#staging-deployment-op-sepolia) +3. [Mainnet Deployment](#mainnet-deployment) +4. [Verification & Monitoring](#verification--monitoring) +5. [Rollback Procedures](#rollback-procedures) +6. [Troubleshooting](#troubleshooting) +7. [Post-Deployment](#post-deployment) + +--- + +## Pre-Deployment Checklist + +### Environment Setup + +- [ ] All environments sourced: `staging.env` and/or `mainnet.env` +- [ ] Private keys loaded (via GitHub Secrets, not committed) +- [ ] RPC endpoints accessible (test: `curl `) +- [ ] Sufficient balance in deployer account (≥ 0.5 ETH for gas) +- [ ] super-cli installed: `super-cli --version` + +### Code Readiness + +- [ ] All tests passing: `cd contracts && make ci-full` +- [ ] Slither scan clean: `cd contracts && make slither-core` +- [ ] No uncommitted changes: `git status` (clean) +- [ ] On correct branch: + - Staging: `canary` branch + - Mainnet: `main` branch +- [ ] Latest contracts built: `pnpm build:contracts` + +### Governance & Evidence + +For **mainnet only**: +- [ ] Release evidence manifest generated +- [ ] Manifest verified & signatures valid +- [ ] Release checklist completed +- [ ] CODEOWNERS review approved + +--- + +## Staging Deployment (OP Sepolia) + +### Phase 1: Pre-Release Validation + +**Target Branch**: `canary` + +**Estimated Time**: 15 minutes + +#### Step 1: Trigger Staging Rehearsal (Automated) + +When you push to `canary`, the `contracts-staging-rehearsal` workflow auto-triggers. + +```bash +# On canary branch +git status # Should show "On branch canary" +git log --oneline -1 # Verify latest commit + +# Wait for GitHub workflow to start +# Monitor: https://github.com/iap/mark/actions +``` + +**What this does**: +- Deploys contracts to OP Sepolia L2A +- Deploys contracts to OP Sepolia L2B +- Runs post-deployment validation tests +- Generates evidence artifacts + +**Expected output**: +``` +✅ Deployment successful +✅ All chains have contracts deployed +✅ Evidence manifest generated +✅ Artifacts uploaded +``` + +#### Step 2: Verify Staging Deployment + +Monitor the workflow in GitHub Actions: + +``` +Contracts Staging Rehearsal Workflow +├─ Deployment (OP Sepolia L2A) ✅ +├─ Deployment (OP Sepolia L2B) ✅ +├─ Post-deployment validation ✅ +└─ Evidence artifact generation ✅ +``` + +**Check deployment on OP Sepolia**: +```bash +# Verify contract on OP Sepolia Sepolia explorer +# https://sepolia-optimism.etherscan.io + +# Expected contracts: +# - RYLA (token) +# - MARKBridgeAdapter +# - MARKSettlementModule +# - AttestedSettlementVerifier +``` + +#### Step 3: Run Manual Validation (Optional) + +```bash +# Source staging config +set -a +source contracts/config/profiles/staging.env +set +a + +# Run validation tests +cd contracts +MARK_RELEASE_EXECUTE=true MARK_SETTLEMENT_PROOF_ENABLED=true \ + ./script/ops/validate-prod-env.sh +``` + +**Expected output**: +``` +Staging environment validation +├─ RPC endpoints reachable ✅ +├─ Contracts deployed ✅ +├─ Settlement module functional ✅ +└─ Bridge adapter operational ✅ +``` + +### Phase 2: Evidence Generation & Verification + +#### Step 4: Generate Evidence Manifest + +```bash +cd contracts + +# Generate official release evidence +make generate-evidence-manifest + +# Output: contracts/broadcast/evidence-manifest.json +``` + +**What's in manifest**: +- Deployment timestamps +- Contract addresses (all chains) +- Transaction hashes +- Test results +- Slither findings (if any) + +#### Step 5: Verify Evidence + +```bash +cd contracts + +# Verify manifest integrity +make verify-evidence-manifest + +# Expected output: +# ✅ Manifest is valid +# ✅ All contracts verified +# ✅ No tampering detected +``` + +#### Step 6: Sign Evidence (For Production) + +```bash +cd contracts + +# If signing releases (recommended for mainnet): +make sign-evidence-manifest + +# Prompts for signing key, outputs: evidence-manifest.sig +``` + +### Phase 3: Promote to Production (Canary → Main) + +#### Step 7: Create PR: Canary → Main + +```bash +# Create PR via GitHub UI or CLI: +gh pr create \ + --title "Release: MARK Protocol v0.1.0" \ + --base main \ + --head canary \ + --body "See DEPLOYMENT.md for release procedures" \ + --label "release" +``` + +**PR description should include**: +```markdown +## Release Summary +- Version: v0.1.0 +- Settlement module: Production-ready +- Bridge adapter: Tested on OP Sepolia +- Evidence: Available in broadcast/evidence-manifest.json + +## Verification +- [x] All tests passing +- [x] Staging rehearsal passed +- [x] Evidence manifest generated +- [x] Slither findings reviewed + +## Deployment Impact +- [ ] Breaking API changes: None +- [ ] Database migrations: None +- [ ] Environment variables: None +``` + +#### Step 8: Wait for CI Checks + +GitHub Actions will automatically run: +- ✅ Contracts Unit + Invariant tests +- ✅ Slither core contracts scan +- ✅ Secrets drift guard +- ✅ Release evidence validator +- ✅ Release PR checklist + +**Expected time**: 3-5 minutes + +#### Step 9: Code Review & Approval + +- [ ] CODEOWNERS review requested (auto-required) +- [ ] Wait for review comments (if any) +- [ ] Address feedback +- [ ] Request re-review if changes made + +#### Step 10: Merge to Main + +```bash +# After approval, merge PR +# Use GitHub UI: Click "Merge pull request" + +# Or via CLI: +gh pr merge --squash --delete-branch +``` + +--- + +## Mainnet Deployment + +### Pre-Mainnet Gate + +**Branch**: `main` + +**After successful PR merge to `main`, follow steps below.** + +### Phase 1: Production Readiness Gate + +#### Step 11: Dispatch Mainnet Readiness Workflow + +This is a **manual workflow dispatch** (not automatic). + +```bash +# Via GitHub CLI: +gh workflow run contracts-mainnet-readiness.yml \ + --ref main \ + -f environment=production + +# Or via GitHub UI: +# 1. Go to Actions tab +# 2. Select "Contracts Mainnet Readiness" workflow +# 3. Click "Run workflow" +# 4. Select branch: main +# 5. Click "Run workflow" button +``` + +**What this does**: +- Validates production environment variables +- Runs full contract test suite against mainnet RPCs +- Verifies deployment readiness +- Generates mainnet evidence + +**Expected time**: 10-15 minutes + +#### Step 12: Monitor Mainnet Readiness + +``` +Contracts Mainnet Readiness Workflow +├─ Environment validation ✅ +├─ Mainnet RPC connectivity ✅ +├─ Full test suite (mainnet) ✅ +├─ Production lock verification ✅ +└─ Readiness report generated ✅ +``` + +**Check workflow output**: +```bash +# View workflow details +gh run view --repo iap/mark +``` + +**If successful**: +``` +✅ Production is ready for deployment +✅ All safety checks passed +✅ Evidence artifacts prepared +``` + +**If failed**: +- See [Troubleshooting](#troubleshooting) section +- DO NOT proceed to deployment +- Fix issues, create new PR, restart from Step 7 + +### Phase 2: Deployment Execution + +#### Step 13: Approve Deployment Authorization + +Production deployments require manual approval from authorized personnel. + +```bash +# Check production environment status +set -a +source contracts/config/profiles/mainnet.env +set +a + +# Verify deployment keys are loaded securely +# (Should NOT print private keys) +echo "Deployer ready: $DEPLOYMENT_ADDRESS" +``` + +#### Step 14: Execute Mainnet Deployment + +```bash +# Navigate to contracts directory +cd contracts + +# List what will be deployed +make smoke-production-mode # Dry-run, no actual deployment + +# If dry-run looks good, execute actual deployment: +MARK_RELEASE_EXECUTE=true \ + ./script/ops/dispatch-release-evidence-sequence.sh +``` + +**What happens**: +1. Deploys RYLA token +2. Deploys MARKBridgeAdapter +3. Deploys MARKSettlementModule +4. Deploys AttestedSettlementVerifier +5. Configures cross-chain bridges +6. Locks production state + +**Expected output**: +``` +Deploying to mainnet... +✅ RYLA deployed: 0x1234... +✅ Bridge deployed: 0x5678... +✅ Settlement deployed: 0x9abc... +✅ Verifier deployed: 0xdef0... +✅ Cross-chain relay configured +✅ Production lock verified +``` + +**Expected time**: 5-10 minutes (includes block confirmations) + +### Phase 3: Post-Deployment Verification + +#### Step 15: Verify Production State + +```bash +cd contracts + +# Verify production lock is in effect +make verify-production-lock + +# Expected output: +# ✅ Production mode locked +# ✅ All safety invariants in place +# ✅ Emergency pause enabled (optional) +``` + +#### Step 16: Create Release Tag + +After successful mainnet deployment: + +```bash +# Tag release (local) +git tag -a v0.1.0 -m "Release: MARK Protocol v0.1.0 + +Contracts deployed to mainnet. +Settlement live on OP Mainnet. +Evidence: " + +# Push tag +git push origin v0.1.0 +``` + +**GitHub auto-creates release**: Check https://github.com/iap/mark/releases + +#### Step 17: Generate Mainnet Evidence + +```bash +cd contracts + +# Generate final evidence report +make generate-evidence-manifest + +# Verify evidence +make verify-evidence-manifest + +# Sign evidence (if keys available) +make sign-evidence-manifest +``` + +--- + +## Verification & Monitoring + +### During Deployment + +Monitor these metrics in real-time: + +```bash +# Check deployment transactions +# https://etherscan.io/tx/ + +# Watch contract state updates +cast call 0x "name()" --rpc-url $MAINNET_RPC + +# Monitor gas prices +ethgas-tracker # or: https://ethgasstation.info +``` + +### Post-Deployment Health Checks + +#### Health Check Script + +```bash +#!/bin/bash +# contracts/script/ops/health-check.sh + +set -a +source config/profiles/mainnet.env +set +a + +echo "🏥 MARK Protocol Mainnet Health Check" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + +# Check RYLA token +cast call $RYLA_ADDRESS "totalSupply()" --rpc-url $MAINNET_RPC +echo "✅ RYLA token operational" + +# Check settlement module +cast call $SETTLEMENT_ADDRESS "isProofEnabled()" --rpc-url $MAINNET_RPC +echo "✅ Settlement module functional" + +# Check bridge adapter +cast call $BRIDGE_ADDRESS "isBridgeActive()" --rpc-url $MAINNET_RPC +echo "✅ Bridge adapter connected" + +# Check verifier +cast call $VERIFIER_ADDRESS "name()" --rpc-url $MAINNET_RPC +echo "✅ Verifier contract live" + +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "✨ All systems operational!" +``` + +Run health checks: +```bash +cd contracts +./script/ops/health-check.sh +``` + +--- + +## Rollback Procedures + +### Scenario 1: Deployment Failed Mid-Way + +**If deployment halted before completion**: + +```bash +# Check what deployed successfully +cd contracts && git log --oneline broadcast/ | head -5 + +# Redeploy missing contracts +make smoke-production-mode # Verify first + +MARK_RELEASE_EXECUTE=true \ + ./script/ops/dispatch-release-evidence-sequence.sh +``` + +### Scenario 2: Post-Deployment Issue (Within 24h) + +**If issue found shortly after deployment**: + +1. **Pause operations** (if applicable): + ```bash + cast send $SETTLEMENT_ADDRESS "pause()" \ + --rpc-url $MAINNET_RPC \ + --private-key $DEPLOYER_KEY + ``` + +2. **Document issue**: Create GitHub issue with: + - What went wrong + - When detected + - User impact + - Initial mitigation + +3. **Prepare hotfix PR**: + ```bash + git checkout dev + git pull origin dev + git checkout -b hotfix/critical-issue-name + # Make fixes + # Push and create PR into main + ``` + +4. **Deploy hotfix**: Follow full deployment procedure again + +### Scenario 3: Contract Bug Found (Long-term) + +**If critical bug discovered after deployment**: + +```bash +# Create hotfix branch from main +git checkout main +git pull origin main +git checkout -b hotfix/contract-bug-fix + +# Fix the bug +# Commit and push +git push origin hotfix/contract-bug-fix + +# Create PR: hotfix → main +# After approval, deploy as new release +``` + +--- + +## Troubleshooting + +### "Deployment Failed: Insufficient Balance" + +**Cause**: Deployer account has < 0.5 ETH for gas fees + +**Fix**: +```bash +# Check balance +cast balance $DEPLOYER_ADDRESS --rpc-url $MAINNET_RPC + +# Fund deployer (from treasury or team account) +cast send $DEPLOYER_ADDRESS --value 1ether \ + --rpc-url $MAINNET_RPC \ + --private-key $FUNDING_KEY + +# Retry deployment +MARK_RELEASE_EXECUTE=true \ + ./script/ops/dispatch-release-evidence-sequence.sh +``` + +### "Workflow Timeout: Tests Took Too Long" + +**Cause**: Tests exceeded 1 hour limit on GitHub Actions + +**Fix**: +```bash +# Run tests locally to find slow test +cd contracts && make ci-full + +# Profile test execution +forge test --gas-report + +# Look for tests marked [SLOW] +# Consider splitting into separate PR or optimizing +``` + +### "Slither Findings: High Severity Alert" + +**Cause**: Security analysis found a medium/high issue + +**Fix**: +```bash +cd contracts && make slither-core + +# Review findings in Slither output +# If legitimate issue: +# 1. Fix in code +# 2. Create new PR +# 3. Restart deployment process +# +# If false positive: +# 1. Document why it's safe +# 2. Add to slither exclusions in Makefile +# 3. Document reasoning in comments +``` + +### "Evidence Manifest Verification Failed" + +**Cause**: Manifest was modified or corrupted + +**Fix**: +```bash +cd contracts + +# Regenerate manifest +make generate-evidence-manifest + +# Verify new manifest +make verify-evidence-manifest + +# If still failing, check git history +git log --oneline broadcast/evidence-manifest.json | head -3 +``` + +### "Staging Rehearsal Passed but Mainnet Failed" + +**Cause**: Environment differences (OP Sepolia vs OP Mainnet) + +**Fix**: +```bash +# Check environment differences +diff contracts/config/profiles/staging.env \ + contracts/config/profiles/mainnet.env + +# Verify mainnet RPC is healthy +curl -X POST $MAINNET_RPC \ + -H "Content-Type: application/json" \ + -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' + +# Re-run mainnet readiness with verbose logging +VERBOSE=true gh workflow run contracts-mainnet-readiness.yml --ref main +``` + +### "Production Lock Test Failed" + +**Cause**: Deployed state doesn't match expected production configuration + +**Fix**: +```bash +cd contracts + +# Run production lock test with verbose output +make test-production-lock + +# Check what's different +cast call $SETTLEMENT_ADDRESS "productionMode()" --rpc-url $MAINNET_RPC + +# If misconfigured, deploy fix +git checkout -b fix/production-lock-config +# Update deployment script or initialization +git push origin fix/production-lock-config +# Create PR into main +``` + +--- + +## Post-Deployment + +### Monitoring & Observability + +1. **Set up alerts** for contract events: + ```bash + # Watch for SettlementExecuted events + cast logs "SettlementExecuted(bytes32)" --rpc-url $MAINNET_RPC + ``` + +2. **Weekly health checks**: + ```bash + cd contracts && ./script/ops/health-check.sh + ``` + +3. **Monitor gas prices** for future deployments: + - https://ethgasstation.info + - https://gasnow.org + +### Communication + +After successful mainnet deployment, communicate: + +1. **Announce release**: + - Twitter/Discord: "MARK Protocol v0.1.0 live on mainnet!" + - Blog post: Architecture, features, security audit results + +2. **Share evidence**: + - Link to deployment evidence manifest + - Contract addresses on Etherscan + - Verification instructions for community + +3. **Create incident response playbook**: + - Who to contact if issues arise + - Escalation procedures + - Monitoring dashboards + +### Documentation Updates + +- [ ] Update README.md with mainnet addresses +- [ ] Create DEPLOYMENT_EVIDENCE.md with manifest link +- [ ] Update BRANCHING.md with lessons learned +- [ ] Add release notes to GitHub Releases + +### Team Debriefing + +- [ ] Schedule post-deployment review +- [ ] Document what went well +- [ ] Document what could improve +- [ ] Update this runbook with learnings + +--- + +## Quick Reference + +### Command Cheat Sheet + +```bash +# Staging deployment (automated on push to canary) +# No manual steps needed during staging rehearsal + +# Mainnet readiness check (manual dispatch) +gh workflow run contracts-mainnet-readiness.yml --ref main + +# Generate evidence +cd contracts && make generate-evidence-manifest + +# Verify evidence +cd contracts && make verify-evidence-manifest + +# Sign evidence +cd contracts && make sign-evidence-manifest + +# Mainnet deployment (manual) +cd contracts && MARK_RELEASE_EXECUTE=true \ + ./script/ops/dispatch-release-evidence-sequence.sh + +# Health check +cd contracts && ./script/ops/health-check.sh + +# Rollback (pause operations) +cast send $SETTLEMENT_ADDRESS "pause()" \ + --rpc-url $MAINNET_RPC --private-key $DEPLOYER_KEY +``` + +### Timeline Estimates + +- **Staging deployment**: 20 minutes (auto, mostly waiting) +- **Staging validation**: 10 minutes (manual checks) +- **Mainnet readiness**: 15 minutes (automated) +- **Mainnet deployment**: 10 minutes (includes block confirmations) +- **Post-deployment verification**: 5 minutes (health checks) + +**Total**: ~60 minutes (mostly waiting for automation) + +--- + +## Support & Escalation + +- **Questions**: Open GitHub issue or discussion +- **Urgent issue**: Contact @iap (primary maintainer) +- **Security concern**: Email security@mark.protocol + +--- + +**Version**: 1.0 +**Last Updated**: 2026-05-06 +**Maintained By**: @iap & MARK Protocol Team diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md new file mode 100644 index 0000000..b08e20f --- /dev/null +++ b/TROUBLESHOOTING.md @@ -0,0 +1,980 @@ +# MARK Protocol Troubleshooting Guide + +A comprehensive guide to diagnosing and resolving common issues in MARK Protocol development, testing, and deployment. + +--- + +## Table of Contents + +- [Development Setup Issues](#development-setup-issues) +- [Smart Contract Issues](#smart-contract-issues) +- [Frontend Development Issues](#frontend-development-issues) +- [Testing Issues](#testing-issues) +- [Deployment Issues](#deployment-issues) +- [CI/CD Workflow Issues](#cicd-workflow-issues) +- [Network & RPC Issues](#network--rpc-issues) + +--- + +## Development Setup Issues + +### "pnpm: command not found" + +**Symptoms**: +``` +bash: pnpm: command not found +``` + +**Causes**: +- pnpm not installed +- corepack not enabled +- PATH not updated + +**Solutions**: + +1. **Enable corepack** (recommended): + ```bash + # Enable corepack globally + corepack enable + + # Prepare pnpm version from package.json + corepack prepare + + # Verify + pnpm --version # Should show 9.0.2+ + ``` + +2. **Install pnpm manually** (fallback): + ```bash + npm install -g pnpm@9.0.2 + + # Verify + which pnpm + pnpm --version + ``` + +3. **Update PATH**: + ```bash + # Add to ~/.bashrc, ~/.zshrc, or ~/.profile + export PATH="$HOME/.npm/_npx:$PATH" + + # Reload shell + source ~/.bashrc # or source ~/.zshrc + ``` + +--- + +### "Node.js version mismatch" + +**Symptoms**: +``` +⚠️ This project requires Node.js v20 or v22 +You are using v18.x.x +``` + +**Causes**: +- Node.js version doesn't match `.nvmrc` +- Node version manager not installed + +**Solutions**: + +1. **Use nvm** (recommended): + ```bash + # Install nvm if not present + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash + + # Install correct version + nvm install 20 + nvm use 20 + + # Verify + node --version # Should show v20.x.x + ``` + +2. **Use fnm** (faster alternative): + ```bash + brew install fnm # macOS + fnm install 20 + fnm use 20 + ``` + +3. **Manual installation**: + - Download from https://nodejs.org + - Install v20 LTS or v22 + +--- + +### "Foundry not installed" + +**Symptoms**: +``` +forge: command not found +``` + +**Solutions**: + +```bash +# Install Foundry (macOS/Linux/WSL) +curl -L https://foundry.paradigm.xyz | bash + +# Update PATH +source $HOME/.bashrc # or ~/.zshrc + +# Install Foundry components +foundryup + +# Verify +forge --version +cast --version +``` + +**Windows users**: +```powershell +# Use WSL2 or install from https://github.com/foundry-rs/foundry/releases +``` + +--- + +### "super-cli not installed" + +**Symptoms**: +``` +sup: command not found +``` + +**Solutions**: + +```bash +# Install super-cli (via npm) +npm install -g @eth-optimism/super-cli + +# Or via pnpm +pnpm add -g @eth-optimism/super-cli + +# Verify +sup --version +``` + +--- + +### "Git hooks not running" + +**Symptoms**: +- Linting not running before commit +- Tests not running before push + +**Causes**: +- Git hooks not installed +- `.git/hooks` directory corrupted + +**Solutions**: + +```bash +# Reinstall dependencies (usually sets up hooks) +pnpm i + +# If still not working, manually set up hooks +# (Hook setup depends on your husky/lint-staged config) + +# Force rebuild +rm -rf node_modules pnpm-lock.yaml +pnpm i +``` + +--- + +## Smart Contract Issues + +### "architecture-guard failed: forbidden import" + +**Symptoms**: +``` +CI Error: architecture-guard +ERROR: Forbidden import found in src/bridge/MARKBridgeAdapter.sol + Importing from: src/settlement/ISettlement.sol + Settlement should not be imported by bridge domain +``` + +**Causes**: +- Bridge contract imported settlement module +- Settlement contract imported bridge module +- Violates strict domain boundaries + +**Solutions**: + +1. **Check the forbidden import**: + ```bash + grep -n "import.*settlement\|import.*bridge" src/bridge/MARKBridgeAdapter.sol + grep -n "import.*settlement\|import.*bridge" src/settlement/MARKSettlementModule.sol + ``` + +2. **Remove the forbidden import**: + ```solidity + // ❌ DON'T DO THIS (bridge importing settlement) + import { ISettlement } from "../settlement/ISettlement.sol"; + + // ✅ DO THIS INSTEAD (use shared interface) + import { ISharedSettlement } from "../interfaces/ISharedSettlement.sol"; + ``` + +3. **Create shared interface if needed**: + ```solidity + // src/interfaces/ISharedSettlement.sol + pragma solidity ^0.8.0; + + interface ISharedSettlement { + function execute(bytes32 id, bytes calldata proof) external; + } + ``` + +4. **Run guard to verify**: + ```bash + cd contracts && make architecture-guard + # Should pass: ✅ Architecture guard passed + ``` + +--- + +### "layering-guard failed: test imports src/script" + +**Symptoms**: +``` +CI Error: layering-guard +ERROR: Test file importing script in src/script/Deploy.sol + Tests should mock or import only from src/ +``` + +**Causes**: +- Test file imports from deployment scripts +- Script file imports from tests +- Violates layering boundaries + +**Solutions**: + +1. **Identify the problematic import**: + ```bash + grep -n "import.*script" contracts/test/**/*.sol + grep -n "import.*test" contracts/script/**/*.sol + ``` + +2. **Refactor to remove cross-layer dependency**: + ```solidity + // ❌ DON'T DO THIS (test importing script) + import { Deploy } from "../../script/Deploy.s.sol"; + + // ✅ DO THIS (test imports contract directly) + import { RYLA } from "../../src/token/RYLA.sol"; + ``` + +3. **Extract shared code to `src/` if needed**: + ```bash + # Move common utilities to src/ + mv contracts/script/Helpers.sol contracts/src/lib/Helpers.sol + + # Update imports in both test and script files + ``` + +4. **Run guard to verify**: + ```bash + cd contracts && make layering-guard + # Should pass: ✅ Layering guard passed + ``` + +--- + +### "slither finds high-severity issue" + +**Symptoms**: +``` +Slither output: +HIGH: Arbitrary Send ERC20 in MARKBridgeAdapter.transfer() + Risk: Caller can transfer arbitrary tokens +``` + +**Causes**: +- Actual security issue (fix it!) +- False positive (document exclusion) + +**Solutions**: + +1. **If legitimate issue** (do this first): + ```solidity + // ❌ Before: Vulnerable + function bridgeTransfer(address token, uint amount) external { + IERC20(token).transfer(recipient, amount); // Arbitrary token! + } + + // ✅ After: Safe + function bridgeTransfer(uint amount) external { + require(msg.sender == owner); // Only owner can bridge + RYLA.transfer(recipient, amount); // Only RYLA token + } + ``` + +2. **If false positive**, document exclusion: + ```makefile + # contracts/Makefile + slither-core: + slither "$$target" \ + --exclude-dependencies \ + --exclude "naming-convention,arbitrary-send-erc20" \ # ← Add here + ``` + + **Document why** in your code: + ```solidity + /// @notice Transfer is safe because: + /// - Only whitelisted tokens allowed (see tokenWhitelist) + /// - Transfer is guarded by onlyOwner modifier + /// - Slither exclusion: arbitrary-send-erc20 (documented safe) + function transfer(address token, uint amount) external onlyOwner { + IERC20(token).transfer(recipient, amount); + } + ``` + +3. **Update Slither exclusions in Makefile**: + ```bash + cd contracts && make slither-core + # Review findings + # Update Makefile if excluding + make slither-core # Re-verify + ``` + +--- + +### "forge test: compilation failed" + +**Symptoms**: +``` +Compiler error: contracts/src/token/RYLA.sol:5:1: DeclarationError + Import "openzeppelin-contracts/token/ERC20/ERC20.sol" not found +``` + +**Causes**: +- Missing dependencies +- Remapping misconfigured +- Submodule not initialized + +**Solutions**: + +1. **Initialize submodules**: + ```bash + git submodule init + git submodule update --recursive + ``` + +2. **Check remappings**: + ```bash + cat contracts/foundry.toml | grep -A5 "remappings" + # Should show: + # @openzeppelin/ => lib/createx/lib/openzeppelin-contracts/ + # @interop-lib/ => lib/interop-lib/src/ + ``` + +3. **Verify dependencies exist**: + ```bash + ls -la contracts/lib/ + # Should show: forge-std, interop-lib, createx + ``` + +4. **Reinstall dependencies**: + ```bash + cd contracts + rm -rf lib cache + forge install + ``` + +5. **Try building again**: + ```bash + cd contracts && forge build + ``` + +--- + +### "test execution out of gas" + +**Symptoms**: +``` +forge test execution reverted: OutOfGas + Function: testSettlementWithLargeProof +``` + +**Causes**: +- Test uses too much gas +- Fuzzing with many iterations +- Complex contract interaction + +**Solutions**: + +1. **Reduce fuzzing runs** (in test file): + ```solidity + // Add at top of test file: + /// forge-config: default.fuzz.runs = 10 (instead of default 256) + + function testFuzzSettlement(bytes32 id) public { + // Test logic + } + ``` + +2. **Optimize test setup**: + ```solidity + // ❌ Before: Redundant setup + function testManySettlements() public { + for (uint i = 0; i < 1000; i++) { + settlement.execute(id, proof); // 1000 executions = high gas + } + } + + // ✅ After: Test key scenario + function testSettlement() public { + settlement.execute(id, proof); + } + + function testMultipleSettlements() public { + settlement.execute(id1, proof1); + settlement.execute(id2, proof2); + // Test only 2-3 scenarios, not 1000 + } + ``` + +3. **Check gas limits in Makefile**: + ```bash + grep -n "gas\|FOUNDRY" contracts/Makefile + ``` + +4. **Run with gas reporting**: + ```bash + cd contracts && forge test --gas-report + # See which functions consume most gas + ``` + +--- + +## Frontend Development Issues + +### "pnpm dev fails: port already in use" + +**Symptoms**: +``` +Error: listen EADDRINUSE: address already in use :::5173 +``` + +**Causes**: +- Another process using port 5173 +- Previous dev server still running +- Port configured differently + +**Solutions**: + +1. **Kill process on port 5173**: + ```bash + # macOS/Linux + lsof -i :5173 # Find process + kill -9 # Kill it + + # Or use direct command + pkill -f "vite\|dev:frontend" + ``` + +2. **Use different port**: + ```bash + pnpm dev:frontend -- --port 5174 + ``` + +3. **Restart dev server**: + ```bash + # Stop all processes + pkill -f "vite\|anvil\|supersim" + + # Start fresh + pnpm dev + ``` + +--- + +### "TypeScript errors in IDE but tests pass" + +**Symptoms**: +- VS Code shows red squiggles +- `pnpm typecheck` passes locally +- CI passes but IDE unhappy + +**Causes**: +- IDE cache stale +- TypeScript version mismatch +- tsconfig.json not reloaded + +**Solutions**: + +1. **Reload TypeScript server in VS Code**: + - Press: `Cmd/Ctrl + Shift + P` + - Type: "TypeScript: Restart TS Server" + - Press Enter + +2. **Clear IDE cache**: + ```bash + # Close VS Code + rm -rf .vscode/ + rm -rf node_modules/.vite + pnpm i + # Reopen VS Code + ``` + +3. **Verify TypeScript version**: + ```bash + pnpm ls typescript + # Should show 5.7.2+ + ``` + +4. **Force typecheck**: + ```bash + pnpm typecheck --strict + ``` + +--- + +### "Module not found error in browser" + +**Symptoms**: +``` +Browser console: Uncaught ReferenceError: MARK is not defined +or +Failed to resolve module: @eth-optimism/viem +``` + +**Causes**: +- Dependency not installed +- Import path wrong +- Build cache stale + +**Solutions**: + +1. **Reinstall dependencies**: + ```bash + rm -rf node_modules pnpm-lock.yaml + pnpm i + ``` + +2. **Check import path**: + ```typescript + // ❌ Wrong + import { useAccount } from 'wagmi' // Missing path + + // ✅ Correct + import { useAccount } from 'wagmi' + import { supersimL2A } from '@eth-optimism/viem/chains' + ``` + +3. **Clear browser cache**: + ```bash + # Hard refresh in browser + Cmd/Ctrl + Shift + R (or Cmd/Ctrl + Shift + Delete, then clear cache) + ``` + +4. **Restart dev server**: + ```bash + pkill -f "vite" + pnpm dev:frontend + ``` + +--- + +## Testing Issues + +### "forge test hangs or times out" + +**Symptoms**: +``` +forge test +# ... waiting forever ... +Test suite hangs without completing +``` + +**Causes**: +- Infinite loop in test +- Test stuck waiting for transaction +- Network call timeout +- Foundry offline mode issue + +**Solutions**: + +1. **Kill hanging process**: + ```bash + # In another terminal + pkill -f forge + ``` + +2. **Run single test to isolate**: + ```bash + cd contracts + forge test --match-test "testSpecificFunction" -vv + ``` + +3. **Check for infinite loops** in problematic test: + ```solidity + // ❌ Bad: Infinite loop + function testLoop() public { + while(true) { // INFINITE! + settlement.execute(...); + } + } + + // ✅ Good: Bounded loop + function testLoop() public { + for (uint i = 0; i < 10; i++) { // 10 iterations max + settlement.execute(...); + } + } + ``` + +4. **Try offline mode**: + ```bash + cd contracts + FOUNDRY_OFFLINE=true forge test + ``` + +5. **Increase timeout**: + ```bash + timeout 300 forge test # 5 minute timeout + ``` + +--- + +### "test fails with 'insufficient balance'" + +**Symptoms**: +``` +forge test error: Assertion failed + Message: Insufficient balance +``` + +**Causes**: +- Test didn't fund account properly +- Token transfer didn't work +- Balance calculation wrong + +**Solutions**: + +1. **Add explicit balance setup**: + ```solidity + function setUp() public { + // Mint tokens to test accounts + vm.prank(owner); + token.mint(user, 1000e18); // 1000 tokens + + // Verify balance + assertEq(token.balanceOf(user), 1000e18); + } + ``` + +2. **Use deal()** (simpler): + ```solidity + // Set ETH balance + vm.deal(user, 10 ether); + assertEq(user.balance, 10 ether); + + // Set ERC20 balance (requires contract) + deal(address(token), user, 1000e18); + assertEq(token.balanceOf(user), 1000e18); + ``` + +3. **Debug balance in test**: + ```solidity + function testDebugBalance() public { + emit log_uint(token.balanceOf(user)); // Print to console + assertEq(token.balanceOf(user), expectedAmount); + } + + // Run with: forge test -vv + ``` + +--- + +## Deployment Issues + +### "Insufficient balance for gas fees" + +**Symptoms**: +``` +Error: Insufficient balance. Required: 0.5 ETH, Have: 0.01 ETH +``` + +**Solutions**: + +```bash +# Check balance +cast balance $DEPLOYER_ADDRESS --rpc-url $RPC + +# Fund account (from another address) +cast send $DEPLOYER_ADDRESS --value 1ether \ + --rpc-url $RPC \ + --private-key $FUNDING_KEY + +# Verify funded +cast balance $DEPLOYER_ADDRESS --rpc-url $RPC +``` + +--- + +### "Deployment timeout: transaction not mined" + +**Symptoms**: +``` +Error: Transaction not mined after 300 seconds +TX Hash: 0x1234... +``` + +**Causes**: +- Network congestion +- Gas price too low +- RPC node issues + +**Solutions**: + +1. **Check transaction status**: + ```bash + cast receipt 0x1234... --rpc-url $RPC + # If output is empty, transaction dropped + ``` + +2. **Increase gas price**: + ```bash + # Check current gas + cast gas-price --rpc-url $RPC + + # Redeploy with higher gas + GASPRICE=50gwei pnpm sup deploy create2 ... + ``` + +3. **Verify RPC is healthy**: + ```bash + # Test RPC + curl -X POST $RPC \ + -H "Content-Type: application/json" \ + -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' + ``` + +4. **Wait longer**: + ```bash + # Testnet congestion? Wait 5-10 minutes and retry + sleep 300 + pnpm sup deploy ... + ``` + +--- + +## CI/CD Workflow Issues + +### "GitHub Actions workflow stuck" + +**Symptoms**: +- Workflow shows "In progress" for >1 hour +- No error message + +**Solutions**: + +1. **Cancel workflow**: + - Go to: https://github.com/iap/mark/actions + - Find workflow + - Click: "Cancel workflow" + +2. **Check logs**: + - Click workflow name + - View "Logs" section + - Look for last message before hang + +3. **Restart workflow**: + - Go to workflow run + - Click: "Re-run failed jobs" + +4. **Check GitHub status**: + - https://www.githubstatus.com/ + - If GitHub is down, wait for recovery + +--- + +### "Secrets not available in workflow" + +**Symptoms**: +``` +Error: Environment variable DEPLOYER_KEY not set +``` + +**Causes**: +- Secret not added to repository +- Secret name misspelled +- Secret scoped to wrong environment + +**Solutions**: + +1. **Add secret to repository**: + - Go to: Settings → Secrets and variables → Actions + - Click: "New repository secret" + - Name: `DEPLOYER_KEY` + - Value: (paste actual private key) + - Click: "Add secret" + +2. **Verify secret name in workflow**: + ```yaml + # In .github/workflows/deploy.yml + - name: Deploy + env: + DEPLOYER_KEY: ${{ secrets.DEPLOYER_KEY }} # Must match exact name + run: pnpm sup deploy create2 + ``` + +3. **For environment-specific secrets**: + ```yaml + environment: production # Or staging + # Secrets from production environment used + ``` + +4. **Re-run workflow** after adding secret: + - Go to workflow run + - Click: "Re-run failed jobs" + +--- + +### "Slither workflow fails but locally passes" + +**Symptoms**: +``` +GitHub Actions: Slither Core Contracts → FAILED +Local: cd contracts && make slither-core → PASSED +``` + +**Causes**: +- Slither version different +- Environment differences +- Cache issues + +**Solutions**: + +1. **Update Slither locally**: + ```bash + pip install --upgrade slither-analyzer + slither --version + ``` + +2. **Run Slither like CI does**: + ```bash + cd contracts && make slither-core + # Should match GitHub output + ``` + +3. **Check Slither remappings**: + ```bash + # Verify remappings in workflow + slither src/token/RYLA.sol \ + --solc-remaps "@interop-lib/=lib/interop-lib/src/ @openzeppelin/=lib/createx/lib/openzeppelin-contracts/" + ``` + +--- + +## Network & RPC Issues + +### "RPC endpoint timeout or unreachable" + +**Symptoms**: +``` +Error: connect ECONNREFUSED 127.0.0.1:9545 +or +Error: Gateway timeout +``` + +**Causes**: +- Local network (anvil/supersim) not running +- RPC URL wrong +- Network congestion + +**Solutions**: + +1. **For local network**: + ```bash + # Check if supersim is running + lsof -i :9545 # Should show anvil process + + # If not, start it + pnpm dev:supersim + ``` + +2. **For public RPC**: + ```bash + # Verify RPC URL + echo $MAINNET_RPC + # Example: https://mainnet.infura.io/v3/YOUR_API_KEY + + # Test RPC + curl -X POST $MAINNET_RPC \ + -H "Content-Type: application/json" \ + -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' + ``` + +3. **Retry with timeout**: + ```bash + # Use cast with timeout + cast call 0x123... "balanceOf(address)" $ACCOUNT \ + --rpc-url $RPC \ + --timeout 30s # 30 second timeout + ``` + +--- + +### "Contract address not found / zero address" + +**Symptoms**: +``` +Error: Contract address is 0x0000000000000000000000000000000000000000 +or +Error: Contract not found at 0x1234... +``` + +**Causes**: +- Deployment failed silently +- Contract address misconfigured +- Wrong network selected + +**Solutions**: + +1. **Check deployment status**: + ```bash + # Look at broadcast files + ls -la contracts/broadcast/ + cat contracts/broadcast/Deploy.s.sol/*/run-latest.json | jq '.transactions' + ``` + +2. **Verify contract deployed**: + ```bash + # Check if code exists at address + cast code 0x1234... --rpc-url $RPC + # Should show bytecode (not 0x) + ``` + +3. **Check network**: + ```bash + # Verify you're on correct network + cast chain-id --rpc-url $RPC + # Mainnet: 1 + # OP Sepolia: 11155420 + # Sepolia: 11155111 + ``` + +4. **Redeploy if needed**: + ```bash + # Get fresh deployment + cd contracts && make ci-full # Verify locally first + pnpm sup deploy create2 ... # Deploy + ``` + +--- + +## Getting More Help + +- **Check existing issues**: https://github.com/iap/mark/issues +- **Review pull requests**: https://github.com/iap/mark/pulls +- **Read documentation**: `CONTRIBUTING.md`, `DEPLOYMENT.md`, `BRANCHING.md` +- **Ask in GitHub Discussions** (if enabled) + +--- + +**Version**: 1.0 +**Last Updated**: 2026-05-06 From b763d4e0b55f24fff48ec84106674cdba73c2c85 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 May 2026 01:13:02 +0700 Subject: [PATCH 11/60] chore(deps): bump github/codeql-action from 3 to 4 (#16) Bump github/codeql-action from v3 to v4 to resolve Node.js 20 deprecation warnings on CI. --- .github/workflows/codeql.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 41af7c2..732d417 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -35,13 +35,13 @@ jobs: uses: actions/checkout@v6 - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} queries: security-extended - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 From 81574ac57db0204b7a1df3e976627e91c909c494 Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 01:14:19 +0700 Subject: [PATCH 12/60] chore(ci): bump dependency-review-action from v4 to v5 --- .github/workflows/dependency-review.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 4455621..0428468 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v6 - name: Review dependency changes - uses: actions/dependency-review-action@v4 + uses: actions/dependency-review-action@v5 with: fail-on-severity: high warn-only: false From ee8a183026dbb9284960bb5fce4f0ee94e07d477 Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 01:20:50 +0700 Subject: [PATCH 13/60] chore(ci): disable CodeQL triggers until repo transferred to org with GHAS --- .github/workflows/codeql.yml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 732d417..738f64a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,18 +1,10 @@ name: CodeQL +# CodeQL requires GitHub Advanced Security (org-level feature). +# This workflow is disabled until the repo is transferred to an org with GHAS enabled. +# Re-enable by restoring the `on:` triggers below. on: - push: - branches: - - dev - - canary - - main - pull_request: - branches: - - dev - - canary - - main - schedule: - - cron: '22 3 * * 1' + workflow_dispatch: # manual trigger only until GHAS is available permissions: actions: read From ff58873535975e92557bcaee74361d1bc541769a Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Wed, 6 May 2026 15:04:18 +0700 Subject: [PATCH 14/60] Enable org-transfer governance: CodeQL, Gitleaks, release-gate container, and verification scripts (#19) * docs: replace roadmap with lean security next-steps guide * fix(docs): remove duplicate required-check entries in BRANCHING.md --- .github/PRODUCTION_GOVERNANCE_CHECKLIST.md | 23 ++ .github/workflows/codeql.yml | 36 ++- .../contracts-release-gate-container.yml | 44 ++++ .github/workflows/governance-verify.yml | 25 ++ .github/workflows/scripts-ci.yml | 31 +++ .github/workflows/secrets-scan.yml | 25 ++ BRANCHING.md | 21 ++ ORG_TRANSFER_SECURITY_CHECKLIST.md | 102 ++++++++ PROJECT_REVIEW.md | 222 ++++++++++++++++++ SECURITY_NEXT_STEPS.md | 23 ++ TRANSFER_NOW_CHECKLIST.md | 49 ++++ contracts/Makefile | 5 +- contracts/docker/release-gate.Dockerfile | 17 ++ .../script/ci/run-release-gate-container.sh | 36 +++ scripts/github/apply-governance.sh | 13 +- scripts/github/posttransfer-bootstrap.sh | 27 +++ scripts/github/pretransfer-readiness.sh | 69 ++++++ scripts/github/verify-governance.sh | 112 +++++++++ 18 files changed, 873 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/contracts-release-gate-container.yml create mode 100644 .github/workflows/governance-verify.yml create mode 100644 .github/workflows/scripts-ci.yml create mode 100644 .github/workflows/secrets-scan.yml create mode 100644 ORG_TRANSFER_SECURITY_CHECKLIST.md create mode 100644 PROJECT_REVIEW.md create mode 100644 SECURITY_NEXT_STEPS.md create mode 100644 TRANSFER_NOW_CHECKLIST.md create mode 100644 contracts/docker/release-gate.Dockerfile create mode 100755 contracts/script/ci/run-release-gate-container.sh create mode 100755 scripts/github/posttransfer-bootstrap.sh create mode 100755 scripts/github/pretransfer-readiness.sh create mode 100755 scripts/github/verify-governance.sh diff --git a/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md b/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md index fbbd5c3..48761a6 100644 --- a/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md +++ b/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md @@ -16,6 +16,9 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Slither Core Contracts` - `Secrets Drift Guard` + - `Analyze (JavaScript/TypeScript)` + - `Gitleaks Scan` + - `Release Gate Container` - `Validate Release PR Checklist` - `Validate Release Evidence` - Governance policy PR rule: @@ -38,6 +41,9 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Slither Core Contracts` - `Secrets Drift Guard` + - `Analyze (JavaScript/TypeScript)` + - `Gitleaks Scan` + - `Release Gate Container` - Governance policy PR rule: - If PR changes `scripts/github/apply-governance.sh`, `BRANCHING.md`, or this checklist, ensure `Validate Governance Policy Consistency` passes before merge. - Enable `Require branches to be up to date before merging` @@ -54,6 +60,9 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Slither Core Contracts` - `Secrets Drift Guard` + - `Analyze (JavaScript/TypeScript)` + - `Gitleaks Scan` + - `Release Gate Container` - Governance policy PR rule: - If PR changes `scripts/github/apply-governance.sh`, `BRANCHING.md`, or this checklist, ensure `Validate Governance Policy Consistency` passes before merge. - Choose one model: @@ -129,3 +138,17 @@ What this script applies: - `production` environment creation - optional production required reviewers by user ID - optional direct-push restrictions via `*_PUSH_ALLOW_*` allowlists + + +## 9) Verify active protections after transfer + +Run the verification script with a repo-admin token: + +```bash +cd /path/to/mark +export GH_PAT= +# optional: export GH_REPO=your-org/mark +./scripts/github/verify-governance.sh +``` + +Expected output: all three branches (`dev`, `canary`, `main`) report `PASS` and required checks include CodeQL (`Analyze (JavaScript/TypeScript)`). diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 738f64a..1f05473 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,10 +1,25 @@ name: CodeQL -# CodeQL requires GitHub Advanced Security (org-level feature). -# This workflow is disabled until the repo is transferred to an org with GHAS enabled. -# Re-enable by restoring the `on:` triggers below. on: - workflow_dispatch: # manual trigger only until GHAS is available + pull_request: + branches: [main, canary, dev] + paths: + - "src/**" + - "contracts/**" + - "package.json" + - "pnpm-lock.yaml" + - ".github/workflows/codeql.yml" + push: + branches: [main, canary, dev] + paths: + - "src/**" + - "contracts/**" + - "package.json" + - "pnpm-lock.yaml" + - ".github/workflows/codeql.yml" + schedule: + - cron: "30 3 * * 1" + workflow_dispatch: permissions: actions: read @@ -26,6 +41,19 @@ jobs: - name: Checkout repository uses: actions/checkout@v6 + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: "22" + + - name: Setup pnpm (corepack) + run: | + corepack enable + corepack prepare pnpm@9.0.2 --activate + + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Initialize CodeQL uses: github/codeql-action/init@v4 with: diff --git a/.github/workflows/contracts-release-gate-container.yml b/.github/workflows/contracts-release-gate-container.yml new file mode 100644 index 0000000..2f76a81 --- /dev/null +++ b/.github/workflows/contracts-release-gate-container.yml @@ -0,0 +1,44 @@ +name: Contracts Release Gate (Containerized) + +on: + pull_request: + paths: + - "contracts/**" + - ".github/workflows/contracts-release-gate-container.yml" + workflow_dispatch: + inputs: + gate_mode: + description: "MARK_RELEASE_GATE_MODE: local or remote" + required: false + default: "local" + type: choice + options: + - local + - remote + push: + branches: + - main + - canary + - dev + paths: + - "contracts/**" + - ".github/workflows/contracts-release-gate-container.yml" + +jobs: + release-gate-container: + name: Release Gate Container + runs-on: ubuntu-latest + defaults: + run: + working-directory: contracts + env: + MARK_RELEASE_GATE_MODE: ${{ github.event.inputs.gate_mode || 'local' }} + + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + submodules: recursive + + - name: Run release gate in container + run: make release-gate-container diff --git a/.github/workflows/governance-verify.yml b/.github/workflows/governance-verify.yml new file mode 100644 index 0000000..827c5bd --- /dev/null +++ b/.github/workflows/governance-verify.yml @@ -0,0 +1,25 @@ +name: Governance Verify + +on: + workflow_dispatch: + schedule: + - cron: "15 4 * * 1" + +jobs: + verify-governance: + name: Verify Governance Baseline + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Verify governance protections + env: + GH_PAT: ${{ secrets.GOVERNANCE_VERIFY_PAT }} + GH_REPO: ${{ github.repository }} + run: | + if [ -z "${GH_PAT}" ]; then + echo "Missing required secret: GOVERNANCE_VERIFY_PAT" >&2 + exit 1 + fi + ./scripts/github/verify-governance.sh diff --git a/.github/workflows/scripts-ci.yml b/.github/workflows/scripts-ci.yml new file mode 100644 index 0000000..51a65a0 --- /dev/null +++ b/.github/workflows/scripts-ci.yml @@ -0,0 +1,31 @@ +name: Scripts CI + +on: + pull_request: + paths: + - "scripts/**/*.sh" + - "contracts/script/**/*.sh" + - ".github/workflows/scripts-ci.yml" + push: + branches: + - main + - canary + - dev + paths: + - "scripts/**/*.sh" + - "contracts/script/**/*.sh" + - ".github/workflows/scripts-ci.yml" + workflow_dispatch: + +jobs: + shellcheck: + name: Shellcheck Scripts + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Run shellcheck + uses: ludeeus/action-shellcheck@2.0.0 + with: + scandir: "scripts contracts/script" diff --git a/.github/workflows/secrets-scan.yml b/.github/workflows/secrets-scan.yml new file mode 100644 index 0000000..93e596d --- /dev/null +++ b/.github/workflows/secrets-scan.yml @@ -0,0 +1,25 @@ +name: Secrets Scan + +on: + pull_request: + push: + branches: + - main + - canary + - dev + workflow_dispatch: + +jobs: + gitleaks: + name: Gitleaks Scan + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Run gitleaks + uses: gitleaks/gitleaks-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/BRANCHING.md b/BRANCHING.md index f26db6f..4c1edd2 100644 --- a/BRANCHING.md +++ b/BRANCHING.md @@ -36,7 +36,10 @@ This repository uses a three-track branch model: - `contracts-slither` runs on pushes to `dev`, `canary`, and `main`, and on PRs touching core contracts. - `contracts-env-guard` runs on pushes to `dev`, `canary`, and `main`, and on PRs touching contracts. - `secrets-drift-guard` runs on all PRs into `dev`, `canary`, and `main`. +- `secrets-scan` (gitleaks) runs on PRs/pushes to detect accidental secret commits early. +- `scripts-ci` runs shellcheck on repository automation scripts to reduce operational breakage risk. - `contracts-staging-rehearsal` is automatically triggered on push to `canary`. +- `contracts-release-gate-container` runs release gate in a pinned container on pushes to `dev`/`canary`/`main` and manual dispatch. - `contracts-mainnet-readiness` is production-gated: - manual only (`workflow_dispatch`) - enforced to run from `main` branch @@ -62,6 +65,9 @@ Use this matrix as the merge baseline. - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Slither Core Contracts` - `Secrets Drift Guard` +- `Analyze (JavaScript/TypeScript)` +- `Gitleaks Scan` +- `Release Gate Container` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` ### PRs into `canary` @@ -70,6 +76,9 @@ Use this matrix as the merge baseline. - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Slither Core Contracts` - `Secrets Drift Guard` +- `Analyze (JavaScript/TypeScript)` +- `Gitleaks Scan` +- `Release Gate Container` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` ### PRs into `main` (release candidate) @@ -78,6 +87,9 @@ Use this matrix as the merge baseline. - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Slither Core Contracts` - `Secrets Drift Guard` +- `Analyze (JavaScript/TypeScript)` +- `Gitleaks Scan` +- `Release Gate Container` - `Validate Release PR Checklist` - `Validate Release Evidence` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` @@ -98,6 +110,9 @@ Apply these repository settings: - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Slither Core Contracts` - `Secrets Drift Guard` + - `Analyze (JavaScript/TypeScript)` + - `Gitleaks Scan` + - `Release Gate Container` - `Validate Release PR Checklist` - `Validate Release Evidence` - Require at least 1-2 approvals. @@ -111,6 +126,9 @@ Apply these repository settings: - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Slither Core Contracts` - `Secrets Drift Guard` + - `Analyze (JavaScript/TypeScript)` + - `Gitleaks Scan` + - `Release Gate Container` - Require at least 1 approval. - Dismiss stale approvals on new commits. @@ -121,6 +139,9 @@ Apply these repository settings: - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Slither Core Contracts` - `Secrets Drift Guard` + - `Analyze (JavaScript/TypeScript)` + - `Gitleaks Scan` + - `Release Gate Container` Notes: - Do not add `Validate Governance Policy Consistency` as a global required branch-protection check because it is intentionally path-filtered; require it only on governance-touching PRs. diff --git a/ORG_TRANSFER_SECURITY_CHECKLIST.md b/ORG_TRANSFER_SECURITY_CHECKLIST.md new file mode 100644 index 0000000..27505fc --- /dev/null +++ b/ORG_TRANSFER_SECURITY_CHECKLIST.md @@ -0,0 +1,102 @@ +# Org Transfer Security Checklist (Execution Guide) + +Date baseline: May 5, 2026. + +## Goal + +Enable a safe organization transfer while immediately enforcing a security baseline for a solo-maintained protocol repository. + +## Phase 0 — Before transfer (same day) + +- [ ] Confirm current default branch and protected branches. +- [ ] Export current repository secrets/variables inventory (names only, no values). +- [ ] Snapshot existing Actions workflows and required checks. +- [ ] Freeze risky merges during transfer window. + +Success criteria: +- You can compare pre/post transfer settings without guessing. + +## Phase 1 — Transfer + governance baseline (Day 1) + +- [ ] Transfer repository into the target GitHub organization. +- [ ] Re-enable CodeQL workflow and confirm scan jobs trigger on PRs. +- [ ] Set branch protection rules: + - `main`: no direct push, require PR, require passing checks. + - `canary`: no direct push, require PR, require passing checks. + - `dev`: require PR + passing checks (can be less strict than main). +- [ ] Enable dismiss stale approvals when new commits are pushed. + +Required checks (minimum): +- [ ] `pnpm -s lint` +- [ ] `pnpm -s typecheck` +- [ ] contracts CI fast gate +- [ ] CodeQL + +Success criteria: +- No PR can merge unless all baseline checks pass. + +## Phase 2 — CI runtime determinism (Day 2-4) + +- [ ] Add pinned runtime path for release verification (container preferred). +- [ ] Add single wrapper command for repeatability (example: `make release-gate-container`). +- [ ] Ensure `forge`, `jq`, `slither`, `node`, and `pnpm` versions are explicit. +- [ ] Persist release artifacts/evidence manifest as build artifacts. + +Success criteria: +- Release gate gives same result locally and in CI for same commit + env. + +## Phase 3 — Secrets and key hygiene (Day 5-7) + +- [ ] Split credentials by environment (`staging`, `mainnet`). +- [ ] Split credentials by duty (`deploy`, `verify`, `sign`). +- [ ] Rotate old/shared credentials. +- [ ] Store emergency recovery instructions in runbook. + +Success criteria: +- Compromise in one environment or role does not expose all release paths. + +## Phase 4 — Privacy and incident readiness (Day 8-14) + +- [ ] Add release privacy-impact checklist (on-chain + off-chain metadata review). +- [ ] Add playbooks for: + - verifier key compromise + - operator key compromise + - bad release artifact anchoring +- [ ] Run one tabletop drill and capture deltas. + +Success criteria: +- You can execute incident response steps without ad-hoc decisions. + +## Immediate next action (single highest ROI) + +If you only do one thing first, do this: + +**Enable CodeQL + required status checks + branch protection immediately after transfer.** + +This creates an enforceable baseline for every future change and is the most effective solo-founder risk reduction step. + + +## Phase 0.5 — Pre-transfer readiness script + +Run: + +```bash +export GH_PAT= +# optional: export GH_REPO=/ +./scripts/github/pretransfer-readiness.sh +``` + +This verifies API access, expected workflow files, and checks whether `GOVERNANCE_VERIFY_PAT` is already present. + + +## Phase 1.5 — Post-transfer bootstrap (recommended) + +Run: + +```bash +export GH_PAT= +# optional: export GH_REPO=/ +./scripts/github/posttransfer-bootstrap.sh +``` + +This executes governance apply + verification in one command and should be run immediately after repo transfer. diff --git a/PROJECT_REVIEW.md b/PROJECT_REVIEW.md new file mode 100644 index 0000000..5ba6d1e --- /dev/null +++ b/PROJECT_REVIEW.md @@ -0,0 +1,222 @@ +# Project Review (May 5, 2026) + +## Scope + +This review covers: +- Repository structure and build/test tooling. +- Frontend app purpose and implementation level. +- Smart-contract architecture and key security controls. +- CI/release guardrails and operations readiness. + +## What was validated directly + +- Root metadata and scripts in `package.json`. +- High-level docs in `README.md`, `contracts/README.md`, and `contracts/ARCHITECTURE.md`. +- Core contracts: + - `contracts/src/token/RYLA.sol` + - `contracts/src/bridge/MARKBridgeAdapter.sol` + - `contracts/src/settlement/MARKSettlementModule.sol` +- Frontend entry screen in `src/App.tsx`. +- TypeScript and lint health (`pnpm -s typecheck`, `pnpm -s lint`). + +## High-level assessment + +The project is organized with unusually strong operational discipline for an early-stage protocol stack: +- Clear branch/release policy and staged promotion model. +- Security-oriented contract controls (`AccessControlDefaultAdminRules`, operator gating, replay protection, production-mode lock). +- Dedicated release-gate and evidence-manifest workflows aimed at auditable deployments. + +Current risk profile appears moderate and mostly operational, not architectural: +- The core solidity modules are intentionally narrow and separated by domain. +- The largest residual risks are around environment-driven correctness (deployment configuration, RPC assumptions, secrets handling) and proof/verifier governance rather than obvious on-chain logic flaws. + +## Detailed findings + +### 1) Architecture and layering: strong + +- Domain boundaries are explicitly declared and enforced by architecture/layering guard scripts (documented in `contracts/ARCHITECTURE.md`). +- Bridge and settlement modules are cleanly decoupled and both depend on token primitives rather than each other. + +Why this matters: +- Reduces accidental coupling and blast radius from future changes. +- Improves auditability and ownership by domain. + +### 2) Token design (`RYLA`): conservative and controllable + +Observed controls: +- Delayed admin handoff via `AccessControlDefaultAdminRules` with `DEFAULT_ADMIN_DELAY = 1 days`. +- Separate `MINTER_ROLE` and `BURNER_ROLE` with explicit grant/revoke APIs. +- Input hardening for zero address and zero amount. + +Potential improvement (non-critical): +- Consider adding an explicit cap/issuance policy module if supply governance is expected to be publicly constrained by policy, not only by role management. + +### 3) Bridge adapter: practical risk controls in place + +Observed controls: +- `OPERATOR_ROLE` gating. +- Destination-chain allowlist. +- Optional transaction/daily limits (`maxPerTx`, `dailyCap`) with epoch reset. +- Uses `SafeERC20`, `forceApprove`, and `nonReentrant`. + +Potential improvement (medium): +- Add optional per-destination caps (not just global daily cap) to isolate lane-specific risk. +- Add explicit pause/emergency brake if not already handled by off-chain release controls. + +### 4) Settlement module: good baseline for production hardening + +Observed controls: +- Replay protection through `consumedIntents[intentId]`. +- Optional verifier hook with explicit `proofValidationEnabled` state. +- Irreversible `productionMode` that requires proof validation to stay active. +- Burn flow uses escrow invariants before/after burn to catch token accounting drift. + +Potential improvement (medium): +- Add structured reason codes/events for verifier failures to simplify operations and triage (currently returns a boolean). +- Consider explicit bounded-size checks on `proof` payload length to reduce griefing surface on calldata-heavy failures. + +### 5) Frontend: currently operational dashboard, not transaction UX + +- `src/App.tsx` is intentionally informational (topology, release flow, runbook commands). +- No wallet interaction, chain writes, or end-user flows yet. + +Implication: +- Security criticality is currently centered on contracts and operational scripts, not frontend execution paths. + +### 6) Tooling and CI health: partially validated + +Validated now: +- TypeScript typecheck passes. +- ESLint passes. + +Not validated in this environment: +- Foundry tests (`forge test`) could not run due to missing Foundry binary. + +Impact: +- No claim is made here about current pass/fail status of solidity unit/invariant/e2e suites in this container. + +## Recommendations (prioritized) + +1. **P0 – Enforce executable preflight in CI image** + - Ensure `forge`, `slither`, and all release-gate dependencies are available in every CI execution context to prevent false confidence from partial checks. + +2. **P1 – Strengthen bridge risk segmentation** + - Introduce optional per-destination rate limits and/or per-operator quotas for incident containment. + +3. **P1 – Expand settlement observability** + - Emit richer verification telemetry and failure reason mapping for on-call diagnostics. + +4. **P2 – Document explicit trust model** + - Add a compact “trust assumptions” section (operator keys, verifier key custody, break-glass policy, evidence signature authority rotation) in `contracts/RUNBOOK.md` or `README.md`. + +5. **P2 – Scenario-driven negative tests** + - Add/confirm tests for edge cases: verifier flip attempts in production mode, proof replay across modules/chains, cap rollover boundaries, and deflationary/non-standard ERC20 behavior assumptions in bridge/settlement wrappers. + +## Final verdict + +- **Design quality:** Good +- **Security posture (observed):** Good baseline with thoughtful controls +- **Operational readiness:** Good process direction, but environment consistency for solidity toolchain must be enforced to avoid blind spots +- **Main gap to close next:** deterministic, fully reproducible release-gate execution across all CI/runtime environments + +## Next best recommendation (based on current status) + +If only one thing is done next, the highest-leverage move is: + +**Create a reproducible, toolchain-pinned execution path for `make release-gate` and `./script/ops/mainnet-readiness.sh` (containerized or Nix/asdf pinned), then run it in CI on every protected branch.** + +Why this is first: +- Current gates are already strong and comprehensive, but they hard-fail when core binaries (`forge`, `jq`, `slither`) are absent. +- This means process quality is high, but reliability of execution across environments is still the bottleneck. +- Once runtime parity is guaranteed, all other recommendations (caps, telemetry, trust-model docs) become safer and easier to validate. + +### Practical implementation option + +1. Add a dedicated dev/CI container image containing exact versions of: + - Foundry (`forge`), Slither, `jq`, Node/pnpm. +2. Add a single command wrapper (example: `make release-gate-container`) to execute gates inside that image. +3. Wire branch protection checks to this wrapper for `dev`, `canary`, and `main` with policy-appropriate strictness. +4. Persist generated artifacts (`release-gate-*.json`, mainnet gate artifacts) as CI build outputs for audit trail continuity. + +### Better-solution alternative (if minimizing ops overhead) + +If maintaining a custom image is heavy, use a lightweight version manager baseline: +- `asdf` + `.tool-versions` for `nodejs`, `jq`, and Foundry toolchain pinning. +- CI bootstrap script that validates tool versions before any gate starts. + +This is less hermetic than containers, but still significantly reduces drift and false negatives. + +## Opinion on transferring to organization before next improvements + +Yes — transferring to your organization first is a sensible move. + +Given your note that CodeQL is only available at organization level, transfer-first gives you two immediate benefits: +1. Security scanning baseline (CodeQL + org-level policy controls) becomes enforceable before feature hardening. +2. Follow-up recommendations can be validated under the same governance context that production will use. + +### Recommended transfer-first sequence + +1. Transfer repository to organization and re-enable CodeQL workflow triggers. +2. Turn on required status checks for at least: + - lint + typecheck + - contract CI fast/full + - CodeQL scan +3. Add branch protections for `dev`, `canary`, and `main` aligned to your promotion path. +4. Only then execute the next hardening item (reproducible release-gate runtime pinning), so it lands under org-enforced controls from day one. + +### Practical caution list after transfer + +- Verify all GitHub Actions secrets/variables were migrated or recreated at org/repo scope. +- Re-check workflow permissions (especially `security-events: write` for CodeQL uploads). +- Confirm artifact retention policy for release evidence outputs. +- Validate that branch protection rules are actually active on transferred default/protected branches. + +This order minimizes rework and prevents a situation where hardening work is merged before your final governance/security baseline is active. + +## Solo-founder execution plan (security/privacy first) + +Given you are operating solo and security/privacy are top priority, the best practical approach is: + +**Do fewer things, but make each control enforceable by automation before scaling scope.** + +### Recommended 14-day plan + +#### Day 1-3: Governance baseline after org transfer + +1. Re-enable CodeQL and make it a required check. +2. Enforce protected branches with no direct push to `main` and `canary`. +3. Require passing checks before merge: + - frontend lint/typecheck + - contracts `ci-fast` + - CodeQL + +Outcome: every future change must pass a minimum security gate automatically. + +#### Day 4-7: Deterministic release runtime + +1. Create pinned execution environment (container preferred). +2. Add one canonical command for release verification (example: `make release-gate-container`). +3. Store release artifacts and evidence manifests as CI artifacts. + +Outcome: reproducible release evidence; lower chance of hidden local-environment drift. + +#### Day 8-10: Secrets and key-material hardening + +1. Split keys by environment (staging/mainnet) and role (deploy/verify/sign). +2. Rotate any legacy/shared keys. +3. Add an emergency key revocation + recovery runbook section. + +Outcome: reduced blast radius from key compromise. + +#### Day 11-14: Privacy and incident readiness + +1. Add privacy-impact checklist for each release (what data is emitted on-chain/off-chain, metadata leakage review). +2. Add incident playbook for verifier compromise, operator compromise, and bad release artifact. +3. Run one tabletop drill (self-run) and capture improvements. + +Outcome: preparedness for the exact failures that matter most to institutional users. + +### Best recommendation for your context + +If you can only choose one immediate task: **make CodeQL + branch protection + required checks fully active right after transfer**. +That single step gives you the highest security ROI as a solo builder by forcing discipline on every change. diff --git a/SECURITY_NEXT_STEPS.md b/SECURITY_NEXT_STEPS.md new file mode 100644 index 0000000..2e6a872 --- /dev/null +++ b/SECURITY_NEXT_STEPS.md @@ -0,0 +1,23 @@ +# Security Next Steps + +Date: May 5, 2026. + +## Immediate next step + +Transfer the repo to your organization, then run: + +```bash +export GH_PAT= +./scripts/github/pretransfer-readiness.sh +./scripts/github/posttransfer-bootstrap.sh +``` + +This is the fastest path to enforced controls. + +## Lean sequence + +1. Enforce required checks and branch protections (`dev`, `canary`, `main`). +2. Confirm CodeQL, Gitleaks, Release Gate Container, and Scripts CI are merge-blocking. +3. Keep release-gate execution containerized. +4. Rotate/split credentials by environment and role. +5. Re-run governance verification on schedule. diff --git a/TRANSFER_NOW_CHECKLIST.md b/TRANSFER_NOW_CHECKLIST.md new file mode 100644 index 0000000..0cae616 --- /dev/null +++ b/TRANSFER_NOW_CHECKLIST.md @@ -0,0 +1,49 @@ +# Transfer Now Checklist (Do This Now) + +Date: May 5, 2026. + +## Short answer + +Yes — based on current status, you should transfer the repo to your organization now. + +## Execute in order + +1. Pre-check before transfer: + +```bash +export GH_PAT= +# optional: export GH_REPO=/ +./scripts/github/pretransfer-readiness.sh +``` + +2. Transfer the repository to your organization in GitHub settings. + +3. Immediately run post-transfer bootstrap: + +```bash +export GH_PAT= +# optional: export GH_REPO=/ +./scripts/github/posttransfer-bootstrap.sh +``` + +4. Add/confirm required secret in new org repo: +- `GOVERNANCE_VERIFY_PAT` + +5. Trigger and confirm these workflows on a small PR: +- `CodeQL` (`Analyze (JavaScript/TypeScript)`) +- `Secrets Scan` (`Gitleaks Scan`) +- `Contracts Release Gate (Containerized)` (`Release Gate Container`) +- `Scripts CI` (`Shellcheck Scripts`) + +6. Confirm branch protection required checks in GitHub UI match policy docs. + +## If something fails + +- Run `./scripts/github/verify-governance.sh` and fix missing checks/protections. +- Re-run `./scripts/github/posttransfer-bootstrap.sh` after corrections. + +## Done criteria + +- Transfer completed. +- Governance apply+verify passes. +- Required checks are merge-blocking on `dev`, `canary`, and `main`. diff --git a/contracts/Makefile b/contracts/Makefile index 4c7ab13..e8599f2 100644 --- a/contracts/Makefile +++ b/contracts/Makefile @@ -1,4 +1,4 @@ -.PHONY: ci-local ci-fast ci-full test-core test-invariants release-gate architecture-guard layering-guard smoke-production-mode test-production-lock verify-production-lock dispatch-production-lock-verify dispatch-release-evidence-sequence bootstrap-release-secrets rehearse-production-lock generate-promotion-checklist validate-prod-env validate-prod-env-all generate-evidence-manifest verify-evidence-manifest sign-evidence-manifest verify-evidence-signature slither-install slither-core +.PHONY: ci-local ci-fast ci-full test-core test-invariants release-gate release-gate-container architecture-guard layering-guard smoke-production-mode test-production-lock verify-production-lock dispatch-production-lock-verify dispatch-release-evidence-sequence bootstrap-release-secrets rehearse-production-lock generate-promotion-checklist validate-prod-env validate-prod-env-all generate-evidence-manifest verify-evidence-manifest sign-evidence-manifest verify-evidence-signature slither-install slither-core # Fast local loop: guards + unit/e2e tests (excludes invariants and integration profile tests). ci-fast: architecture-guard layering-guard test-core @@ -19,6 +19,9 @@ ci-local: ci-fast release-gate: @./script/ci/release-gate.sh +release-gate-container: + @./script/ci/run-release-gate-container.sh + architecture-guard: @./script/ci/architecture-guard.sh diff --git a/contracts/docker/release-gate.Dockerfile b/contracts/docker/release-gate.Dockerfile new file mode 100644 index 0000000..e31a17f --- /dev/null +++ b/contracts/docker/release-gate.Dockerfile @@ -0,0 +1,17 @@ +FROM ghcr.io/foundry-rs/foundry:latest + +RUN apt-get update \ + && apt-get install -y --no-install-recommends curl git jq python3 python3-pip ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +# Pin Node + pnpm for deterministic JS tooling in CI steps. +RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ + && apt-get update \ + && apt-get install -y --no-install-recommends nodejs \ + && corepack enable \ + && corepack prepare pnpm@9.0.2 --activate + +# Slither analyzer is required by mainnet-readiness/release hardening checks. +RUN python3 -m pip install --no-cache-dir slither-analyzer + +WORKDIR /repo/contracts diff --git a/contracts/script/ci/run-release-gate-container.sh b/contracts/script/ci/run-release-gate-container.sh new file mode 100755 index 0000000..4316dd5 --- /dev/null +++ b/contracts/script/ci/run-release-gate-container.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +REPO_DIR="$(cd "${ROOT_DIR}/.." && pwd)" +IMAGE_TAG="${MARK_RELEASE_GATE_IMAGE_TAG:-mark-release-gate:local}" +DOCKERFILE_PATH="${ROOT_DIR}/docker/release-gate.Dockerfile" + +if ! command -v docker >/dev/null 2>&1; then + echo "docker is required for release-gate-container" >&2 + exit 1 +fi + +echo "[release-gate-container] building image: ${IMAGE_TAG}" +docker build -t "${IMAGE_TAG}" -f "${DOCKERFILE_PATH}" "${REPO_DIR}" + +echo "[release-gate-container] running release gate inside container" +# Pass through environment variables commonly used by release-gate and remote mode. +docker run --rm \ + -v "${REPO_DIR}:/repo" \ + -w /repo/contracts \ + -e MARK_RELEASE_GATE_MODE \ + -e MARK_RELEASE_VERIFY_REQUIRE_SIGNED_MANIFEST \ + -e MARK_RELEASE_VERIFY_ARTIFACT_PATH \ + -e MARK_RELEASE_ARTIFACT_PATH \ + -e MARK_RELEASE_VERIFY_MANIFEST_PATH \ + -e MARK_RELEASE_VERIFY_SIGNATURE_PATH \ + -e MARK_RELEASE_VERIFY_SIGNATURE_META_PATH \ + -e VERIFY_PUBLIC_KEY_FILE \ + -e VERIFY_PUBLIC_KEY_PEM \ + -e MARK_MAINNET_GATE_MODE \ + -e MARK_MAINNET_GATE_ARTIFACT_PATH \ + -e RPC_URL \ + -e PRIVATE_KEY \ + "${IMAGE_TAG}" \ + bash -lc 'corepack enable >/dev/null 2>&1 || true; pnpm --version >/dev/null 2>&1 || true; make release-gate' diff --git a/scripts/github/apply-governance.sh b/scripts/github/apply-governance.sh index 713389c..6b5003c 100755 --- a/scripts/github/apply-governance.sh +++ b/scripts/github/apply-governance.sh @@ -212,19 +212,28 @@ DEV_CHECKS_JSON='[ "Contracts Unit + Invariant", "Contracts Release Check (Dry-Run + Execute Smoke)", "Slither Core Contracts", - "Secrets Drift Guard" + "Secrets Drift Guard", + "Analyze (JavaScript/TypeScript)", + "Gitleaks Scan", + "Release Gate Container" ]' CANARY_CHECKS_JSON='[ "Contracts Unit + Invariant", "Contracts Release Check (Dry-Run + Execute Smoke)", "Slither Core Contracts", - "Secrets Drift Guard" + "Secrets Drift Guard", + "Analyze (JavaScript/TypeScript)", + "Gitleaks Scan", + "Release Gate Container" ]' MAIN_CHECKS_JSON='[ "Contracts Unit + Invariant", "Contracts Release Check (Dry-Run + Execute Smoke)", "Slither Core Contracts", "Secrets Drift Guard", + "Analyze (JavaScript/TypeScript)", + "Gitleaks Scan", + "Release Gate Container", "Validate Release PR Checklist", "Validate Release Evidence" ]' diff --git a/scripts/github/posttransfer-bootstrap.sh b/scripts/github/posttransfer-bootstrap.sh new file mode 100755 index 0000000..cc11b4d --- /dev/null +++ b/scripts/github/posttransfer-bootstrap.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Post-transfer bootstrap: +# 1) apply governance protections +# 2) verify protections are active +# +# Required env: +# GH_PAT= +# Optional: +# GH_REPO=owner/repo + +if [[ -z "${GH_PAT:-}" ]]; then + echo "GH_PAT is required" >&2 + exit 1 +fi + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +cd "$ROOT_DIR" + +echo "[posttransfer] applying governance protections" +./scripts/github/apply-governance.sh + +echo "[posttransfer] verifying governance protections" +./scripts/github/verify-governance.sh + +echo "[posttransfer] SUCCESS: governance baseline applied and verified" diff --git a/scripts/github/pretransfer-readiness.sh b/scripts/github/pretransfer-readiness.sh new file mode 100755 index 0000000..07e0a93 --- /dev/null +++ b/scripts/github/pretransfer-readiness.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Pre-transfer readiness checks for org migration. +# Required env: +# GH_PAT= +# Optional: +# GH_REPO=owner/repo (inferred from origin) + +require_cmd() { command -v "$1" >/dev/null 2>&1 || { echo "$1 is required" >&2; exit 1; }; } +require_cmd curl +require_cmd jq +require_cmd git + +if [[ -z "${GH_PAT:-}" ]]; then + echo "GH_PAT is required" >&2 + exit 1 +fi + +infer_repo_from_remote() { + local remote + remote="$(git remote get-url origin)" + if [[ "$remote" =~ ^git@github.com:([^/]+/[^/]+)(\.git)?$ ]]; then + echo "${BASH_REMATCH[1]}"; return + fi + if [[ "$remote" =~ ^https://github.com/([^/]+/[^/]+)(\.git)?$ ]]; then + echo "${BASH_REMATCH[1]}"; return + fi + echo "Could not infer GH_REPO from origin: $remote" >&2 + exit 1 +} + +GH_REPO="${GH_REPO:-$(infer_repo_from_remote)}" +owner="${GH_REPO%%/*}" +repo="${GH_REPO##*/}" +api="https://api.github.com/repos/${owner}/${repo}" +auth_headers=(-H "Authorization: Bearer ${GH_PAT}" -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28") + +echo "[pretransfer] repo=${GH_REPO}" + +# Basic repo access check +curl -sS "${auth_headers[@]}" "${api}" | jq -e '.full_name != null' >/dev/null + +echo "[pretransfer] checking required workflow files" +required_workflows=( + ".github/workflows/codeql.yml" + ".github/workflows/secrets-scan.yml" + ".github/workflows/governance-verify.yml" + ".github/workflows/contracts-release-gate-container.yml" +) +for wf in "${required_workflows[@]}"; do + if [[ ! -f "$wf" ]]; then + echo " FAIL: missing workflow file: $wf" >&2 + exit 1 + fi + echo " PASS: $wf" +done + +echo "[pretransfer] checking required repo secret names for post-transfer workflows" +secrets_json="$(curl -sS "${auth_headers[@]}" "${api}/actions/secrets")" +for s in GOVERNANCE_VERIFY_PAT; do + if jq -e --arg n "$s" '.secrets[]?.name | select(. == $n)' <<<"$secrets_json" >/dev/null; then + echo " PASS: secret exists: $s" + else + echo " WARN: secret missing (add after transfer if needed): $s" + fi +done + +echo "[pretransfer] done" diff --git a/scripts/github/verify-governance.sh b/scripts/github/verify-governance.sh new file mode 100755 index 0000000..96a55b1 --- /dev/null +++ b/scripts/github/verify-governance.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Verify governance baseline is active on GitHub repository. +# Required env: +# GH_PAT= +# Optional: +# GH_REPO=owner/repo (inferred from origin if omitted) + +require_cmd() { + command -v "$1" >/dev/null 2>&1 || { echo "$1 is required" >&2; exit 1; } +} + +require_cmd curl +require_cmd jq +require_cmd git + +if [[ -z "${GH_PAT:-}" ]]; then + echo "GH_PAT is required" >&2 + exit 1 +fi + +infer_repo_from_remote() { + local remote + remote="$(git remote get-url origin)" + if [[ "$remote" =~ ^git@github.com:([^/]+/[^/]+)(\.git)?$ ]]; then + echo "${BASH_REMATCH[1]}"; return + fi + if [[ "$remote" =~ ^https://github.com/([^/]+/[^/]+)(\.git)?$ ]]; then + echo "${BASH_REMATCH[1]}"; return + fi + echo "Could not infer GH_REPO from origin: $remote" >&2 + exit 1 +} + +GH_REPO="${GH_REPO:-$(infer_repo_from_remote)}" +owner="${GH_REPO%%/*}" +repo="${GH_REPO##*/}" +api="https://api.github.com/repos/${owner}/${repo}" + +auth_headers=( + -H "Authorization: Bearer ${GH_PAT}" + -H "Accept: application/vnd.github+json" + -H "X-GitHub-Api-Version: 2022-11-28" +) + +require_checks_dev=( + "Contracts Unit + Invariant" + "Contracts Release Check (Dry-Run + Execute Smoke)" + "Slither Core Contracts" + "Secrets Drift Guard" + "Analyze (JavaScript/TypeScript)" +) + +require_checks_main=( + "Contracts Unit + Invariant" + "Contracts Release Check (Dry-Run + Execute Smoke)" + "Slither Core Contracts" + "Secrets Drift Guard" + "Analyze (JavaScript/TypeScript)" + "Validate Release PR Checklist" + "Validate Release Evidence" +) + +get_protection() { + local branch="$1" + curl -sS "${auth_headers[@]}" "${api}/branches/${branch}/protection" +} + +check_branch() { + local branch="$1" + shift + local -a expected=("$@") + + echo "[verify] branch=${branch}" + local json + json="$(get_protection "$branch")" + + local enabled + enabled="$(jq -r '.required_status_checks != null' <<<"$json")" + if [[ "$enabled" != "true" ]]; then + echo " FAIL: required_status_checks not enabled for ${branch}" >&2 + return 1 + fi + + local stale + stale="$(jq -r '.required_pull_request_reviews.dismiss_stale_reviews // false' <<<"$json")" + if [[ "$stale" != "true" ]]; then + echo " FAIL: dismiss_stale_reviews is not enabled for ${branch}" >&2 + return 1 + fi + + local missing=0 + for check in "${expected[@]}"; do + if ! jq -e --arg c "$check" '.required_status_checks.checks[]?.context | select(. == $c)' <<<"$json" >/dev/null; then + echo " FAIL: missing required check on ${branch}: ${check}" >&2 + missing=1 + fi + done + + if [[ $missing -ne 0 ]]; then + return 1 + fi + + echo " PASS" +} + +check_branch dev "${require_checks_dev[@]}" +check_branch canary "${require_checks_dev[@]}" +check_branch main "${require_checks_main[@]}" + +echo "[verify] governance baseline active for ${GH_REPO}" From 7fb3338f4cb25003122cfef8219f02fd8351c3ac Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 15:13:20 +0700 Subject: [PATCH 15/60] fix(ci): add USER root in release-gate Dockerfile for apt-get permissions --- contracts/docker/release-gate.Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contracts/docker/release-gate.Dockerfile b/contracts/docker/release-gate.Dockerfile index e31a17f..b4b0043 100644 --- a/contracts/docker/release-gate.Dockerfile +++ b/contracts/docker/release-gate.Dockerfile @@ -1,5 +1,7 @@ FROM ghcr.io/foundry-rs/foundry:latest +USER root + RUN apt-get update \ && apt-get install -y --no-install-recommends curl git jq python3 python3-pip ca-certificates \ && rm -rf /var/lib/apt/lists/* From 8925df3c8cfc42f5574bb2d6ff2d53852a333ddd Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 16:58:58 +0700 Subject: [PATCH 16/60] ci(security): fix dependency review tag and use OSS gitleaks CLI --- .github/workflows/dependency-review.yml | 2 +- .github/workflows/secrets-scan.yml | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 0428468..4455621 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v6 - name: Review dependency changes - uses: actions/dependency-review-action@v5 + uses: actions/dependency-review-action@v4 with: fail-on-severity: high warn-only: false diff --git a/.github/workflows/secrets-scan.yml b/.github/workflows/secrets-scan.yml index 93e596d..56e9feb 100644 --- a/.github/workflows/secrets-scan.yml +++ b/.github/workflows/secrets-scan.yml @@ -13,13 +13,29 @@ jobs: gitleaks: name: Gitleaks Scan runs-on: ubuntu-latest + permissions: + contents: read + security-events: write steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 0 + - name: Install gitleaks CLI + run: | + curl -sSfL https://raw.githubusercontent.com/gitleaks/gitleaks/master/install.sh \ + | sh -s -- -b /usr/local/bin v8.24.2 + - name: Run gitleaks - uses: gitleaks/gitleaks-action@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gitleaks git \ + --redact \ + --report-format sarif \ + --report-path gitleaks.sarif + + - name: Upload SARIF + if: always() + uses: github/codeql-action/upload-sarif@v4 + with: + sarif_file: gitleaks.sarif From 3ed0b08a9019f4bd66befaf73d5861ba8ef0d9b4 Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 16:59:38 +0700 Subject: [PATCH 17/60] ci(security): fix gitleaks PATH on github runner --- .github/workflows/secrets-scan.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/secrets-scan.yml b/.github/workflows/secrets-scan.yml index 56e9feb..c39cf45 100644 --- a/.github/workflows/secrets-scan.yml +++ b/.github/workflows/secrets-scan.yml @@ -24,8 +24,13 @@ jobs: - name: Install gitleaks CLI run: | + mkdir -p "$RUNNER_TEMP/bin" curl -sSfL https://raw.githubusercontent.com/gitleaks/gitleaks/master/install.sh \ - | sh -s -- -b /usr/local/bin v8.24.2 + | sh -s -- -b "$RUNNER_TEMP/bin" v8.24.2 + echo "$RUNNER_TEMP/bin" >> "$GITHUB_PATH" + + - name: Verify gitleaks install + run: gitleaks version - name: Run gitleaks run: | From 71f688f617ffdc849bea987a0fe9b7964b1e3935 Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 17:00:31 +0700 Subject: [PATCH 18/60] ci(security): run gitleaks scan via docker image --- .github/workflows/secrets-scan.yml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/.github/workflows/secrets-scan.yml b/.github/workflows/secrets-scan.yml index c39cf45..1642427 100644 --- a/.github/workflows/secrets-scan.yml +++ b/.github/workflows/secrets-scan.yml @@ -22,22 +22,16 @@ jobs: with: fetch-depth: 0 - - name: Install gitleaks CLI - run: | - mkdir -p "$RUNNER_TEMP/bin" - curl -sSfL https://raw.githubusercontent.com/gitleaks/gitleaks/master/install.sh \ - | sh -s -- -b "$RUNNER_TEMP/bin" v8.24.2 - echo "$RUNNER_TEMP/bin" >> "$GITHUB_PATH" - - - name: Verify gitleaks install - run: gitleaks version - - name: Run gitleaks run: | - gitleaks git \ - --redact \ - --report-format sarif \ - --report-path gitleaks.sarif + docker run --rm \ + -v "$PWD:/repo" \ + -w /repo \ + zricethezav/gitleaks:v8.24.2 \ + git \ + --redact \ + --report-format sarif \ + --report-path gitleaks.sarif - name: Upload SARIF if: always() From 812800733c921c2785cc463bcfdb5d1939dbfda8 Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 17:02:40 +0700 Subject: [PATCH 19/60] ci(security): remove hardcoded key and scope gitleaks to workspace --- .github/workflows/contracts-ci.yml | 11 ++++++++++- .github/workflows/secrets-scan.yml | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/contracts-ci.yml b/.github/workflows/contracts-ci.yml index f91c72c..488e623 100644 --- a/.github/workflows/contracts-ci.yml +++ b/.github/workflows/contracts-ci.yml @@ -58,7 +58,6 @@ jobs: run: working-directory: contracts env: - PRIVATE_KEY: "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" RPC_URL: http://127.0.0.1:8545 MARK_RELEASE_EXECUTE: "false" MARK_RELEASE_RUN_POSTDEPLOY: "false" @@ -89,6 +88,16 @@ jobs: tail -n 200 /tmp/anvil.log || true exit 1 + - name: Export anvil deployer private key + run: | + key="$(awk '/Private Keys/{getline; sub(/^[[:space:]]*\\(0\\)[[:space:]]*/, "", $0); print $0; exit}' /tmp/anvil.log)" + if [ -z "$key" ]; then + echo "failed to extract anvil deployer key" >&2 + tail -n 120 /tmp/anvil.log || true + exit 1 + fi + echo "PRIVATE_KEY=$key" >> "$GITHUB_ENV" + - name: Run release orchestrator dry-run run: forge script script/ops/settlement/ReleaseMARK.s.sol --rpc-url $RPC_URL -vv diff --git a/.github/workflows/secrets-scan.yml b/.github/workflows/secrets-scan.yml index 1642427..bf410a1 100644 --- a/.github/workflows/secrets-scan.yml +++ b/.github/workflows/secrets-scan.yml @@ -28,7 +28,7 @@ jobs: -v "$PWD:/repo" \ -w /repo \ zricethezav/gitleaks:v8.24.2 \ - git \ + dir /repo \ --redact \ --report-format sarif \ --report-path gitleaks.sarif From afb066cabf75089dc29b34af99898a9a26813e3c Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 17:05:16 +0700 Subject: [PATCH 20/60] ci(contracts): fix anvil key extraction for release check --- .github/workflows/contracts-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/contracts-ci.yml b/.github/workflows/contracts-ci.yml index 488e623..806d1b4 100644 --- a/.github/workflows/contracts-ci.yml +++ b/.github/workflows/contracts-ci.yml @@ -90,7 +90,7 @@ jobs: - name: Export anvil deployer private key run: | - key="$(awk '/Private Keys/{getline; sub(/^[[:space:]]*\\(0\\)[[:space:]]*/, "", $0); print $0; exit}' /tmp/anvil.log)" + key="$(grep -Eo '\(0\)[[:space:]]*0x[0-9a-fA-F]+' /tmp/anvil.log | head -n 1 | sed -E 's/^\(0\)[[:space:]]*//')" if [ -z "$key" ]; then echo "failed to extract anvil deployer key" >&2 tail -n 120 /tmp/anvil.log || true From c98f13ab7ee921136d8fbf66bf649e0053ef6d6d Mon Sep 17 00:00:00 2001 From: Iko Date: Wed, 6 May 2026 17:08:01 +0700 Subject: [PATCH 21/60] ci(contracts): require 64-byte anvil private key extraction --- .github/workflows/contracts-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/contracts-ci.yml b/.github/workflows/contracts-ci.yml index 806d1b4..86847a1 100644 --- a/.github/workflows/contracts-ci.yml +++ b/.github/workflows/contracts-ci.yml @@ -90,7 +90,7 @@ jobs: - name: Export anvil deployer private key run: | - key="$(grep -Eo '\(0\)[[:space:]]*0x[0-9a-fA-F]+' /tmp/anvil.log | head -n 1 | sed -E 's/^\(0\)[[:space:]]*//')" + key="$(grep -Eo '\(0\)[[:space:]]*0x[0-9a-fA-F]{64}' /tmp/anvil.log | head -n 1 | sed -E 's/^\(0\)[[:space:]]*//')" if [ -z "$key" ]; then echo "failed to extract anvil deployer key" >&2 tail -n 120 /tmp/anvil.log || true From 773f2843d0527fc20fade5ba253d30fcdf556a59 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Wed, 6 May 2026 17:20:59 +0700 Subject: [PATCH 22/60] ci: always run contracts/frontend checks on protected branches (#21) --- .github/workflows/contracts-ci.yml | 6 ------ .github/workflows/contracts-slither.yml | 8 -------- .github/workflows/frontend-ci.yml | 18 ------------------ 3 files changed, 32 deletions(-) diff --git a/.github/workflows/contracts-ci.yml b/.github/workflows/contracts-ci.yml index 86847a1..9b766da 100644 --- a/.github/workflows/contracts-ci.yml +++ b/.github/workflows/contracts-ci.yml @@ -2,17 +2,11 @@ name: Contracts CI on: pull_request: - paths: - - "contracts/**" - - ".github/workflows/contracts-ci.yml" push: branches: - main - canary - dev - paths: - - "contracts/**" - - ".github/workflows/contracts-ci.yml" workflow_dispatch: inputs: run_integration: diff --git a/.github/workflows/contracts-slither.yml b/.github/workflows/contracts-slither.yml index 0365b9e..2deb5fc 100644 --- a/.github/workflows/contracts-slither.yml +++ b/.github/workflows/contracts-slither.yml @@ -2,19 +2,11 @@ name: Contracts Slither on: pull_request: - paths: - - "contracts/src/**" - - "contracts/foundry.toml" - - ".github/workflows/contracts-slither.yml" push: branches: - main - canary - dev - paths: - - "contracts/src/**" - - "contracts/foundry.toml" - - ".github/workflows/contracts-slither.yml" jobs: slither-core: diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index 2acf75e..d230d33 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -2,29 +2,11 @@ name: Frontend CI on: pull_request: - paths: - - "src/**" - - "public/**" - - "package.json" - - "pnpm-lock.yaml" - - "tsconfig*.json" - - "vite.config.*" - - "eslint.config.*" - - ".github/workflows/frontend-ci.yml" push: branches: - main - canary - dev - paths: - - "src/**" - - "public/**" - - "package.json" - - "pnpm-lock.yaml" - - "tsconfig*.json" - - "vite.config.*" - - "eslint.config.*" - - ".github/workflows/frontend-ci.yml" workflow_dispatch: jobs: From 0573b9b32996f5935b0764573cce364a41cbd38d Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Wed, 6 May 2026 19:09:08 +0700 Subject: [PATCH 23/60] ci: phase-1 reusable workflows for frontend, slither, and secrets scan (#23) * ci: extract reusable frontend/slither/secrets workflows * ci(security): apply codereview pinning and permissions fixes --- .github/actions/setup-foundry/action.yml | 16 ++++++ .github/actions/setup-node-pnpm/action.yml | 28 ++++++++++ .../workflows/_reusable-contracts-slither.yml | 51 +++++++++++++++++++ .../workflows/_reusable-frontend-checks.yml | 48 +++++++++++++++++ .github/workflows/_reusable-secrets-scan.yml | 35 +++++++++++++ .github/workflows/contracts-slither.yml | 37 +------------- .github/workflows/frontend-ci.yml | 37 +------------- .github/workflows/secrets-scan.yml | 25 +-------- 8 files changed, 181 insertions(+), 96 deletions(-) create mode 100644 .github/actions/setup-foundry/action.yml create mode 100644 .github/actions/setup-node-pnpm/action.yml create mode 100644 .github/workflows/_reusable-contracts-slither.yml create mode 100644 .github/workflows/_reusable-frontend-checks.yml create mode 100644 .github/workflows/_reusable-secrets-scan.yml diff --git a/.github/actions/setup-foundry/action.yml b/.github/actions/setup-foundry/action.yml new file mode 100644 index 0000000..06a5531 --- /dev/null +++ b/.github/actions/setup-foundry/action.yml @@ -0,0 +1,16 @@ +name: Setup Foundry + +description: Install pinned Foundry toolchain used by repository workflows. + +inputs: + foundry-version: + description: Foundry version (for example 1.5.0 or nightly-) + required: true + +runs: + using: composite + steps: + - name: Setup Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: ${{ inputs.foundry-version }} diff --git a/.github/actions/setup-node-pnpm/action.yml b/.github/actions/setup-node-pnpm/action.yml new file mode 100644 index 0000000..48a041f --- /dev/null +++ b/.github/actions/setup-node-pnpm/action.yml @@ -0,0 +1,28 @@ +name: Setup Node + pnpm + +description: Setup Node.js and activate a pinned pnpm version via corepack. + +inputs: + node-version: + description: Node.js version + required: true + pnpm-version: + description: pnpm version to activate via corepack + required: false + default: "9.0.2" + +runs: + using: composite + steps: + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: ${{ inputs.node-version }} + package-manager-cache: false + + - name: Setup pnpm (corepack) + shell: bash + run: | + corepack enable + corepack prepare pnpm@${{ inputs.pnpm-version }} --activate + pnpm --version diff --git a/.github/workflows/_reusable-contracts-slither.yml b/.github/workflows/_reusable-contracts-slither.yml new file mode 100644 index 0000000..618f863 --- /dev/null +++ b/.github/workflows/_reusable-contracts-slither.yml @@ -0,0 +1,51 @@ +name: Reusable Contracts Slither + +on: + workflow_call: + inputs: + foundry_version: + description: Foundry version used for Slither compile path + required: false + default: "1.5.0" + type: string + +jobs: + slither-core: + name: Slither Core Contracts + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + submodules: recursive + + - name: Setup Python + uses: actions/setup-python@v6 + with: + python-version: "3.11" + + - name: Install Slither + run: pip install slither-analyzer==0.11.5 + + - name: Setup Foundry + uses: ./.github/actions/setup-foundry + with: + foundry-version: ${{ inputs.foundry_version }} + + - name: Run Slither on MARK core contracts + working-directory: contracts + run: | + for target in \ + src/token/RYLA.sol \ + src/bridge/MARKBridgeAdapter.sol \ + src/settlement/MARKSettlementModule.sol \ + src/settlement/verifier/AttestedSettlementVerifier.sol + do + slither "$target" \ + --solc-remaps "@interop-lib/=lib/interop-lib/src/ @openzeppelin/=lib/createx/lib/openzeppelin-contracts/" \ + --exclude-dependencies \ + --exclude "naming-convention,timestamp,arbitrary-send-erc20,reentrancy-balance,reentrancy-benign" \ + --filter-paths "lib|test|script|out|cache" \ + --fail-medium + done diff --git a/.github/workflows/_reusable-frontend-checks.yml b/.github/workflows/_reusable-frontend-checks.yml new file mode 100644 index 0000000..7ef6b4c --- /dev/null +++ b/.github/workflows/_reusable-frontend-checks.yml @@ -0,0 +1,48 @@ +name: Reusable Frontend Checks + +on: + workflow_call: + inputs: + node_versions: + description: JSON array of Node versions + required: false + default: '["20","22"]' + type: string + pnpm_version: + description: pnpm version used by corepack + required: false + default: "9.0.2" + type: string + +jobs: + frontend-checks: + name: Frontend Checks (Node ${{ matrix.node }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + node: ${{ fromJSON(inputs.node_versions) }} + + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + submodules: recursive + + - name: Setup Node + pnpm + uses: ./.github/actions/setup-node-pnpm + with: + node-version: ${{ matrix.node }} + pnpm-version: ${{ inputs.pnpm_version }} + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm -s typecheck + + - name: Lint + run: pnpm -s lint + + - name: Build frontend + run: pnpm -s build:frontend diff --git a/.github/workflows/_reusable-secrets-scan.yml b/.github/workflows/_reusable-secrets-scan.yml new file mode 100644 index 0000000..5c3cfc0 --- /dev/null +++ b/.github/workflows/_reusable-secrets-scan.yml @@ -0,0 +1,35 @@ +name: Reusable Secrets Scan + +on: + workflow_call: + +jobs: + gitleaks: + name: Gitleaks Scan + runs-on: ubuntu-latest + permissions: + contents: read + security-events: write + + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Run gitleaks + run: | + docker run --rm \ + -v "$PWD:/repo" \ + -w /repo \ + zricethezav/gitleaks:v8.24.2@sha256:b5918eb91b8d2473cec722f066abb4352e4ffdc4ec9f4283ec143aba9ec9ebc4 \ + dir /repo \ + --redact \ + --report-format sarif \ + --report-path gitleaks.sarif + + - name: Upload SARIF + if: always() + uses: github/codeql-action/upload-sarif@v4 + with: + sarif_file: gitleaks.sarif diff --git a/.github/workflows/contracts-slither.yml b/.github/workflows/contracts-slither.yml index 2deb5fc..01d293c 100644 --- a/.github/workflows/contracts-slither.yml +++ b/.github/workflows/contracts-slither.yml @@ -10,39 +10,4 @@ on: jobs: slither-core: - name: Slither Core Contracts - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - submodules: recursive - - - name: Setup Python - uses: actions/setup-python@v6 - with: - python-version: "3.11" - - - name: Install Slither - run: pip install slither-analyzer - - - name: Setup Foundry - uses: foundry-rs/foundry-toolchain@v1 - - - name: Run Slither on MARK core contracts - working-directory: contracts - run: | - for target in \ - src/token/RYLA.sol \ - src/bridge/MARKBridgeAdapter.sol \ - src/settlement/MARKSettlementModule.sol \ - src/settlement/verifier/AttestedSettlementVerifier.sol - do - slither "$target" \ - --solc-remaps "@interop-lib/=lib/interop-lib/src/ @openzeppelin/=lib/createx/lib/openzeppelin-contracts/" \ - --exclude-dependencies \ - --exclude "naming-convention,timestamp,arbitrary-send-erc20,reentrancy-balance,reentrancy-benign" \ - --filter-paths "lib|test|script|out|cache" \ - --fail-medium - done + uses: ./.github/workflows/_reusable-contracts-slither.yml diff --git a/.github/workflows/frontend-ci.yml b/.github/workflows/frontend-ci.yml index d230d33..8fe4dd0 100644 --- a/.github/workflows/frontend-ci.yml +++ b/.github/workflows/frontend-ci.yml @@ -11,39 +11,4 @@ on: jobs: frontend-checks: - name: Frontend Checks (Node ${{ matrix.node }}) - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - node: ["20", "22"] - - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - submodules: recursive - - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - package-manager-cache: false - - - name: Setup pnpm (corepack) - run: | - corepack enable - corepack prepare pnpm@9.0.2 --activate - pnpm --version - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Typecheck - run: pnpm -s typecheck - - - name: Lint - run: pnpm -s lint - - - name: Build frontend - run: pnpm -s build:frontend + uses: ./.github/workflows/_reusable-frontend-checks.yml diff --git a/.github/workflows/secrets-scan.yml b/.github/workflows/secrets-scan.yml index bf410a1..c212862 100644 --- a/.github/workflows/secrets-scan.yml +++ b/.github/workflows/secrets-scan.yml @@ -11,30 +11,7 @@ on: jobs: gitleaks: - name: Gitleaks Scan - runs-on: ubuntu-latest permissions: contents: read security-events: write - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Run gitleaks - run: | - docker run --rm \ - -v "$PWD:/repo" \ - -w /repo \ - zricethezav/gitleaks:v8.24.2 \ - dir /repo \ - --redact \ - --report-format sarif \ - --report-path gitleaks.sarif - - - name: Upload SARIF - if: always() - uses: github/codeql-action/upload-sarif@v4 - with: - sarif_file: gitleaks.sarif + uses: ./.github/workflows/_reusable-secrets-scan.yml From 51c8f1c72084ca5e8ff8314050a1d56b32fa7fe6 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Wed, 6 May 2026 23:41:13 +0700 Subject: [PATCH 24/60] fix(contracts): bridge approval safety + IRYLA interface decoupling - Wrap sendERC20 in try/catch; clear approval and revert with BridgeFailed() on failure - Extract IRYLA interface (inherits IERC20); MARKSettlementModule decoupled from concrete RYLA type - Add unit test for BridgeFailed catch branch --- contracts/src/bridge/MARKBridgeAdapter.sol | 9 ++++++++- contracts/src/errors/BridgeErrors.sol | 1 + contracts/src/interfaces/IRYLA.sol | 11 +++++++++++ contracts/src/settlement/MARKSettlementModule.sol | 11 +++++------ .../test/unit/bridge/MARKBridgeAdapter.t.sol | 15 +++++++++++++++ 5 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 contracts/src/interfaces/IRYLA.sol diff --git a/contracts/src/bridge/MARKBridgeAdapter.sol b/contracts/src/bridge/MARKBridgeAdapter.sol index 1b3c7fa..ce53f3f 100644 --- a/contracts/src/bridge/MARKBridgeAdapter.sol +++ b/contracts/src/bridge/MARKBridgeAdapter.sol @@ -92,7 +92,14 @@ contract MARKBridgeAdapter is ReentrancyGuard, AccessControlDefaultAdminRules, B TOKEN.safeTransferFrom(msg.sender, address(this), amount); TOKEN.forceApprove(address(SUPERCHAIN_TOKEN_BRIDGE), amount); - messageHash = SUPERCHAIN_TOKEN_BRIDGE.sendERC20(address(TOKEN), recipient, amount, destinationChainId); + try SUPERCHAIN_TOKEN_BRIDGE.sendERC20(address(TOKEN), recipient, amount, destinationChainId) returns ( + bytes32 hash + ) { + messageHash = hash; + } catch { + TOKEN.forceApprove(address(SUPERCHAIN_TOKEN_BRIDGE), 0); + revert BridgeFailed(); + } emit BridgedOut(msg.sender, recipient, destinationChainId, amount, messageHash); } diff --git a/contracts/src/errors/BridgeErrors.sol b/contracts/src/errors/BridgeErrors.sol index a0ea410..6eef4fa 100644 --- a/contracts/src/errors/BridgeErrors.sol +++ b/contracts/src/errors/BridgeErrors.sol @@ -8,4 +8,5 @@ abstract contract BridgeErrors { error DestinationDisabled(); error MaxPerTxExceeded(); error DailyCapExceeded(); + error BridgeFailed(); } diff --git a/contracts/src/interfaces/IRYLA.sol b/contracts/src/interfaces/IRYLA.sol new file mode 100644 index 0000000..eaa68e8 --- /dev/null +++ b/contracts/src/interfaces/IRYLA.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.25; + +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +/// @title IRYLA +/// @notice Minimal interface for settlement modules interacting with the RYLA token. +interface IRYLA is IERC20 { + function mint(address to, uint256 amount) external; + function burn(uint256 amount) external; +} diff --git a/contracts/src/settlement/MARKSettlementModule.sol b/contracts/src/settlement/MARKSettlementModule.sol index 02a0fea..699507e 100644 --- a/contracts/src/settlement/MARKSettlementModule.sol +++ b/contracts/src/settlement/MARKSettlementModule.sol @@ -4,10 +4,9 @@ pragma solidity ^0.8.25; import { AccessControlDefaultAdminRules } from "@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol"; -import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; -import {RYLA} from "../token/RYLA.sol"; +import {IRYLA} from "../interfaces/IRYLA.sol"; import {IUTXOSettlementVerifier} from "./interfaces/IUTXOSettlementVerifier.sol"; import {SettlementErrors} from "../errors/SettlementErrors.sol"; import {ZeroAddress} from "@interop-lib/libraries/errors/CommonErrors.sol"; @@ -16,7 +15,7 @@ import {ZeroAddress} from "@interop-lib/libraries/errors/CommonErrors.sol"; /// @notice Boundary module for integrating external UTXO/zk accounting with RYLA mint/burn. /// @dev Holds RYLA minter and burner roles. Replay protection is enforced via `intentId`. contract MARKSettlementModule is ReentrancyGuard, AccessControlDefaultAdminRules, SettlementErrors { - using SafeERC20 for IERC20; + using SafeERC20 for IRYLA; event OperatorUpdated(address indexed operator, bool enabled); event VerifierUpdated(address indexed verifier, bool validationEnabled); event ProductionModeActivated(address indexed admin); @@ -26,7 +25,7 @@ contract MARKSettlementModule is ReentrancyGuard, AccessControlDefaultAdminRules uint48 public constant DEFAULT_ADMIN_DELAY = 1 days; bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE"); - RYLA public immutable TOKEN; + IRYLA public immutable TOKEN; mapping(bytes32 => bool) public consumedIntents; uint256 public totalSettledMint; @@ -41,7 +40,7 @@ contract MARKSettlementModule is ReentrancyGuard, AccessControlDefaultAdminRules { if (initialAdmin == address(0)) revert ZeroAddress(); if (tokenAddress == address(0)) revert ZeroAddress(); - TOKEN = RYLA(tokenAddress); + TOKEN = IRYLA(tokenAddress); } function setOperator(address operator, bool enabled) external onlyRole(DEFAULT_ADMIN_ROLE) { @@ -97,7 +96,7 @@ contract MARKSettlementModule is ReentrancyGuard, AccessControlDefaultAdminRules _consumeAndValidate(intentId, account, amount, false, proof); uint256 moduleBalanceBefore = TOKEN.balanceOf(address(this)); - IERC20(address(TOKEN)).safeTransferFrom(account, address(this), amount); + TOKEN.safeTransferFrom(account, address(this), amount); uint256 moduleBalanceAfterTransfer = TOKEN.balanceOf(address(this)); if (moduleBalanceAfterTransfer != moduleBalanceBefore + amount) revert BurnEscrowInvariantFailed(); diff --git a/contracts/test/unit/bridge/MARKBridgeAdapter.t.sol b/contracts/test/unit/bridge/MARKBridgeAdapter.t.sol index 3ba2e96..57bb7f6 100644 --- a/contracts/test/unit/bridge/MARKBridgeAdapter.t.sol +++ b/contracts/test/unit/bridge/MARKBridgeAdapter.t.sol @@ -110,6 +110,21 @@ contract MARKBridgeAdapterTest is Test { assertEq(adapter.bridgedInDailyCapEpoch(), 60 ether); } + function testBridgeToRevertsWithBridgeFailedAndClearsApprovalOnSendERC20Revert() public { + uint256 amount = 25 ether; + + bytes memory callData = abi.encodeWithSelector( + ISuperchainTokenBridge.sendERC20.selector, address(token), recipient, amount, DST_CHAIN_ID + ); + vm.mockCallRevert(SUPERCHAIN_BRIDGE, callData, "bridge down"); + + vm.prank(operator); + vm.expectRevert(BridgeErrors.BridgeFailed.selector); + adapter.bridgeTo(recipient, amount, DST_CHAIN_ID); + + assertEq(token.allowance(address(adapter), SUPERCHAIN_BRIDGE), 0); + } + function testFuzz_BridgeLimitsRespectCapsAndDayReset( uint96 firstRaw, uint96 secondRaw, From 24b716e474013a0b842f9d304f5ae3635ead6deb Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Thu, 7 May 2026 01:22:17 +0700 Subject: [PATCH 25/60] docs: sync governance and CI docs with current protections - Add missing required checks (Secrets Drift Guard, Release Gate Container) to all branch matrices - Fix Analyze (JavaScript/TypeScript) casing to match canonical check names - Fixes Validate Governance Policy Consistency CI check --- .github/PRODUCTION_GOVERNANCE_CHECKLIST.md | 53 +++++++++++----- .github/PULL_REQUEST_TEMPLATE/release.md | 16 +++++ BRANCHING.md | 71 ++++++++++++++-------- contracts/README.md | 3 +- contracts/RUNBOOK.md | 3 + contracts/STAGING_GO_NO_GO_CHECKLIST.md | 65 ++++++++++++++++++++ 6 files changed, 170 insertions(+), 41 deletions(-) create mode 100644 contracts/STAGING_GO_NO_GO_CHECKLIST.md diff --git a/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md b/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md index 48761a6..26d8b9e 100644 --- a/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md +++ b/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md @@ -12,15 +12,24 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - Enable `Dismiss stale pull request approvals when new commits are pushed` - Enable `Require status checks to pass before merging` - Add required checks: - - `Contracts Unit + Invariant` - - `Contracts Release Check (Dry-Run + Execute Smoke)` - - `Slither Core Contracts` - - `Secrets Drift Guard` - `Analyze (JavaScript/TypeScript)` - `Gitleaks Scan` + - `Secrets Drift Guard` - `Release Gate Container` + - `Dependency Review` + - `Contracts Unit + Invariant` + - `Contracts Release Check (Dry-Run + Execute Smoke)` + - `Contracts Production Mode Smoke` + - `Slither Core Contracts` + - `Frontend Checks (Node 20)` + - `Frontend Checks (Node 22)` - `Validate Release PR Checklist` - `Validate Release Evidence` +- Optional additional checks (recommended but not globally required): + - `Contracts Unit + Invariant` + - `Contracts Env Guard` + - `Contracts Evidence Manifest` + - `Governance Policy Guard` - Governance policy PR rule: - If PR changes `scripts/github/apply-governance.sh`, `BRANCHING.md`, or this checklist, ensure `Validate Governance Policy Consistency` passes before merge. - Enable `Require branches to be up to date before merging` @@ -37,13 +46,21 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - Enable `Dismiss stale pull request approvals when new commits are pushed` - Enable `Require status checks to pass before merging` - Add required checks: - - `Contracts Unit + Invariant` - - `Contracts Release Check (Dry-Run + Execute Smoke)` - - `Slither Core Contracts` - - `Secrets Drift Guard` - `Analyze (JavaScript/TypeScript)` - `Gitleaks Scan` + - `Secrets Drift Guard` - `Release Gate Container` + - `Dependency Review` + - `Contracts Unit + Invariant` + - `Contracts Release Check (Dry-Run + Execute Smoke)` + - `Contracts Production Mode Smoke` + - `Slither Core Contracts` + - `Frontend Checks (Node 20)` + - `Frontend Checks (Node 22)` +- Optional additional checks (recommended but not globally required): + - `Contracts Unit + Invariant` + - `Contracts Env Guard` + - `Governance Policy Guard` - Governance policy PR rule: - If PR changes `scripts/github/apply-governance.sh`, `BRANCHING.md`, or this checklist, ensure `Validate Governance Policy Consistency` passes before merge. - Enable `Require branches to be up to date before merging` @@ -56,13 +73,21 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - Enable `Require a pull request before merging` - Enable `Require status checks to pass before merging` - Add required checks: - - `Contracts Unit + Invariant` - - `Contracts Release Check (Dry-Run + Execute Smoke)` - - `Slither Core Contracts` - - `Secrets Drift Guard` - `Analyze (JavaScript/TypeScript)` - `Gitleaks Scan` + - `Secrets Drift Guard` - `Release Gate Container` + - `Dependency Review` + - `Contracts Unit + Invariant` + - `Contracts Release Check (Dry-Run + Execute Smoke)` + - `Contracts Production Mode Smoke` + - `Slither Core Contracts` + - `Frontend Checks (Node 20)` + - `Frontend Checks (Node 22)` +- Optional additional checks (recommended but not globally required): + - `Contracts Unit + Invariant` + - `Contracts Env Guard` + - `Governance Policy Guard` - Governance policy PR rule: - If PR changes `scripts/github/apply-governance.sh`, `BRANCHING.md`, or this checklist, ensure `Validate Governance Policy Consistency` passes before merge. - Choose one model: @@ -120,7 +145,7 @@ You can apply most settings via script: cd /path/to/mark export GH_PAT= # optional: -# export GH_REPO=iap/mark +# export GH_REPO=trade/mark # export MAIN_REVIEW_COUNT=2 # export DEV_REVIEW_COUNT=1 # export MAIN_PUSH_ALLOW_USERS=iap @@ -151,4 +176,4 @@ export GH_PAT= ./scripts/github/verify-governance.sh ``` -Expected output: all three branches (`dev`, `canary`, `main`) report `PASS` and required checks include CodeQL (`Analyze (JavaScript/TypeScript)`). +Expected output: all three branches (`dev`, `canary`, `main`) report `PASS` and required checks include CodeQL (`Analyze (JavaScript/TypeScript)`), `Gitleaks Scan`, and `Dependency Review`. diff --git a/.github/PULL_REQUEST_TEMPLATE/release.md b/.github/PULL_REQUEST_TEMPLATE/release.md index d5b343c..5f73e15 100644 --- a/.github/PULL_REQUEST_TEMPLATE/release.md +++ b/.github/PULL_REQUEST_TEMPLATE/release.md @@ -12,7 +12,13 @@ Use this template only for production candidate merges. - [ ] `Contracts Unit + Invariant` CI passed - [ ] `Contracts Release Check (Dry-Run + Execute Smoke)` CI passed +- [ ] `Contracts Production Mode Smoke` CI passed - [ ] `Slither Core Contracts` CI passed +- [ ] `Analyze (javascript-typescript)` CI passed +- [ ] `Gitleaks Scan` CI passed +- [ ] `Dependency Review` CI passed +- [ ] `Frontend Checks (Node 20)` CI passed +- [ ] `Frontend Checks (Node 22)` CI passed - [ ] `Contracts Mainnet Readiness` run from `main` branch - [ ] Readiness artifact uploaded and reviewed - [ ] Verify output reviewed (role/config expectations) @@ -27,6 +33,16 @@ Evidence links/values: - [ ] Security reviewer approval - [ ] Deployment operator approval +## Staging Go/No-Go (Pre-Mainnet) + +Reference: `contracts/STAGING_GO_NO_GO_CHECKLIST.md` + +- [ ] Staging rehearsal workflow succeeded (`contracts-staging-rehearsal.yml`) +- [ ] Production-lock verify succeeded (`contracts-production-lock-verify.yml`) +- [ ] Staging evidence artifacts reviewed (`mark-staging-release`, `mark-staging-rehearsal`, `mark-production-lock-verify`) +- [ ] Freshness and lineage policy passed (`contracts-promotion-checklist.yml`) +- [ ] Final Go/No-Go decision documented with links + ## Deployment Inputs - RPC target: diff --git a/BRANCHING.md b/BRANCHING.md index 4c1edd2..fb6f8ef 100644 --- a/BRANCHING.md +++ b/BRANCHING.md @@ -32,12 +32,13 @@ This repository uses a three-track branch model: ## CI and Deployment Policy -- `contracts-ci` runs on pushes to `dev`, `canary`, and `main`, and on PRs touching contracts. -- `contracts-slither` runs on pushes to `dev`, `canary`, and `main`, and on PRs touching core contracts. +- `contracts-ci` runs on pushes to `dev`, `canary`, and `main`, and on all PRs into protected branches. +- `contracts-slither` runs on pushes to `dev`, `canary`, and `main`, and on all PRs into protected branches. - `contracts-env-guard` runs on pushes to `dev`, `canary`, and `main`, and on PRs touching contracts. - `secrets-drift-guard` runs on all PRs into `dev`, `canary`, and `main`. - `secrets-scan` (gitleaks) runs on PRs/pushes to detect accidental secret commits early. - `scripts-ci` runs shellcheck on repository automation scripts to reduce operational breakage risk. +- `frontend-ci` runs on pushes to `dev`, `canary`, and `main`, and on all PRs into protected branches. - `contracts-staging-rehearsal` is automatically triggered on push to `canary`. - `contracts-release-gate-container` runs release gate in a pinned container on pushes to `dev`/`canary`/`main` and manual dispatch. - `contracts-mainnet-readiness` is production-gated: @@ -61,35 +62,47 @@ Use this matrix as the merge baseline. ### PRs into `dev` -- `Contracts Unit + Invariant` -- `Contracts Release Check (Dry-Run + Execute Smoke)` -- `Slither Core Contracts` -- `Secrets Drift Guard` - `Analyze (JavaScript/TypeScript)` - `Gitleaks Scan` +- `Secrets Drift Guard` - `Release Gate Container` +- `Dependency Review` +- `Contracts Unit + Invariant` +- `Contracts Release Check (Dry-Run + Execute Smoke)` +- `Contracts Production Mode Smoke` +- `Slither Core Contracts` +- `Frontend Checks (Node 20)` +- `Frontend Checks (Node 22)` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` ### PRs into `canary` -- `Contracts Unit + Invariant` -- `Contracts Release Check (Dry-Run + Execute Smoke)` -- `Slither Core Contracts` -- `Secrets Drift Guard` - `Analyze (JavaScript/TypeScript)` - `Gitleaks Scan` +- `Secrets Drift Guard` - `Release Gate Container` +- `Dependency Review` +- `Contracts Unit + Invariant` +- `Contracts Release Check (Dry-Run + Execute Smoke)` +- `Contracts Production Mode Smoke` +- `Slither Core Contracts` +- `Frontend Checks (Node 20)` +- `Frontend Checks (Node 22)` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` ### PRs into `main` (release candidate) -- `Contracts Unit + Invariant` -- `Contracts Release Check (Dry-Run + Execute Smoke)` -- `Slither Core Contracts` -- `Secrets Drift Guard` - `Analyze (JavaScript/TypeScript)` - `Gitleaks Scan` +- `Secrets Drift Guard` - `Release Gate Container` +- `Dependency Review` +- `Contracts Unit + Invariant` +- `Contracts Release Check (Dry-Run + Execute Smoke)` +- `Contracts Production Mode Smoke` +- `Slither Core Contracts` +- `Frontend Checks (Node 20)` +- `Frontend Checks (Node 22)` - `Validate Release PR Checklist` - `Validate Release Evidence` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` @@ -106,13 +119,15 @@ Apply these repository settings: 1. Protect `main` - Require pull request before merge. - Require status checks: + - `Analyze (JavaScript/TypeScript)` + - `Gitleaks Scan` + - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` + - `Contracts Production Mode Smoke` - `Slither Core Contracts` - - `Secrets Drift Guard` - - `Analyze (JavaScript/TypeScript)` - - `Gitleaks Scan` - - `Release Gate Container` + - `Frontend Checks (Node 20)` + - `Frontend Checks (Node 22)` - `Validate Release PR Checklist` - `Validate Release Evidence` - Require at least 1-2 approvals. @@ -122,26 +137,30 @@ Apply these repository settings: 2. Protect `canary` - Require pull request before merge. - Require status checks: + - `Analyze (JavaScript/TypeScript)` + - `Gitleaks Scan` + - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` + - `Contracts Production Mode Smoke` - `Slither Core Contracts` - - `Secrets Drift Guard` - - `Analyze (JavaScript/TypeScript)` - - `Gitleaks Scan` - - `Release Gate Container` + - `Frontend Checks (Node 20)` + - `Frontend Checks (Node 22)` - Require at least 1 approval. - Dismiss stale approvals on new commits. 3. Protect `dev` - Require pull request before merge (or allow maintainers direct push if desired). - Require status checks: + - `Analyze (JavaScript/TypeScript)` + - `Gitleaks Scan` + - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` + - `Contracts Production Mode Smoke` - `Slither Core Contracts` - - `Secrets Drift Guard` - - `Analyze (JavaScript/TypeScript)` - - `Gitleaks Scan` - - `Release Gate Container` + - `Frontend Checks (Node 20)` + - `Frontend Checks (Node 22)` Notes: - Do not add `Validate Governance Policy Consistency` as a global required branch-protection check because it is intentionally path-filtered; require it only on governance-touching PRs. diff --git a/contracts/README.md b/contracts/README.md index 42e568f..0b0e926 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -3,6 +3,7 @@ Smart contracts for Superchain interoperability and `RYLA` standard credit primitives. Operational procedures (deployment, incident, rollback) are documented in [RUNBOOK.md](./RUNBOOK.md). +Pre-mainnet promotion criteria are documented in [STAGING_GO_NO_GO_CHECKLIST.md](./STAGING_GO_NO_GO_CHECKLIST.md). ## Contracts @@ -404,7 +405,7 @@ forge test Run Slither locally on MARK core contracts: ```bash -cd /Users/iap/mark/contracts +cd contracts make slither-install export PATH="$HOME/Library/Python/3.9/bin:$PATH" make slither-core diff --git a/contracts/RUNBOOK.md b/contracts/RUNBOOK.md index bae30fc..b477a0f 100644 --- a/contracts/RUNBOOK.md +++ b/contracts/RUNBOOK.md @@ -2,6 +2,9 @@ This runbook is the operational source of truth for MARK (`RYLA`) deployments. +For operator sign-off before production promotion, use: +- [`STAGING_GO_NO_GO_CHECKLIST.md`](./STAGING_GO_NO_GO_CHECKLIST.md) + ## 0) Branch Policy - Production deployment and mainnet readiness checks are executed from `main` branch only. diff --git a/contracts/STAGING_GO_NO_GO_CHECKLIST.md b/contracts/STAGING_GO_NO_GO_CHECKLIST.md new file mode 100644 index 0000000..5712ecb --- /dev/null +++ b/contracts/STAGING_GO_NO_GO_CHECKLIST.md @@ -0,0 +1,65 @@ +# Staging Go/No-Go Checklist + +Use this checklist before any `canary -> main` promotion. Local Anvil checks are required, but final confidence must come from a real staging network rehearsal. + +## Scope + +- Target: Optimism staging/testnet (for example OP Sepolia). +- Branch source: `canary` commit intended for promotion. +- Governance model: use the same Safe / role model planned for mainnet. + +## Required Inputs + +- `STAGING_RPC_URL` +- `MARK_STAGING_DEPLOYER_PRIVATE_KEY` (GitHub secret) +- staging operator address (`STAGING_SETTLEMENT_OPERATOR`) +- expected admin/owner/verifier/attester addresses + +## Execution Steps + +1. Validate environment and config schema: +```bash +cd contracts +VALIDATE_MODE=rehearsal make validate-prod-env +``` + +2. Run local baseline gates (must be green): +```bash +make ci-full +make slither-core +``` + +3. Run staging rehearsal workflow: +- GitHub Actions: `.github/workflows/contracts-staging-rehearsal.yml` +- Confirm artifacts: + - `mark-staging-release` + - `mark-staging-rehearsal` + +4. Run post-deploy production-lock verify: +- GitHub Actions: `.github/workflows/contracts-production-lock-verify.yml` +- Confirm artifact: `mark-production-lock-verify` + +5. Run functional rehearsal on staging: +- settlement mint (valid proof path) +- settlement burn (escrow + burn invariants) +- bridge flow with destination allowlist and limit checks +- operator/attester rotation and re-verify + +6. Generate promotion checklist evidence: +- GitHub Actions: `.github/workflows/contracts-promotion-checklist.yml` +- Confirm freshness + lineage policy passes. + +## Go Criteria + +- All required CI checks pass on promotion commit. +- Staging rehearsal + production-lock verify pass. +- Evidence artifacts are present, reviewed, and hashed. +- Role/config verify outputs match expected addresses. +- Security reviewer + operator + admin signer approvals recorded. + +## No-Go Triggers + +- Any failed verify/preflight/security gate. +- Evidence missing or stale. +- Address/role mismatch vs planned production config. +- Unresolved incident drill or key-rotation concern. From 4064cab98c8f5801f06253883fa88233b3f2a1af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 May 2026 14:10:09 +0700 Subject: [PATCH 26/60] chore(deps): bump frontend minor/patch dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 105 minor and patch updates including: - @tanstack/react-query 5.100.8 → 5.100.9 - typescript-eslint 8.59.1 → 8.59.2 - bufferutil 4.0.9 → 4.1.0 - jiti 2.6.1 → 2.7.0 - lockfile resolutions updated accordingly All CI checks pass on Node 20 and 22. --- package.json | 4 +- pnpm-lock.yaml | 1785 +++++++++++++++++++++++------------------------- 2 files changed, 842 insertions(+), 947 deletions(-) diff --git a/package.json b/package.json index e591874..d90b0ba 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@radix-ui/react-separator": "^1.1.8", "@radix-ui/react-slot": "^1.2.4", "@tailwindcss/vite": "^4.2.4", - "@tanstack/react-query": "^5.100.8", + "@tanstack/react-query": "^5.100.9", "abitype": "^1.2.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -57,7 +57,7 @@ "prettier": "^3.8.3", "supersim": "0.1.0-alpha.45", "typescript": "~5.7.2", - "typescript-eslint": "^8.59.1", + "typescript-eslint": "^8.59.2", "vite": "^6.1.0", "wait-port": "^1.1.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41fbfb2..ea20d89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@eth-optimism/viem': specifier: ^0.4.15 - version: 0.4.15(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + version: 0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) '@radix-ui/react-separator': specifier: ^1.1.8 version: 1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -19,10 +19,10 @@ importers: version: 1.2.4(@types/react@18.3.18)(react@18.3.1) '@tailwindcss/vite': specifier: ^4.2.4 - version: 4.2.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0)) + version: 4.2.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) '@tanstack/react-query': - specifier: ^5.100.8 - version: 5.100.8(react@18.3.1) + specifier: ^5.100.9 + version: 5.100.9(react@18.3.1) abitype: specifier: ^1.2.4 version: 1.2.4(typescript@5.7.3)(zod@3.24.1) @@ -52,17 +52,17 @@ importers: version: 1.0.7(tailwindcss@4.2.4) viem: specifier: ^2.48.8 - version: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + version: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) wagmi: specifier: ^2.14.11 - version: 2.14.11(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.0.9)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) + version: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) devDependencies: '@eslint/js': specifier: ^9.19.0 version: 9.20.0 '@eth-optimism/super-cli': specifier: ^0.0.13 - version: 0.0.13(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(bufferutil@4.0.9)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0)) + version: 0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) '@types/node': specifier: ^22.13.1 version: 22.13.1 @@ -74,16 +74,16 @@ importers: version: 18.3.5(@types/react@18.3.18) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0)) + version: 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) eslint: specifier: ^9.19.0 - version: 9.20.0(jiti@2.6.1) + version: 9.20.0(jiti@2.7.0) eslint-plugin-react-hooks: specifier: ^5.0.0 - version: 5.1.0(eslint@9.20.0(jiti@2.6.1)) + version: 5.1.0(eslint@9.20.0(jiti@2.7.0)) eslint-plugin-react-refresh: specifier: ^0.5.2 - version: 0.5.2(eslint@9.20.0(jiti@2.6.1)) + version: 0.5.2(eslint@9.20.0(jiti@2.7.0)) globals: specifier: ^15.14.0 version: 15.14.0 @@ -100,11 +100,11 @@ importers: specifier: ~5.7.2 version: 5.7.3 typescript-eslint: - specifier: ^8.59.1 - version: 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) + specifier: ^8.59.2 + version: 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) vite: specifier: ^6.1.0 - version: 6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0) + version: 6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) wait-port: specifier: ^1.1.0 version: 1.1.0 @@ -118,91 +118,91 @@ packages: resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} engines: {node: '>=14.13.1'} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.8': - resolution: {integrity: sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==} + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.8': - resolution: {integrity: sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.26.5': - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.26.7': - resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==} + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.8': - resolution: {integrity: sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==} + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-transform-react-jsx-self@7.25.9': - resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.25.9': - resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.26.7': - resolution: {integrity: sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==} + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} - '@babel/template@7.26.8': - resolution: {integrity: sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.8': - resolution: {integrity: sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.8': - resolution: {integrity: sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} '@coinbase/wallet-sdk@3.9.3': @@ -211,9 +211,9 @@ packages: '@coinbase/wallet-sdk@4.3.0': resolution: {integrity: sha512-T3+SNmiCw4HzDm4we9wCHCxlP0pqCiwKe4sOwPH3YAK2KSKjxPRydKu6UQJrdONFVLG7ujXvbd/6ZqmvJb8rkw==} - '@ecies/ciphers@0.2.2': - resolution: {integrity: sha512-ylfGR7PyTd+Rm2PqQowG08BCKA22QuX8NzrL+LxAAvazN10DMwdJ2fWwAzRj05FI/M8vNFGm3cv9Wq/GFWCBLg==} - engines: {bun: '>=1', deno: '>=2', node: '>=16'} + '@ecies/ciphers@0.2.6': + resolution: {integrity: sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==} + engines: {bun: '>=1', deno: '>=2.7.10', node: '>=16'} peerDependencies: '@noble/ciphers': ^1.0.0 @@ -367,22 +367,12 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.12.2': resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -391,16 +381,16 @@ packages: resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.10.0': - resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.11.0': resolution: {integrity: sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@9.20.0': @@ -411,8 +401,8 @@ packages: resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.5': - resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eth-optimism/super-cli@0.0.13': @@ -452,22 +442,22 @@ packages: peerDependencies: hono: ^4 - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.1': resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} @@ -481,10 +471,6 @@ packages: '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - '@jridgewell/remapping@2.3.5': resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} @@ -492,16 +478,9 @@ packages: 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.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==} @@ -556,8 +535,8 @@ packages: cpu: [x64] os: [win32] - '@lit-labs/ssr-dom-shim@1.3.0': - resolution: {integrity: sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==} + '@lit-labs/ssr-dom-shim@1.5.1': + resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==} '@lit/reactive-element@1.6.3': resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} @@ -618,8 +597,8 @@ packages: resolution: {integrity: sha512-WmGAlP1oBuD9hk4CsdlG1WJFuPtYJY+dnTHJMeCyohTWD2GgkcLMUUuvu9lO1/NVzuOoSi1OrnjbuY1O/1NZ1g==} deprecated: No longer maintained, superseded by https://docs.metamask.io/metamask-connect - '@metamask/superstruct@3.1.0': - resolution: {integrity: sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==} + '@metamask/superstruct@3.2.1': + resolution: {integrity: sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==} engines: {node: '>=16.0.0'} '@metamask/utils@5.0.2': @@ -733,98 +712,128 @@ packages: '@types/react': optional: true - '@rollup/rollup-android-arm-eabi@4.34.6': - resolution: {integrity: sha512-+GcCXtOQoWuC7hhX1P00LqjjIiS/iOouHXhMdiDSnq/1DGTox4SpUvO52Xm+div6+106r+TcvOeo/cxvyEyTgg==} + '@rollup/rollup-android-arm-eabi@4.60.3': + resolution: {integrity: sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.34.6': - resolution: {integrity: sha512-E8+2qCIjciYUnCa1AiVF1BkRgqIGW9KzJeesQqVfyRITGQN+dFuoivO0hnro1DjT74wXLRZ7QF8MIbz+luGaJA==} + '@rollup/rollup-android-arm64@4.60.3': + resolution: {integrity: sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.34.6': - resolution: {integrity: sha512-z9Ib+OzqN3DZEjX7PDQMHEhtF+t6Mi2z/ueChQPLS/qUMKY7Ybn5A2ggFoKRNRh1q1T03YTQfBTQCJZiepESAg==} + '@rollup/rollup-darwin-arm64@4.60.3': + resolution: {integrity: sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.34.6': - resolution: {integrity: sha512-PShKVY4u0FDAR7jskyFIYVyHEPCPnIQY8s5OcXkdU8mz3Y7eXDJPdyM/ZWjkYdR2m0izD9HHWA8sGcXn+Qrsyg==} + '@rollup/rollup-darwin-x64@4.60.3': + resolution: {integrity: sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.34.6': - resolution: {integrity: sha512-YSwyOqlDAdKqs0iKuqvRHLN4SrD2TiswfoLfvYXseKbL47ht1grQpq46MSiQAx6rQEN8o8URtpXARCpqabqxGQ==} + '@rollup/rollup-freebsd-arm64@4.60.3': + resolution: {integrity: sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.34.6': - resolution: {integrity: sha512-HEP4CgPAY1RxXwwL5sPFv6BBM3tVeLnshF03HMhJYCNc6kvSqBgTMmsEjb72RkZBAWIqiPUyF1JpEBv5XT9wKQ==} + '@rollup/rollup-freebsd-x64@4.60.3': + resolution: {integrity: sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.34.6': - resolution: {integrity: sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg==} + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': + resolution: {integrity: sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.34.6': - resolution: {integrity: sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg==} + '@rollup/rollup-linux-arm-musleabihf@4.60.3': + resolution: {integrity: sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.34.6': - resolution: {integrity: sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA==} + '@rollup/rollup-linux-arm64-gnu@4.60.3': + resolution: {integrity: sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.34.6': - resolution: {integrity: sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q==} + '@rollup/rollup-linux-arm64-musl@4.60.3': + resolution: {integrity: sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.34.6': - resolution: {integrity: sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw==} + '@rollup/rollup-linux-loong64-gnu@4.60.3': + resolution: {integrity: sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.60.3': + resolution: {integrity: sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.34.6': - resolution: {integrity: sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ==} + '@rollup/rollup-linux-ppc64-gnu@4.60.3': + resolution: {integrity: sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.60.3': + resolution: {integrity: sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.34.6': - resolution: {integrity: sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg==} + '@rollup/rollup-linux-riscv64-gnu@4.60.3': + resolution: {integrity: sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.34.6': - resolution: {integrity: sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw==} + '@rollup/rollup-linux-riscv64-musl@4.60.3': + resolution: {integrity: sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.60.3': + resolution: {integrity: sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.34.6': - resolution: {integrity: sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw==} + '@rollup/rollup-linux-x64-gnu@4.60.3': + resolution: {integrity: sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.34.6': - resolution: {integrity: sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A==} + '@rollup/rollup-linux-x64-musl@4.60.3': + resolution: {integrity: sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.34.6': - resolution: {integrity: sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA==} + '@rollup/rollup-openbsd-x64@4.60.3': + resolution: {integrity: sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.60.3': + resolution: {integrity: sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.60.3': + resolution: {integrity: sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.34.6': - resolution: {integrity: sha512-oLHxuyywc6efdKVTxvc0135zPrRdtYVjtVD5GUm55I3ODxhU/PwkQFD97z16Xzxa1Fz0AEe4W/2hzRtd+IfpOA==} + '@rollup/rollup-win32-ia32-msvc@4.60.3': + resolution: {integrity: sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.34.6': - resolution: {integrity: sha512-0PVwmgzZ8+TZ9oGBmdZoQVXflbvuwzN/HRclujpl4N/q3i+y0lqLw8n1bXA8ru3sApDjlmONaNAuYr38y1Kr9w==} + '@rollup/rollup-win32-x64-gnu@4.60.3': + resolution: {integrity: sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.60.3': + resolution: {integrity: sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==} cpu: [x64] os: [win32] @@ -834,8 +843,8 @@ packages: '@safe-global/safe-apps-sdk@9.1.0': resolution: {integrity: sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==} - '@safe-global/safe-gateway-typescript-sdk@3.22.9': - resolution: {integrity: sha512-7ojVK/crhOaGowEO8uYWaopZzcr5rR76emgllGIfjCLR70aY4PbASpi9Pbs+7jIRzPDBBkM0RBo+zYx5UduX8Q==} + '@safe-global/safe-gateway-typescript-sdk@3.23.1': + resolution: {integrity: sha512-6ORQfwtEJYpalCeVO21L4XXGSdbEMfyp2hEv6cP82afKXSwvse6d3sdelgaPWUxHIsFRkWvHDdzh8IyyKHZKxw==} engines: {node: '>=16'} '@scure/base@1.1.9': @@ -1003,37 +1012,31 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 - '@tanstack/query-core@5.100.8': - resolution: {integrity: sha512-ceYwSFOqjPwET5TA6IOYxzxlGc0ekyH/gfOtWkP0PX43rzX9bxW48Iuw8KAduKCToi4rJAQ6nRy2kAe8gszdmg==} + '@tanstack/query-core@5.100.9': + resolution: {integrity: sha512-SJSFw1S8+kQ0+knv/XGfrbocWoAlT7vDKsSImtLx3ZPQmEcR46hkDjLSvynSy25N8Ms4tIEini1FuBd5k7IscQ==} - '@tanstack/react-query@5.100.8': - resolution: {integrity: sha512-iNNEekixXU5vtAGKKZX2lx3jTooG5yNY+kv0wSgEdEYG0Mj0JM5bcuQtC35ZAP3nDopT6jciUK3xeX65U7AnfA==} + '@tanstack/react-query@5.100.9': + resolution: {integrity: sha512-Oa44XkaI3kCNN6ME0KByU3xT3SEUNOMfZpHxL6+wFoTm+OeUFYHKdeYVe0aOXlRDm/f15sgLwEt2HDorIdW8+A==} peerDependencies: react: ^18 || ^19 '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/debug@4.1.13': resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/gensync@1.0.4': - resolution: {integrity: sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/gradient-string@1.1.6': resolution: {integrity: sha512-LkaYxluY4G5wR1M4AKQUal2q61Di1yVVCw42ImFTuaIoQVgmV0WP1xUaLB8zwb47mp82vWTpePI9JmrjEnJ7nQ==} @@ -1050,8 +1053,8 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/prop-types@15.7.14': - resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} '@types/react-dom@18.3.5': resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} @@ -1067,66 +1070,66 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@types/ws@8.5.14': - resolution: {integrity: sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==} + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/eslint-plugin@8.59.1': - resolution: {integrity: sha512-BOziFIfE+6osHO9FoJG4zjoHUcvI7fTNBSpdAwrNH0/TLvzjsk2oo8XSSOT2HhqUyhZPfHv4UOffoJ9oEEQ7Ag==} + '@typescript-eslint/eslint-plugin@8.59.2': + resolution: {integrity: sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.59.1 + '@typescript-eslint/parser': ^8.59.2 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.59.1': - resolution: {integrity: sha512-HDQH9O/47Dxi1ceDhBXdaldtf/WV9yRYMjbjCuNk3qnaTD564qwv61Y7+gTxwxRKzSrgO5uhtw584igXVuuZkA==} + '@typescript-eslint/parser@8.59.2': + resolution: {integrity: sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.59.1': - resolution: {integrity: sha512-+MuHQlHiEr00Of/IQbE/MmEoi44znZHbR/Pz7Opq4HryUOlRi+/44dro9Ycy8Fyo+/024IWtw8m4JUMCGTYxDg==} + '@typescript-eslint/project-service@8.59.2': + resolution: {integrity: sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.59.1': - resolution: {integrity: sha512-LwuHQI4pDOYVKvmH2dkaJo6YZCSgouVgnS/z7yBPKBMvgtBvyLqiLy9Z6b7+m/TRcX1NFYUqZetI5Y+aT4GEfg==} + '@typescript-eslint/scope-manager@8.59.2': + resolution: {integrity: sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.59.1': - resolution: {integrity: sha512-/0nEyPbX7gRsk0Uwfe4ALwwgxuA66d/l2mhRDNlAvaj4U3juhUtJNq0DsY8M2AYwwb9rEq2hrC3IcIcEt++iJA==} + '@typescript-eslint/tsconfig-utils@8.59.2': + resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.59.1': - resolution: {integrity: sha512-klWPBR2ciQHS3f++ug/mVnWKPjBUo7icEL3FAO1lhAR1Z1i5NQYZ1EannMSRYcq5qCv5wNALlXr6fksRHyYl7w==} + '@typescript-eslint/type-utils@8.59.2': + resolution: {integrity: sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.59.1': - resolution: {integrity: sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==} + '@typescript-eslint/types@8.59.2': + resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.59.1': - resolution: {integrity: sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==} + '@typescript-eslint/typescript-estree@8.59.2': + resolution: {integrity: sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.59.1': - resolution: {integrity: sha512-3pIeoXhCeYH9FSCBI8P3iNwJlGuzPlYKkTlen2O9T1DSeeg8UG8jstq6BLk+Mda0qup7mgk4z4XL4OzRaxZ8LA==} + '@typescript-eslint/utils@8.59.2': + resolution: {integrity: sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.59.1': - resolution: {integrity: sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg==} + '@typescript-eslint/visitor-keys@8.59.2': + resolution: {integrity: sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitejs/plugin-react@4.3.4': @@ -1269,13 +1272,13 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} ansi-escapes@5.0.0: resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} @@ -1336,9 +1339,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} + baseline-browser-mapping@2.10.27: + resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==} + engines: {node: '>=6.0.0'} + hasBin: true bn.js@4.12.3: resolution: {integrity: sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==} @@ -1346,49 +1350,37 @@ packages: bn.js@5.2.3: resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==} - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - bufferutil@4.0.9: - resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} + bufferutil@4.1.0: + resolution: {integrity: sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==} engines: {node: '>=6.14.2'} - call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} - engines: {node: '>= 0.4'} - call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} engines: {node: '>= 0.4'} call-bound@1.0.4: @@ -1403,11 +1395,11 @@ packages: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - caniuse-lite@1.0.30001699: - resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} + caniuse-lite@1.0.30001792: + resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==} - cfonts@3.3.0: - resolution: {integrity: sha512-RlVxeEw2FXWI5Bs9LD0/Ef3bsQIc9m6lK/DINN20HIW0Y0YHUO2jjy88cot9YKZITiRTCdWzTfLmTyx47HeSLA==} + cfonts@3.3.1: + resolution: {integrity: sha512-ZGEmN3W9mViWEDjsuPo4nK4h39sfh6YtoneFYp9WLPI/rw8BaSSrfQC6jkrGW3JMvV3ZnExJB/AEqXc/nHYxkw==} engines: {node: '>=10'} hasBin: true @@ -1419,9 +1411,9 @@ packages: resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -1434,8 +1426,8 @@ packages: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cli-spinners@3.2.0: - resolution: {integrity: sha512-pXftdQloMZzjCr3pCTIRniDcys6dDzgpgVhAHHk6TKBDbRuP1MkuetTF5KSv4YUutbOPa7+7ZrAJ2kVtbMqyXA==} + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} engines: {node: '>=18.20'} cli-truncate@4.0.0: @@ -1486,8 +1478,8 @@ packages: resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -1507,11 +1499,11 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crossws@0.3.4: - resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} @@ -1521,15 +1513,6 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -1575,8 +1558,8 @@ packages: resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} engines: {node: '>=0.10.0'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -1586,8 +1569,8 @@ packages: resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} engines: {node: '>=4'} - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} @@ -1706,12 +1689,12 @@ packages: duplexify@4.1.3: resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - eciesjs@0.4.13: - resolution: {integrity: sha512-zBdtR4K+wbj10bWPpIOF9DW+eFYQu8miU5ypunh0t4Bvt83ZPlEWgT5Dq/0G6uwEXumZKjfb5BZxYUZQ2Hzn/Q==} + eciesjs@0.4.18: + resolution: {integrity: sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==} engines: {bun: '>=1', deno: '>=2', node: '>=16'} - electron-to-chromium@1.5.97: - resolution: {integrity: sha512-HKLtaH02augM7ZOdYRuO19rWDeY+QSJ1VxnXFa/XDFLf07HvM90pALIJFgrO+UVaajI3+aJMMpojoUTLZyQ7JQ==} + electron-to-chromium@1.5.351: + resolution: {integrity: sha512-9D7Iqx8RImSvCnOsj86rCH6eQjZFQoM04Jn6HnZVM0Nu/G58/gmKYQ1d12MZTbjQbQSTGI8nwEy07ErsA2slLA==} elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -1725,11 +1708,11 @@ packages: encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - engine.io-client@6.6.3: - resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} + engine.io-client@6.6.4: + resolution: {integrity: sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==} engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} @@ -1755,8 +1738,12 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - es-toolkit@1.32.0: - resolution: {integrity: sha512-ZfSfHP1l6ubgW/B/FRtqb9bYdMvI6jizbOSfbwwJNcOQ1QE6TFsC3jpQkZ900uUPSR3t3SU5Ds7UWKnYz+uP8Q==} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-toolkit@1.46.1: + resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} esbuild@0.24.2: resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} @@ -1816,8 +1803,8 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -1903,16 +1890,12 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} - find-up-simple@1.0.0: - resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} find-up@4.1.0: @@ -1927,11 +1910,11 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -1939,12 +1922,12 @@ packages: debug: optional: true - for-each@0.3.4: - resolution: {integrity: sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} formdata-polyfill@4.0.10: @@ -1959,6 +1942,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -1967,14 +1954,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} - get-intrinsic@1.2.7: - resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} - engines: {node: '>= 0.4'} - get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -1983,18 +1966,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -2014,8 +1989,8 @@ packages: resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} engines: {node: '>=10'} - h3@1.15.0: - resolution: {integrity: sha512-OsjX4JW8J4XGgCgEcad20pepFQWnuKH+OwkCJjogF3C+9AZ1iYdtB4hX6vAb5DskBiu5ljEXqApINjR8CqoCMQ==} + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -2035,10 +2010,6 @@ packages: hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - hasown@2.0.3: resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} engines: {node: '>= 0.4'} @@ -2049,16 +2020,16 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - hono@4.7.0: - resolution: {integrity: sha512-hV97aIR4WYbG30k234sD9B3VNr1ZWdQRmrVF76LKFlmI7O9Yo70mG9+mFwyQ6Sjrz4wH71GfnBxv6CPjcx3QNw==} + hono@4.12.17: + resolution: {integrity: sha512-FbJJNb/XgX7YW0hX/V8w5oYLztKEsRLykCMZWt1WdLtsfjzMvmoqWBA4H4t5norinq8/rh20oiZYr+WSl4UzAQ==} engines: {node: '>=16.9.0'} hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} - idb-keyval@6.2.1: - resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + idb-keyval@6.2.2: + resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -2086,8 +2057,8 @@ packages: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} - index-to-position@0.1.2: - resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} engines: {node: '>=18'} inherits@2.0.4: @@ -2140,10 +2111,6 @@ packages: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} @@ -2175,8 +2142,8 @@ packages: resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} engines: {node: '>=18'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -2192,10 +2159,6 @@ packages: resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} engines: {node: '>=0.10.0'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -2226,18 +2189,18 @@ packages: peerDependencies: ws: '*' - jiti@2.6.1: - resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true - js-base64@3.7.7: - resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + js-base64@3.7.8: + resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsesc@3.1.0: @@ -2390,6 +2353,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.3.6: + resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -2430,8 +2397,8 @@ packages: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} mipd@0.0.7: resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} @@ -2455,8 +2422,8 @@ packages: multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2471,8 +2438,8 @@ packages: engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead - node-fetch-native@1.6.6: - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -2491,11 +2458,11 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-mock-http@1.0.0: - resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} + node-mock-http@1.0.4: + resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} normalize-package-data@6.0.2: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} @@ -2512,11 +2479,8 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - - ohash@1.1.4: - resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} @@ -2564,8 +2528,8 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-json@8.1.0: - resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} pastel@3.0.0: @@ -2633,13 +2597,10 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.1: - resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} - preact@10.25.4: - resolution: {integrity: sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==} - preact@10.29.1: resolution: {integrity: sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==} @@ -2667,8 +2628,8 @@ packages: proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -2726,17 +2687,14 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} real-require@0.1.0: resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} engines: {node: '>= 12.13.0'} - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -2752,8 +2710,8 @@ packages: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - rollup@4.34.6: - resolution: {integrity: sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==} + rollup@4.60.3: + resolution: {integrity: sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2814,16 +2772,16 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} - smol-toml@1.3.1: - resolution: {integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} - socket.io-client@4.8.1: - resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} + socket.io-client@4.8.3: + resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==} engines: {node: '>=10.0.0'} - socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + socket.io-parser@4.2.6: + resolution: {integrity: sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==} engines: {node: '>=10.0.0'} sonic-boom@2.8.0: @@ -2842,8 +2800,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} @@ -2947,10 +2905,6 @@ packages: resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} engines: {node: '>= 0.4'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -2978,12 +2932,16 @@ packages: resolution: {integrity: sha512-6kSc32kT0rbwxD6QL1CYe8IqdzN/J/ILMrNK+HMQCKH3insCDRY/3ITb0vcBss0a3t72fzh2YSzj8ko1HgwT3g==} engines: {node: '>=16'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typescript-eslint@8.59.1: - resolution: {integrity: sha512-xqDcFVBmlrltH64lklOVp1wYxgJr6LVdg3NamBgH2OOQDLFdTKfIZXF5PfghrnXQKXZGTQs8tr1vL7fJvq8CTQ==} + typescript-eslint@8.59.2: + resolution: {integrity: sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -2994,8 +2952,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} @@ -3010,27 +2968,28 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - unstorage@1.14.4: - resolution: {integrity: sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==} + unstorage@1.17.5: + resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==} peerDependencies: '@azure/app-configuration': ^1.8.0 '@azure/cosmos': ^4.2.0 '@azure/data-tables': ^13.3.0 - '@azure/identity': ^4.5.0 + '@azure/identity': ^4.6.0 '@azure/keyvault-secrets': ^4.9.0 '@azure/storage-blob': ^12.26.0 - '@capacitor/preferences': ^6.0.3 - '@deno/kv': '>=0.8.4' - '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 + '@capacitor/preferences': ^6 || ^7 || ^8 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 '@planetscale/database': ^1.19.0 '@upstash/redis': ^1.34.3 - '@vercel/blob': '>=0.27.0' - '@vercel/kv': ^1.0.1 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1 || ^2 || ^3 aws4fetch: ^1.0.20 db0: '>=0.2.1' idb-keyval: ^6.2.1 ioredis: ^5.4.2 - uploadthing: ^7.4.1 + uploadthing: ^7.4.4 peerDependenciesMeta: '@azure/app-configuration': optional: true @@ -3056,6 +3015,8 @@ packages: optional: true '@vercel/blob': optional: true + '@vercel/functions': + optional: true '@vercel/kv': optional: true aws4fetch: @@ -3069,8 +3030,8 @@ packages: uploadthing: optional: true - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3203,8 +3164,8 @@ packages: which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-typed-array@1.1.18: - resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} which@2.0.2: @@ -3248,18 +3209,6 @@ packages: utf-8-validate: optional: true - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -3367,32 +3316,26 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@babel/code-frame@7.26.2': + '@babel/code-frame@7.29.0': dependencies: - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.8': {} - - '@babel/core@7.26.8': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.8 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.8) - '@babel/helpers': 7.26.7 - '@babel/parser': 7.26.8 - '@babel/template': 7.26.8 - '@babel/traverse': 7.26.8 - '@babel/types': 7.26.8 - '@types/gensync': 1.0.4 + '@babel/compat-data@7.29.3': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.0 gensync: 1.0.0-beta.2 @@ -3401,91 +3344,91 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.8': + '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-compilation-targets@7.26.5': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 + '@babel/compat-data': 7.29.3 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-module-imports@7.25.9': + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.26.8 - '@babel/types': 7.26.8 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.8)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.26.8 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.8 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.26.5': {} + '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.28.5': {} - '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.26.7': + '@babel/helpers@7.29.2': dependencies: - '@babel/template': 7.26.8 - '@babel/types': 7.26.8 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 - '@babel/parser@7.26.8': + '@babel/parser@7.29.3': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.29.0 - '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.8)': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.26.8 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.8)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.26.8 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/runtime@7.26.7': - dependencies: - regenerator-runtime: 0.14.1 + '@babel/runtime@7.29.2': {} - '@babel/template@7.26.8': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 - '@babel/traverse@7.26.8': + '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.8 - '@babel/parser': 7.26.8 - '@babel/template': 7.26.8 - '@babel/types': 7.26.8 - debug: 4.4.0 - globals: 11.12.0 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.26.8': + '@babel/types@7.29.0': dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@coinbase/wallet-sdk@3.9.3': dependencies: @@ -3506,9 +3449,9 @@ snapshots: '@noble/hashes': 1.8.0 clsx: 1.2.1 eventemitter3: 5.0.4 - preact: 10.25.4 + preact: 10.29.1 - '@ecies/ciphers@0.2.2(@noble/ciphers@1.3.0)': + '@ecies/ciphers@0.2.6(@noble/ciphers@1.3.0)': dependencies: '@noble/ciphers': 1.3.0 @@ -3587,46 +3530,39 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.20.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.20.0(jiti@2.7.0))': dependencies: - eslint: 9.20.0(jiti@2.6.1) + eslint: 9.20.0(jiti@2.7.0) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.20.0(jiti@2.6.1))': - dependencies: - eslint: 9.20.0(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - '@eslint-community/regexpp@4.12.2': {} '@eslint/config-array@0.19.2': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.0 - minimatch: 3.1.2 + debug: 4.4.3 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color - '@eslint/core@0.10.0': + '@eslint/core@0.11.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@0.11.0': + '@eslint/core@0.13.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.2.0': + '@eslint/eslintrc@3.3.5': dependencies: - ajv: 6.12.6 - debug: 4.4.0 + ajv: 6.15.0 + debug: 4.4.3 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 + js-yaml: 4.1.1 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color @@ -3635,39 +3571,39 @@ snapshots: '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.5': + '@eslint/plugin-kit@0.2.8': dependencies: - '@eslint/core': 0.10.0 + '@eslint/core': 0.13.0 levn: 0.4.1 - '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(bufferutil@4.0.9)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0))': + '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: - '@eth-optimism/viem': 0.3.3(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) - '@hono/node-server': 1.13.8(hono@4.7.0) - '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10)) - '@libsql/client': 0.14.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@tanstack/react-query': 5.100.8(react@18.3.1) - '@vitejs/plugin-react': 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0)) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@eth-optimism/viem': 0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@hono/node-server': 1.13.8(hono@4.12.17) + '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)) + '@libsql/client': 0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@tanstack/react-query': 5.100.9(react@18.3.1) + '@vitejs/plugin-react': 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) abitype: 1.2.4(typescript@5.7.3)(zod@3.24.1) chalk: 5.4.1 dependency-graph: 1.0.0 dotenv: 16.4.7 - drizzle-orm: 0.38.4(@libsql/client@0.14.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@types/react@18.3.18)(react@18.3.1) + drizzle-orm: 0.38.4(@libsql/client@0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(@types/react@18.3.18)(react@18.3.1) fast-json-stable-stringify: 2.1.0 figures: 6.1.0 - form-data: 4.0.1 - hono: 4.7.0 + form-data: 4.0.5 + hono: 4.12.17 immer: 10.1.1 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) - ink-big-text: 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) - ink-gradient: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10)) - ink-link: 4.1.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10)) - pastel: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(zod@3.24.1) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) + ink-big-text: 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + ink-gradient: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)) + ink-link: 4.1.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)) + pastel: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(zod@3.24.1) react: 18.3.1 - smol-toml: 1.3.1 - viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - wagmi: 2.14.11(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.0.9)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) + smol-toml: 1.6.1 + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + wagmi: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) zod: 3.24.1 zod-validation-error: 3.4.0(zod@3.24.1) zustand: 5.0.3(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) @@ -3699,6 +3635,7 @@ snapshots: - '@types/sql.js' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - '@vercel/postgres' - '@xata.io/client' @@ -3726,13 +3663,13 @@ snapshots: - utf-8-validate - vite - '@eth-optimism/viem@0.3.3(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': + '@eth-optimism/viem@0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': dependencies: - viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - '@eth-optimism/viem@0.4.15(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': + '@eth-optimism/viem@0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': dependencies: - viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) '@ethereumjs/common@3.2.0': dependencies: @@ -3754,42 +3691,39 @@ snapshots: ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 - '@hono/node-server@1.13.8(hono@4.7.0)': + '@hono/node-server@1.13.8(hono@4.12.17)': dependencies: - hono: 4.7.0 + hono: 4.12.17 - '@humanfs/core@0.19.1': {} + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.8': dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.1 - '@humanwhocodes/module-importer@1.0.1': {} + '@humanfs/types@0.15.0': {} - '@humanwhocodes/retry@0.3.1': {} + '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.4.1': {} - '@inkjs/ui@2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))': + '@inkjs/ui@2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))': dependencies: chalk: 5.4.1 - cli-spinners: 3.2.0 + cli-spinners: 3.4.0 deepmerge: 4.3.1 figures: 6.1.0 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/remapping@2.3.5': dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -3797,25 +3731,18 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@libsql/client@0.14.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@libsql/client@0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: '@libsql/core': 0.14.0 - '@libsql/hrana-client': 0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - js-base64: 3.7.7 + '@libsql/hrana-client': 0.7.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + js-base64: 3.7.8 libsql: 0.4.7 promise-limit: 2.7.0 transitivePeerDependencies: @@ -3824,7 +3751,7 @@ snapshots: '@libsql/core@0.14.0': dependencies: - js-base64: 3.7.7 + js-base64: 3.7.8 '@libsql/darwin-arm64@0.4.7': optional: true @@ -3832,11 +3759,11 @@ snapshots: '@libsql/darwin-x64@0.4.7': optional: true - '@libsql/hrana-client@0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@libsql/hrana-client@0.7.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: '@libsql/isomorphic-fetch': 0.3.1 - '@libsql/isomorphic-ws': 0.1.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) - js-base64: 3.7.7 + '@libsql/isomorphic-ws': 0.1.5(bufferutil@4.1.0)(utf-8-validate@5.0.10) + js-base64: 3.7.8 node-fetch: 3.3.2 transitivePeerDependencies: - bufferutil @@ -3844,10 +3771,10 @@ snapshots: '@libsql/isomorphic-fetch@0.3.1': {} - '@libsql/isomorphic-ws@0.1.5(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@libsql/isomorphic-ws@0.1.5(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: - '@types/ws': 8.5.14 - ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@types/ws': 8.18.1 + ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -3867,11 +3794,11 @@ snapshots: '@libsql/win32-x64-msvc@0.4.7': optional: true - '@lit-labs/ssr-dom-shim@1.3.0': {} + '@lit-labs/ssr-dom-shim@1.5.1': {} '@lit/reactive-element@1.6.3': dependencies: - '@lit-labs/ssr-dom-shim': 1.3.0 + '@lit-labs/ssr-dom-shim': 1.5.1 '@metamask/eth-json-rpc-provider@1.0.1': dependencies: @@ -3913,7 +3840,7 @@ snapshots: '@metamask/onboarding@1.0.1': dependencies: - bowser: 2.11.0 + bowser: 2.14.1 '@metamask/providers@16.1.0': dependencies: @@ -3943,16 +3870,16 @@ snapshots: '@metamask/safe-event-emitter@3.1.2': {} - '@metamask/sdk-communication-layer@0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.13)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@metamask/sdk-communication-layer@0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))': dependencies: - bufferutil: 4.0.9 + bufferutil: 4.1.0 cross-fetch: 4.1.0 date-fns: 2.30.0 debug: 4.4.3 - eciesjs: 0.4.13 + eciesjs: 0.4.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) utf-8-validate: 5.0.10 uuid: 8.3.2 transitivePeerDependencies: @@ -3962,24 +3889,24 @@ snapshots: dependencies: '@paulmillr/qr': 0.2.1 - '@metamask/sdk@0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@metamask/sdk@0.32.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: - '@babel/runtime': 7.26.7 + '@babel/runtime': 7.29.2 '@metamask/onboarding': 1.0.1 '@metamask/providers': 16.1.0 - '@metamask/sdk-communication-layer': 0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.13)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@metamask/sdk-communication-layer': 0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) '@metamask/sdk-install-modal-web': 0.32.0 '@paulmillr/qr': 0.2.1 - bowser: 2.11.0 + bowser: 2.14.1 cross-fetch: 4.1.0 debug: 4.4.3 - eciesjs: 0.4.13 + eciesjs: 0.4.18 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 obj-multiplex: 1.0.0 - pump: 3.0.2 + pump: 3.0.4 readable-stream: 3.6.2 - socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) tslib: 2.8.1 util: 0.12.5 uuid: 8.3.2 @@ -3989,7 +3916,7 @@ snapshots: - supports-color - utf-8-validate - '@metamask/superstruct@3.1.0': {} + '@metamask/superstruct@3.2.1': {} '@metamask/utils@5.0.2': dependencies: @@ -4004,10 +3931,10 @@ snapshots: '@metamask/utils@8.5.0': dependencies: '@ethereumjs/tx': 4.2.0 - '@metamask/superstruct': 3.1.0 + '@metamask/superstruct': 3.2.1 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 - '@types/debug': 4.1.12 + '@types/debug': 4.1.13 debug: 4.4.3 pony-cause: 2.1.11 semver: 7.7.4 @@ -4018,7 +3945,7 @@ snapshots: '@metamask/utils@9.3.0': dependencies: '@ethereumjs/tx': 4.2.0 - '@metamask/superstruct': 3.1.0 + '@metamask/superstruct': 3.2.1 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.13 @@ -4127,66 +4054,84 @@ snapshots: optionalDependencies: '@types/react': 18.3.18 - '@rollup/rollup-android-arm-eabi@4.34.6': + '@rollup/rollup-android-arm-eabi@4.60.3': + optional: true + + '@rollup/rollup-android-arm64@4.60.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.60.3': + optional: true + + '@rollup/rollup-darwin-x64@4.60.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.60.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.60.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': optional: true - '@rollup/rollup-android-arm64@4.34.6': + '@rollup/rollup-linux-arm-musleabihf@4.60.3': optional: true - '@rollup/rollup-darwin-arm64@4.34.6': + '@rollup/rollup-linux-arm64-gnu@4.60.3': optional: true - '@rollup/rollup-darwin-x64@4.34.6': + '@rollup/rollup-linux-arm64-musl@4.60.3': optional: true - '@rollup/rollup-freebsd-arm64@4.34.6': + '@rollup/rollup-linux-loong64-gnu@4.60.3': optional: true - '@rollup/rollup-freebsd-x64@4.34.6': + '@rollup/rollup-linux-loong64-musl@4.60.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.34.6': + '@rollup/rollup-linux-ppc64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.34.6': + '@rollup/rollup-linux-ppc64-musl@4.60.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.34.6': + '@rollup/rollup-linux-riscv64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.34.6': + '@rollup/rollup-linux-riscv64-musl@4.60.3': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.34.6': + '@rollup/rollup-linux-s390x-gnu@4.60.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.34.6': + '@rollup/rollup-linux-x64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.34.6': + '@rollup/rollup-linux-x64-musl@4.60.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.34.6': + '@rollup/rollup-openbsd-x64@4.60.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.34.6': + '@rollup/rollup-openharmony-arm64@4.60.3': optional: true - '@rollup/rollup-linux-x64-musl@4.34.6': + '@rollup/rollup-win32-arm64-msvc@4.60.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.34.6': + '@rollup/rollup-win32-ia32-msvc@4.60.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.34.6': + '@rollup/rollup-win32-x64-gnu@4.60.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.34.6': + '@rollup/rollup-win32-x64-msvc@4.60.3': optional: true - '@safe-global/safe-apps-provider@0.18.5(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)': + '@safe-global/safe-apps-provider@0.18.5(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -4194,17 +4139,17 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)': dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.22.9 - viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + '@safe-global/safe-gateway-typescript-sdk': 3.23.1 + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@safe-global/safe-gateway-typescript-sdk@3.22.9': {} + '@safe-global/safe-gateway-typescript-sdk@3.23.1': {} '@scure/base@1.1.9': {} @@ -4318,7 +4263,7 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.21.0 - jiti: 2.6.1 + jiti: 2.7.0 lightningcss: 1.32.0 magic-string: 0.30.21 source-map-js: 1.2.1 @@ -4375,52 +4320,46 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 - '@tailwindcss/vite@4.2.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0))': + '@tailwindcss/vite@4.2.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: '@tailwindcss/node': 4.2.4 '@tailwindcss/oxide': 4.2.4 tailwindcss: 4.2.4 - vite: 6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0) + vite: 6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) - '@tanstack/query-core@5.100.8': {} + '@tanstack/query-core@5.100.9': {} - '@tanstack/react-query@5.100.8(react@18.3.1)': + '@tanstack/react-query@5.100.9(react@18.3.1)': dependencies: - '@tanstack/query-core': 5.100.8 + '@tanstack/query-core': 5.100.9 react: 18.3.1 '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 - '@types/babel__generator': 7.6.8 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.28.0 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.26.8 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.8 - '@babel/types': 7.26.8 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.26.8 - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 2.1.0 + '@babel/types': 7.29.0 '@types/debug@4.1.13': dependencies: '@types/ms': 2.1.0 - '@types/estree@1.0.6': {} - - '@types/gensync@1.0.4': {} + '@types/estree@1.0.8': {} '@types/gradient-string@1.1.6': dependencies: @@ -4436,7 +4375,7 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@types/prop-types@15.7.14': {} + '@types/prop-types@15.7.15': {} '@types/react-dom@18.3.5(@types/react@18.3.18)': dependencies: @@ -4444,26 +4383,26 @@ snapshots: '@types/react@18.3.18': dependencies: - '@types/prop-types': 15.7.14 - csstype: 3.1.3 + '@types/prop-types': 15.7.15 + csstype: 3.2.3 '@types/tinycolor2@1.4.6': {} '@types/trusted-types@2.0.7': {} - '@types/ws@8.5.14': + '@types/ws@8.18.1': dependencies: '@types/node': 22.13.1 - '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3))(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3))(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/type-utils': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) - '@typescript-eslint/utils': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.59.1 - eslint: 9.20.0(jiti@2.6.1) + '@typescript-eslint/parser': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/type-utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.59.2 + eslint: 9.20.0(jiti@2.7.0) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.7.3) @@ -4471,56 +4410,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3)': + '@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.59.1 + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.59.2 debug: 4.4.3 - eslint: 9.20.0(jiti@2.6.1) + eslint: 9.20.0(jiti@2.7.0) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.59.1(typescript@5.7.3)': + '@typescript-eslint/project-service@8.59.2(typescript@5.7.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.7.3) - '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.7.3) + '@typescript-eslint/types': 8.59.2 debug: 4.4.3 typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.59.1': + '@typescript-eslint/scope-manager@8.59.2': dependencies: - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/visitor-keys': 8.59.1 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 - '@typescript-eslint/tsconfig-utils@8.59.1(typescript@5.7.3)': + '@typescript-eslint/tsconfig-utils@8.59.2(typescript@5.7.3)': dependencies: typescript: 5.7.3 - '@typescript-eslint/type-utils@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.7.3) - '@typescript-eslint/utils': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.3) + '@typescript-eslint/utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) debug: 4.4.3 - eslint: 9.20.0(jiti@2.6.1) + eslint: 9.20.0(jiti@2.7.0) ts-api-utils: 2.5.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.59.1': {} + '@typescript-eslint/types@8.59.2': {} - '@typescript-eslint/typescript-estree@8.59.1(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.59.2(typescript@5.7.3)': dependencies: - '@typescript-eslint/project-service': 8.59.1(typescript@5.7.3) - '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.7.3) - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/visitor-keys': 8.59.1 + '@typescript-eslint/project-service': 8.59.2(typescript@5.7.3) + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.7.3) + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 @@ -4530,43 +4469,43 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3)': + '@typescript-eslint/utils@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.20.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.7.3) - eslint: 9.20.0(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.20.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.3) + eslint: 9.20.0(jiti@2.7.0) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.59.1': + '@typescript-eslint/visitor-keys@8.59.2': dependencies: - '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/types': 8.59.2 eslint-visitor-keys: 5.0.1 - '@vitejs/plugin-react@4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0))': + '@vitejs/plugin-react@4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: - '@babel/core': 7.26.8 - '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.8) - '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.8) + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0) + vite: 6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) transitivePeerDependencies: - supports-color - '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)': + '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)': dependencies: '@coinbase/wallet-sdk': 4.3.0 - '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) - '@walletconnect/ethereum-provider': 2.17.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) + '@metamask/sdk': 0.32.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@walletconnect/ethereum-provider': 2.17.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -4584,6 +4523,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -4596,14 +4536,14 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': + '@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.7.3) - viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) zustand: 5.0.0(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) optionalDependencies: - '@tanstack/query-core': 5.100.8 + '@tanstack/query-core': 5.100.9 typescript: 5.7.3 transitivePeerDependencies: - '@types/react' @@ -4611,13 +4551,13 @@ snapshots: - react - use-sync-external-store - '@walletconnect/core@2.17.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@walletconnect/core@2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 @@ -4643,6 +4583,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -4655,16 +4596,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.17.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10)': + '@walletconnect/ethereum-provider@2.17.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/modal': 2.7.0(@types/react@18.3.18)(react@18.3.1) - '@walletconnect/sign-client': 2.17.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/sign-client': 2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@walletconnect/types': 2.17.0 - '@walletconnect/universal-provider': 2.17.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@walletconnect/utils': 2.17.0 events: 3.3.0 transitivePeerDependencies: @@ -4682,6 +4623,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -4729,12 +4671,12 @@ snapshots: '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 - '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -4742,8 +4684,8 @@ snapshots: '@walletconnect/keyvaluestorage@1.1.1': dependencies: '@walletconnect/safe-json': 1.0.2 - idb-keyval: 6.2.1 - unstorage: 1.14.4(idb-keyval@6.2.1) + idb-keyval: 6.2.2 + unstorage: 1.17.5(idb-keyval@6.2.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4757,6 +4699,7 @@ snapshots: - '@planetscale/database' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 @@ -4810,9 +4753,9 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.17.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@walletconnect/sign-client@2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/core': 2.17.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/core': 2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -4835,6 +4778,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -4869,20 +4813,21 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 - ioredis - uploadthing - '@walletconnect/universal-provider@2.17.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@walletconnect/universal-provider@2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.17.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/sign-client': 2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@walletconnect/types': 2.17.0 '@walletconnect/utils': 2.17.0 events: 3.3.0 @@ -4900,6 +4845,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -4941,6 +4887,7 @@ snapshots: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - db0 @@ -4966,13 +4913,13 @@ snapshots: typescript: 5.7.3 zod: 3.24.1 - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.14.0 + acorn: 8.16.0 - acorn@8.14.0: {} + acorn@8.16.0: {} - ajv@6.12.6: + ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -5024,15 +4971,15 @@ snapshots: base64-js@1.5.1: {} - binary-extensions@2.3.0: {} + baseline-browser-mapping@2.10.27: {} bn.js@4.12.3: {} bn.js@5.2.3: {} - bowser@2.11.0: {} + bowser@2.14.1: {} - brace-expansion@1.1.11: + brace-expansion@1.1.14: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 @@ -5041,50 +4988,37 @@ snapshots: dependencies: balanced-match: 4.0.4 - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - brorand@1.1.0: {} - browserslist@4.24.4: + browserslist@4.28.2: dependencies: - caniuse-lite: 1.0.30001699 - electron-to-chromium: 1.5.97 - node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) + baseline-browser-mapping: 2.10.27 + caniuse-lite: 1.0.30001792 + electron-to-chromium: 1.5.351 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - bufferutil@4.0.9: + bufferutil@4.1.0: dependencies: node-gyp-build: 4.8.4 - call-bind-apply-helpers@1.0.1: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.8: + call-bind@1.0.9: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 set-function-length: 1.2.2 - call-bound@1.0.3: - dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.7 - call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 @@ -5094,9 +5028,9 @@ snapshots: camelcase@5.3.1: {} - caniuse-lite@1.0.30001699: {} + caniuse-lite@1.0.30001792: {} - cfonts@3.3.0: + cfonts@3.3.1: dependencies: supports-color: 8.1.1 window-size: 1.1.1 @@ -5108,17 +5042,9 @@ snapshots: chalk@5.4.1: {} - chokidar@3.6.0: + chokidar@5.0.0: dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + readdirp: 5.0.0 class-variance-authority@0.7.1: dependencies: @@ -5130,7 +5056,7 @@ snapshots: dependencies: restore-cursor: 4.0.0 - cli-spinners@3.2.0: {} + cli-spinners@3.4.0: {} cli-truncate@4.0.0: dependencies: @@ -5171,7 +5097,7 @@ snapshots: convert-to-spaces@2.0.1: {} - cookie-es@1.2.2: {} + cookie-es@1.2.3: {} core-util-is@1.0.3: {} @@ -5195,21 +5121,17 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crossws@0.3.4: + crossws@0.3.5: dependencies: uncrypto: 0.1.3 - csstype@3.1.3: {} + csstype@3.2.3: {} data-uri-to-buffer@4.0.1: {} date-fns@2.30.0: dependencies: - '@babel/runtime': 7.26.7 - - debug@4.3.7: - dependencies: - ms: 2.1.3 + '@babel/runtime': 7.29.2 debug@4.4.0: dependencies: @@ -5239,13 +5161,13 @@ snapshots: dependencies: is-descriptor: 1.0.3 - defu@6.1.4: {} + defu@6.1.7: {} delayed-stream@1.0.0: {} dependency-graph@1.0.0: {} - destr@2.0.3: {} + destr@2.0.5: {} detect-browser@5.3.0: {} @@ -5257,33 +5179,33 @@ snapshots: dotenv@16.4.7: {} - drizzle-orm@0.38.4(@libsql/client@0.14.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@types/react@18.3.18)(react@18.3.1): + drizzle-orm@0.38.4(@libsql/client@0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(@types/react@18.3.18)(react@18.3.1): optionalDependencies: - '@libsql/client': 0.14.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@libsql/client': 0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@types/react': 18.3.18 react: 18.3.1 dunder-proto@1.0.1: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 duplexify@4.1.3: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 - eciesjs@0.4.13: + eciesjs@0.4.18: dependencies: - '@ecies/ciphers': 0.2.2(@noble/ciphers@1.3.0) + '@ecies/ciphers': 0.2.6(@noble/ciphers@1.3.0) '@noble/ciphers': 1.3.0 '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 - electron-to-chromium@1.5.97: {} + electron-to-chromium@1.5.351: {} elliptic@6.6.1: dependencies: @@ -5301,16 +5223,16 @@ snapshots: encode-utf8@1.0.3: {} - end-of-stream@1.4.4: + end-of-stream@1.4.5: dependencies: once: 1.4.0 - engine.io-client@6.6.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + engine.io-client@6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 + debug: 4.4.3 engine.io-parser: 5.2.3 - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -5334,7 +5256,14 @@ snapshots: dependencies: es-errors: 1.3.0 - es-toolkit@1.32.0: {} + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + + es-toolkit@1.46.1: {} esbuild@0.24.2: optionalDependencies: @@ -5370,13 +5299,13 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@5.1.0(eslint@9.20.0(jiti@2.6.1)): + eslint-plugin-react-hooks@5.1.0(eslint@9.20.0(jiti@2.7.0)): dependencies: - eslint: 9.20.0(jiti@2.6.1) + eslint: 9.20.0(jiti@2.7.0) - eslint-plugin-react-refresh@0.5.2(eslint@9.20.0(jiti@2.6.1)): + eslint-plugin-react-refresh@0.5.2(eslint@9.20.0(jiti@2.7.0)): dependencies: - eslint: 9.20.0(jiti@2.6.1) + eslint: 9.20.0(jiti@2.7.0) eslint-scope@8.2.0: dependencies: @@ -5389,29 +5318,29 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@9.20.0(jiti@2.6.1): + eslint@9.20.0(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.20.0(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.19.2 '@eslint/core': 0.11.0 - '@eslint/eslintrc': 3.2.0 + '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.20.0 - '@eslint/plugin-kit': 0.2.5 - '@humanfs/node': 0.16.6 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.1 - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 - ajv: 6.12.6 + ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.3 escape-string-regexp: 4.0.0 eslint-scope: 8.2.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -5422,21 +5351,21 @@ snapshots: is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.6.1 + jiti: 2.7.0 transitivePeerDependencies: - supports-color espree@10.3.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.0 - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -5522,13 +5451,9 @@ snapshots: dependencies: flat-cache: 4.0.1 - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - filter-obj@1.1.0: {} - find-up-simple@1.0.0: {} + find-up-simple@1.0.1: {} find-up@4.1.0: dependencies: @@ -5542,21 +5467,23 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.2 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.3.2: {} + flatted@3.4.2: {} - follow-redirects@1.15.9: {} + follow-redirects@1.16.0: {} - for-each@0.3.4: + for-each@0.3.5: dependencies: is-callable: 1.2.7 - form-data@4.0.1: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.3 mime-types: 2.1.35 formdata-polyfill@4.0.10: @@ -5568,24 +5495,13 @@ snapshots: function-bind@1.1.2: {} + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} - get-east-asian-width@1.3.0: {} - - get-intrinsic@1.2.7: - dependencies: - call-bind-apply-helpers: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 + get-east-asian-width@1.5.0: {} get-intrinsic@1.3.0: dependencies: @@ -5605,16 +5521,10 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - globals@11.12.0: {} - globals@14.0.0: {} globals@15.14.0: {} @@ -5628,17 +5538,16 @@ snapshots: chalk: 4.1.2 tinygradient: 1.1.5 - h3@1.15.0: + h3@1.15.11: dependencies: - cookie-es: 1.2.2 - crossws: 0.3.4 - defu: 6.1.4 - destr: 2.0.3 + cookie-es: 1.2.3 + crossws: 0.3.5 + defu: 6.1.7 + destr: 2.0.5 iron-webcrypto: 1.2.1 - node-mock-http: 1.0.0 - ohash: 1.1.4 + node-mock-http: 1.0.4 radix3: 1.1.2 - ufo: 1.5.4 + ufo: 1.6.4 uncrypto: 0.1.3 has-flag@4.0.0: {} @@ -5658,10 +5567,6 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - hasown@2.0.3: dependencies: function-bind: 1.1.2 @@ -5674,13 +5579,13 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - hono@4.7.0: {} + hono@4.12.17: {} hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 - idb-keyval@6.2.1: {} + idb-keyval@6.2.2: {} ieee754@1.2.1: {} @@ -5699,32 +5604,32 @@ snapshots: indent-string@5.0.0: {} - index-to-position@0.1.2: {} + index-to-position@1.2.0: {} inherits@2.0.4: {} - ink-big-text@2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1): + ink-big-text@2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1): dependencies: - cfonts: 3.3.0 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) + cfonts: 3.3.1 + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) prop-types: 15.8.1 react: 18.3.1 - ink-gradient@3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10)): + ink-gradient@3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)): dependencies: '@types/gradient-string': 1.1.6 gradient-string: 2.0.2 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) prop-types: 15.8.1 strip-ansi: 7.1.0 - ink-link@4.1.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10)): + ink-link@4.1.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)): dependencies: - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) prop-types: 15.8.1 terminal-link: 3.0.0 - ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10): + ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10): dependencies: '@alcalzone/ansi-tokenize': 0.1.3 ansi-escapes: 7.0.0 @@ -5735,7 +5640,7 @@ snapshots: cli-cursor: 4.0.0 cli-truncate: 4.0.0 code-excerpt: 4.0.0 - es-toolkit: 1.32.0 + es-toolkit: 1.46.1 indent-string: 5.0.0 is-in-ci: 1.0.0 patch-console: 2.0.0 @@ -5749,7 +5654,7 @@ snapshots: type-fest: 4.34.1 widest-line: 5.0.0 wrap-ansi: 9.0.0 - ws: 8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) yoga-wasm-web: 0.3.3 optionalDependencies: '@types/react': 18.3.18 @@ -5763,24 +5668,20 @@ snapshots: is-accessor-descriptor@1.0.1: dependencies: - hasown: 2.0.2 + hasown: 2.0.3 is-arguments@1.2.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-buffer@1.1.6: {} is-callable@1.2.7: {} is-data-descriptor@1.0.1: dependencies: - hasown: 2.0.2 + hasown: 2.0.3 is-descriptor@1.0.3: dependencies: @@ -5795,11 +5696,12 @@ snapshots: is-fullwidth-code-point@5.0.0: dependencies: - get-east-asian-width: 1.3.0 + get-east-asian-width: 1.5.0 - is-generator-function@1.1.0: + is-generator-function@1.1.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 + generator-function: 2.0.1 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -5814,20 +5716,18 @@ snapshots: dependencies: kind-of: 3.2.2 - is-number@7.0.0: {} - is-regex@1.2.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.3 is-stream@2.0.1: {} is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.18 + which-typed-array: 1.1.20 is-unicode-supported@2.1.0: {} @@ -5837,17 +5737,17 @@ snapshots: isexe@2.0.0: {} - isows@1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + isows@1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)): dependencies: - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) - jiti@2.6.1: {} + jiti@2.7.0: {} - js-base64@3.7.7: {} + js-base64@3.7.8: {} js-tokens@4.0.0: {} - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -5953,7 +5853,7 @@ snapshots: lit-element@3.3.3: dependencies: - '@lit-labs/ssr-dom-shim': 1.3.0 + '@lit-labs/ssr-dom-shim': 1.5.1 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 @@ -5985,6 +5885,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.3.6: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -6017,9 +5919,9 @@ snapshots: dependencies: brace-expansion: 5.0.5 - minimatch@3.1.2: + minimatch@3.1.5: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.14 mipd@0.0.7(typescript@5.7.3): optionalDependencies: @@ -6040,7 +5942,7 @@ snapshots: multiformats@9.9.0: {} - nanoid@3.3.8: {} + nanoid@3.3.12: {} natural-compare@1.4.0: {} @@ -6048,7 +5950,7 @@ snapshots: node-domexception@1.0.0: {} - node-fetch-native@1.6.6: {} + node-fetch-native@1.6.7: {} node-fetch@2.7.0: dependencies: @@ -6062,9 +5964,9 @@ snapshots: node-gyp-build@4.8.4: {} - node-mock-http@1.0.0: {} + node-mock-http@1.0.4: {} - node-releases@2.0.19: {} + node-releases@2.0.38: {} normalize-package-data@6.0.2: dependencies: @@ -6076,19 +5978,17 @@ snapshots: obj-multiplex@1.0.0: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 readable-stream: 2.3.8 object-assign@4.1.1: {} - ofetch@1.4.1: + ofetch@1.5.1: dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.6 - ufo: 1.5.4 - - ohash@1.1.4: {} + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.4 on-exit-leak-free@0.2.0: {} @@ -6146,18 +6046,18 @@ snapshots: dependencies: callsites: 3.1.0 - parse-json@8.1.0: + parse-json@8.3.0: dependencies: - '@babel/code-frame': 7.26.2 - index-to-position: 0.1.2 - type-fest: 4.34.1 + '@babel/code-frame': 7.29.0 + index-to-position: 1.2.0 + type-fest: 4.41.0 - pastel@3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(zod@3.24.1): + pastel@3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(zod@3.24.1): dependencies: - '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10)) + '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)) commander: 12.1.0 decamelize: 6.0.0 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) plur: 5.1.0 react: 18.3.1 read-package-up: 11.0.0 @@ -6211,14 +6111,12 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss@8.5.1: + postcss@8.5.14: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.25.4: {} - preact@10.29.1: {} prelude-ls@1.2.1: {} @@ -6239,9 +6137,9 @@ snapshots: proxy-compare@2.5.1: {} - pump@3.0.2: + pump@3.0.4: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 punycode@2.3.1: {} @@ -6286,7 +6184,7 @@ snapshots: read-package-up@11.0.0: dependencies: - find-up-simple: 1.0.0 + find-up-simple: 1.0.1 read-pkg: 9.0.1 type-fest: 4.34.1 @@ -6294,7 +6192,7 @@ snapshots: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 - parse-json: 8.1.0 + parse-json: 8.3.0 type-fest: 4.34.1 unicorn-magic: 0.1.0 @@ -6314,14 +6212,10 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readdirp@3.6.0: - dependencies: - picomatch: 2.3.2 + readdirp@5.0.0: {} real-require@0.1.0: {} - regenerator-runtime@0.14.1: {} - require-directory@2.1.1: {} require-main-filename@2.0.0: {} @@ -6333,29 +6227,35 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - rollup@4.34.6: + rollup@4.60.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.34.6 - '@rollup/rollup-android-arm64': 4.34.6 - '@rollup/rollup-darwin-arm64': 4.34.6 - '@rollup/rollup-darwin-x64': 4.34.6 - '@rollup/rollup-freebsd-arm64': 4.34.6 - '@rollup/rollup-freebsd-x64': 4.34.6 - '@rollup/rollup-linux-arm-gnueabihf': 4.34.6 - '@rollup/rollup-linux-arm-musleabihf': 4.34.6 - '@rollup/rollup-linux-arm64-gnu': 4.34.6 - '@rollup/rollup-linux-arm64-musl': 4.34.6 - '@rollup/rollup-linux-loongarch64-gnu': 4.34.6 - '@rollup/rollup-linux-powerpc64le-gnu': 4.34.6 - '@rollup/rollup-linux-riscv64-gnu': 4.34.6 - '@rollup/rollup-linux-s390x-gnu': 4.34.6 - '@rollup/rollup-linux-x64-gnu': 4.34.6 - '@rollup/rollup-linux-x64-musl': 4.34.6 - '@rollup/rollup-win32-arm64-msvc': 4.34.6 - '@rollup/rollup-win32-ia32-msvc': 4.34.6 - '@rollup/rollup-win32-x64-msvc': 4.34.6 + '@rollup/rollup-android-arm-eabi': 4.60.3 + '@rollup/rollup-android-arm64': 4.60.3 + '@rollup/rollup-darwin-arm64': 4.60.3 + '@rollup/rollup-darwin-x64': 4.60.3 + '@rollup/rollup-freebsd-arm64': 4.60.3 + '@rollup/rollup-freebsd-x64': 4.60.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.3 + '@rollup/rollup-linux-arm-musleabihf': 4.60.3 + '@rollup/rollup-linux-arm64-gnu': 4.60.3 + '@rollup/rollup-linux-arm64-musl': 4.60.3 + '@rollup/rollup-linux-loong64-gnu': 4.60.3 + '@rollup/rollup-linux-loong64-musl': 4.60.3 + '@rollup/rollup-linux-ppc64-gnu': 4.60.3 + '@rollup/rollup-linux-ppc64-musl': 4.60.3 + '@rollup/rollup-linux-riscv64-gnu': 4.60.3 + '@rollup/rollup-linux-riscv64-musl': 4.60.3 + '@rollup/rollup-linux-s390x-gnu': 4.60.3 + '@rollup/rollup-linux-x64-gnu': 4.60.3 + '@rollup/rollup-linux-x64-musl': 4.60.3 + '@rollup/rollup-openbsd-x64': 4.60.3 + '@rollup/rollup-openharmony-arm64': 4.60.3 + '@rollup/rollup-win32-arm64-msvc': 4.60.3 + '@rollup/rollup-win32-ia32-msvc': 4.60.3 + '@rollup/rollup-win32-x64-gnu': 4.60.3 + '@rollup/rollup-win32-x64-msvc': 4.60.3 fsevents: 2.3.3 safe-buffer@5.1.2: {} @@ -6364,7 +6264,7 @@ snapshots: safe-regex-test@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-regex: 1.2.1 @@ -6385,7 +6285,7 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -6413,23 +6313,23 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 - smol-toml@1.3.1: {} + smol-toml@1.6.1: {} - socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - engine.io-client: 6.6.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - socket.io-parser: 4.2.4 + debug: 4.4.3 + engine.io-client: 6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + socket.io-parser: 4.2.6 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-parser@4.2.4: + socket.io-parser@4.2.6: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -6442,16 +6342,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 + spdx-license-ids: 3.0.23 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 + spdx-license-ids: 3.0.23 - spdx-license-ids@3.0.21: {} + spdx-license-ids@3.0.23: {} split-on-first@1.1.0: {} @@ -6474,7 +6374,7 @@ snapshots: string-width@7.2.0: dependencies: emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 + get-east-asian-width: 1.5.0 strip-ansi: 7.1.0 string_decoder@1.1.1: @@ -6497,7 +6397,7 @@ snapshots: supersim@0.1.0-alpha.45: dependencies: - follow-redirects: 1.15.9 + follow-redirects: 1.16.0 transitivePeerDependencies: - debug @@ -6553,10 +6453,6 @@ snapshots: safe-buffer: 5.2.1 typed-array-buffer: 1.0.3 - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - tr46@0.0.3: {} ts-api-utils@2.5.0(typescript@5.7.3): @@ -6575,26 +6471,28 @@ snapshots: type-fest@4.34.1: {} + type-fest@4.41.0: {} + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-typed-array: 1.1.15 - typescript-eslint@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3): + typescript-eslint@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3))(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) - '@typescript-eslint/parser': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) - '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.7.3) - '@typescript-eslint/utils': 8.59.1(eslint@9.20.0(jiti@2.6.1))(typescript@5.7.3) - eslint: 9.20.0(jiti@2.6.1) + '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3))(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/parser': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.3) + '@typescript-eslint/utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + eslint: 9.20.0(jiti@2.7.0) typescript: 5.7.3 transitivePeerDependencies: - supports-color typescript@5.7.3: {} - ufo@1.5.4: {} + ufo@1.6.4: {} uint8arrays@3.1.0: dependencies: @@ -6606,22 +6504,22 @@ snapshots: unicorn-magic@0.1.0: {} - unstorage@1.14.4(idb-keyval@6.2.1): + unstorage@1.17.5(idb-keyval@6.2.2): dependencies: anymatch: 3.1.3 - chokidar: 3.6.0 - destr: 2.0.3 - h3: 1.15.0 - lru-cache: 10.4.3 - node-fetch-native: 1.6.6 - ofetch: 1.4.1 - ufo: 1.5.4 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.11 + lru-cache: 11.3.6 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.4 optionalDependencies: - idb-keyval: 6.2.1 + idb-keyval: 6.2.2 - update-browserslist-db@1.1.2(browserslist@4.24.4): + update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: - browserslist: 4.24.4 + browserslist: 4.28.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -6647,9 +6545,9 @@ snapshots: dependencies: inherits: 2.0.4 is-arguments: 1.2.0 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-typed-array: 1.1.15 - which-typed-array: 1.1.18 + which-typed-array: 1.1.20 uuid@8.3.2: {} @@ -6668,16 +6566,16 @@ snapshots: '@types/react': 18.3.18 react: 18.3.1 - viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1): + viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 abitype: 1.2.3(typescript@5.7.3)(zod@3.24.1) - isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) ox: 0.14.20(typescript@5.7.3)(zod@3.24.1) - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -6685,25 +6583,25 @@ snapshots: - utf-8-validate - zod - vite@6.1.0(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.32.0): + vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0): dependencies: esbuild: 0.24.2 - postcss: 8.5.1 - rollup: 4.34.6 + postcss: 8.5.14 + rollup: 4.60.3 optionalDependencies: '@types/node': 22.13.1 fsevents: 2.3.3 - jiti: 2.6.1 + jiti: 2.7.0 lightningcss: 1.32.0 - wagmi@2.14.11(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.0.9)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1): + wagmi@2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1): dependencies: - '@tanstack/react-query': 5.100.8(react@18.3.1) - '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.8)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@tanstack/react-query': 5.100.9(react@18.3.1) + '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) react: 18.3.1 use-sync-external-store: 1.4.0(react@18.3.1) - viem: 2.48.8(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -6722,6 +6620,7 @@ snapshots: - '@types/react' - '@upstash/redis' - '@vercel/blob' + - '@vercel/functions' - '@vercel/kv' - aws4fetch - bufferutil @@ -6755,12 +6654,13 @@ snapshots: which-module@2.0.1: {} - which-typed-array@1.1.18: + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.3 - for-each: 0.3.4 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 gopd: 1.2.0 has-tostringtag: 1.0.2 @@ -6793,24 +6693,19 @@ snapshots: wrappy@1.0.2: {} - ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10): optionalDependencies: - bufferutil: 4.0.9 + bufferutil: 4.1.0 utf-8-validate: 5.0.10 - ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): optionalDependencies: - bufferutil: 4.0.9 + bufferutil: 4.1.0 utf-8-validate: 5.0.10 - ws@8.20.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + ws@8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): optionalDependencies: - bufferutil: 4.0.9 + bufferutil: 4.1.0 utf-8-validate: 5.0.10 xmlhttprequest-ssl@2.1.2: {} From 280faa876c434b980e0e494c4c7e5c31e2256c2e Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Thu, 7 May 2026 16:23:24 +0700 Subject: [PATCH 27/60] =?UTF-8?q?fix(deps):=20bump=20vite=206.1.0=20?= =?UTF-8?q?=E2=86=92=206.4.2=20(security)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes high-severity arbitrary file read CVE and medium-severity path traversal in vite dev server. --- package.json | 2 +- pnpm-lock.yaml | 456 ++++++++++++++++++++++++++----------------------- 2 files changed, 245 insertions(+), 213 deletions(-) diff --git a/package.json b/package.json index d90b0ba..e81d1a9 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "supersim": "0.1.0-alpha.45", "typescript": "~5.7.2", "typescript-eslint": "^8.59.2", - "vite": "^6.1.0", + "vite": "6.4.2", "wait-port": "^1.1.0" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea20d89..3da337b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@eth-optimism/viem': specifier: ^0.4.15 - version: 0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + version: 0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) '@radix-ui/react-separator': specifier: ^1.1.8 version: 1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -19,7 +19,7 @@ importers: version: 1.2.4(@types/react@18.3.18)(react@18.3.1) '@tailwindcss/vite': specifier: ^4.2.4 - version: 4.2.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 4.2.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) '@tanstack/react-query': specifier: ^5.100.9 version: 5.100.9(react@18.3.1) @@ -52,17 +52,17 @@ importers: version: 1.0.7(tailwindcss@4.2.4) viem: specifier: ^2.48.8 - version: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + version: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) wagmi: specifier: ^2.14.11 - version: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) + version: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) devDependencies: '@eslint/js': specifier: ^9.19.0 version: 9.20.0 '@eth-optimism/super-cli': specifier: ^0.0.13 - version: 0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) '@types/node': specifier: ^22.13.1 version: 22.13.1 @@ -74,7 +74,7 @@ importers: version: 18.3.5(@types/react@18.3.18) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 4.3.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) eslint: specifier: ^9.19.0 version: 9.20.0(jiti@2.7.0) @@ -103,8 +103,8 @@ importers: specifier: ^8.59.2 version: 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) vite: - specifier: ^6.1.0 - version: 6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) + specifier: 6.4.2 + version: 6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) wait-port: specifier: ^1.1.0 version: 1.1.0 @@ -217,152 +217,158 @@ packages: peerDependencies: '@noble/ciphers': ^1.0.0 - '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + '@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.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + '@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.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + '@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.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + '@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.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + '@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.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + '@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.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + '@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.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + '@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.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1745,8 +1751,8 @@ packages: es-toolkit@1.46.1: resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true @@ -3049,10 +3055,19 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} + utf-8-validate@6.0.6: + resolution: {integrity: sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==} + engines: {node: '>=6.14.2'} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -3092,8 +3107,8 @@ packages: typescript: optional: true - vite@6.1.0: - resolution: {integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==} + vite@6.4.2: + resolution: {integrity: sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -3455,79 +3470,82 @@ snapshots: dependencies: '@noble/ciphers': 1.3.0 - '@esbuild/aix-ppc64@0.24.2': + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.24.2': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.24.2': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.24.2': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.24.2': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.24.2': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.24.2': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.24.2': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.24.2': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.24.2': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.24.2': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.24.2': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.24.2': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.24.2': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.24.2': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.24.2': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.24.2': + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.24.2': + '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.24.2': + '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.24.2': + '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.24.2': + '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/sunos-x64@0.24.2': + '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.24.2': + '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-ia32@0.24.2': + '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-x64@0.24.2': + '@esbuild/win32-x64@0.25.12': optional: true '@eslint-community/eslint-utils@4.9.1(eslint@9.20.0(jiti@2.7.0))': @@ -3576,37 +3594,37 @@ snapshots: '@eslint/core': 0.13.0 levn: 0.4.1 - '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': + '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: - '@eth-optimism/viem': 0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@eth-optimism/viem': 0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) '@hono/node-server': 1.13.8(hono@4.12.17) - '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)) - '@libsql/client': 0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)) + '@libsql/client': 0.14.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@tanstack/react-query': 5.100.9(react@18.3.1) - '@vitejs/plugin-react': 4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@vitejs/plugin-react': 4.3.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) abitype: 1.2.4(typescript@5.7.3)(zod@3.24.1) chalk: 5.4.1 dependency-graph: 1.0.0 dotenv: 16.4.7 - drizzle-orm: 0.38.4(@libsql/client@0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(@types/react@18.3.18)(react@18.3.1) + drizzle-orm: 0.38.4(@libsql/client@0.14.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@18.3.18)(react@18.3.1) fast-json-stable-stringify: 2.1.0 figures: 6.1.0 form-data: 4.0.5 hono: 4.12.17 immer: 10.1.1 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) - ink-big-text: 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) - ink-gradient: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)) - ink-link: 4.1.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)) - pastel: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(zod@3.24.1) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) + ink-big-text: 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6))(react@18.3.1) + ink-gradient: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)) + ink-link: 4.1.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)) + pastel: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6))(react@18.3.1)(zod@3.24.1) react: 18.3.1 smol-toml: 1.6.1 - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - wagmi: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + wagmi: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) zod: 3.24.1 zod-validation-error: 3.4.0(zod@3.24.1) - zustand: 5.0.3(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + zustand: 5.0.3(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) transitivePeerDependencies: - '@aws-sdk/client-rds-data' - '@azure/app-configuration' @@ -3663,13 +3681,13 @@ snapshots: - utf-8-validate - vite - '@eth-optimism/viem@0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': + '@eth-optimism/viem@0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))': dependencies: - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) - '@eth-optimism/viem@0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': + '@eth-optimism/viem@0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))': dependencies: - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) '@ethereumjs/common@3.2.0': dependencies: @@ -3711,13 +3729,13 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} - '@inkjs/ui@2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))': + '@inkjs/ui@2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6))': dependencies: chalk: 5.4.1 cli-spinners: 3.4.0 deepmerge: 4.3.1 figures: 6.1.0 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -3738,10 +3756,10 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@libsql/client@0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@libsql/client@0.14.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: '@libsql/core': 0.14.0 - '@libsql/hrana-client': 0.7.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@libsql/hrana-client': 0.7.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) js-base64: 3.7.8 libsql: 0.4.7 promise-limit: 2.7.0 @@ -3759,10 +3777,10 @@ snapshots: '@libsql/darwin-x64@0.4.7': optional: true - '@libsql/hrana-client@0.7.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@libsql/hrana-client@0.7.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: '@libsql/isomorphic-fetch': 0.3.1 - '@libsql/isomorphic-ws': 0.1.5(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@libsql/isomorphic-ws': 0.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6) js-base64: 3.7.8 node-fetch: 3.3.2 transitivePeerDependencies: @@ -3771,10 +3789,10 @@ snapshots: '@libsql/isomorphic-fetch@0.3.1': {} - '@libsql/isomorphic-ws@0.1.5(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@libsql/isomorphic-ws@0.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: '@types/ws': 8.18.1 - ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -3870,7 +3888,7 @@ snapshots: '@metamask/safe-event-emitter@3.1.2': {} - '@metamask/sdk-communication-layer@0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + '@metamask/sdk-communication-layer@0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))': dependencies: bufferutil: 4.1.0 cross-fetch: 4.1.0 @@ -3879,7 +3897,7 @@ snapshots: eciesjs: 0.4.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) utf-8-validate: 5.0.10 uuid: 8.3.2 transitivePeerDependencies: @@ -3889,12 +3907,12 @@ snapshots: dependencies: '@paulmillr/qr': 0.2.1 - '@metamask/sdk@0.32.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@metamask/sdk@0.32.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: '@babel/runtime': 7.29.2 '@metamask/onboarding': 1.0.1 '@metamask/providers': 16.1.0 - '@metamask/sdk-communication-layer': 0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@metamask/sdk-communication-layer': 0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)) '@metamask/sdk-install-modal-web': 0.32.0 '@paulmillr/qr': 0.2.1 bowser: 2.14.1 @@ -3906,7 +3924,7 @@ snapshots: obj-multiplex: 1.0.0 pump: 3.0.4 readable-stream: 3.6.2 - socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) tslib: 2.8.1 util: 0.12.5 uuid: 8.3.2 @@ -4129,9 +4147,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.60.3': optional: true - '@safe-global/safe-apps-provider@0.18.5(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)': + '@safe-global/safe-apps-provider@0.18.5(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -4139,10 +4157,10 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) transitivePeerDependencies: - bufferutil - typescript @@ -4320,12 +4338,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 - '@tailwindcss/vite@4.2.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': + '@tailwindcss/vite@4.2.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: '@tailwindcss/node': 4.2.4 '@tailwindcss/oxide': 4.2.4 tailwindcss: 4.2.4 - vite: 6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) '@tanstack/query-core@5.100.9': {} @@ -4485,27 +4503,27 @@ snapshots: '@typescript-eslint/types': 8.59.2 eslint-visitor-keys: 5.0.1 - '@vitejs/plugin-react@4.3.4(vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': + '@vitejs/plugin-react@4.3.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) transitivePeerDependencies: - supports-color - '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)': + '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1)': dependencies: '@coinbase/wallet-sdk': 4.3.0 - '@metamask/sdk': 0.32.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) - '@walletconnect/ethereum-provider': 2.17.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) + '@metamask/sdk': 0.32.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + '@walletconnect/ethereum-provider': 2.17.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -4536,12 +4554,12 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))': + '@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.7.3) - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) - zustand: 5.0.0(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + zustand: 5.0.0(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) optionalDependencies: '@tanstack/query-core': 5.100.9 typescript: 5.7.3 @@ -4551,13 +4569,13 @@ snapshots: - react - use-sync-external-store - '@walletconnect/core@2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@walletconnect/core@2.17.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 @@ -4596,16 +4614,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.17.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)': + '@walletconnect/ethereum-provider@2.17.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/modal': 2.7.0(@types/react@18.3.18)(react@18.3.1) - '@walletconnect/sign-client': 2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/sign-client': 2.17.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@walletconnect/types': 2.17.0 - '@walletconnect/universal-provider': 2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.17.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@walletconnect/utils': 2.17.0 events: 3.3.0 transitivePeerDependencies: @@ -4671,12 +4689,12 @@ snapshots: '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 - '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -4753,9 +4771,9 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@walletconnect/sign-client@2.17.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: - '@walletconnect/core': 2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/core': 2.17.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -4820,14 +4838,14 @@ snapshots: - ioredis - uploadthing - '@walletconnect/universal-provider@2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + '@walletconnect/universal-provider@2.17.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)': dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.17.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/sign-client': 2.17.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@walletconnect/types': 2.17.0 '@walletconnect/utils': 2.17.0 events: 3.3.0 @@ -5179,9 +5197,9 @@ snapshots: dotenv@16.4.7: {} - drizzle-orm@0.38.4(@libsql/client@0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(@types/react@18.3.18)(react@18.3.1): + drizzle-orm@0.38.4(@libsql/client@0.14.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@18.3.18)(react@18.3.1): optionalDependencies: - '@libsql/client': 0.14.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@libsql/client': 0.14.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@types/react': 18.3.18 react: 18.3.1 @@ -5227,12 +5245,12 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): + engine.io-client@6.6.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3 engine.io-parser: 5.2.3 - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -5265,33 +5283,34 @@ snapshots: es-toolkit@1.46.1: {} - esbuild@0.24.2: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.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.2.0: {} @@ -5608,28 +5627,28 @@ snapshots: inherits@2.0.4: {} - ink-big-text@2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1): + ink-big-text@2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6))(react@18.3.1): dependencies: cfonts: 3.3.1 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) prop-types: 15.8.1 react: 18.3.1 - ink-gradient@3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)): + ink-gradient@3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)): dependencies: '@types/gradient-string': 1.1.6 gradient-string: 2.0.2 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) prop-types: 15.8.1 strip-ansi: 7.1.0 - ink-link@4.1.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)): + ink-link@4.1.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)): dependencies: - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) prop-types: 15.8.1 terminal-link: 3.0.0 - ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10): + ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6): dependencies: '@alcalzone/ansi-tokenize': 0.1.3 ansi-escapes: 7.0.0 @@ -5654,7 +5673,7 @@ snapshots: type-fest: 4.34.1 widest-line: 5.0.0 wrap-ansi: 9.0.0 - ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) yoga-wasm-web: 0.3.3 optionalDependencies: '@types/react': 18.3.18 @@ -5737,9 +5756,9 @@ snapshots: isexe@2.0.0: {} - isows@1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + isows@1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)): dependencies: - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) jiti@2.7.0: {} @@ -6052,12 +6071,12 @@ snapshots: index-to-position: 1.2.0 type-fest: 4.41.0 - pastel@3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)(zod@3.24.1): + pastel@3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6))(react@18.3.1)(zod@3.24.1): dependencies: - '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10)) + '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)) commander: 12.1.0 decamelize: 6.0.0 - ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@5.0.10) + ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) plur: 5.1.0 react: 18.3.1 read-package-up: 11.0.0 @@ -6315,11 +6334,11 @@ snapshots: smol-toml@1.6.1: {} - socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): + socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3 - engine.io-client: 6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + engine.io-client: 6.6.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) socket.io-parser: 4.2.6 transitivePeerDependencies: - bufferutil @@ -6535,10 +6554,20 @@ snapshots: dependencies: react: 18.3.1 + use-sync-external-store@1.6.0(react@18.3.1): + dependencies: + react: 18.3.1 + optional: true + utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.4 + utf-8-validate@6.0.6: + dependencies: + node-gyp-build: 4.8.4 + optional: true + util-deprecate@1.0.2: {} util@0.12.5: @@ -6566,16 +6595,16 @@ snapshots: '@types/react': 18.3.18 react: 18.3.1 - viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1): + viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 abitype: 1.2.3(typescript@5.7.3)(zod@3.24.1) - isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)) ox: 0.14.20(typescript@5.7.3)(zod@3.24.1) - ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -6583,25 +6612,28 @@ snapshots: - utf-8-validate - zod - vite@6.1.0(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0): + vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0): dependencies: - esbuild: 0.24.2 + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.14 rollup: 4.60.3 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 22.13.1 fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 - wagmi@2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1): + wagmi@2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1): dependencies: '@tanstack/react-query': 5.100.9(react@18.3.1) - '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)) + '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) react: 18.3.1 use-sync-external-store: 1.4.0(react@18.3.1) - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -6693,20 +6725,20 @@ snapshots: wrappy@1.0.2: {} - ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10): + ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 - ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): + ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 - ws@8.20.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + ws@8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 xmlhttprequest-ssl@2.1.2: {} @@ -6745,16 +6777,16 @@ snapshots: zod@3.24.1: {} - zustand@5.0.0(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)): + zustand@5.0.0(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)): optionalDependencies: '@types/react': 18.3.18 immer: 10.1.1 react: 18.3.1 - use-sync-external-store: 1.4.0(react@18.3.1) + use-sync-external-store: 1.6.0(react@18.3.1) - zustand@5.0.3(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)): + zustand@5.0.3(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)): optionalDependencies: '@types/react': 18.3.18 immer: 10.1.1 react: 18.3.1 - use-sync-external-store: 1.4.0(react@18.3.1) + use-sync-external-store: 1.6.0(react@18.3.1) From 91b6a69e6dc983fea34940a65acd296f7077e96f Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Thu, 7 May 2026 17:11:43 +0700 Subject: [PATCH 28/60] test(contracts): add missing unit test coverage 71 tests (was 59). Covers zero-input guards, exact error selectors, accumulator resets, supportsInterface, and isMint flag binding. --- contracts/test/unit/RYLA.t.sol | 33 +++++++++++++++++++ .../test/unit/bridge/MARKBridgeAdapter.t.sol | 28 ++++++++++++++++ .../AttestedSettlementVerifier.t.sol | 31 +++++++++++++++++ .../settlement/MARKSettlementModule.t.sol | 25 ++++++++++++++ 4 files changed, 117 insertions(+) diff --git a/contracts/test/unit/RYLA.t.sol b/contracts/test/unit/RYLA.t.sol index d378875..a90fa5d 100644 --- a/contracts/test/unit/RYLA.t.sol +++ b/contracts/test/unit/RYLA.t.sol @@ -6,6 +6,8 @@ import {Test} from "forge-std/Test.sol"; import {RYLA} from "../../src/token/RYLA.sol"; import {PredeployAddresses} from "@interop-lib/libraries/PredeployAddresses.sol"; import {Unauthorized} from "@interop-lib/libraries/errors/CommonErrors.sol"; +import {ZeroAddress} from "@interop-lib/libraries/errors/CommonErrors.sol"; +import {TokenErrors} from "../../src/errors/TokenErrors.sol"; contract RYLATest is Test { RYLA internal token; @@ -76,4 +78,35 @@ contract RYLATest is Test { token.crosschainBurn(user, 2 ether); assertEq(token.balanceOf(user), 3 ether); } + + function testSupportsInterface() public view { + // ERC165 + assertTrue(token.supportsInterface(0x01ffc9a7)); + // IAccessControl + assertTrue(token.supportsInterface(0x7965db0b)); + // random — should return false + assertFalse(token.supportsInterface(0xdeadbeef)); + } + + function testSetMinterRevertsForZeroAddress() public { + vm.prank(owner); + vm.expectRevert(ZeroAddress.selector); + token.setMinter(address(0), true); + } + + function testSetBurnerRevertsForZeroAddress() public { + vm.prank(owner); + vm.expectRevert(ZeroAddress.selector); + token.setBurner(address(0), true); + } + + function testBurnRevertsForZeroAmount() public { + vm.startPrank(owner); + token.setBurner(burner, true); + vm.stopPrank(); + + vm.prank(burner); + vm.expectRevert(TokenErrors.InvalidAmount.selector); + token.burn(0); + } } diff --git a/contracts/test/unit/bridge/MARKBridgeAdapter.t.sol b/contracts/test/unit/bridge/MARKBridgeAdapter.t.sol index 57bb7f6..6aaf440 100644 --- a/contracts/test/unit/bridge/MARKBridgeAdapter.t.sol +++ b/contracts/test/unit/bridge/MARKBridgeAdapter.t.sol @@ -110,6 +110,34 @@ contract MARKBridgeAdapterTest is Test { assertEq(adapter.bridgedInDailyCapEpoch(), 60 ether); } + function testSetBridgeLimitsResetsEpochAccumulatorMidEpoch() public { + vm.prank(owner); + adapter.setBridgeLimits(0, 100 ether); + + bytes memory callData = abi.encodeWithSelector( + ISuperchainTokenBridge.sendERC20.selector, address(token), recipient, 60 ether, DST_CHAIN_ID + ); + vm.mockCall(SUPERCHAIN_BRIDGE, callData, abi.encode(keccak256("h1"))); + vm.prank(operator); + adapter.bridgeTo(recipient, 60 ether, DST_CHAIN_ID); + assertEq(adapter.bridgedInDailyCapEpoch(), 60 ether); + + // reset limits mid-epoch — accumulator and epoch should clear + vm.prank(owner); + adapter.setBridgeLimits(0, 200 ether); + assertEq(adapter.bridgedInDailyCapEpoch(), 0); + assertEq(adapter.dailyCapEpoch(), 0); + + // should now allow bridging up to new cap from zero + bytes memory callData2 = abi.encodeWithSelector( + ISuperchainTokenBridge.sendERC20.selector, address(token), recipient, 150 ether, DST_CHAIN_ID + ); + vm.mockCall(SUPERCHAIN_BRIDGE, callData2, abi.encode(keccak256("h2"))); + vm.prank(operator); + adapter.bridgeTo(recipient, 150 ether, DST_CHAIN_ID); + assertEq(adapter.bridgedInDailyCapEpoch(), 150 ether); + } + function testBridgeToRevertsWithBridgeFailedAndClearsApprovalOnSendERC20Revert() public { uint256 amount = 25 ether; diff --git a/contracts/test/unit/settlement/AttestedSettlementVerifier.t.sol b/contracts/test/unit/settlement/AttestedSettlementVerifier.t.sol index fc1495b..0f358fe 100644 --- a/contracts/test/unit/settlement/AttestedSettlementVerifier.t.sol +++ b/contracts/test/unit/settlement/AttestedSettlementVerifier.t.sol @@ -61,6 +61,37 @@ contract AttestedSettlementVerifierTest is Test { assertFalse(ok); } + function testVerifySettlementReturnsFalseForZeroIntentId() public view { + uint256 deadline = block.timestamp + 1 hours; + bytes memory proof = _buildProof(bytes32(0), settlementModule, user, 1 ether, true, CONTEXT, deadline, attesterPk); + assertFalse(verifier.verifySettlement(bytes32(0), settlementModule, user, 1 ether, true, proof)); + } + + function testVerifySettlementReturnsFalseForZeroSettlementModule() public view { + uint256 deadline = block.timestamp + 1 hours; + bytes memory proof = _buildProof(INTENT, address(0), user, 1 ether, true, CONTEXT, deadline, attesterPk); + assertFalse(verifier.verifySettlement(INTENT, address(0), user, 1 ether, true, proof)); + } + + function testVerifySettlementReturnsFalseForZeroAccount() public view { + uint256 deadline = block.timestamp + 1 hours; + bytes memory proof = _buildProof(INTENT, settlementModule, address(0), 1 ether, true, CONTEXT, deadline, attesterPk); + assertFalse(verifier.verifySettlement(INTENT, settlementModule, address(0), 1 ether, true, proof)); + } + + function testVerifySettlementReturnsFalseForZeroAmount() public view { + uint256 deadline = block.timestamp + 1 hours; + bytes memory proof = _buildProof(INTENT, settlementModule, user, 0, true, CONTEXT, deadline, attesterPk); + assertFalse(verifier.verifySettlement(INTENT, settlementModule, user, 0, true, proof)); + } + + function testVerifySettlementReturnsFalseForWrongIsMintFlag() public view { + uint256 deadline = block.timestamp + 1 hours; + // proof signed for isMint=true, but called with isMint=false + bytes memory proof = _buildProof(INTENT, settlementModule, user, 1 ether, true, CONTEXT, deadline, attesterPk); + assertFalse(verifier.verifySettlement(INTENT, settlementModule, user, 1 ether, false, proof)); + } + function _buildProof( bytes32 intentId, address moduleAddress, diff --git a/contracts/test/unit/settlement/MARKSettlementModule.t.sol b/contracts/test/unit/settlement/MARKSettlementModule.t.sol index 03390de..84a7c7b 100644 --- a/contracts/test/unit/settlement/MARKSettlementModule.t.sol +++ b/contracts/test/unit/settlement/MARKSettlementModule.t.sol @@ -150,6 +150,31 @@ contract MARKSettlementModuleTest is Test { module.setVerifier(address(verifier), false); } + function testTotalSettledAccumulatesAcrossMultipleIntents() public { + vm.startPrank(operator); + module.settleMint(user, 3 ether, keccak256("acc-m1"), bytes("")); + module.settleMint(user, 7 ether, keccak256("acc-m2"), bytes("")); + vm.stopPrank(); + assertEq(module.totalSettledMint(), 10 ether); + + vm.prank(user); + token.approve(address(module), 10 ether); + + vm.startPrank(operator); + module.settleBurn(user, 4 ether, keccak256("acc-b1"), bytes("")); + module.settleBurn(user, 2 ether, keccak256("acc-b2"), bytes("")); + vm.stopPrank(); + assertEq(module.totalSettledBurn(), 6 ether); + assertEq(token.balanceOf(user), 4 ether); + } + + function testSetVerifierRejectsEOAAddress() public { + address eoa = makeAddr("eoa"); + vm.prank(owner); + vm.expectRevert(SettlementErrors.VerifierRequired.selector); + module.setVerifier(eoa, true); + } + function testProductionModeStillEnforcesBurnProofValidation() public { vm.startPrank(owner); module.setVerifier(address(verifier), true); From 0a8ded7298181c7f2f31eed9d01127579640f7e2 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Thu, 7 May 2026 17:34:34 +0700 Subject: [PATCH 29/60] chore(governance): migrate CODEOWNERS to @trade/maintainers team Replaces @iap with @trade/maintainers across all CODEOWNERS entries. Team created with maintain permission on repo. --- .github/CODEOWNERS | 74 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 82363e4..acceca3 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -6,7 +6,7 @@ # ============================================================================ # Global default owner (catches everything not explicitly listed) -* @iap +* @trade/maintainers # ============================================================================ # PROTOCOL-CRITICAL: Smart Contracts @@ -14,31 +14,31 @@ # All contract changes require owner review # Consider requiring 2 approvals for main/canary deployments -/contracts/src/token/** @iap -/contracts/src/bridge/** @iap -/contracts/src/settlement/** @iap -/contracts/src/errors/** @iap -/contracts/src/interfaces/** @iap +/contracts/src/token/** @trade/maintainers +/contracts/src/bridge/** @trade/maintainers +/contracts/src/settlement/** @trade/maintainers +/contracts/src/errors/** @trade/maintainers +/contracts/src/interfaces/** @trade/maintainers # ============================================================================ # TESTING: Contract Tests # ============================================================================ -/contracts/test/unit/** @iap -/contracts/test/e2e/** @iap -/contracts/test/invariant/** @iap +/contracts/test/unit/** @trade/maintainers +/contracts/test/e2e/** @trade/maintainers +/contracts/test/invariant/** @trade/maintainers # ============================================================================ # DEPLOYMENT & OPERATIONS: Scripts & Automation # ============================================================================ # Deployment scripts are critical - require careful review -/contracts/script/deploy/** @iap -/contracts/script/ops/** @iap -/contracts/script/ci/** @iap -/contracts/RUNBOOK.md @iap -/contracts/README.md @iap -/contracts/Makefile @iap +/contracts/script/deploy/** @trade/maintainers +/contracts/script/ops/** @trade/maintainers +/contracts/script/ci/** @trade/maintainers +/contracts/RUNBOOK.md @trade/maintainers +/contracts/README.md @trade/maintainers +/contracts/Makefile @trade/maintainers # ============================================================================ # CI/CD & GOVERNANCE: Workflows & Branch Protection @@ -46,42 +46,42 @@ # Workflow changes affect all deployments - require review # Governance changes must be kept in sync with policy -/.github/workflows/** @iap -/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md @iap -/.github/CODEOWNERS @iap +/.github/workflows/** @trade/maintainers +/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md @trade/maintainers +/.github/CODEOWNERS @trade/maintainers -/BRANCHING.md @iap -/CONTRIBUTING.md @iap -/DEPLOYMENT.md @iap -/TROUBLESHOOTING.md @iap -/AGENTS.md @iap +/BRANCHING.md @trade/maintainers +/CONTRIBUTING.md @trade/maintainers +/DEPLOYMENT.md @trade/maintainers +/TROUBLESHOOTING.md @trade/maintainers +/AGENTS.md @trade/maintainers # ============================================================================ # FRONTEND APPLICATION # ============================================================================ -/src/** @iap -/index.html @iap +/src/** @trade/maintainers +/index.html @trade/maintainers # ============================================================================ # CONFIGURATION & BUILD # ============================================================================ -/package.json @iap -/pnpm-lock.yaml @iap -/tsconfig*.json @iap -/vite.config.ts @iap -/eslint.config.js @iap -/.prettierrc.json @iap -/mprocs.yaml @iap -/remappings.txt @iap +/package.json @trade/maintainers +/pnpm-lock.yaml @trade/maintainers +/tsconfig*.json @trade/maintainers +/vite.config.ts @trade/maintainers +/eslint.config.js @trade/maintainers +/.prettierrc.json @trade/maintainers +/mprocs.yaml @trade/maintainers +/remappings.txt @trade/maintainers -/contracts/foundry.toml @iap -/contracts/Makefile @iap +/contracts/foundry.toml @trade/maintainers +/contracts/Makefile @trade/maintainers # ============================================================================ # DOCUMENTATION # ============================================================================ -/README.md @iap -/LICENSE @iap +/README.md @trade/maintainers +/LICENSE @trade/maintainers diff --git a/package.json b/package.json index e81d1a9..5d04432 100644 --- a/package.json +++ b/package.json @@ -61,4 +61,4 @@ "vite": "6.4.2", "wait-port": "^1.1.0" } -} \ No newline at end of file +} From df252643a97b68155567f04b55315572292bb7c7 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Thu, 7 May 2026 18:54:31 +0700 Subject: [PATCH 30/60] chore(ci): switch CodeRabbit to assertive profile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit profile: chill → assertive, request_changes_workflow: false → true --- .coderabbit.yaml | 4 ++-- package.json | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.coderabbit.yaml b/.coderabbit.yaml index ca31c7a..4476a62 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -3,8 +3,8 @@ language: "en-US" early_access: false reviews: - profile: "chill" - request_changes_workflow: false + profile: "assertive" + request_changes_workflow: true high_level_summary: true review_status: true collapse_walkthrough: false diff --git a/package.json b/package.json index 5d04432..b870080 100644 --- a/package.json +++ b/package.json @@ -62,3 +62,4 @@ "wait-port": "^1.1.0" } } + From fbc3ce460aa6beed2013b2eb8ecd25f0141ed777 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Thu, 7 May 2026 19:04:34 +0700 Subject: [PATCH 31/60] fix(docs): add VALIDATE_MODE to staging checklist prerequisites Adds missing VALIDATE_MODE env var to staging checklist. Clarifies operator/attester rotation step with RUNBOOK.md reference. Removes trailing newline from package.json. --- contracts/STAGING_GO_NO_GO_CHECKLIST.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contracts/STAGING_GO_NO_GO_CHECKLIST.md b/contracts/STAGING_GO_NO_GO_CHECKLIST.md index 5712ecb..e9f6c7e 100644 --- a/contracts/STAGING_GO_NO_GO_CHECKLIST.md +++ b/contracts/STAGING_GO_NO_GO_CHECKLIST.md @@ -12,6 +12,7 @@ Use this checklist before any `canary -> main` promotion. Local Anvil checks are - `STAGING_RPC_URL` - `MARK_STAGING_DEPLOYER_PRIVATE_KEY` (GitHub secret) +- `VALIDATE_MODE` (set to `rehearsal` for this staging checklist) - staging operator address (`STAGING_SETTLEMENT_OPERATOR`) - expected admin/owner/verifier/attester addresses @@ -43,7 +44,7 @@ make slither-core - settlement mint (valid proof path) - settlement burn (escrow + burn invariants) - bridge flow with destination allowlist and limit checks -- operator/attester rotation and re-verify +- operator/attester rotation and re-verify (see RUNBOOK.md sections 5 and 6) 6. Generate promotion checklist evidence: - GitHub Actions: `.github/workflows/contracts-promotion-checklist.yml` From e5ecd9e9f2ef9137f699ab865446fba8e4b9cdc5 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Thu, 7 May 2026 19:27:55 +0700 Subject: [PATCH 32/60] chore(docs): remove stale pre-transfer planning documents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes TRANSFER_NOW_CHECKLIST.md, ORG_TRANSFER_SECURITY_CHECKLIST.md, SECURITY_NEXT_STEPS.md, PROJECT_REVIEW.md — all completed with the org transfer on May 6, 2026. --- ORG_TRANSFER_SECURITY_CHECKLIST.md | 102 ------------- PROJECT_REVIEW.md | 222 ----------------------------- SECURITY_NEXT_STEPS.md | 23 --- TRANSFER_NOW_CHECKLIST.md | 49 ------- package.json | 1 + 5 files changed, 1 insertion(+), 396 deletions(-) delete mode 100644 ORG_TRANSFER_SECURITY_CHECKLIST.md delete mode 100644 PROJECT_REVIEW.md delete mode 100644 SECURITY_NEXT_STEPS.md delete mode 100644 TRANSFER_NOW_CHECKLIST.md diff --git a/ORG_TRANSFER_SECURITY_CHECKLIST.md b/ORG_TRANSFER_SECURITY_CHECKLIST.md deleted file mode 100644 index 27505fc..0000000 --- a/ORG_TRANSFER_SECURITY_CHECKLIST.md +++ /dev/null @@ -1,102 +0,0 @@ -# Org Transfer Security Checklist (Execution Guide) - -Date baseline: May 5, 2026. - -## Goal - -Enable a safe organization transfer while immediately enforcing a security baseline for a solo-maintained protocol repository. - -## Phase 0 — Before transfer (same day) - -- [ ] Confirm current default branch and protected branches. -- [ ] Export current repository secrets/variables inventory (names only, no values). -- [ ] Snapshot existing Actions workflows and required checks. -- [ ] Freeze risky merges during transfer window. - -Success criteria: -- You can compare pre/post transfer settings without guessing. - -## Phase 1 — Transfer + governance baseline (Day 1) - -- [ ] Transfer repository into the target GitHub organization. -- [ ] Re-enable CodeQL workflow and confirm scan jobs trigger on PRs. -- [ ] Set branch protection rules: - - `main`: no direct push, require PR, require passing checks. - - `canary`: no direct push, require PR, require passing checks. - - `dev`: require PR + passing checks (can be less strict than main). -- [ ] Enable dismiss stale approvals when new commits are pushed. - -Required checks (minimum): -- [ ] `pnpm -s lint` -- [ ] `pnpm -s typecheck` -- [ ] contracts CI fast gate -- [ ] CodeQL - -Success criteria: -- No PR can merge unless all baseline checks pass. - -## Phase 2 — CI runtime determinism (Day 2-4) - -- [ ] Add pinned runtime path for release verification (container preferred). -- [ ] Add single wrapper command for repeatability (example: `make release-gate-container`). -- [ ] Ensure `forge`, `jq`, `slither`, `node`, and `pnpm` versions are explicit. -- [ ] Persist release artifacts/evidence manifest as build artifacts. - -Success criteria: -- Release gate gives same result locally and in CI for same commit + env. - -## Phase 3 — Secrets and key hygiene (Day 5-7) - -- [ ] Split credentials by environment (`staging`, `mainnet`). -- [ ] Split credentials by duty (`deploy`, `verify`, `sign`). -- [ ] Rotate old/shared credentials. -- [ ] Store emergency recovery instructions in runbook. - -Success criteria: -- Compromise in one environment or role does not expose all release paths. - -## Phase 4 — Privacy and incident readiness (Day 8-14) - -- [ ] Add release privacy-impact checklist (on-chain + off-chain metadata review). -- [ ] Add playbooks for: - - verifier key compromise - - operator key compromise - - bad release artifact anchoring -- [ ] Run one tabletop drill and capture deltas. - -Success criteria: -- You can execute incident response steps without ad-hoc decisions. - -## Immediate next action (single highest ROI) - -If you only do one thing first, do this: - -**Enable CodeQL + required status checks + branch protection immediately after transfer.** - -This creates an enforceable baseline for every future change and is the most effective solo-founder risk reduction step. - - -## Phase 0.5 — Pre-transfer readiness script - -Run: - -```bash -export GH_PAT= -# optional: export GH_REPO=/ -./scripts/github/pretransfer-readiness.sh -``` - -This verifies API access, expected workflow files, and checks whether `GOVERNANCE_VERIFY_PAT` is already present. - - -## Phase 1.5 — Post-transfer bootstrap (recommended) - -Run: - -```bash -export GH_PAT= -# optional: export GH_REPO=/ -./scripts/github/posttransfer-bootstrap.sh -``` - -This executes governance apply + verification in one command and should be run immediately after repo transfer. diff --git a/PROJECT_REVIEW.md b/PROJECT_REVIEW.md deleted file mode 100644 index 5ba6d1e..0000000 --- a/PROJECT_REVIEW.md +++ /dev/null @@ -1,222 +0,0 @@ -# Project Review (May 5, 2026) - -## Scope - -This review covers: -- Repository structure and build/test tooling. -- Frontend app purpose and implementation level. -- Smart-contract architecture and key security controls. -- CI/release guardrails and operations readiness. - -## What was validated directly - -- Root metadata and scripts in `package.json`. -- High-level docs in `README.md`, `contracts/README.md`, and `contracts/ARCHITECTURE.md`. -- Core contracts: - - `contracts/src/token/RYLA.sol` - - `contracts/src/bridge/MARKBridgeAdapter.sol` - - `contracts/src/settlement/MARKSettlementModule.sol` -- Frontend entry screen in `src/App.tsx`. -- TypeScript and lint health (`pnpm -s typecheck`, `pnpm -s lint`). - -## High-level assessment - -The project is organized with unusually strong operational discipline for an early-stage protocol stack: -- Clear branch/release policy and staged promotion model. -- Security-oriented contract controls (`AccessControlDefaultAdminRules`, operator gating, replay protection, production-mode lock). -- Dedicated release-gate and evidence-manifest workflows aimed at auditable deployments. - -Current risk profile appears moderate and mostly operational, not architectural: -- The core solidity modules are intentionally narrow and separated by domain. -- The largest residual risks are around environment-driven correctness (deployment configuration, RPC assumptions, secrets handling) and proof/verifier governance rather than obvious on-chain logic flaws. - -## Detailed findings - -### 1) Architecture and layering: strong - -- Domain boundaries are explicitly declared and enforced by architecture/layering guard scripts (documented in `contracts/ARCHITECTURE.md`). -- Bridge and settlement modules are cleanly decoupled and both depend on token primitives rather than each other. - -Why this matters: -- Reduces accidental coupling and blast radius from future changes. -- Improves auditability and ownership by domain. - -### 2) Token design (`RYLA`): conservative and controllable - -Observed controls: -- Delayed admin handoff via `AccessControlDefaultAdminRules` with `DEFAULT_ADMIN_DELAY = 1 days`. -- Separate `MINTER_ROLE` and `BURNER_ROLE` with explicit grant/revoke APIs. -- Input hardening for zero address and zero amount. - -Potential improvement (non-critical): -- Consider adding an explicit cap/issuance policy module if supply governance is expected to be publicly constrained by policy, not only by role management. - -### 3) Bridge adapter: practical risk controls in place - -Observed controls: -- `OPERATOR_ROLE` gating. -- Destination-chain allowlist. -- Optional transaction/daily limits (`maxPerTx`, `dailyCap`) with epoch reset. -- Uses `SafeERC20`, `forceApprove`, and `nonReentrant`. - -Potential improvement (medium): -- Add optional per-destination caps (not just global daily cap) to isolate lane-specific risk. -- Add explicit pause/emergency brake if not already handled by off-chain release controls. - -### 4) Settlement module: good baseline for production hardening - -Observed controls: -- Replay protection through `consumedIntents[intentId]`. -- Optional verifier hook with explicit `proofValidationEnabled` state. -- Irreversible `productionMode` that requires proof validation to stay active. -- Burn flow uses escrow invariants before/after burn to catch token accounting drift. - -Potential improvement (medium): -- Add structured reason codes/events for verifier failures to simplify operations and triage (currently returns a boolean). -- Consider explicit bounded-size checks on `proof` payload length to reduce griefing surface on calldata-heavy failures. - -### 5) Frontend: currently operational dashboard, not transaction UX - -- `src/App.tsx` is intentionally informational (topology, release flow, runbook commands). -- No wallet interaction, chain writes, or end-user flows yet. - -Implication: -- Security criticality is currently centered on contracts and operational scripts, not frontend execution paths. - -### 6) Tooling and CI health: partially validated - -Validated now: -- TypeScript typecheck passes. -- ESLint passes. - -Not validated in this environment: -- Foundry tests (`forge test`) could not run due to missing Foundry binary. - -Impact: -- No claim is made here about current pass/fail status of solidity unit/invariant/e2e suites in this container. - -## Recommendations (prioritized) - -1. **P0 – Enforce executable preflight in CI image** - - Ensure `forge`, `slither`, and all release-gate dependencies are available in every CI execution context to prevent false confidence from partial checks. - -2. **P1 – Strengthen bridge risk segmentation** - - Introduce optional per-destination rate limits and/or per-operator quotas for incident containment. - -3. **P1 – Expand settlement observability** - - Emit richer verification telemetry and failure reason mapping for on-call diagnostics. - -4. **P2 – Document explicit trust model** - - Add a compact “trust assumptions” section (operator keys, verifier key custody, break-glass policy, evidence signature authority rotation) in `contracts/RUNBOOK.md` or `README.md`. - -5. **P2 – Scenario-driven negative tests** - - Add/confirm tests for edge cases: verifier flip attempts in production mode, proof replay across modules/chains, cap rollover boundaries, and deflationary/non-standard ERC20 behavior assumptions in bridge/settlement wrappers. - -## Final verdict - -- **Design quality:** Good -- **Security posture (observed):** Good baseline with thoughtful controls -- **Operational readiness:** Good process direction, but environment consistency for solidity toolchain must be enforced to avoid blind spots -- **Main gap to close next:** deterministic, fully reproducible release-gate execution across all CI/runtime environments - -## Next best recommendation (based on current status) - -If only one thing is done next, the highest-leverage move is: - -**Create a reproducible, toolchain-pinned execution path for `make release-gate` and `./script/ops/mainnet-readiness.sh` (containerized or Nix/asdf pinned), then run it in CI on every protected branch.** - -Why this is first: -- Current gates are already strong and comprehensive, but they hard-fail when core binaries (`forge`, `jq`, `slither`) are absent. -- This means process quality is high, but reliability of execution across environments is still the bottleneck. -- Once runtime parity is guaranteed, all other recommendations (caps, telemetry, trust-model docs) become safer and easier to validate. - -### Practical implementation option - -1. Add a dedicated dev/CI container image containing exact versions of: - - Foundry (`forge`), Slither, `jq`, Node/pnpm. -2. Add a single command wrapper (example: `make release-gate-container`) to execute gates inside that image. -3. Wire branch protection checks to this wrapper for `dev`, `canary`, and `main` with policy-appropriate strictness. -4. Persist generated artifacts (`release-gate-*.json`, mainnet gate artifacts) as CI build outputs for audit trail continuity. - -### Better-solution alternative (if minimizing ops overhead) - -If maintaining a custom image is heavy, use a lightweight version manager baseline: -- `asdf` + `.tool-versions` for `nodejs`, `jq`, and Foundry toolchain pinning. -- CI bootstrap script that validates tool versions before any gate starts. - -This is less hermetic than containers, but still significantly reduces drift and false negatives. - -## Opinion on transferring to organization before next improvements - -Yes — transferring to your organization first is a sensible move. - -Given your note that CodeQL is only available at organization level, transfer-first gives you two immediate benefits: -1. Security scanning baseline (CodeQL + org-level policy controls) becomes enforceable before feature hardening. -2. Follow-up recommendations can be validated under the same governance context that production will use. - -### Recommended transfer-first sequence - -1. Transfer repository to organization and re-enable CodeQL workflow triggers. -2. Turn on required status checks for at least: - - lint + typecheck - - contract CI fast/full - - CodeQL scan -3. Add branch protections for `dev`, `canary`, and `main` aligned to your promotion path. -4. Only then execute the next hardening item (reproducible release-gate runtime pinning), so it lands under org-enforced controls from day one. - -### Practical caution list after transfer - -- Verify all GitHub Actions secrets/variables were migrated or recreated at org/repo scope. -- Re-check workflow permissions (especially `security-events: write` for CodeQL uploads). -- Confirm artifact retention policy for release evidence outputs. -- Validate that branch protection rules are actually active on transferred default/protected branches. - -This order minimizes rework and prevents a situation where hardening work is merged before your final governance/security baseline is active. - -## Solo-founder execution plan (security/privacy first) - -Given you are operating solo and security/privacy are top priority, the best practical approach is: - -**Do fewer things, but make each control enforceable by automation before scaling scope.** - -### Recommended 14-day plan - -#### Day 1-3: Governance baseline after org transfer - -1. Re-enable CodeQL and make it a required check. -2. Enforce protected branches with no direct push to `main` and `canary`. -3. Require passing checks before merge: - - frontend lint/typecheck - - contracts `ci-fast` - - CodeQL - -Outcome: every future change must pass a minimum security gate automatically. - -#### Day 4-7: Deterministic release runtime - -1. Create pinned execution environment (container preferred). -2. Add one canonical command for release verification (example: `make release-gate-container`). -3. Store release artifacts and evidence manifests as CI artifacts. - -Outcome: reproducible release evidence; lower chance of hidden local-environment drift. - -#### Day 8-10: Secrets and key-material hardening - -1. Split keys by environment (staging/mainnet) and role (deploy/verify/sign). -2. Rotate any legacy/shared keys. -3. Add an emergency key revocation + recovery runbook section. - -Outcome: reduced blast radius from key compromise. - -#### Day 11-14: Privacy and incident readiness - -1. Add privacy-impact checklist for each release (what data is emitted on-chain/off-chain, metadata leakage review). -2. Add incident playbook for verifier compromise, operator compromise, and bad release artifact. -3. Run one tabletop drill (self-run) and capture improvements. - -Outcome: preparedness for the exact failures that matter most to institutional users. - -### Best recommendation for your context - -If you can only choose one immediate task: **make CodeQL + branch protection + required checks fully active right after transfer**. -That single step gives you the highest security ROI as a solo builder by forcing discipline on every change. diff --git a/SECURITY_NEXT_STEPS.md b/SECURITY_NEXT_STEPS.md deleted file mode 100644 index 2e6a872..0000000 --- a/SECURITY_NEXT_STEPS.md +++ /dev/null @@ -1,23 +0,0 @@ -# Security Next Steps - -Date: May 5, 2026. - -## Immediate next step - -Transfer the repo to your organization, then run: - -```bash -export GH_PAT= -./scripts/github/pretransfer-readiness.sh -./scripts/github/posttransfer-bootstrap.sh -``` - -This is the fastest path to enforced controls. - -## Lean sequence - -1. Enforce required checks and branch protections (`dev`, `canary`, `main`). -2. Confirm CodeQL, Gitleaks, Release Gate Container, and Scripts CI are merge-blocking. -3. Keep release-gate execution containerized. -4. Rotate/split credentials by environment and role. -5. Re-run governance verification on schedule. diff --git a/TRANSFER_NOW_CHECKLIST.md b/TRANSFER_NOW_CHECKLIST.md deleted file mode 100644 index 0cae616..0000000 --- a/TRANSFER_NOW_CHECKLIST.md +++ /dev/null @@ -1,49 +0,0 @@ -# Transfer Now Checklist (Do This Now) - -Date: May 5, 2026. - -## Short answer - -Yes — based on current status, you should transfer the repo to your organization now. - -## Execute in order - -1. Pre-check before transfer: - -```bash -export GH_PAT= -# optional: export GH_REPO=/ -./scripts/github/pretransfer-readiness.sh -``` - -2. Transfer the repository to your organization in GitHub settings. - -3. Immediately run post-transfer bootstrap: - -```bash -export GH_PAT= -# optional: export GH_REPO=/ -./scripts/github/posttransfer-bootstrap.sh -``` - -4. Add/confirm required secret in new org repo: -- `GOVERNANCE_VERIFY_PAT` - -5. Trigger and confirm these workflows on a small PR: -- `CodeQL` (`Analyze (JavaScript/TypeScript)`) -- `Secrets Scan` (`Gitleaks Scan`) -- `Contracts Release Gate (Containerized)` (`Release Gate Container`) -- `Scripts CI` (`Shellcheck Scripts`) - -6. Confirm branch protection required checks in GitHub UI match policy docs. - -## If something fails - -- Run `./scripts/github/verify-governance.sh` and fix missing checks/protections. -- Re-run `./scripts/github/posttransfer-bootstrap.sh` after corrections. - -## Done criteria - -- Transfer completed. -- Governance apply+verify passes. -- Required checks are merge-blocking on `dev`, `canary`, and `main`. diff --git a/package.json b/package.json index b870080..7065b19 100644 --- a/package.json +++ b/package.json @@ -63,3 +63,4 @@ } } + From 98e49c1730ac61b8df92704c30ec7ddaf7dbdf32 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Thu, 7 May 2026 20:43:24 +0700 Subject: [PATCH 33/60] chore(governance): clean up CODEOWNERS Remove decorative section dividers, redundant comments, and duplicate entry. Consolidate contract path globs. --- .github/CODEOWNERS | 70 ++++++++++------------------------------------ package.json | 1 + 2 files changed, 15 insertions(+), 56 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index acceca3..dd447ac 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,71 +1,32 @@ -# ============================================================================ -# CODEOWNERS - MARK Protocol Code Ownership & Review Requirements -# ============================================================================ -# Format: @owner [additional-reviewers] -# Paths are matched top-to-bottom; first match wins -# ============================================================================ +# Format: @owner +# Paths are matched top-to-bottom; first match wins. -# Global default owner (catches everything not explicitly listed) * @trade/maintainers -# ============================================================================ -# PROTOCOL-CRITICAL: Smart Contracts -# ============================================================================ -# All contract changes require owner review -# Consider requiring 2 approvals for main/canary deployments +# Contracts -/contracts/src/token/** @trade/maintainers -/contracts/src/bridge/** @trade/maintainers -/contracts/src/settlement/** @trade/maintainers -/contracts/src/errors/** @trade/maintainers -/contracts/src/interfaces/** @trade/maintainers - -# ============================================================================ -# TESTING: Contract Tests -# ============================================================================ - -/contracts/test/unit/** @trade/maintainers -/contracts/test/e2e/** @trade/maintainers -/contracts/test/invariant/** @trade/maintainers - -# ============================================================================ -# DEPLOYMENT & OPERATIONS: Scripts & Automation -# ============================================================================ -# Deployment scripts are critical - require careful review - -/contracts/script/deploy/** @trade/maintainers -/contracts/script/ops/** @trade/maintainers -/contracts/script/ci/** @trade/maintainers +/contracts/src/** @trade/maintainers +/contracts/test/** @trade/maintainers +/contracts/script/** @trade/maintainers +/contracts/foundry.toml @trade/maintainers +/contracts/Makefile @trade/maintainers /contracts/RUNBOOK.md @trade/maintainers /contracts/README.md @trade/maintainers -/contracts/Makefile @trade/maintainers -# ============================================================================ -# CI/CD & GOVERNANCE: Workflows & Branch Protection -# ============================================================================ -# Workflow changes affect all deployments - require review -# Governance changes must be kept in sync with policy +# CI and governance /.github/workflows/** @trade/maintainers /.github/PRODUCTION_GOVERNANCE_CHECKLIST.md @trade/maintainers /.github/CODEOWNERS @trade/maintainers - /BRANCHING.md @trade/maintainers /CONTRIBUTING.md @trade/maintainers -/DEPLOYMENT.md @trade/maintainers -/TROUBLESHOOTING.md @trade/maintainers -/AGENTS.md @trade/maintainers -# ============================================================================ -# FRONTEND APPLICATION -# ============================================================================ +# Frontend /src/** @trade/maintainers /index.html @trade/maintainers -# ============================================================================ -# CONFIGURATION & BUILD -# ============================================================================ +# Configuration and build /package.json @trade/maintainers /pnpm-lock.yaml @trade/maintainers @@ -76,12 +37,9 @@ /mprocs.yaml @trade/maintainers /remappings.txt @trade/maintainers -/contracts/foundry.toml @trade/maintainers -/contracts/Makefile @trade/maintainers - -# ============================================================================ -# DOCUMENTATION -# ============================================================================ +# Documentation /README.md @trade/maintainers +/DEPLOYMENT.md @trade/maintainers +/TROUBLESHOOTING.md @trade/maintainers /LICENSE @trade/maintainers diff --git a/package.json b/package.json index 7065b19..635cf38 100644 --- a/package.json +++ b/package.json @@ -64,3 +64,4 @@ } + From 638344e5ba94c4d55946bcdbc9268fdd8b078920 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 01:17:04 +0700 Subject: [PATCH 34/60] fix(ci): workflow correctness and consistency fixes Pin slither-analyzer==0.11.5, fix secrets-drift-guard false positives, fix verify-governance.sh dismiss_stale_reviews on dev, add canary to evidence-manifest trigger, fix inputs context, fix wait-port, add pull_request_target comments, add Docker layer caching. --- .github/workflows/contracts-ci.yml | 2 +- .../workflows/contracts-evidence-manifest.yml | 1 + .../workflows/contracts-mainnet-readiness.yml | 2 +- .../contracts-release-gate-container.yml | 5 ++++- .../workflows/release-evidence-validator.yml | 2 ++ .github/workflows/release-pr-checklist.yml | 2 ++ .github/workflows/secrets-drift-guard.yml | 3 +-- contracts/docker/release-gate.Dockerfile | 2 +- .../script/ci/run-release-gate-container.sh | 7 +++++- scripts/github/verify-governance.sh | 22 +++++++++++-------- 10 files changed, 32 insertions(+), 16 deletions(-) diff --git a/.github/workflows/contracts-ci.yml b/.github/workflows/contracts-ci.yml index 9b766da..7b77143 100644 --- a/.github/workflows/contracts-ci.yml +++ b/.github/workflows/contracts-ci.yml @@ -189,7 +189,7 @@ jobs: working-directory: . - name: Wait for supersim readiness - run: pnpm wait-port http://127.0.0.1:8420/ready + run: pnpm wait-port 8420 working-directory: . - name: Run integration suite diff --git a/.github/workflows/contracts-evidence-manifest.yml b/.github/workflows/contracts-evidence-manifest.yml index 2c97b58..b89f211 100644 --- a/.github/workflows/contracts-evidence-manifest.yml +++ b/.github/workflows/contracts-evidence-manifest.yml @@ -8,6 +8,7 @@ on: push: branches: - main + - canary - dev paths: - "contracts/**" diff --git a/.github/workflows/contracts-mainnet-readiness.yml b/.github/workflows/contracts-mainnet-readiness.yml index f345401..745a7b0 100644 --- a/.github/workflows/contracts-mainnet-readiness.yml +++ b/.github/workflows/contracts-mainnet-readiness.yml @@ -60,7 +60,7 @@ jobs: python-version: "3.11" - name: Install Slither - run: pip install slither-analyzer + run: pip install slither-analyzer==0.11.5 - name: Setup Foundry uses: foundry-rs/foundry-toolchain@v1 diff --git a/.github/workflows/contracts-release-gate-container.yml b/.github/workflows/contracts-release-gate-container.yml index 2f76a81..0c93815 100644 --- a/.github/workflows/contracts-release-gate-container.yml +++ b/.github/workflows/contracts-release-gate-container.yml @@ -32,7 +32,7 @@ jobs: run: working-directory: contracts env: - MARK_RELEASE_GATE_MODE: ${{ github.event.inputs.gate_mode || 'local' }} + MARK_RELEASE_GATE_MODE: ${{ inputs.gate_mode || 'local' }} steps: - name: Checkout @@ -40,5 +40,8 @@ jobs: with: submodules: recursive + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Run release gate in container run: make release-gate-container diff --git a/.github/workflows/release-evidence-validator.yml b/.github/workflows/release-evidence-validator.yml index 77df87b..07f21a9 100644 --- a/.github/workflows/release-evidence-validator.yml +++ b/.github/workflows/release-evidence-validator.yml @@ -1,6 +1,8 @@ name: Release Evidence Validator on: + # pull_request_target runs with base-branch permissions so the GITHUB_TOKEN + # can read PR metadata from forks. No untrusted code is checked out here. pull_request_target: branches: - main diff --git a/.github/workflows/release-pr-checklist.yml b/.github/workflows/release-pr-checklist.yml index 7d500ce..49c0ba7 100644 --- a/.github/workflows/release-pr-checklist.yml +++ b/.github/workflows/release-pr-checklist.yml @@ -1,6 +1,8 @@ name: Release PR Checklist on: + # pull_request_target runs with base-branch permissions so the GITHUB_TOKEN + # can read PR metadata from forks. No untrusted code is checked out here. pull_request_target: branches: - main diff --git a/.github/workflows/secrets-drift-guard.yml b/.github/workflows/secrets-drift-guard.yml index a70365a..5b10e54 100644 --- a/.github/workflows/secrets-drift-guard.yml +++ b/.github/workflows/secrets-drift-guard.yml @@ -42,8 +42,7 @@ jobs: -e 'github_pat_[A-Za-z0-9_]{20,}' \ -e 'AKIA[0-9A-Z]{16}' \ -e '-----BEGIN (RSA|EC|OPENSSH|DSA|PRIVATE) KEY-----' \ - -e '(^|\s)(MNEMONIC|SEED_PHRASE|PRIVATE_KEY)\s*[:=]\s*[^[:space:]]{12,}' \ - -e '0x[a-fA-F0-9]{64}' \ + -e '(MNEMONIC|SEED_PHRASE|PRIVATE_KEY)[[:space:]]*[:=][[:space:]]*[^[:space:]]{12,}' \ /tmp/pr.added.filtered > /tmp/secret.hits; then echo "Potential secret material detected in added lines:" cat /tmp/secret.hits diff --git a/contracts/docker/release-gate.Dockerfile b/contracts/docker/release-gate.Dockerfile index b4b0043..459a88f 100644 --- a/contracts/docker/release-gate.Dockerfile +++ b/contracts/docker/release-gate.Dockerfile @@ -14,6 +14,6 @@ RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ && corepack prepare pnpm@9.0.2 --activate # Slither analyzer is required by mainnet-readiness/release hardening checks. -RUN python3 -m pip install --no-cache-dir slither-analyzer +RUN python3 -m pip install --no-cache-dir slither-analyzer==0.11.5 WORKDIR /repo/contracts diff --git a/contracts/script/ci/run-release-gate-container.sh b/contracts/script/ci/run-release-gate-container.sh index 4316dd5..d96f5e9 100755 --- a/contracts/script/ci/run-release-gate-container.sh +++ b/contracts/script/ci/run-release-gate-container.sh @@ -12,7 +12,12 @@ if ! command -v docker >/dev/null 2>&1; then fi echo "[release-gate-container] building image: ${IMAGE_TAG}" -docker build -t "${IMAGE_TAG}" -f "${DOCKERFILE_PATH}" "${REPO_DIR}" +docker build \ + --cache-from "type=gha" \ + --cache-to "type=gha,mode=max" \ + -t "${IMAGE_TAG}" \ + -f "${DOCKERFILE_PATH}" \ + "${REPO_DIR}" echo "[release-gate-container] running release gate inside container" # Pass through environment variables commonly used by release-gate and remote mode. diff --git a/scripts/github/verify-governance.sh b/scripts/github/verify-governance.sh index 96a55b1..87a5f54 100755 --- a/scripts/github/verify-governance.sh +++ b/scripts/github/verify-governance.sh @@ -69,7 +69,8 @@ get_protection() { check_branch() { local branch="$1" - shift + local require_stale="$2" + shift 2 local -a expected=("$@") echo "[verify] branch=${branch}" @@ -83,11 +84,13 @@ check_branch() { return 1 fi - local stale - stale="$(jq -r '.required_pull_request_reviews.dismiss_stale_reviews // false' <<<"$json")" - if [[ "$stale" != "true" ]]; then - echo " FAIL: dismiss_stale_reviews is not enabled for ${branch}" >&2 - return 1 + if [[ "$require_stale" == "true" ]]; then + local stale + stale="$(jq -r '.required_pull_request_reviews.dismiss_stale_reviews // false' <<<"$json")" + if [[ "$stale" != "true" ]]; then + echo " FAIL: dismiss_stale_reviews is not enabled for ${branch}" >&2 + return 1 + fi fi local missing=0 @@ -105,8 +108,9 @@ check_branch() { echo " PASS" } -check_branch dev "${require_checks_dev[@]}" -check_branch canary "${require_checks_dev[@]}" -check_branch main "${require_checks_main[@]}" +# dev has 0 required approvals so dismiss_stale_reviews is not applicable. +check_branch dev false "${require_checks_dev[@]}" +check_branch canary true "${require_checks_dev[@]}" +check_branch main true "${require_checks_main[@]}" echo "[verify] governance baseline active for ${GH_REPO}" From 35009d831b9a6cb285490a9644f124d14f2c803c Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 01:48:09 +0700 Subject: [PATCH 35/60] feat(contracts): migrate AttestedSettlementVerifier to EIP-712 Replace hybrid EIP-191 pattern with standard EIP-712 typed data signing. Expose settlementDigest() for off-chain signers. Add NatSpec on proof encoding and contextHash. 71 tests pass. --- .../verifier/AttestedSettlementVerifier.sol | 63 ++++++++++++++----- .../e2e/settlement/MARKSettlementE2E.t.sol | 32 +--------- .../AttestedSettlementVerifier.t.sol | 28 +-------- 3 files changed, 49 insertions(+), 74 deletions(-) diff --git a/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol b/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol index d7dc557..e60e414 100644 --- a/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol +++ b/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol @@ -5,20 +5,28 @@ import { AccessControlDefaultAdminRules } from "@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol"; import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; +import {EIP712} from "@openzeppelin/contracts/utils/cryptography/EIP712.sol"; import {IUTXOSettlementVerifier} from "../interfaces/IUTXOSettlementVerifier.sol"; import {ZeroAddress} from "@interop-lib/libraries/errors/CommonErrors.sol"; /// @title AttestedSettlementVerifier -/// @notice Signature-based verifier for settlement intents. +/// @notice Signature-based verifier for settlement intents using EIP-712 typed data signing. /// @dev Intended as a production-safe bridge step before zk verifier integration. -/// Proof encoding: +/// Proof encoding (160 bytes — 5 × 32-byte ABI words): /// `abi.encode(uint256 deadline, bytes32 contextHash, uint8 v, bytes32 r, bytes32 s)`. -/// Settlement digest binds to the calling settlement module address. -contract AttestedSettlementVerifier is IUTXOSettlementVerifier, AccessControlDefaultAdminRules { - using MessageHashUtils for bytes32; +/// The digest binds to the verifier address, chain id, and settlement module address, +/// preventing cross-verifier and cross-module replay. +/// `contextHash` is an opaque attester-controlled binding value (e.g. off-chain UTXO +/// state root or batch id) included in the signed digest to tie the attestation to +/// external state without exposing that state on-chain. +contract AttestedSettlementVerifier is IUTXOSettlementVerifier, EIP712, AccessControlDefaultAdminRules { + using ECDSA for bytes32; + + /// @dev EIP-712 type hash for the SettlementAttestation struct. + bytes32 public constant SETTLEMENT_ATTESTATION_TYPEHASH = keccak256( + "SettlementAttestation(bytes32 intentId,address verifier,address settlementModule,address account,uint256 amount,bool isMint,bytes32 contextHash,uint256 deadline,uint256 chainId)" + ); - bytes32 public constant SETTLEMENT_ATTESTATION_DOMAIN = keccak256("AttestedSettlementVerifier.v1"); uint48 public constant DEFAULT_ADMIN_DELAY = 1 days; bytes32 public constant ATTESTER_ROLE = keccak256("ATTESTER_ROLE"); @@ -32,7 +40,10 @@ contract AttestedSettlementVerifier is IUTXOSettlementVerifier, AccessControlDef bytes32 s; } - constructor(address initialAdmin) AccessControlDefaultAdminRules(DEFAULT_ADMIN_DELAY, initialAdmin) { + constructor(address initialAdmin) + EIP712("AttestedSettlementVerifier", "1") + AccessControlDefaultAdminRules(DEFAULT_ADMIN_DELAY, initialAdmin) + { if (initialAdmin == address(0)) revert ZeroAddress(); } @@ -59,14 +70,17 @@ contract AttestedSettlementVerifier is IUTXOSettlementVerifier, AccessControlDef override returns (bool) { - if (intentId == bytes32(0) || settlementModule == address(0) || account == address(0) || amount == 0) return false; + if (intentId == bytes32(0) || settlementModule == address(0) || account == address(0) || amount == 0) { + return false; + } + // 160 bytes = 5 × 32-byte ABI words from abi.encode of the Attestation struct + // (uint8 v is padded to 32 bytes by ABI encoding). if (proof.length != 160) return false; Attestation memory att = abi.decode(proof, (Attestation)); if (att.deadline < block.timestamp) return false; - bytes32 digest = - _settlementDigest(intentId, settlementModule, account, amount, isMint, att.contextHash, att.deadline); + bytes32 digest = _settlementDigest(intentId, settlementModule, account, amount, isMint, att.contextHash, att.deadline); bytes memory signature = abi.encodePacked(att.r, att.s, att.v); (address signer, ECDSA.RecoverError err,) = ECDSA.tryRecover(digest, signature); if (err != ECDSA.RecoverError.NoError || signer == address(0)) return false; @@ -74,6 +88,21 @@ contract AttestedSettlementVerifier is IUTXOSettlementVerifier, AccessControlDef return hasRole(ATTESTER_ROLE, signer); } + /// @dev Returns the EIP-712 digest for a settlement attestation. + /// Exposed so off-chain signers can compute the exact bytes to sign without + /// reading internal implementation details. + function settlementDigest( + bytes32 intentId, + address settlementModule, + address account, + uint256 amount, + bool isMint, + bytes32 contextHash, + uint256 deadline + ) external view returns (bytes32) { + return _settlementDigest(intentId, settlementModule, account, amount, isMint, contextHash, deadline); + } + function _settlementDigest( bytes32 intentId, address settlementModule, @@ -83,20 +112,20 @@ contract AttestedSettlementVerifier is IUTXOSettlementVerifier, AccessControlDef bytes32 contextHash, uint256 deadline ) internal view returns (bytes32) { - bytes32 settlementHash = keccak256( + bytes32 structHash = keccak256( abi.encode( - SETTLEMENT_ATTESTATION_DOMAIN, - address(this), - block.chainid, + SETTLEMENT_ATTESTATION_TYPEHASH, intentId, + address(this), settlementModule, account, amount, isMint, contextHash, - deadline + deadline, + block.chainid ) ); - return settlementHash.toEthSignedMessageHash(); + return _hashTypedDataV4(structHash); } } diff --git a/contracts/test/e2e/settlement/MARKSettlementE2E.t.sol b/contracts/test/e2e/settlement/MARKSettlementE2E.t.sol index ba09220..f32deea 100644 --- a/contracts/test/e2e/settlement/MARKSettlementE2E.t.sol +++ b/contracts/test/e2e/settlement/MARKSettlementE2E.t.sol @@ -90,21 +90,7 @@ contract MARKSettlementE2ETest is Test { function testInvalidAttestationReverts() public { uint256 deadline = block.timestamp + 1 hours; - bytes32 settlementHash = keccak256( - abi.encode( - verifier.SETTLEMENT_ATTESTATION_DOMAIN(), - address(verifier), - block.chainid, - INTENT_MINT, - address(module), - user, - 1 ether, - true, - CONTEXT_MINT, - deadline - ) - ); - bytes32 digest = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", settlementHash)); + bytes32 digest = verifier.settlementDigest(INTENT_MINT, address(module), user, 1 ether, true, CONTEXT_MINT, deadline); (uint8 v, bytes32 r, bytes32 s) = vm.sign(0xDEAD, digest); bytes memory wrongProof = abi.encode(deadline, CONTEXT_MINT, v, r, s); @@ -133,21 +119,7 @@ contract MARKSettlementE2ETest is Test { bytes32 contextHash, uint256 deadline ) internal view returns (bytes memory) { - bytes32 settlementHash = keccak256( - abi.encode( - verifier.SETTLEMENT_ATTESTATION_DOMAIN(), - address(verifier), - block.chainid, - intentId, - moduleAddress, - account, - amount, - isMint, - contextHash, - deadline - ) - ); - bytes32 digest = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", settlementHash)); + bytes32 digest = verifier.settlementDigest(intentId, moduleAddress, account, amount, isMint, contextHash, deadline); (uint8 v, bytes32 r, bytes32 s) = vm.sign(attesterPk, digest); return abi.encode(deadline, contextHash, v, r, s); } diff --git a/contracts/test/unit/settlement/AttestedSettlementVerifier.t.sol b/contracts/test/unit/settlement/AttestedSettlementVerifier.t.sol index 0f358fe..8426826 100644 --- a/contracts/test/unit/settlement/AttestedSettlementVerifier.t.sol +++ b/contracts/test/unit/settlement/AttestedSettlementVerifier.t.sol @@ -102,34 +102,8 @@ contract AttestedSettlementVerifierTest is Test { uint256 deadline, uint256 signerPk ) internal view returns (bytes memory proof) { - bytes32 digest = _settlementDigest(intentId, moduleAddress, account, amount, isMint, contextHash, deadline); + bytes32 digest = verifier.settlementDigest(intentId, moduleAddress, account, amount, isMint, contextHash, deadline); (uint8 v, bytes32 r, bytes32 s) = vm.sign(signerPk, digest); proof = abi.encode(deadline, contextHash, v, r, s); } - - function _settlementDigest( - bytes32 intentId, - address moduleAddress, - address account, - uint256 amount, - bool isMint, - bytes32 contextHash, - uint256 deadline - ) internal view returns (bytes32) { - bytes32 settlementHash = keccak256( - abi.encode( - verifier.SETTLEMENT_ATTESTATION_DOMAIN(), - address(verifier), - block.chainid, - intentId, - moduleAddress, - account, - amount, - isMint, - contextHash, - deadline - ) - ); - return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", settlementHash)); - } } From d2e24c3c95e691a07a7ef7c0e289aedfa3b8f2b5 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 02:09:47 +0700 Subject: [PATCH 36/60] chore: improve gitignore coverage Add .env/.env.*/*.env and supersim-logs/ to root gitignore. Add coverage/ to contracts gitignore. --- .gitignore | 8 ++++++++ contracts/.gitignore | 3 +++ 2 files changed, 11 insertions(+) diff --git a/.gitignore b/.gitignore index a547bf3..a7b5dcf 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,14 @@ dist dist-ssr *.local +# Environment files +.env +.env.* +*.env + +# Local dev runtime output +supersim-logs/ + # Editor directories and files .vscode/* !.vscode/extensions.json diff --git a/contracts/.gitignore b/contracts/.gitignore index 58af24b..b15aa4c 100644 --- a/contracts/.gitignore +++ b/contracts/.gitignore @@ -5,6 +5,9 @@ out/ # Ignores all broadcast logs /broadcast/ +# Coverage output +coverage/ + # Docs docs/ From 9c45f70879c34f5955f6b76ab7fd01ff7042f63b Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 03:08:59 +0700 Subject: [PATCH 37/60] fix(ci): reliability and correctness fixes Add timeout-minutes:15 to stuck jobs, replace rg with grep -Eo in smoke script, pin slither==0.11.5 in Makefile, add explicit invariant runs=256 to foundry.toml. --- .github/workflows/contracts-ci.yml | 2 ++ contracts/Makefile | 2 +- contracts/foundry.toml | 4 +++- contracts/script/ops/smoke-production-mode.sh | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/contracts-ci.yml b/.github/workflows/contracts-ci.yml index 7b77143..5d5ff5b 100644 --- a/.github/workflows/contracts-ci.yml +++ b/.github/workflows/contracts-ci.yml @@ -48,6 +48,7 @@ jobs: name: Contracts Release Check (Dry-Run + Execute Smoke) runs-on: ubuntu-latest needs: contracts-unit-invariant + timeout-minutes: 15 defaults: run: working-directory: contracts @@ -127,6 +128,7 @@ jobs: name: Contracts Production Mode Smoke runs-on: ubuntu-latest needs: contracts-unit-invariant + timeout-minutes: 15 defaults: run: working-directory: contracts diff --git a/contracts/Makefile b/contracts/Makefile index e8599f2..94c0aa9 100644 --- a/contracts/Makefile +++ b/contracts/Makefile @@ -78,7 +78,7 @@ verify-evidence-signature: @./script/ops/verify-evidence-signature.sh slither-install: - @python3 -m pip install --user slither-analyzer + @python3 -m pip install --user slither-analyzer==0.11.5 slither-core: @command -v slither >/dev/null 2>&1 || { \ diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 74574b3..c707b49 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -8,12 +8,14 @@ broadcast = "broadcast" libs = ["lib"] no_match_path = "test/integration/**" fs_permissions = [{ access = "read-write", path = "./broadcast" }] - remappings = [ "@interop-lib/=lib/interop-lib/src/", "@openzeppelin/=lib/createx/lib/openzeppelin-contracts/" ] +[profile.default.invariant] +runs = 256 + [profile.integration] src = "src" out = "out" diff --git a/contracts/script/ops/smoke-production-mode.sh b/contracts/script/ops/smoke-production-mode.sh index bf124b4..8d37e8f 100755 --- a/contracts/script/ops/smoke-production-mode.sh +++ b/contracts/script/ops/smoke-production-mode.sh @@ -63,7 +63,7 @@ SEND_JSON="$(cast send --rpc-url "$RPC_URL" --private-key "$PRIVATE_KEY" --creat VERIFIER_TX="$(echo "$SEND_JSON" | jq -r '.transactionHash' 2>/dev/null || true)" if [[ -z "$VERIFIER_TX" || "$VERIFIER_TX" == "null" ]]; then SEND_OUT="$(cast send --rpc-url "$RPC_URL" --private-key "$PRIVATE_KEY" --create "$DATA")" - VERIFIER_TX="$(echo "$SEND_OUT" | rg -o '0x[0-9a-fA-F]{64}' | head -n1 || true)" + VERIFIER_TX="$(echo "$SEND_OUT" | grep -Eo '0x[0-9a-fA-F]{64}' | head -n1 || true)" fi VERIFIER_ADDRESS="$(cast receipt "$VERIFIER_TX" --rpc-url "$RPC_URL" --json | jq -r '.contractAddress')" From 8bfc148dee9be6f490a4f4ee5a9e038a48d82ecc Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 03:47:13 +0700 Subject: [PATCH 38/60] chore(deps): ignore transitive alerts from super-cli MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ignore @hono/node-server, drizzle-orm, @stablelib/ed25519 scoped to vulnerable versions — all transitive from super-cli dev tool, no upstream fix available. --- .github/dependabot.yml | 9 +++++++++ package.json | 1 + 2 files changed, 10 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8bf9291..ae334ac 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -38,3 +38,12 @@ updates: - "patch" commit-message: prefix: "chore(deps)" + ignore: + # Transitive deps from @eth-optimism/super-cli (dev/deploy tool, not runtime). + # No upstream fix available — re-evaluate when super-cli bumps these packages. + - dependency-name: "@hono/node-server" + versions: ["<= 1.13.8"] + - dependency-name: "drizzle-orm" + versions: ["<= 0.38.1"] + - dependency-name: "@stablelib/ed25519" + versions: ["<= 1.0.3"] diff --git a/package.json b/package.json index 635cf38..166e635 100644 --- a/package.json +++ b/package.json @@ -65,3 +65,4 @@ + From 3cbd04863e46ecfa1c386c1ce6eb3670c2108e27 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 04:51:25 +0700 Subject: [PATCH 39/60] docs: add SECURITY.md Reporting channel, scope, response SLA, and supported versions. --- SECURITY.md | 31 +++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 32 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..cdded4e --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,31 @@ +# Security Policy + +## Reporting a Vulnerability + +Use [GitHub private vulnerability reporting](https://github.com/trade/mark/security/advisories/new) to report security issues. This keeps the disclosure private until a fix is ready. + +Do not open a public issue for security vulnerabilities. + +## Scope + +In scope: + +- Smart contracts (`contracts/src/`) +- Deployment and operational scripts (`contracts/script/`) +- CI/CD workflows (`.github/workflows/`) + +Out of scope: + +- The frontend (`src/`) — it is a read-only dev dashboard with no wallet interaction or user funds +- Local development tooling (`supersim`, `super-cli`, `mprocs`) +- Known transitive dependency alerts from `@eth-optimism/super-cli` with no upstream fix available + +## Response + +- Acknowledgement within 3 business days +- Status update within 7 business days +- Coordinated disclosure after a fix is available or a risk decision is made + +## Supported Versions + +Only the latest commit on `main` is supported. Pre-production branches (`dev`, `canary`) are not considered production. diff --git a/package.json b/package.json index 166e635..f6bee7a 100644 --- a/package.json +++ b/package.json @@ -66,3 +66,4 @@ + From 5fa1d838db87c04a43828774e8571aa0fd18eb27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 05:25:52 +0700 Subject: [PATCH 40/60] chore(deps): bump @types/node from 22.13.1 to 25.6.1 Type definitions update. --- package.json | 2 +- pnpm-lock.yaml | 44 ++++++++++++++++++++++---------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index f6bee7a..957f5b1 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "devDependencies": { "@eslint/js": "^9.19.0", "@eth-optimism/super-cli": "^0.0.13", - "@types/node": "^22.13.1", + "@types/node": "^25.6.1", "@types/react": "^18.2.55", "@types/react-dom": "^18.2.19", "@vitejs/plugin-react": "^4.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3da337b..93b5e3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 1.2.4(@types/react@18.3.18)(react@18.3.1) '@tailwindcss/vite': specifier: ^4.2.4 - version: 4.2.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 4.2.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0)) '@tanstack/react-query': specifier: ^5.100.9 version: 5.100.9(react@18.3.1) @@ -62,10 +62,10 @@ importers: version: 9.20.0 '@eth-optimism/super-cli': specifier: ^0.0.13 - version: 0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0)) '@types/node': - specifier: ^22.13.1 - version: 22.13.1 + specifier: ^25.6.1 + version: 25.6.1 '@types/react': specifier: ^18.2.55 version: 18.3.18 @@ -74,7 +74,7 @@ importers: version: 18.3.5(@types/react@18.3.18) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 4.3.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0)) eslint: specifier: ^9.19.0 version: 9.20.0(jiti@2.7.0) @@ -104,7 +104,7 @@ importers: version: 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) vite: specifier: 6.4.2 - version: 6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) + version: 6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0) wait-port: specifier: ^1.1.0 version: 1.1.0 @@ -1053,8 +1053,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.13.1': - resolution: {integrity: sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==} + '@types/node@25.6.1': + resolution: {integrity: sha512-coJCN8O1q4AGyyqCAUSP06P+SrMTu18BkEj3NVAK07q6QUneD2wzj3CLv9+yP+BMeZQlMvneXqqvDe3w+xcq7g==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2967,8 +2967,8 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@7.19.2: + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} @@ -3594,14 +3594,14 @@ snapshots: '@eslint/core': 0.13.0 levn: 0.4.1 - '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': + '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: '@eth-optimism/viem': 0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) '@hono/node-server': 1.13.8(hono@4.12.17) '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)) '@libsql/client': 0.14.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@tanstack/react-query': 5.100.9(react@18.3.1) - '@vitejs/plugin-react': 4.3.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0)) + '@vitejs/plugin-react': 4.3.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0)) '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) abitype: 1.2.4(typescript@5.7.3)(zod@3.24.1) chalk: 5.4.1 @@ -4338,12 +4338,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 - '@tailwindcss/vite@4.2.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': + '@tailwindcss/vite@4.2.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: '@tailwindcss/node': 4.2.4 '@tailwindcss/oxide': 4.2.4 tailwindcss: 4.2.4 - vite: 6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0) '@tanstack/query-core@5.100.9': {} @@ -4387,9 +4387,9 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@22.13.1': + '@types/node@25.6.1': dependencies: - undici-types: 6.20.0 + undici-types: 7.19.2 '@types/normalize-package-data@2.4.4': {} @@ -4410,7 +4410,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.13.1 + '@types/node': 25.6.1 '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3))(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3)': dependencies: @@ -4503,14 +4503,14 @@ snapshots: '@typescript-eslint/types': 8.59.2 eslint-visitor-keys: 5.0.1 - '@vitejs/plugin-react@4.3.4(vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0))': + '@vitejs/plugin-react@4.3.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0) transitivePeerDependencies: - supports-color @@ -6519,7 +6519,7 @@ snapshots: uncrypto@0.1.3: {} - undici-types@6.20.0: {} + undici-types@7.19.2: {} unicorn-magic@0.1.0: {} @@ -6612,7 +6612,7 @@ snapshots: - utf-8-validate - zod - vite@6.4.2(@types/node@22.13.1)(jiti@2.7.0)(lightningcss@1.32.0): + vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -6621,7 +6621,7 @@ snapshots: rollup: 4.60.3 tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 22.13.1 + '@types/node': 25.6.1 fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 From ee25173cd205130d46965da1490bcd696f3e1d2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 05:33:53 +0700 Subject: [PATCH 41/60] chore(deps): bump typescript from 5.7.3 to 6.0.3 Add ignoreDeprecations:6.0 for baseUrl deprecation warning. --- package.json | 2 +- pnpm-lock.yaml | 206 ++++++++++++++++++++++++------------------------- tsconfig.json | 1 + 3 files changed, 105 insertions(+), 104 deletions(-) diff --git a/package.json b/package.json index 957f5b1..8e1662f 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "mprocs": "^0.9.2", "prettier": "^3.8.3", "supersim": "0.1.0-alpha.45", - "typescript": "~5.7.2", + "typescript": "~6.0.3", "typescript-eslint": "^8.59.2", "vite": "6.4.2", "wait-port": "^1.1.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 93b5e3c..752d9e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@eth-optimism/viem': specifier: ^0.4.15 - version: 0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + version: 0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) '@radix-ui/react-separator': specifier: ^1.1.8 version: 1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -19,13 +19,13 @@ importers: version: 1.2.4(@types/react@18.3.18)(react@18.3.1) '@tailwindcss/vite': specifier: ^4.2.4 - version: 4.2.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 4.2.4(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0)) '@tanstack/react-query': specifier: ^5.100.9 version: 5.100.9(react@18.3.1) abitype: specifier: ^1.2.4 - version: 1.2.4(typescript@5.7.3)(zod@3.24.1) + version: 1.2.4(typescript@6.0.3)(zod@3.24.1) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -52,20 +52,20 @@ importers: version: 1.0.7(tailwindcss@4.2.4) viem: specifier: ^2.48.8 - version: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + version: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) wagmi: specifier: ^2.14.11 - version: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) + version: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) devDependencies: '@eslint/js': specifier: ^9.19.0 version: 9.20.0 '@eth-optimism/super-cli': specifier: ^0.0.13 - version: 0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0)) '@types/node': specifier: ^25.6.1 - version: 25.6.1 + version: 25.6.2 '@types/react': specifier: ^18.2.55 version: 18.3.18 @@ -74,7 +74,7 @@ importers: version: 18.3.5(@types/react@18.3.18) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 4.3.4(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0)) eslint: specifier: ^9.19.0 version: 9.20.0(jiti@2.7.0) @@ -97,14 +97,14 @@ importers: specifier: 0.1.0-alpha.45 version: 0.1.0-alpha.45 typescript: - specifier: ~5.7.2 - version: 5.7.3 + specifier: ~6.0.3 + version: 6.0.3 typescript-eslint: specifier: ^8.59.2 - version: 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + version: 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3) vite: specifier: 6.4.2 - version: 6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0) + version: 6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0) wait-port: specifier: ^1.1.0 version: 1.1.0 @@ -1053,8 +1053,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@25.6.1': - resolution: {integrity: sha512-coJCN8O1q4AGyyqCAUSP06P+SrMTu18BkEj3NVAK07q6QUneD2wzj3CLv9+yP+BMeZQlMvneXqqvDe3w+xcq7g==} + '@types/node@25.6.2': + resolution: {integrity: sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2953,8 +2953,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true @@ -3594,16 +3594,16 @@ snapshots: '@eslint/core': 0.13.0 levn: 0.4.1 - '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0))': + '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: - '@eth-optimism/viem': 0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + '@eth-optimism/viem': 0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) '@hono/node-server': 1.13.8(hono@4.12.17) '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)) '@libsql/client': 0.14.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@tanstack/react-query': 5.100.9(react@18.3.1) - '@vitejs/plugin-react': 4.3.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0)) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) - abitype: 1.2.4(typescript@5.7.3)(zod@3.24.1) + '@vitejs/plugin-react': 4.3.4(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0)) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + abitype: 1.2.4(typescript@6.0.3)(zod@3.24.1) chalk: 5.4.1 dependency-graph: 1.0.0 dotenv: 16.4.7 @@ -3620,8 +3620,8 @@ snapshots: pastel: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6))(react@18.3.1)(zod@3.24.1) react: 18.3.1 smol-toml: 1.6.1 - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) - wagmi: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + wagmi: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) zod: 3.24.1 zod-validation-error: 3.4.0(zod@3.24.1) zustand: 5.0.3(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) @@ -3681,13 +3681,13 @@ snapshots: - utf-8-validate - vite - '@eth-optimism/viem@0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))': + '@eth-optimism/viem@0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))': dependencies: - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) - '@eth-optimism/viem@0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))': + '@eth-optimism/viem@0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))': dependencies: - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) '@ethereumjs/common@3.2.0': dependencies: @@ -4147,9 +4147,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.60.3': optional: true - '@safe-global/safe-apps-provider@0.18.5(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)': + '@safe-global/safe-apps-provider@0.18.5(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -4157,10 +4157,10 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) transitivePeerDependencies: - bufferutil - typescript @@ -4338,12 +4338,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 - '@tailwindcss/vite@4.2.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0))': + '@tailwindcss/vite@4.2.4(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: '@tailwindcss/node': 4.2.4 '@tailwindcss/oxide': 4.2.4 tailwindcss: 4.2.4 - vite: 6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0) '@tanstack/query-core@5.100.9': {} @@ -4387,7 +4387,7 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@25.6.1': + '@types/node@25.6.2': dependencies: undici-types: 7.19.2 @@ -4410,42 +4410,42 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 25.6.1 + '@types/node': 25.6.2 - '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3))(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/parser': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/type-utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) - '@typescript-eslint/utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.59.2 eslint: 9.20.0(jiti@2.7.0) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3)': + '@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.59.2 '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.59.2 debug: 4.4.3 eslint: 9.20.0(jiti@2.7.0) - typescript: 5.7.3 + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.59.2(typescript@5.7.3)': + '@typescript-eslint/project-service@8.59.2(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.7.3) + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) '@typescript-eslint/types': 8.59.2 debug: 4.4.3 - typescript: 5.7.3 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -4454,47 +4454,47 @@ snapshots: '@typescript-eslint/types': 8.59.2 '@typescript-eslint/visitor-keys': 8.59.2 - '@typescript-eslint/tsconfig-utils@8.59.2(typescript@5.7.3)': + '@typescript-eslint/tsconfig-utils@8.59.2(typescript@6.0.3)': dependencies: - typescript: 5.7.3 + typescript: 6.0.3 - '@typescript-eslint/type-utils@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.3) - '@typescript-eslint/utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3) debug: 4.4.3 eslint: 9.20.0(jiti@2.7.0) - ts-api-utils: 2.5.0(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.59.2': {} - '@typescript-eslint/typescript-estree@8.59.2(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.59.2(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.59.2(typescript@5.7.3) - '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.7.3) + '@typescript-eslint/project-service': 8.59.2(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) '@typescript-eslint/types': 8.59.2 '@typescript-eslint/visitor-keys': 8.59.2 debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.16 - ts-api-utils: 2.5.0(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3)': + '@typescript-eslint/utils@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.20.0(jiti@2.7.0)) '@typescript-eslint/scope-manager': 8.59.2 '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) eslint: 9.20.0(jiti@2.7.0) - typescript: 5.7.3 + typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -4503,29 +4503,29 @@ snapshots: '@typescript-eslint/types': 8.59.2 eslint-visitor-keys: 5.0.1 - '@vitejs/plugin-react@4.3.4(vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0))': + '@vitejs/plugin-react@4.3.4(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0) transitivePeerDependencies: - supports-color - '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1)': + '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1)': dependencies: '@coinbase/wallet-sdk': 4.3.0 '@metamask/sdk': 0.32.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) - '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) '@walletconnect/ethereum-provider': 2.17.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) optionalDependencies: - typescript: 5.7.3 + typescript: 6.0.3 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4554,15 +4554,15 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))': + '@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.7(typescript@5.7.3) - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + mipd: 0.0.7(typescript@6.0.3) + viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) zustand: 5.0.0(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) optionalDependencies: '@tanstack/query-core': 5.100.9 - typescript: 5.7.3 + typescript: 6.0.3 transitivePeerDependencies: - '@types/react' - immer @@ -4921,14 +4921,14 @@ snapshots: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 - abitype@1.2.3(typescript@5.7.3)(zod@3.24.1): + abitype@1.2.3(typescript@6.0.3)(zod@3.24.1): optionalDependencies: - typescript: 5.7.3 + typescript: 6.0.3 zod: 3.24.1 - abitype@1.2.4(typescript@5.7.3)(zod@3.24.1): + abitype@1.2.4(typescript@6.0.3)(zod@3.24.1): optionalDependencies: - typescript: 5.7.3 + typescript: 6.0.3 zod: 3.24.1 acorn-jsx@5.3.2(acorn@8.16.0): @@ -5942,9 +5942,9 @@ snapshots: dependencies: brace-expansion: 1.1.14 - mipd@0.0.7(typescript@5.7.3): + mipd@0.0.7(typescript@6.0.3): optionalDependencies: - typescript: 5.7.3 + typescript: 6.0.3 motion@10.16.2: dependencies: @@ -6028,7 +6028,7 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ox@0.14.20(typescript@5.7.3)(zod@3.24.1): + ox@0.14.20(typescript@6.0.3)(zod@3.24.1): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -6036,10 +6036,10 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.4(typescript@5.7.3)(zod@3.24.1) + abitype: 1.2.4(typescript@6.0.3)(zod@3.24.1) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.7.3 + typescript: 6.0.3 transitivePeerDependencies: - zod @@ -6474,9 +6474,9 @@ snapshots: tr46@0.0.3: {} - ts-api-utils@2.5.0(typescript@5.7.3): + ts-api-utils@2.5.0(typescript@6.0.3): dependencies: - typescript: 5.7.3 + typescript: 6.0.3 tslib@1.14.1: {} @@ -6498,18 +6498,18 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typescript-eslint@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3): + typescript-eslint@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3))(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) - '@typescript-eslint/parser': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) - '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.7.3) - '@typescript-eslint/utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3))(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.2(eslint@9.20.0(jiti@2.7.0))(typescript@6.0.3) eslint: 9.20.0(jiti@2.7.0) - typescript: 5.7.3 + typescript: 6.0.3 transitivePeerDependencies: - supports-color - typescript@5.7.3: {} + typescript@6.0.3: {} ufo@1.6.4: {} @@ -6595,24 +6595,24 @@ snapshots: '@types/react': 18.3.18 react: 18.3.1 - viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1): + viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.7.3)(zod@3.24.1) + abitype: 1.2.3(typescript@6.0.3)(zod@3.24.1) isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)) - ox: 0.14.20(typescript@5.7.3)(zod@3.24.1) + ox: 0.14.20(typescript@6.0.3)(zod@3.24.1) ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: - typescript: 5.7.3 + typescript: 6.0.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - vite@6.4.2(@types/node@25.6.1)(jiti@2.7.0)(lightningcss@1.32.0): + vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -6621,21 +6621,21 @@ snapshots: rollup: 4.60.3 tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 25.6.1 + '@types/node': 25.6.2 fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 - wagmi@2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1): + wagmi@2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1): dependencies: '@tanstack/react-query': 5.100.9(react@18.3.1) - '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@5.7.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@5.7.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) react: 18.3.1 use-sync-external-store: 1.4.0(react@18.3.1) - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.7.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) optionalDependencies: - typescript: 5.7.3 + typescript: 6.0.3 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' diff --git a/tsconfig.json b/tsconfig.json index 2b78387..0f1bf1b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,7 @@ "files": [], "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }], "compilerOptions": { + "ignoreDeprecations": "6.0", "baseUrl": ".", "paths": { "@/*": ["./src/*"] From 71dc94c094ca64b6d865f256760a5ff088e20d96 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 05:38:47 +0700 Subject: [PATCH 42/60] chore(deps): bump frontend-minor-patch group viem, debug, and other minor/patch updates. --- package.json | 2 +- pnpm-lock.yaml | 107 ++++++++++++++++++++++--------------------------- 2 files changed, 48 insertions(+), 61 deletions(-) diff --git a/package.json b/package.json index 8e1662f..8259aeb 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "tailwind-merge": "^3.5.0", "tailwindcss": "^4.2.4", "tailwindcss-animate": "^1.0.7", - "viem": "^2.48.8", + "viem": "^2.48.11", "wagmi": "^2.14.11" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 752d9e6..39fed3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@eth-optimism/viem': specifier: ^0.4.15 - version: 0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + version: 0.4.15(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) '@radix-ui/react-separator': specifier: ^1.1.8 version: 1.1.8(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -51,11 +51,11 @@ importers: specifier: ^1.0.7 version: 1.0.7(tailwindcss@4.2.4) viem: - specifier: ^2.48.8 - version: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + specifier: ^2.48.11 + version: 2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) wagmi: specifier: ^2.14.11 - version: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) + version: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) devDependencies: '@eslint/js': specifier: ^9.19.0 @@ -464,8 +464,8 @@ packages: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.4.1': - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} '@inkjs/ui@2.0.0': @@ -1519,15 +1519,6 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -1699,8 +1690,8 @@ packages: resolution: {integrity: sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==} engines: {bun: '>=1', deno: '>=2', node: '>=16'} - electron-to-chromium@1.5.351: - resolution: {integrity: sha512-9D7Iqx8RImSvCnOsj86rCH6eQjZFQoM04Jn6HnZVM0Nu/G58/gmKYQ1d12MZTbjQbQSTGI8nwEy07ErsA2slLA==} + electron-to-chromium@1.5.352: + resolution: {integrity: sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg==} elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -1724,8 +1715,8 @@ packages: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} - enhanced-resolve@5.21.0: - resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} + enhanced-resolve@5.21.1: + resolution: {integrity: sha512-8p7DUVq6XJnZEz9W4oSwiwycxBIjHjRzYb3Je3zVN+geKTRQKzAkR/K4PBExlS0090d9nshak6phMUxr3PDjmQ==} engines: {node: '>=10.13.0'} environment@1.1.0: @@ -2026,8 +2017,8 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - hono@4.12.17: - resolution: {integrity: sha512-FbJJNb/XgX7YW0hX/V8w5oYLztKEsRLykCMZWt1WdLtsfjzMvmoqWBA4H4t5norinq8/rh20oiZYr+WSl4UzAQ==} + hono@4.12.18: + resolution: {integrity: sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==} engines: {node: '>=16.9.0'} hosted-git-info@7.0.2: @@ -3099,8 +3090,8 @@ packages: react: optional: true - viem@2.48.8: - resolution: {integrity: sha512-Xj3Nrt66SKtn06kczU91ELn9Difr84ZM5A62BTlaisT5lpgt058i2mBkfMZCXHGb1ocOLjzC2ztPhD0Lvky7uQ==} + viem@2.48.11: + resolution: {integrity: sha512-+WZ5E0dBS6GtKb+1wEk5DeYRRRW42+pFnXCo67Ydodf42sBwO+hu3wnQy66lc4MKmHz+llPVdbyehYr9oTE2iw==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -3352,7 +3343,7 @@ snapshots: '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.0 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -3596,13 +3587,13 @@ snapshots: '@eth-optimism/super-cli@0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0))': dependencies: - '@eth-optimism/viem': 0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) - '@hono/node-server': 1.13.8(hono@4.12.17) + '@eth-optimism/viem': 0.3.3(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + '@hono/node-server': 1.13.8(hono@4.12.18) '@inkjs/ui': 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6)) '@libsql/client': 0.14.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@tanstack/react-query': 5.100.9(react@18.3.1) '@vitejs/plugin-react': 4.3.4(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0)) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) abitype: 1.2.4(typescript@6.0.3)(zod@3.24.1) chalk: 5.4.1 dependency-graph: 1.0.0 @@ -3611,7 +3602,7 @@ snapshots: fast-json-stable-stringify: 2.1.0 figures: 6.1.0 form-data: 4.0.5 - hono: 4.12.17 + hono: 4.12.18 immer: 10.1.1 ink: 5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) ink-big-text: 2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6))(react@18.3.1) @@ -3620,8 +3611,8 @@ snapshots: pastel: 3.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6))(react@18.3.1)(zod@3.24.1) react: 18.3.1 smol-toml: 1.6.1 - viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) - wagmi: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) + viem: 2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + wagmi: 2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) zod: 3.24.1 zod-validation-error: 3.4.0(zod@3.24.1) zustand: 5.0.3(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) @@ -3681,13 +3672,13 @@ snapshots: - utf-8-validate - vite - '@eth-optimism/viem@0.3.3(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))': + '@eth-optimism/viem@0.3.3(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))': dependencies: - viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) - '@eth-optimism/viem@0.4.15(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))': + '@eth-optimism/viem@0.4.15(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))': dependencies: - viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) '@ethereumjs/common@3.2.0': dependencies: @@ -3709,9 +3700,9 @@ snapshots: ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 - '@hono/node-server@1.13.8(hono@4.12.17)': + '@hono/node-server@1.13.8(hono@4.12.18)': dependencies: - hono: 4.12.17 + hono: 4.12.18 '@humanfs/core@0.19.2': dependencies: @@ -3721,13 +3712,13 @@ snapshots: dependencies: '@humanfs/core': 0.19.2 '@humanfs/types': 0.15.0 - '@humanwhocodes/retry': 0.4.1 + '@humanwhocodes/retry': 0.4.3 '@humanfs/types@0.15.0': {} '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.4.1': {} + '@humanwhocodes/retry@0.4.3': {} '@inkjs/ui@2.0.0(ink@5.1.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6))': dependencies: @@ -4160,7 +4151,7 @@ snapshots: '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) transitivePeerDependencies: - bufferutil - typescript @@ -4280,7 +4271,7 @@ snapshots: '@tailwindcss/node@4.2.4': dependencies: '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.21.0 + enhanced-resolve: 5.21.1 jiti: 2.7.0 lightningcss: 1.32.0 magic-string: 0.30.21 @@ -4514,16 +4505,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1)': + '@wagmi/connectors@5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1)': dependencies: '@coinbase/wallet-sdk': 4.3.0 '@metamask/sdk': 0.32.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) '@walletconnect/ethereum-provider': 2.17.0(@types/react@18.3.18)(bufferutil@4.1.0)(react@18.3.1)(utf-8-validate@6.0.6) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: @@ -4554,11 +4545,11 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))': + '@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@6.0.3) - viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) zustand: 5.0.0(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) optionalDependencies: '@tanstack/query-core': 5.100.9 @@ -5012,7 +5003,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.10.27 caniuse-lite: 1.0.30001792 - electron-to-chromium: 1.5.351 + electron-to-chromium: 1.5.352 node-releases: 2.0.38 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -5151,10 +5142,6 @@ snapshots: dependencies: '@babel/runtime': 7.29.2 - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.3: dependencies: ms: 2.1.3 @@ -5223,7 +5210,7 @@ snapshots: '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 - electron-to-chromium@1.5.351: {} + electron-to-chromium@1.5.352: {} elliptic@6.6.1: dependencies: @@ -5259,7 +5246,7 @@ snapshots: engine.io-parser@5.2.3: {} - enhanced-resolve@5.21.0: + enhanced-resolve@5.21.1: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -5348,7 +5335,7 @@ snapshots: '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 + '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 ajv: 6.15.0 @@ -5598,7 +5585,7 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - hono@4.12.17: {} + hono@4.12.18: {} hosted-git-info@7.0.2: dependencies: @@ -6595,7 +6582,7 @@ snapshots: '@types/react': 18.3.18 react: 18.3.1 - viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1): + viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 @@ -6626,14 +6613,14 @@ snapshots: jiti: 2.7.0 lightningcss: 1.32.0 - wagmi@2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1): + wagmi@2.14.11(@tanstack/query-core@5.100.9)(@tanstack/react-query@5.100.9(react@18.3.1))(@types/react@18.3.18)(bufferutil@4.1.0)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1): dependencies: '@tanstack/react-query': 5.100.9(react@18.3.1) - '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) - '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) + '@wagmi/connectors': 5.7.7(@types/react@18.3.18)(@wagmi/core@2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)))(bufferutil@4.1.0)(react@18.3.1)(typescript@6.0.3)(utf-8-validate@6.0.6)(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1))(zod@3.24.1) + '@wagmi/core': 2.16.4(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(immer@10.1.1)(react@18.3.1)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(viem@2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1)) react: 18.3.1 use-sync-external-store: 1.4.0(react@18.3.1) - viem: 2.48.8(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) + viem: 2.48.11(bufferutil@4.1.0)(typescript@6.0.3)(utf-8-validate@6.0.6)(zod@3.24.1) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: @@ -6669,7 +6656,7 @@ snapshots: dependencies: chalk: 4.1.2 commander: 9.5.0 - debug: 4.4.0 + debug: 4.4.3 transitivePeerDependencies: - supports-color From b6e9060f6c7a11f2508676d3e164e9b9cda4fcc8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 11:34:33 +0700 Subject: [PATCH 43/60] chore(deps): bump docker/setup-buildx-action from 3 to 4 Node 24 runtime update. --- .github/workflows/contracts-release-gate-container.yml | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/contracts-release-gate-container.yml b/.github/workflows/contracts-release-gate-container.yml index 0c93815..eadc1ac 100644 --- a/.github/workflows/contracts-release-gate-container.yml +++ b/.github/workflows/contracts-release-gate-container.yml @@ -41,7 +41,7 @@ jobs: submodules: recursive - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Run release gate in container run: make release-gate-container diff --git a/package.json b/package.json index 8259aeb..2ef1eb0 100644 --- a/package.json +++ b/package.json @@ -67,3 +67,4 @@ + From 9d85729afd26e4f5fb1a90be6036231dbac9e6c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 11:34:38 +0700 Subject: [PATCH 44/60] chore(deps): bump frontend-minor-patch group Minor/patch frontend dependency updates. --- package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2ef1eb0..4327f00 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "devDependencies": { "@eslint/js": "^9.19.0", "@eth-optimism/super-cli": "^0.0.13", - "@types/node": "^25.6.1", + "@types/node": "^25.6.2", "@types/react": "^18.2.55", "@types/react-dom": "^18.2.19", "@vitejs/plugin-react": "^4.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 39fed3e..caea721 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,7 +64,7 @@ importers: specifier: ^0.0.13 version: 0.0.13(@tanstack/query-core@5.100.9)(@types/react@18.3.18)(bufferutil@4.1.0)(typescript@6.0.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.2)(jiti@2.7.0)(lightningcss@1.32.0)) '@types/node': - specifier: ^25.6.1 + specifier: ^25.6.2 version: 25.6.2 '@types/react': specifier: ^18.2.55 From 79a9295ab9e758d15fcc99b3f93ed1940bf20152 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 12:30:25 +0700 Subject: [PATCH 45/60] fix: stale references and check name mismatches Remove chainId double-encoding from AttestedSettlementVerifier, fix stale iap/mark URLs, fix governance script check names to match actual CI output. --- .github/PRODUCTION_GOVERNANCE_CHECKLIST.md | 26 ++++++------ BRANCHING.md | 42 +++++++++---------- CONTRIBUTING.md | 2 +- DEPLOYMENT.md | 10 ++--- .../verifier/AttestedSettlementVerifier.sol | 5 +-- scripts/github/apply-governance.sh | 24 +++++------ scripts/github/verify-governance.sh | 12 +++--- 7 files changed, 60 insertions(+), 61 deletions(-) diff --git a/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md b/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md index 26d8b9e..f7e9a5a 100644 --- a/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md +++ b/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md @@ -12,15 +12,15 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - Enable `Dismiss stale pull request approvals when new commits are pushed` - Enable `Require status checks to pass before merging` - Add required checks: - - `Analyze (JavaScript/TypeScript)` - - `Gitleaks Scan` - - `Secrets Drift Guard` + - `Analyze (javascript-typescript)` + - `gitleaks / Gitleaks Scan` + - `Detect Secrets Drift` - `Release Gate Container` - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - - `Slither Core Contracts` + - `slither-core / Slither Core Contracts` - `Frontend Checks (Node 20)` - `Frontend Checks (Node 22)` - `Validate Release PR Checklist` @@ -46,15 +46,15 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - Enable `Dismiss stale pull request approvals when new commits are pushed` - Enable `Require status checks to pass before merging` - Add required checks: - - `Analyze (JavaScript/TypeScript)` - - `Gitleaks Scan` - - `Secrets Drift Guard` + - `Analyze (javascript-typescript)` + - `gitleaks / Gitleaks Scan` + - `Detect Secrets Drift` - `Release Gate Container` - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - - `Slither Core Contracts` + - `slither-core / Slither Core Contracts` - `Frontend Checks (Node 20)` - `Frontend Checks (Node 22)` - Optional additional checks (recommended but not globally required): @@ -73,15 +73,15 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - Enable `Require a pull request before merging` - Enable `Require status checks to pass before merging` - Add required checks: - - `Analyze (JavaScript/TypeScript)` - - `Gitleaks Scan` - - `Secrets Drift Guard` + - `Analyze (javascript-typescript)` + - `gitleaks / Gitleaks Scan` + - `Detect Secrets Drift` - `Release Gate Container` - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - - `Slither Core Contracts` + - `slither-core / Slither Core Contracts` - `Frontend Checks (Node 20)` - `Frontend Checks (Node 22)` - Optional additional checks (recommended but not globally required): @@ -176,4 +176,4 @@ export GH_PAT= ./scripts/github/verify-governance.sh ``` -Expected output: all three branches (`dev`, `canary`, `main`) report `PASS` and required checks include CodeQL (`Analyze (JavaScript/TypeScript)`), `Gitleaks Scan`, and `Dependency Review`. +Expected output: all three branches (`dev`, `canary`, `main`) report `PASS` and required checks include CodeQL (`Analyze (javascript-typescript)`), `gitleaks / Gitleaks Scan`, and `Dependency Review`. diff --git a/BRANCHING.md b/BRANCHING.md index fb6f8ef..993d936 100644 --- a/BRANCHING.md +++ b/BRANCHING.md @@ -62,45 +62,45 @@ Use this matrix as the merge baseline. ### PRs into `dev` -- `Analyze (JavaScript/TypeScript)` -- `Gitleaks Scan` -- `Secrets Drift Guard` +- `Analyze (javascript-typescript)` +- `gitleaks / Gitleaks Scan` +- `Detect Secrets Drift` - `Release Gate Container` - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` -- `Slither Core Contracts` +- `slither-core / Slither Core Contracts` - `Frontend Checks (Node 20)` - `Frontend Checks (Node 22)` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` ### PRs into `canary` -- `Analyze (JavaScript/TypeScript)` -- `Gitleaks Scan` -- `Secrets Drift Guard` +- `Analyze (javascript-typescript)` +- `gitleaks / Gitleaks Scan` +- `Detect Secrets Drift` - `Release Gate Container` - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` -- `Slither Core Contracts` +- `slither-core / Slither Core Contracts` - `Frontend Checks (Node 20)` - `Frontend Checks (Node 22)` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` ### PRs into `main` (release candidate) -- `Analyze (JavaScript/TypeScript)` -- `Gitleaks Scan` -- `Secrets Drift Guard` +- `Analyze (javascript-typescript)` +- `gitleaks / Gitleaks Scan` +- `Detect Secrets Drift` - `Release Gate Container` - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` -- `Slither Core Contracts` +- `slither-core / Slither Core Contracts` - `Frontend Checks (Node 20)` - `Frontend Checks (Node 22)` - `Validate Release PR Checklist` @@ -119,13 +119,13 @@ Apply these repository settings: 1. Protect `main` - Require pull request before merge. - Require status checks: - - `Analyze (JavaScript/TypeScript)` - - `Gitleaks Scan` + - `Analyze (javascript-typescript)` + - `gitleaks / Gitleaks Scan` - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - - `Slither Core Contracts` + - `slither-core / Slither Core Contracts` - `Frontend Checks (Node 20)` - `Frontend Checks (Node 22)` - `Validate Release PR Checklist` @@ -137,13 +137,13 @@ Apply these repository settings: 2. Protect `canary` - Require pull request before merge. - Require status checks: - - `Analyze (JavaScript/TypeScript)` - - `Gitleaks Scan` + - `Analyze (javascript-typescript)` + - `gitleaks / Gitleaks Scan` - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - - `Slither Core Contracts` + - `slither-core / Slither Core Contracts` - `Frontend Checks (Node 20)` - `Frontend Checks (Node 22)` - Require at least 1 approval. @@ -152,13 +152,13 @@ Apply these repository settings: 3. Protect `dev` - Require pull request before merge (or allow maintainers direct push if desired). - Require status checks: - - `Analyze (JavaScript/TypeScript)` - - `Gitleaks Scan` + - `Analyze (javascript-typescript)` + - `gitleaks / Gitleaks Scan` - `Dependency Review` - `Contracts Unit + Invariant` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - - `Slither Core Contracts` + - `slither-core / Slither Core Contracts` - `Frontend Checks (Node 20)` - `Frontend Checks (Node 22)` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 97876eb..6702ec0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,7 +27,7 @@ Thank you for your interest in contributing to MARK Protocol! This guide will wa ```bash # Clone the repository -git clone https://github.com/iap/mark.git +git clone https://github.com/trade/mark.git cd mark # Install dependencies (pnpm is auto-managed via corepack) diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index a08d7a9..e907029 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -68,7 +68,7 @@ git status # Should show "On branch canary" git log --oneline -1 # Verify latest commit # Wait for GitHub workflow to start -# Monitor: https://github.com/iap/mark/actions +# Monitor: https://github.com/trade/mark/actions ``` **What this does**: @@ -291,7 +291,7 @@ Contracts Mainnet Readiness Workflow **Check workflow output**: ```bash # View workflow details -gh run view --repo iap/mark +gh run view --repo trade/mark ``` **If successful**: @@ -390,7 +390,7 @@ Evidence: " git push origin v0.1.0 ``` -**GitHub auto-creates release**: Check https://github.com/iap/mark/releases +**GitHub auto-creates release**: Check https://github.com/trade/mark/releases #### Step 17: Generate Mainnet Evidence @@ -751,11 +751,11 @@ cast send $SETTLEMENT_ADDRESS "pause()" \ ## Support & Escalation - **Questions**: Open GitHub issue or discussion -- **Urgent issue**: Contact @iap (primary maintainer) +- **Urgent issue**: Contact @trade/maintainers - **Security concern**: Email security@mark.protocol --- **Version**: 1.0 **Last Updated**: 2026-05-06 -**Maintained By**: @iap & MARK Protocol Team +**Maintained By**: @trade/maintainers diff --git a/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol b/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol index e60e414..1d2b4fb 100644 --- a/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol +++ b/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol @@ -24,7 +24,7 @@ contract AttestedSettlementVerifier is IUTXOSettlementVerifier, EIP712, AccessCo /// @dev EIP-712 type hash for the SettlementAttestation struct. bytes32 public constant SETTLEMENT_ATTESTATION_TYPEHASH = keccak256( - "SettlementAttestation(bytes32 intentId,address verifier,address settlementModule,address account,uint256 amount,bool isMint,bytes32 contextHash,uint256 deadline,uint256 chainId)" + "SettlementAttestation(bytes32 intentId,address verifier,address settlementModule,address account,uint256 amount,bool isMint,bytes32 contextHash,uint256 deadline)" ); uint48 public constant DEFAULT_ADMIN_DELAY = 1 days; @@ -122,8 +122,7 @@ contract AttestedSettlementVerifier is IUTXOSettlementVerifier, EIP712, AccessCo amount, isMint, contextHash, - deadline, - block.chainid + deadline ) ); return _hashTypedDataV4(structHash); diff --git a/scripts/github/apply-governance.sh b/scripts/github/apply-governance.sh index 6b5003c..e383342 100755 --- a/scripts/github/apply-governance.sh +++ b/scripts/github/apply-governance.sh @@ -211,28 +211,28 @@ ensure_environment() { DEV_CHECKS_JSON='[ "Contracts Unit + Invariant", "Contracts Release Check (Dry-Run + Execute Smoke)", - "Slither Core Contracts", - "Secrets Drift Guard", - "Analyze (JavaScript/TypeScript)", - "Gitleaks Scan", + "slither-core / Slither Core Contracts", + "Detect Secrets Drift", + "Analyze (javascript-typescript)", + "gitleaks / Gitleaks Scan", "Release Gate Container" ]' CANARY_CHECKS_JSON='[ "Contracts Unit + Invariant", "Contracts Release Check (Dry-Run + Execute Smoke)", - "Slither Core Contracts", - "Secrets Drift Guard", - "Analyze (JavaScript/TypeScript)", - "Gitleaks Scan", + "slither-core / Slither Core Contracts", + "Detect Secrets Drift", + "Analyze (javascript-typescript)", + "gitleaks / Gitleaks Scan", "Release Gate Container" ]' MAIN_CHECKS_JSON='[ "Contracts Unit + Invariant", "Contracts Release Check (Dry-Run + Execute Smoke)", - "Slither Core Contracts", - "Secrets Drift Guard", - "Analyze (JavaScript/TypeScript)", - "Gitleaks Scan", + "slither-core / Slither Core Contracts", + "Detect Secrets Drift", + "Analyze (javascript-typescript)", + "gitleaks / Gitleaks Scan", "Release Gate Container", "Validate Release PR Checklist", "Validate Release Evidence" diff --git a/scripts/github/verify-governance.sh b/scripts/github/verify-governance.sh index 87a5f54..a84f9dd 100755 --- a/scripts/github/verify-governance.sh +++ b/scripts/github/verify-governance.sh @@ -47,17 +47,17 @@ auth_headers=( require_checks_dev=( "Contracts Unit + Invariant" "Contracts Release Check (Dry-Run + Execute Smoke)" - "Slither Core Contracts" - "Secrets Drift Guard" - "Analyze (JavaScript/TypeScript)" + "slither-core / Slither Core Contracts" + "Detect Secrets Drift" + "Analyze (javascript-typescript)" ) require_checks_main=( "Contracts Unit + Invariant" "Contracts Release Check (Dry-Run + Execute Smoke)" - "Slither Core Contracts" - "Secrets Drift Guard" - "Analyze (JavaScript/TypeScript)" + "slither-core / Slither Core Contracts" + "Detect Secrets Drift" + "Analyze (javascript-typescript)" "Validate Release PR Checklist" "Validate Release Evidence" ) From d3ea0f5d7eece663140c8be6c51cc8781a9bd097 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 17:45:40 +0700 Subject: [PATCH 46/60] test(contracts): add bridge integration test against supersim Exercises MARKBridgeAdapter against live SuperchainTokenBridge on two supersim forks. Verifies cross-chain token transfer and rate limit enforcement. --- .../bridge/MARKBridgeIntegration.t.sol | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 contracts/test/integration/bridge/MARKBridgeIntegration.t.sol diff --git a/contracts/test/integration/bridge/MARKBridgeIntegration.t.sol b/contracts/test/integration/bridge/MARKBridgeIntegration.t.sol new file mode 100644 index 0000000..0bb8b64 --- /dev/null +++ b/contracts/test/integration/bridge/MARKBridgeIntegration.t.sol @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.25; + +import {Test} from "forge-std/Test.sol"; +import {RYLA} from "../../../src/token/RYLA.sol"; +import {MARKBridgeAdapter} from "../../../src/bridge/MARKBridgeAdapter.sol"; +import {PredeployAddresses} from "@interop-lib/libraries/PredeployAddresses.sol"; + +/// @notice Integration test for MARKBridgeAdapter against live supersim chains. +/// @dev Requires two running supersim L2 forks: +/// CHAIN_A_RPC_URL (default: http://127.0.0.1:9545) — source chain +/// CHAIN_B_RPC_URL (default: http://127.0.0.1:9546) — destination chain +/// +/// Run with: +/// CHAIN_A_RPC_URL=http://127.0.0.1:9545 \ +/// CHAIN_B_RPC_URL=http://127.0.0.1:9546 \ +/// FOUNDRY_PROFILE=integration forge test --match-path 'test/integration/**/*.t.sol' -vv +contract MARKBridgeIntegrationTest is Test { + string internal chainAUrl; + string internal chainBUrl; + + uint256 internal forkA; + uint256 internal forkB; + + address internal owner = makeAddr("owner"); + address internal operator = makeAddr("operator"); + address internal recipient = makeAddr("recipient"); + + RYLA internal token; + MARKBridgeAdapter internal adapter; + + function setUp() public { + chainAUrl = vm.envOr("CHAIN_A_RPC_URL", string("http://127.0.0.1:9545")); + chainBUrl = vm.envOr("CHAIN_B_RPC_URL", string("http://127.0.0.1:9546")); + + forkA = vm.createFork(chainAUrl); + forkB = vm.createFork(chainBUrl); + + // Deploy on chain A. + vm.selectFork(forkA); + uint256 destChainId = vm.envOr("CHAIN_B_CHAIN_ID", uint256(902)); + + vm.startPrank(owner); + token = new RYLA(owner); + token.setMinter(owner, true); + token.mint(operator, 100 ether); + + adapter = new MARKBridgeAdapter(owner, address(token)); + adapter.setOperator(operator, true); + adapter.setDestination(destChainId, true); + vm.stopPrank(); + + vm.prank(operator); + token.approve(address(adapter), type(uint256).max); + } + + /// @notice Verifies that bridgeTo burns tokens on chain A and the recipient + /// receives them on chain B via SuperchainTokenBridge auto-relay. + function testBridgeToTransfersTokensCrossChain() public { + vm.selectFork(forkA); + uint256 destChainId = vm.envOr("CHAIN_B_CHAIN_ID", uint256(902)); + uint256 amount = 10 ether; + + uint256 operatorBalanceBefore = token.balanceOf(operator); + uint256 supplyBefore = token.totalSupply(); + + vm.prank(operator); + adapter.bridgeTo(recipient, amount, destChainId); + + // Tokens are burned on chain A by SuperchainTokenBridge. + assertEq(token.balanceOf(operator), operatorBalanceBefore - amount, "operator balance not reduced"); + assertEq(token.totalSupply(), supplyBefore - amount, "supply not reduced on chain A"); + + // Supersim auto-relays the message; verify recipient balance on chain B. + vm.selectFork(forkB); + // RYLA is a SuperchainERC20 — same address on both chains via CREATE2. + address tokenOnB = address(token); + assertEq(RYLA(tokenOnB).balanceOf(recipient), amount, "recipient did not receive tokens on chain B"); + } + + /// @notice Verifies that rate limits are enforced even against the live bridge. + function testBridgeToEnforcesMaxPerTxOnLiveFork() public { + vm.selectFork(forkA); + uint256 destChainId = vm.envOr("CHAIN_B_CHAIN_ID", uint256(902)); + + vm.prank(owner); + adapter.setBridgeLimits(5 ether, 0); + + vm.prank(operator); + vm.expectRevert(abi.encodeWithSignature("MaxPerTxExceeded()")); + adapter.bridgeTo(recipient, 6 ether, destChainId); + } +} From bd423c0af6158230196cfbe05615a6d16131af4a Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 19:00:21 +0700 Subject: [PATCH 47/60] test(contracts): add bridge adapter invariant fuzz tests Three invariants covering rate limiting: daily cap never exceeded, accumulator consistent with cap, zero address never holds operator role. 74 tests pass. --- .../bridge/MARKBridgeInvariants.t.sol | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 contracts/test/invariant/bridge/MARKBridgeInvariants.t.sol diff --git a/contracts/test/invariant/bridge/MARKBridgeInvariants.t.sol b/contracts/test/invariant/bridge/MARKBridgeInvariants.t.sol new file mode 100644 index 0000000..538ae1a --- /dev/null +++ b/contracts/test/invariant/bridge/MARKBridgeInvariants.t.sol @@ -0,0 +1,124 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.25; + +import {StdInvariant} from "forge-std/StdInvariant.sol"; +import {Test} from "forge-std/Test.sol"; +import {IERC20} from "forge-std/interfaces/IERC20.sol"; +import {RYLA} from "../../../src/token/RYLA.sol"; +import {MARKBridgeAdapter} from "../../../src/bridge/MARKBridgeAdapter.sol"; +import {ISuperchainTokenBridge} from "@interop-lib/interfaces/ISuperchainTokenBridge.sol"; +import {PredeployAddresses} from "@interop-lib/libraries/PredeployAddresses.sol"; + +contract MARKBridgeHandler is Test { + RYLA public immutable token; + MARKBridgeAdapter public immutable adapter; + address public immutable owner; + address public immutable operator; + + address internal constant SUPERCHAIN_BRIDGE = PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE; + uint256 internal constant DST_CHAIN_ID = 902; + + uint256 internal nonce; + + constructor(RYLA _token, MARKBridgeAdapter _adapter, address _owner, address _operator) { + token = _token; + adapter = _adapter; + owner = _owner; + operator = _operator; + } + + function bridge(uint96 rawAmount) external { + uint256 maxPerTx_ = adapter.maxPerTx(); + uint256 dailyCap_ = adapter.dailyCap(); + + uint256 ceiling = maxPerTx_ > 0 ? maxPerTx_ : 1_000_000 ether; + uint256 amount = bound(uint256(rawAmount), 1, ceiling); + + // Skip if daily cap would be exceeded — lets fuzzer explore more paths. + if (dailyCap_ > 0) { + uint64 epoch = uint64(block.timestamp / 1 days); + uint256 accumulated = epoch == adapter.dailyCapEpoch() ? adapter.bridgedInDailyCapEpoch() : 0; + if (accumulated + amount > dailyCap_) return; + } + + vm.prank(owner); + token.mint(operator, amount); + + bytes memory callData = abi.encodeWithSelector( + ISuperchainTokenBridge.sendERC20.selector, address(token), operator, amount, DST_CHAIN_ID + ); + vm.mockCall(SUPERCHAIN_BRIDGE, callData, abi.encode(keccak256(abi.encodePacked(nonce++)))); + + vm.prank(operator); + adapter.bridgeTo(operator, amount, DST_CHAIN_ID); + } + + function advanceTime(uint32 seconds_) external { + vm.warp(block.timestamp + bound(uint256(seconds_), 1, 3 days)); + } + + function updateLimits(uint96 rawMaxPerTx, uint96 rawDailyCap) external { + uint256 maxPerTx_ = bound(uint256(rawMaxPerTx), 0, 1_000_000 ether); + uint256 dailyCap_ = bound(uint256(rawDailyCap), 0, 10_000_000 ether); + vm.prank(owner); + adapter.setBridgeLimits(maxPerTx_, dailyCap_); + } +} + +contract MARKBridgeInvariants is StdInvariant, Test { + RYLA internal token; + MARKBridgeAdapter internal adapter; + MARKBridgeHandler internal handler; + + address internal owner = makeAddr("owner"); + address internal operator = makeAddr("operator"); + + uint256 internal constant DST_CHAIN_ID = 902; + + function setUp() public { + vm.startPrank(owner); + token = new RYLA(owner); + token.setMinter(owner, true); + + adapter = new MARKBridgeAdapter(owner, address(token)); + adapter.setOperator(operator, true); + adapter.setDestination(DST_CHAIN_ID, true); + adapter.setBridgeLimits(100 ether, 500 ether); + vm.stopPrank(); + + vm.prank(operator); + IERC20(address(token)).approve(address(adapter), type(uint256).max); + + handler = new MARKBridgeHandler(token, adapter, owner, operator); + + bytes4[] memory selectors = new bytes4[](3); + selectors[0] = MARKBridgeHandler.bridge.selector; + selectors[1] = MARKBridgeHandler.advanceTime.selector; + selectors[2] = MARKBridgeHandler.updateLimits.selector; + + targetSelector(FuzzSelector({addr: address(handler), selectors: selectors})); + targetContract(address(handler)); + } + + /// @notice bridgedInDailyCapEpoch never exceeds dailyCap within the current epoch. + function invariant_dailyCapNeverExceeded() public view { + uint256 dailyCap_ = adapter.dailyCap(); + if (dailyCap_ == 0) return; + uint64 currentEpoch = uint64(block.timestamp / 1 days); + if (adapter.dailyCapEpoch() == currentEpoch) { + assertLe(adapter.bridgedInDailyCapEpoch(), dailyCap_, "daily cap exceeded"); + } + } + + /// @notice Accumulator is always consistent: never exceeds cap for its stored epoch. + function invariant_accumulatorConsistentWithCap() public view { + uint256 dailyCap_ = adapter.dailyCap(); + if (dailyCap_ == 0) return; + assertLe(adapter.bridgedInDailyCapEpoch(), dailyCap_, "accumulator exceeds cap"); + } + + /// @notice Operator role is never granted to zero address. + function invariant_operatorRoleNeverZeroAddress() public view { + assertFalse(adapter.hasRole(adapter.OPERATOR_ROLE(), address(0)), "zero address has operator role"); + } +} From 85c8c0040c6043d9b92f9f9c667919c2870a2e41 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Fri, 8 May 2026 21:38:47 +0700 Subject: [PATCH 48/60] fix(governance): sync check lists and fix ruleset condition Fix ruleset condition bug (canary/main now covered), sync apply-governance.sh and verify-governance.sh with live branch protection, fix frontend check name prefix in docs. --- .github/PRODUCTION_GOVERNANCE_CHECKLIST.md | 12 +++++------ BRANCHING.md | 24 +++++++++++----------- package.json | 1 + scripts/github/apply-governance.sh | 24 ++++++++++++++++------ scripts/github/verify-governance.sh | 16 +++++++++++++-- 5 files changed, 51 insertions(+), 26 deletions(-) diff --git a/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md b/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md index f7e9a5a..d0a0820 100644 --- a/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md +++ b/.github/PRODUCTION_GOVERNANCE_CHECKLIST.md @@ -21,8 +21,8 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - `slither-core / Slither Core Contracts` - - `Frontend Checks (Node 20)` - - `Frontend Checks (Node 22)` + - `frontend-checks / Frontend Checks (Node 20)` + - `frontend-checks / Frontend Checks (Node 22)` - `Validate Release PR Checklist` - `Validate Release Evidence` - Optional additional checks (recommended but not globally required): @@ -55,8 +55,8 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - `slither-core / Slither Core Contracts` - - `Frontend Checks (Node 20)` - - `Frontend Checks (Node 22)` + - `frontend-checks / Frontend Checks (Node 20)` + - `frontend-checks / Frontend Checks (Node 22)` - Optional additional checks (recommended but not globally required): - `Contracts Unit + Invariant` - `Contracts Env Guard` @@ -82,8 +82,8 @@ GitHub path: `Settings -> Branches -> Add branch protection rule` - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - `slither-core / Slither Core Contracts` - - `Frontend Checks (Node 20)` - - `Frontend Checks (Node 22)` + - `frontend-checks / Frontend Checks (Node 20)` + - `frontend-checks / Frontend Checks (Node 22)` - Optional additional checks (recommended but not globally required): - `Contracts Unit + Invariant` - `Contracts Env Guard` diff --git a/BRANCHING.md b/BRANCHING.md index 993d936..49dfb98 100644 --- a/BRANCHING.md +++ b/BRANCHING.md @@ -71,8 +71,8 @@ Use this matrix as the merge baseline. - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - `slither-core / Slither Core Contracts` -- `Frontend Checks (Node 20)` -- `Frontend Checks (Node 22)` +- `frontend-checks / Frontend Checks (Node 20)` +- `frontend-checks / Frontend Checks (Node 22)` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` ### PRs into `canary` @@ -86,8 +86,8 @@ Use this matrix as the merge baseline. - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - `slither-core / Slither Core Contracts` -- `Frontend Checks (Node 20)` -- `Frontend Checks (Node 22)` +- `frontend-checks / Frontend Checks (Node 20)` +- `frontend-checks / Frontend Checks (Node 22)` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` ### PRs into `main` (release candidate) @@ -101,8 +101,8 @@ Use this matrix as the merge baseline. - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - `slither-core / Slither Core Contracts` -- `Frontend Checks (Node 20)` -- `Frontend Checks (Node 22)` +- `frontend-checks / Frontend Checks (Node 20)` +- `frontend-checks / Frontend Checks (Node 22)` - `Validate Release PR Checklist` - `Validate Release Evidence` - If PR touches governance policy files (`apply-governance.sh`, `BRANCHING.md`, governance checklist): `Validate Governance Policy Consistency` @@ -126,8 +126,8 @@ Apply these repository settings: - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - `slither-core / Slither Core Contracts` - - `Frontend Checks (Node 20)` - - `Frontend Checks (Node 22)` + - `frontend-checks / Frontend Checks (Node 20)` + - `frontend-checks / Frontend Checks (Node 22)` - `Validate Release PR Checklist` - `Validate Release Evidence` - Require at least 1-2 approvals. @@ -144,8 +144,8 @@ Apply these repository settings: - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - `slither-core / Slither Core Contracts` - - `Frontend Checks (Node 20)` - - `Frontend Checks (Node 22)` + - `frontend-checks / Frontend Checks (Node 20)` + - `frontend-checks / Frontend Checks (Node 22)` - Require at least 1 approval. - Dismiss stale approvals on new commits. @@ -159,8 +159,8 @@ Apply these repository settings: - `Contracts Release Check (Dry-Run + Execute Smoke)` - `Contracts Production Mode Smoke` - `slither-core / Slither Core Contracts` - - `Frontend Checks (Node 20)` - - `Frontend Checks (Node 22)` + - `frontend-checks / Frontend Checks (Node 20)` + - `frontend-checks / Frontend Checks (Node 22)` Notes: - Do not add `Validate Governance Policy Consistency` as a global required branch-protection check because it is intentionally path-filtered; require it only on governance-touching PRs. diff --git a/package.json b/package.json index 4327f00..de58421 100644 --- a/package.json +++ b/package.json @@ -68,3 +68,4 @@ + diff --git a/scripts/github/apply-governance.sh b/scripts/github/apply-governance.sh index e383342..b1084f3 100755 --- a/scripts/github/apply-governance.sh +++ b/scripts/github/apply-governance.sh @@ -209,30 +209,42 @@ ensure_environment() { # Baseline checks for dev, canary, and main. DEV_CHECKS_JSON='[ + "Analyze (javascript-typescript)", + "Dependency Review", "Contracts Unit + Invariant", "Contracts Release Check (Dry-Run + Execute Smoke)", + "Contracts Production Mode Smoke", + "gitleaks / Gitleaks Scan", "slither-core / Slither Core Contracts", + "frontend-checks / Frontend Checks (Node 20)", + "frontend-checks / Frontend Checks (Node 22)", "Detect Secrets Drift", - "Analyze (javascript-typescript)", - "gitleaks / Gitleaks Scan", "Release Gate Container" ]' CANARY_CHECKS_JSON='[ + "Analyze (javascript-typescript)", + "Dependency Review", "Contracts Unit + Invariant", "Contracts Release Check (Dry-Run + Execute Smoke)", + "Contracts Production Mode Smoke", + "gitleaks / Gitleaks Scan", "slither-core / Slither Core Contracts", + "frontend-checks / Frontend Checks (Node 20)", + "frontend-checks / Frontend Checks (Node 22)", "Detect Secrets Drift", - "Analyze (javascript-typescript)", - "gitleaks / Gitleaks Scan", "Release Gate Container" ]' MAIN_CHECKS_JSON='[ + "Analyze (javascript-typescript)", + "Dependency Review", "Contracts Unit + Invariant", "Contracts Release Check (Dry-Run + Execute Smoke)", + "Contracts Production Mode Smoke", + "gitleaks / Gitleaks Scan", "slither-core / Slither Core Contracts", + "frontend-checks / Frontend Checks (Node 20)", + "frontend-checks / Frontend Checks (Node 22)", "Detect Secrets Drift", - "Analyze (javascript-typescript)", - "gitleaks / Gitleaks Scan", "Release Gate Container", "Validate Release PR Checklist", "Validate Release Evidence" diff --git a/scripts/github/verify-governance.sh b/scripts/github/verify-governance.sh index a84f9dd..77e3c9e 100755 --- a/scripts/github/verify-governance.sh +++ b/scripts/github/verify-governance.sh @@ -45,19 +45,31 @@ auth_headers=( ) require_checks_dev=( + "Analyze (javascript-typescript)" + "Dependency Review" "Contracts Unit + Invariant" "Contracts Release Check (Dry-Run + Execute Smoke)" + "Contracts Production Mode Smoke" + "gitleaks / Gitleaks Scan" "slither-core / Slither Core Contracts" + "frontend-checks / Frontend Checks (Node 20)" + "frontend-checks / Frontend Checks (Node 22)" "Detect Secrets Drift" - "Analyze (javascript-typescript)" + "Release Gate Container" ) require_checks_main=( + "Analyze (javascript-typescript)" + "Dependency Review" "Contracts Unit + Invariant" "Contracts Release Check (Dry-Run + Execute Smoke)" + "Contracts Production Mode Smoke" + "gitleaks / Gitleaks Scan" "slither-core / Slither Core Contracts" + "frontend-checks / Frontend Checks (Node 20)" + "frontend-checks / Frontend Checks (Node 22)" "Detect Secrets Drift" - "Analyze (javascript-typescript)" + "Release Gate Container" "Validate Release PR Checklist" "Validate Release Evidence" ) From 9f93aa81df6af8e261b0fa4f2cedc04788272951 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sat, 9 May 2026 02:03:37 +0700 Subject: [PATCH 49/60] chore(governance): document new ruleset structure Two focused rulesets: branch-protection (CodeQL alert gate) and tag-protection (v* tags). Replaces the broken develop ruleset. --- BRANCHING.md | 2 +- contracts/foundry.toml | 1 + package.json | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/BRANCHING.md b/BRANCHING.md index 49dfb98..e6ee2b1 100644 --- a/BRANCHING.md +++ b/BRANCHING.md @@ -166,7 +166,7 @@ Notes: - Do not add `Validate Governance Policy Consistency` as a global required branch-protection check because it is intentionally path-filtered; require it only on governance-touching PRs. 4. Protect tags -- Reserve release tags (for example `v*`) to maintainers only. +- Release tags (`v*`) are protected by the `tag-protection` ruleset: creation is restricted to maintainers, deletion and force-update are blocked for all actors. ## Merge Flow diff --git a/contracts/foundry.toml b/contracts/foundry.toml index c707b49..2c64fc4 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -27,3 +27,4 @@ libs = ["lib"] no_match_path = "test/never/**" # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options + diff --git a/package.json b/package.json index de58421..e5e440c 100644 --- a/package.json +++ b/package.json @@ -69,3 +69,4 @@ + From 55d374dd9a8ecadf49626a3e51d604aecadbe3c3 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sat, 9 May 2026 06:26:41 +0700 Subject: [PATCH 50/60] feat(token): rename RYLA display name to 'RYLA Credits' name() returns 'RYLA Credits', symbol stays 'RYLA'. Test and verification script updated. --- contracts/script/ops/settlement/VerifyMARKDeployment.s.sol | 2 +- contracts/src/token/RYLA.sol | 2 +- contracts/test/unit/RYLA.t.sol | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/script/ops/settlement/VerifyMARKDeployment.s.sol b/contracts/script/ops/settlement/VerifyMARKDeployment.s.sol index c557c95..9ba5295 100644 --- a/contracts/script/ops/settlement/VerifyMARKDeployment.s.sol +++ b/contracts/script/ops/settlement/VerifyMARKDeployment.s.sol @@ -42,7 +42,7 @@ contract VerifyMARKDeployment is Script { function _runWithConfig(ExpectedConfig memory cfg) internal view { RYLA token = RYLA(cfg.tokenAddress); - _assertEq(token.name(), "RYLA", "Token name mismatch"); + _assertEq(token.name(), "RYLA Credits", "Token name mismatch"); _assertEq(token.symbol(), "RYLA", "Token symbol mismatch"); _assertEq(uint256(token.defaultAdminDelay()), uint256(EXPECTED_ADMIN_DELAY), "Token admin delay mismatch"); diff --git a/contracts/src/token/RYLA.sol b/contracts/src/token/RYLA.sol index 895a3b0..d96c32f 100644 --- a/contracts/src/token/RYLA.sol +++ b/contracts/src/token/RYLA.sol @@ -25,7 +25,7 @@ contract RYLA is SuperchainERC20, AccessControlDefaultAdminRules, TokenErrors { } function name() public pure override returns (string memory) { - return "RYLA"; + return "RYLA Credits"; } function symbol() public pure override returns (string memory) { diff --git a/contracts/test/unit/RYLA.t.sol b/contracts/test/unit/RYLA.t.sol index a90fa5d..419af3f 100644 --- a/contracts/test/unit/RYLA.t.sol +++ b/contracts/test/unit/RYLA.t.sol @@ -23,7 +23,7 @@ contract RYLATest is Test { } function testMetadata() public view { - assertEq(token.name(), "RYLA"); + assertEq(token.name(), "RYLA Credits"); assertEq(token.symbol(), "RYLA"); assertEq(token.decimals(), 18); } From 2f21c7df899a04a82e0eb64983ed119ea89ec884 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sat, 9 May 2026 07:28:29 +0700 Subject: [PATCH 51/60] test Documents key roles and trust assumptions, attester key rotation procedure, break-glass procedure, production mode implications, and key storage recommendations for auditors and operators. --- contracts/RUNBOOK.md | 92 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/contracts/RUNBOOK.md b/contracts/RUNBOOK.md index b477a0f..d9c5f84 100644 --- a/contracts/RUNBOOK.md +++ b/contracts/RUNBOOK.md @@ -283,3 +283,95 @@ When rollback is triggered: 2. Revoke unsafe operators/attesters. 3. Redeploy from clean, verified env snapshot. 4. Re-run full readiness gate. + +## 8) Trust Model + +This section documents the trust assumptions, key custody model, and break-glass procedures for the MARK protocol. Auditors and operators should read this before reviewing or operating the contracts. + +### Key Roles and Trust Assumptions + +**Default Admin** (`DEFAULT_ADMIN_ROLE`) +- Held by the protocol deployer address on all three contracts: `RYLA`, `MARKBridgeAdapter`, `MARKSettlementModule`. +- Controls role grants/revokes, verifier configuration, bridge limits, and production mode activation. +- Protected by a 1-day delay (`AccessControlDefaultAdminRules`): admin transfers cannot take effect for at least 24 hours after initiation. +- Trust assumption: the admin key is held by the protocol owner in a hardware wallet or equivalent secure storage. Compromise of this key is the highest-severity incident. + +**Operator** (`OPERATOR_ROLE` on bridge and settlement) +- Submits bridge transactions and settlement intents. +- Can move tokens cross-chain (bridge) and trigger mint/burn (settlement). +- Trust assumption: operator keys are hot keys used by the protocol's backend. They are scoped to operational actions only — they cannot change configuration, rotate roles, or disable proof validation. +- Rotation: use section 5 (Operator Key Compromise Playbook) if compromised. + +**Attester** (`ATTESTER_ROLE` on `AttestedSettlementVerifier`) +- Signs settlement attestations that authorize mint/burn operations when proof validation is enabled. +- Trust assumption: the attester key is a hot signing key. Its compromise allows fraudulent settlement attestations until revoked. +- Rotation policy: see Attester Key Rotation below. + +**Minter / Burner** (`MINTER_ROLE`, `BURNER_ROLE` on `RYLA`) +- Held exclusively by `MARKSettlementModule`. Not held by any EOA in production. +- Trust assumption: the settlement module is the only authorized issuer. Direct mint/burn by any EOA is not permitted. + +### Attester Key Rotation + +Rotate the attester key if: +- Key material may have been exposed. +- Signing infrastructure is being migrated. +- Scheduled rotation policy requires it. + +Steps: +1. Generate new attester key in secure environment. +2. Grant new attester role before revoking old: +```bash +cast send "setAttester(address,bool)" true --private-key $ADMIN_PK +``` +3. Verify new attester is active. +4. Revoke old attester: +```bash +cast send "setAttester(address,bool)" false --private-key $ADMIN_PK +``` +5. Re-run verify script to confirm clean attester state. + +Note: there is a 1-day admin delay on the admin key itself, but `setAttester` is callable immediately by the current admin. Rotation is instant once the admin key is available. + +### Break-Glass Procedure + +Use this procedure when normal operational controls are insufficient — for example, if a critical vulnerability is discovered post-deployment. + +**Step 1: Contain** +- Revoke all operator roles on bridge and settlement immediately (section 5). +- Revoke all attester roles on the verifier. +- This stops new settlements and bridge operations without requiring admin key rotation. + +**Step 2: Assess** +- Determine whether the vulnerability is in contract logic or in key material. +- If key material: proceed to admin rotation (section 6). +- If contract logic: assess whether existing deployed state is safe to leave in place while a fix is prepared. + +**Step 3: Communicate** +- Use GitHub private vulnerability reporting (see `SECURITY.md`) to coordinate disclosure. +- Do not deploy fixes to production without re-running the full mainnet readiness gate. + +**Step 4: Recover** +- If redeployment is required: follow section 7 (Rollback Decision Rule). +- If configuration fix is sufficient: use `PostDeployMARKSetup.s.sol` and re-run verify. + +### Production Mode Implications + +Once `activateProductionMode()` is called on `MARKSettlementModule`: +- Proof validation cannot be disabled. +- The verifier address cannot be set to zero. +- This is irreversible. + +Before activating production mode, confirm: +- The attester key is in secure, long-term storage. +- The verifier contract has been audited. +- The admin key is in a hardware wallet or equivalent. + +### Key Storage Recommendations + +| Key | Recommended storage | Rotation frequency | +|-----|--------------------|--------------------| +| Default admin | Hardware wallet (Ledger/Trezor) | On compromise or scheduled annually | +| Operator | HSM or secure server key | On compromise or quarterly | +| Attester | HSM or secure server key | On compromise or quarterly | +| Deployer (one-time) | Hardware wallet | N/A after deployment | From 4de527706686bfadd2c7d5b2dd2c79e71853391c Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sat, 9 May 2026 08:10:31 +0700 Subject: [PATCH 52/60] fix(ci): use matrix language as CodeQL job name Produces consistent check name 'Analyze (javascript-typescript)' matching branch protection requirements. --- .github/workflows/codeql.yml | 2 +- contracts/foundry.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1f05473..7092e60 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -28,7 +28,7 @@ permissions: jobs: analyze: - name: Analyze (JavaScript/TypeScript) + name: Analyze (${{ matrix.language }}) runs-on: ubuntu-latest strategy: diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 2c64fc4..6064a4c 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -28,3 +28,4 @@ no_match_path = "test/never/**" # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options + From fdfa7d3cbdad0d3382b49b49801f3828e4667a2c Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sat, 9 May 2026 10:01:44 +0700 Subject: [PATCH 53/60] chore(config): harden staging profile and document environment setup Remove PRIVATE_KEY from staging.env, fix bridge destination to OP Sepolia, add key separation docs, fix env guard and drift guard for CI validation. --- .github/workflows/contracts-env-guard.yml | 1 + .github/workflows/secrets-drift-guard.yml | 2 +- .../networks/optimism-sepolia.env.example | 29 ++++++++++++++--- contracts/config/profiles/staging.env | 31 +++++++++++++++---- 4 files changed, 51 insertions(+), 12 deletions(-) diff --git a/.github/workflows/contracts-env-guard.yml b/.github/workflows/contracts-env-guard.yml index 921a687..cd626dd 100644 --- a/.github/workflows/contracts-env-guard.yml +++ b/.github/workflows/contracts-env-guard.yml @@ -42,6 +42,7 @@ jobs: MARK_SETTLEMENT_PROOF_ENABLED=true \ MARK_SETTLEMENT_PRODUCTION_MODE=true \ MARK_DEPLOY_ATTESTED_VERIFIER=true \ + PRIVATE_KEY=0x0000000000000000000000000000000000000000000000000000000000000001 \ VALIDATE_MODE=rehearsal ./script/ops/validate-prod-env.sh - name: Validate dispatch env profile diff --git a/.github/workflows/secrets-drift-guard.yml b/.github/workflows/secrets-drift-guard.yml index 5b10e54..e787798 100644 --- a/.github/workflows/secrets-drift-guard.yml +++ b/.github/workflows/secrets-drift-guard.yml @@ -34,7 +34,7 @@ jobs: grep -E '^\+[^+]' /tmp/pr.diff > /tmp/pr.added || true # Remove obvious placeholders and known non-secret examples. - grep -Ev 'YOUR_PRIVATE_KEY|0x0000000000000000000000000000000000000000|gho_\*+|github\.com/cli/cli/releases' /tmp/pr.added > /tmp/pr.added.filtered || true + grep -Ev 'YOUR_PRIVATE_KEY|0x0000000000000000000000000000000000000000|gho_\*+|github\.com/cli/cli/releases|PRIVATE_KEY=0x0000000000000000000000000000000000000000000000000000000000000001' /tmp/pr.added > /tmp/pr.added.filtered || true # High-signal patterns. if grep -Ein \ diff --git a/contracts/config/networks/optimism-sepolia.env.example b/contracts/config/networks/optimism-sepolia.env.example index 1c1f1c2..9d141da 100644 --- a/contracts/config/networks/optimism-sepolia.env.example +++ b/contracts/config/networks/optimism-sepolia.env.example @@ -1,11 +1,30 @@ -# Optimism Sepolia example config -RPC_URL=https://sepolia.optimism.io +# OP Sepolia deployment config example +# Copy to .env and fill in real values. Never commit .env files. +# +# GitHub environment setup (Settings -> Environments -> staging): +# Secret: MARK_STAGING_DEPLOYER_PRIVATE_KEY = +# Variable: MARK_STAGING_RPC_URL = +# Variable: MARK_STAGING_OWNER_ADDRESS = +# Variable: MARK_STAGING_SETTLEMENT_OPERATOR = +# Variable: MARK_STAGING_BRIDGE_OPERATOR = +# Variable: MARK_STAGING_ATTESTER_ADDRESS = +# Variable: MARK_STAGING_DESTINATION_CHAIN_ID = 11155420 -# Governance / role holders +# Use a private RPC endpoint to avoid public rate limits. +RPC_URL=https://opt-sepolia.g.alchemy.com/v2/ + +# Deployer key is injected from the MARK_STAGING_DEPLOYER_PRIVATE_KEY CI secret. +# For local runs, export PRIVATE_KEY before sourcing this file. + +# Owner: holds DEFAULT_ADMIN_ROLE. Use a hardware wallet address. MARK_RYLA_OWNER=0x0000000000000000000000000000000000000000 + +# Operators: hot keys for bridge and settlement operations. MARK_BRIDGE_OPERATOR=0x0000000000000000000000000000000000000000 MARK_SETTLEMENT_OPERATOR=0x0000000000000000000000000000000000000000 + +# Attester: signs settlement attestations. Set to 0x0 to skip during initial staging. MARK_SETTLEMENT_ATTESTER=0x0000000000000000000000000000000000000000 -# Optional initial bridge destination chain id -MARK_BRIDGE_DESTINATION_CHAIN_ID=0 +# Bridge destination: OP Sepolia (not OP mainnet). +MARK_BRIDGE_DESTINATION_CHAIN_ID=11155420 diff --git a/contracts/config/profiles/staging.env b/contracts/config/profiles/staging.env index dae0e1d..b2ef87c 100644 --- a/contracts/config/profiles/staging.env +++ b/contracts/config/profiles/staging.env @@ -1,15 +1,34 @@ # MARK staging profile (OP Sepolia) # Safe by default: execution is disabled unless explicitly overridden. +# +# Key separation model: +# DEPLOYER — hot key that pays gas and deploys contracts (CI secret: MARK_STAGING_DEPLOYER_PRIVATE_KEY) +# After deployment, deployer has no privileged access to deployed contracts. +# OWNER — address that holds DEFAULT_ADMIN_ROLE on all contracts (hardware wallet, address only) +# OPERATOR — hot key for settlement and bridge operations (separate from deployer) +# ATTESTER — hot key for signing settlement attestations (separate from operator) +# +# The deployer key is not stored here. In CI it is injected from the +# MARK_STAGING_DEPLOYER_PRIVATE_KEY GitHub secret. For local rehearsal +# runs, export PRIVATE_KEY before sourcing this file. +# Use a private RPC endpoint (Alchemy/Infura/QuickNode) to avoid public rate limits. RPC_URL=https://sepolia.optimism.io -PRIVATE_KEY=0x1111111111111111111111111111111111111111111111111111111111111111 -MARK_RYLA_OWNER=0x1111111111111111111111111111111111111111 -MARK_MODULE_OWNER=0x1111111111111111111111111111111111111111 -MARK_BRIDGE_OPERATOR=0x2222222222222222222222222222222222222222 -MARK_SETTLEMENT_OPERATOR=0x3333333333333333333333333333333333333333 +# Owner address (hardware wallet — address only, never the key). +MARK_RYLA_OWNER=0x0000000000000000000000000000000000000000 +MARK_MODULE_OWNER=0x0000000000000000000000000000000000000000 + +# Operator addresses (hot keys — addresses only here, keys stay in secure storage). +MARK_BRIDGE_OPERATOR=0x0000000000000000000000000000000000000000 +MARK_SETTLEMENT_OPERATOR=0x0000000000000000000000000000000000000000 + +# Attester address (set to 0x0 to skip attester verification during rehearsal). MARK_SETTLEMENT_ATTESTER=0x0000000000000000000000000000000000000000 -MARK_BRIDGE_DESTINATION_CHAIN_ID=10 + +# Bridge destination: OP Sepolia (11155420), not OP mainnet. +# Never use mainnet (10) as a staging bridge destination. +MARK_BRIDGE_DESTINATION_CHAIN_ID=11155420 MARK_SETTLEMENT_VERIFIER=0x0000000000000000000000000000000000000000 MARK_SETTLEMENT_PROOF_ENABLED=true From 30cedd5a4b42c45f1256af6c03e3b34ab409cb98 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sat, 9 May 2026 11:02:12 +0700 Subject: [PATCH 54/60] feat(frontend): replace dev dashboard with protocol info page Protocol info page with pre-production status, contract descriptions, and resource links. Providers updated to optimism/optimismSepolia. --- contracts/foundry.toml | 1 + index.html | 4 +- src/App.tsx | 152 ++++++++++++++++++++++------------------- src/Providers.tsx | 20 ++---- 4 files changed, 87 insertions(+), 90 deletions(-) diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 6064a4c..5f027bc 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -29,3 +29,4 @@ no_match_path = "test/never/**" # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options + diff --git a/index.html b/index.html index e4b78ea..5438f29 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,9 @@ - - Vite + React + TS + + MARK Protocol
diff --git a/src/App.tsx b/src/App.tsx index de2b02d..389550d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,91 +1,99 @@ -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Separator } from '@/components/ui/separator'; -import { supersimL2A, supersimL2B } from '@eth-optimism/viem/chains'; -type ChainInfo = { - name: string; - id: number; - role: string; -}; -const MARK_FLOW = [ - 'Preflight deployment checks', - 'Release orchestration and artifact generation', - 'Staging rehearsal on canary', - 'Mainnet readiness gate on main', - 'Evidence manifest and signature verification', +const CONTRACTS = [ + { + name: 'RYLA Credits', + symbol: 'RYLA', + description: 'Superchain-compatible credit token. Mintable and burnable only by the settlement module.', + }, + { + name: 'MARKSettlementModule', + description: + 'Operator-gated settlement boundary. Validates proofs and executes RYLA mint/burn with replay protection.', + }, + { + name: 'MARKBridgeAdapter', + description: + 'Operator-gated bridge adapter routing RYLA cross-chain via SuperchainTokenBridge with rate limits.', + }, + { + name: 'AttestedSettlementVerifier', + description: + 'EIP-712 signature-based verifier for settlement intents. Production bridge step before ZK verifier integration.', + }, ]; -const CHAINS: ChainInfo[] = [ - { name: supersimL2A.name, id: supersimL2A.id, role: 'source lane' }, - { name: supersimL2B.name, id: supersimL2B.id, role: 'destination lane' }, +const LINKS = [ + { label: 'GitHub', href: 'https://github.com/trade/mark' }, + { label: 'Security Policy', href: 'https://github.com/trade/mark/security/policy' }, + { label: 'Report a Vulnerability', href: 'https://github.com/trade/mark/security/advisories/new' }, ]; -const QuickCommand = ({ label, cmd }: { label: string; cmd: string }) => ( -
-
{label}
-
{cmd}
-
-); - function App() { return ( -
+
+
+

MARK Protocol

+

by Trade

+
+ - - MARK Protocol Workspace - - This app now tracks protocol operations and release flow. - - + +
+ + Pre-production + + + Staging on OP Sepolia. Not yet deployed to mainnet. + +
+
-
- - - Superchain Lanes - Local development network topology. - - - {CHAINS.map(chain => ( -
-
- {chain.name} ({chain.id}) -
-
{chain.role}
-
- ))} -
-
+ - - - Release Flow - Canonical MARK release checkpoints. - - -
    - {MARK_FLOW.map(step => ( -
  1. {step}
  2. - ))} -
-
-
+
+

Contracts

+
+ {CONTRACTS.map(contract => ( + + + + {contract.name} + {contract.symbol && ( + + ({contract.symbol}) + + )} + + + +

{contract.description}

+
+
+ ))} +
- - - Quick Commands - Use contract Make targets for protocol operations. - - - - - - - - +
+

Resources

+
+ {LINKS.map(link => ( + + {link.label} + + ))} +
+
); } diff --git a/src/Providers.tsx b/src/Providers.tsx index 2431135..efd76ec 100644 --- a/src/Providers.tsx +++ b/src/Providers.tsx @@ -1,29 +1,17 @@ import { createConfig, http, WagmiProvider } from 'wagmi'; import { QueryClientProvider, QueryClient } from '@tanstack/react-query'; -import { supersimL2A, supersimL2B } from '@eth-optimism/viem/chains'; +import { optimism, optimismSepolia } from 'viem/chains'; const queryClient = new QueryClient(); const config = createConfig({ - chains: [supersimL2A, supersimL2B], + chains: [optimism, optimismSepolia], transports: { - [supersimL2A.id]: http(), - [supersimL2B.id]: http(), + [optimism.id]: http(), + [optimismSepolia.id]: http(), }, }); -// When using using the interop-alpha chains, use the following config: - -// import { interopAlpha0, interopAlpha1 } from '@eth-optimism/viem/chains'; - -// const config = createConfig({ -// chains: [interopAlpha0, interopAlpha1], -// transports: { -// [interopAlpha0.id]: http(), -// [interopAlpha1.id]: http(), -// }, -// }); - export const Providers = ({ children }: { children: React.ReactNode }) => { return ( From 889b926e8765bfde233e4779af0ee614fc75e3ae Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sun, 10 May 2026 10:35:36 +0700 Subject: [PATCH 55/60] chore(docs): cleanup and NatSpec improvements Fix README clone URL and naming, remove stale date from CONTRIBUTING.md, add eip712Domain NatSpec and no-pause design decision docs. --- CONTRIBUTING.md | 6 ------ README.md | 16 +++++++++++----- contracts/src/bridge/MARKBridgeAdapter.sol | 3 +++ .../verifier/AttestedSettlementVerifier.sol | 2 ++ 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6702ec0..501074d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -453,9 +453,3 @@ Each exclusion is documented in the codebase. If you disagree with an exclusion, ## Questions? Feel free to open an issue or ask in a PR. We're here to help! - ---- - -**Happy contributing!** 🚀 - -*Last updated: 2026-05-06* diff --git a/README.md b/README.md index eb68b31..072fda5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Mark Protocol +# MARK Protocol Decentralised and privacy-first by design. Leveraging zero-knowledge proofs for secure, scalable settlement on the Superchain. @@ -12,8 +12,8 @@ Decentralised and privacy-first by design. Leveraging zero-knowledge proofs for ### 1. Clone the repository ```bash -git clone -cd +git clone https://github.com/trade/mark.git +cd mark ``` ### 2. Install dependencies @@ -46,7 +46,7 @@ Full policy is documented in [BRANCHING.md](./BRANCHING.md). ## Deploying Contracts -Mark uses `super-cli` (`sup`) for contract deployment across the Superchain. +MARK uses `super-cli` (`sup`) for contract deployment across the Superchain. ### Interactive mode @@ -74,6 +74,13 @@ pnpm build:contracts ## Overview +### Contracts + +- **RYLA Credits** (`RYLA`) — Superchain-compatible credit token. Mintable and burnable only by the settlement module. +- **MARKSettlementModule** — Operator-gated settlement boundary with replay protection and optional ZK proof verification. +- **MARKBridgeAdapter** — Operator-gated bridge adapter routing RYLA cross-chain via SuperchainTokenBridge with rate limits. +- **AttestedSettlementVerifier** — EIP-712 signature-based verifier for settlement intents. + ### Tools - **[supersim](https://github.com/ethereum-optimism/supersim)** — local Superchain test environment with pre-deployed contracts @@ -88,7 +95,6 @@ pnpm build:contracts mark/ ├── contracts/ # Smart contract code (Foundry) ├── src/ # Frontend code (vite, tailwind, shadcn, wagmi, viem) -│ └── App.tsx # Main application component ├── public/ # Static assets ├── supersim-logs/ # Local supersim logs ├── package.json # Project dependencies and scripts diff --git a/contracts/src/bridge/MARKBridgeAdapter.sol b/contracts/src/bridge/MARKBridgeAdapter.sol index ce53f3f..81ffebc 100644 --- a/contracts/src/bridge/MARKBridgeAdapter.sol +++ b/contracts/src/bridge/MARKBridgeAdapter.sol @@ -15,6 +15,9 @@ import {BridgeErrors} from "../errors/BridgeErrors.sol"; /// @title MARKBridgeAdapter /// @notice Operator-gated bridge-out adapter for RYLA using SuperchainTokenBridge. /// @dev Uses destination allowlist and optional per-tx / daily caps. +/// No pause mechanism is provided by design: emergency containment is achieved by +/// revoking all OPERATOR_ROLE holders (see RUNBOOK.md section 5), which stops all +/// bridge operations without introducing pause-admin key risk. contract MARKBridgeAdapter is ReentrancyGuard, AccessControlDefaultAdminRules, BridgeErrors { using SafeERC20 for IERC20; diff --git a/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol b/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol index 1d2b4fb..f942bba 100644 --- a/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol +++ b/contracts/src/settlement/verifier/AttestedSettlementVerifier.sol @@ -19,6 +19,8 @@ import {ZeroAddress} from "@interop-lib/libraries/errors/CommonErrors.sol"; /// `contextHash` is an opaque attester-controlled binding value (e.g. off-chain UTXO /// state root or batch id) included in the signed digest to tie the attestation to /// external state without exposing that state on-chain. +/// EIP-5267: `eip712Domain()` is inherited from OZ EIP712 and available for wallets +/// to discover domain parameters without reading source code. contract AttestedSettlementVerifier is IUTXOSettlementVerifier, EIP712, AccessControlDefaultAdminRules { using ECDSA for bytes32; From 44a940065ef18941b248e014722cec2d9f9cb381 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sun, 10 May 2026 11:10:07 +0700 Subject: [PATCH 56/60] fix(contracts): document setVerifier interface check limitation Add @dev comment explaining code.length check rejects EOAs but not non-conforming contracts. --- contracts/src/settlement/MARKSettlementModule.sol | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contracts/src/settlement/MARKSettlementModule.sol b/contracts/src/settlement/MARKSettlementModule.sol index 699507e..7e32c61 100644 --- a/contracts/src/settlement/MARKSettlementModule.sol +++ b/contracts/src/settlement/MARKSettlementModule.sol @@ -58,6 +58,8 @@ contract MARKSettlementModule is ReentrancyGuard, AccessControlDefaultAdminRules revert ProductionModeRequiresProofValidation(); } if (enableValidation && verifierAddress == address(0)) revert VerifierRequired(); + // Rejects EOAs and undeployed addresses. Does not verify IUTXOSettlementVerifier + // compliance — a non-conforming contract would revert at settlement call time. if (verifierAddress != address(0) && verifierAddress.code.length == 0) revert VerifierRequired(); verifier = IUTXOSettlementVerifier(verifierAddress); From 384880a83de80b9487934ebea4054872a829adb8 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sun, 10 May 2026 11:23:19 +0700 Subject: [PATCH 57/60] docs: add protocol philosophy to README Code is a rule. No DAO, no drama. Don't Trust, Verify. --- README.md | 4 ++++ contracts/foundry.toml | 1 + 2 files changed, 5 insertions(+) diff --git a/README.md b/README.md index 072fda5..49776b5 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ Decentralised and privacy-first by design. Leveraging zero-knowledge proofs for secure, scalable settlement on the Superchain. +Code is a rule. No DAO, no drama. Don't Trust, Verify. + +The protocol enforces settlement rules on-chain. Whether operators run it as a centralised service or a decentralised network is their choice — the contracts don't care. + ## Getting Started ### Prerequisites diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 5f027bc..25a27d0 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -30,3 +30,4 @@ no_match_path = "test/never/**" + From 22d9276d1d755dd4d01274899c75de2405da8ae8 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sun, 10 May 2026 13:58:10 +0700 Subject: [PATCH 58/60] fix(ci): add working-directory override to pre-checkout branch enforcement steps Fixes pre-checkout branch check failing with 'No such file or directory' in staging and production workflows. --- .github/workflows/contracts-evidence-manifest.yml | 1 + .github/workflows/contracts-mainnet-readiness.yml | 1 + .github/workflows/contracts-production-lock-verify.yml | 1 + .github/workflows/contracts-promotion-checklist.yml | 1 + .github/workflows/contracts-staging-rehearsal.yml | 1 + contracts/foundry.toml | 1 + 6 files changed, 6 insertions(+) diff --git a/.github/workflows/contracts-evidence-manifest.yml b/.github/workflows/contracts-evidence-manifest.yml index b89f211..583dee6 100644 --- a/.github/workflows/contracts-evidence-manifest.yml +++ b/.github/workflows/contracts-evidence-manifest.yml @@ -143,6 +143,7 @@ jobs: steps: - name: Enforce main branch for production manifest run + working-directory: . run: | if [ "${GITHUB_REF_NAME}" != "main" ]; then echo "Manual production manifest verification must run from main branch. Current: ${GITHUB_REF_NAME}" diff --git a/.github/workflows/contracts-mainnet-readiness.yml b/.github/workflows/contracts-mainnet-readiness.yml index 745a7b0..364e9d1 100644 --- a/.github/workflows/contracts-mainnet-readiness.yml +++ b/.github/workflows/contracts-mainnet-readiness.yml @@ -36,6 +36,7 @@ jobs: steps: - name: Enforce main branch for production readiness + working-directory: . run: | if [ "${GITHUB_REF_NAME}" != "main" ]; then echo "Production readiness workflow must run from main branch. Current: ${GITHUB_REF_NAME}" diff --git a/.github/workflows/contracts-production-lock-verify.yml b/.github/workflows/contracts-production-lock-verify.yml index 3237c53..2f65bc0 100644 --- a/.github/workflows/contracts-production-lock-verify.yml +++ b/.github/workflows/contracts-production-lock-verify.yml @@ -52,6 +52,7 @@ jobs: steps: - name: Enforce main branch for production verification + working-directory: . run: | if [ "${GITHUB_REF_NAME}" != "main" ]; then echo "Production lock verification workflow must run from main branch. Current: ${GITHUB_REF_NAME}" diff --git a/.github/workflows/contracts-promotion-checklist.yml b/.github/workflows/contracts-promotion-checklist.yml index 92a6b5b..50f400a 100644 --- a/.github/workflows/contracts-promotion-checklist.yml +++ b/.github/workflows/contracts-promotion-checklist.yml @@ -53,6 +53,7 @@ jobs: steps: - name: Enforce main branch for promotion checklist + working-directory: . run: | if [ "${GITHUB_REF_NAME}" != "main" ]; then echo "Promotion checklist workflow must run from main branch. Current: ${GITHUB_REF_NAME}" diff --git a/.github/workflows/contracts-staging-rehearsal.yml b/.github/workflows/contracts-staging-rehearsal.yml index 9bdbe0a..3432a0f 100644 --- a/.github/workflows/contracts-staging-rehearsal.yml +++ b/.github/workflows/contracts-staging-rehearsal.yml @@ -69,6 +69,7 @@ jobs: steps: - name: Enforce canary or dev or main branch for rehearsal + working-directory: . run: | if [ "${GITHUB_REF_NAME}" != "canary" ] && [ "${GITHUB_REF_NAME}" != "dev" ] && [ "${GITHUB_REF_NAME}" != "main" ]; then echo "Staging rehearsal must run from canary, dev, or main branch. Current: ${GITHUB_REF_NAME}" diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 25a27d0..87a32e7 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -31,3 +31,4 @@ no_match_path = "test/never/**" + From c31b5bdbab1940e0c129787509c558c0928bee28 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sun, 10 May 2026 14:34:41 +0700 Subject: [PATCH 59/60] fix(ops): enable post-deploy in rehearse-production-lock Enable MARK_RELEASE_RUN_POSTDEPLOY so activateProductionMode() is called during rehearsal. --- contracts/script/ops/rehearse-production-lock.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/script/ops/rehearse-production-lock.sh b/contracts/script/ops/rehearse-production-lock.sh index 4651c80..38062ee 100755 --- a/contracts/script/ops/rehearse-production-lock.sh +++ b/contracts/script/ops/rehearse-production-lock.sh @@ -47,7 +47,7 @@ export MARK_SETTLEMENT_OPERATOR export MARK_SETTLEMENT_ATTESTER export MARK_RELEASE_EXECUTE=true -export MARK_RELEASE_RUN_POSTDEPLOY=false +export MARK_RELEASE_RUN_POSTDEPLOY=true export MARK_RELEASE_WRITE_ARTIFACT=true export MARK_RELEASE_ARTIFACT_PATH="$RELEASE_ARTIFACT_PATH" export MARK_RELEASE_STRICT_VERIFY=false From 98811e083d8524c0bfcf370f2500a84ececdcfb4 Mon Sep 17 00:00:00 2001 From: Iko <6572003+iap@users.noreply.github.com> Date: Sun, 10 May 2026 14:49:46 +0700 Subject: [PATCH 60/60] fix(ops): export deployed verifier address to env before PostDeployMARKSetup Fixes VerifierRequiredWhenProofEnabled during staging rehearsal. --- contracts/script/ops/settlement/ReleaseMARK.s.sol | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/contracts/script/ops/settlement/ReleaseMARK.s.sol b/contracts/script/ops/settlement/ReleaseMARK.s.sol index dbb395f..5a4d5e6 100644 --- a/contracts/script/ops/settlement/ReleaseMARK.s.sol +++ b/contracts/script/ops/settlement/ReleaseMARK.s.sol @@ -98,6 +98,13 @@ contract ReleaseMARK is Script { if (runPostDeploy) { vm.setEnv("MARK_BRIDGE_ADAPTER", vm.toString(address(adapter))); vm.setEnv("MARK_SETTLEMENT_MODULE", vm.toString(address(module))); + // Export the deployed verifier address so PostDeployMARKSetup can read it. + // DeployMARKSettlementModule deploys the verifier when MARK_DEPLOY_ATTESTED_VERIFIER=true + // but does not export the address; read it from the module state instead. + address deployedVerifier = address(module.verifier()); + if (deployedVerifier != address(0)) { + vm.setEnv("MARK_SETTLEMENT_VERIFIER", vm.toString(deployedVerifier)); + } _runPostDeployPreflight(preflight, deployerKey, deployer, address(token), address(adapter), address(module));