diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 34c9601a..446f013a 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -15,10 +15,10 @@ jobs: steps: - name: Clone repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 - name: Setup pnpm run: corepack enable pnpm diff --git a/package.json b/package.json index e7c7ee80..0edeab0a 100644 --- a/package.json +++ b/package.json @@ -3,53 +3,60 @@ "private": true, "version": "0.0.0", "type": "module", - "packageManager": "pnpm@10.28.0", + "packageManager": "pnpm@10.28.1", "scripts": { "dev": "NODE_OPTIONS='--import tsx' vite", - "build": "tsc -b && vite build", + "build": "tsgo --build && vite build", "check": "biome check --write --unsafe .", - "check:types": "tsc -b", + "check:types": "tsgo --project tsconfig.json --noEmit", "preview": "node dist/preview.js" }, "dependencies": { - "@iconify-json/lucide": "^1.2.82", - "@iconify-json/simple-icons": "^1.2.65", + "@iconify-json/lucide": "^1.2.86", + "@iconify-json/simple-icons": "^1.2.67", "@monaco-editor/react": "^4.7.0", - "@tanstack/react-query": "^5.90.16", + "@tanstack/react-query": "^5.90.19", "@vercel/analytics": "^1.6.1", "@vercel/speed-insights": "^1.3.1", "abitype": "^1.2.3", "cva": "1.0.0-beta.4", "monaco-editor": "^0.55.1", "ox": "^0.11.3", - "posthog-js": "^1.316.0", + "posthog-js": "^1.333.0", "prool": "^0.2.2", - "react": "^19.2.0", - "react-dom": "^19.2.0", + "react": "^19.2.3", + "react-dom": "^19.2.3", "sonner": "^2.0.7", - "sql-formatter": "^15.6.12", + "sql-formatter": "^15.7.0", "tailwind-merge": "^3.4.0", "tailwindcss": "^4.1.18", "tempo.ts": "^0.14.0", - "unplugin-auto-import": "^20.3.0", - "unplugin-icons": "^22.5.0", + "unplugin-auto-import": "^21.0.0", + "unplugin-icons": "^23.0.1", "viem": "^2.44.4", "vocs": "https://pkg.pr.new/wevm/vocs@7431807", "wagmi": "https://pkg.pr.new/wagmi@59f5a5c", - "waku": "1.0.0-alpha.1", + "waku": "1.0.0-alpha.2", "zod": "^4.3.5" }, "devDependencies": { "@biomejs/biome": "^2.3.11", - "@types/node": "^24.10.1", - "@types/react": "^19.2.5", + "@types/node": "^25.0.10", + "@types/react": "^19.2.9", "@types/react-dom": "^19.2.3", + "@typescript/native-preview": "7.0.0-dev.20260122.3", "@vitejs/plugin-react": "^5.1.2", "anser": "^2.3.5", - "dotenv": "^17.2.3", "tsx": "^4.21.0", "typescript": "~5.9.3", "use-sync-external-store": "^1.6.0", - "vite": "^7.2.4" + "vite": "^7.3.1" + }, + "devEngines": { + "runtime": { + "name": "node", + "version": "24.12.0", + "onFail": "download" + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aefa964f..af36e119 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,17 +9,17 @@ importers: .: dependencies: '@iconify-json/lucide': - specifier: ^1.2.82 - version: 1.2.85 + specifier: ^1.2.86 + version: 1.2.86 '@iconify-json/simple-icons': - specifier: ^1.2.65 - version: 1.2.66 + specifier: ^1.2.67 + version: 1.2.67 '@monaco-editor/react': specifier: ^4.7.0 version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tanstack/react-query': - specifier: ^5.90.16 - version: 5.90.17(react@19.2.3) + specifier: ^5.90.19 + version: 5.90.19(react@19.2.3) '@vercel/analytics': specifier: ^1.6.1 version: 1.6.1(react@19.2.3) @@ -39,22 +39,22 @@ importers: specifier: ^0.11.3 version: 0.11.3(typescript@5.9.3)(zod@4.3.5) posthog-js: - specifier: ^1.316.0 - version: 1.324.1 + specifier: ^1.333.0 + version: 1.333.0 prool: specifier: ^0.2.2 version: 0.2.2 react: - specifier: ^19.2.0 + specifier: ^19.2.3 version: 19.2.3 react-dom: - specifier: ^19.2.0 + specifier: ^19.2.3 version: 19.2.3(react@19.2.3) sonner: specifier: ^2.0.7 version: 2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) sql-formatter: - specifier: ^15.6.12 + specifier: ^15.7.0 version: 15.7.0 tailwind-merge: specifier: ^3.4.0 @@ -66,23 +66,23 @@ importers: specifier: ^0.14.0 version: 0.14.0(@remix-run/headers@0.17.2)(@remix-run/route-pattern@0.15.3)(@remix-run/session@0.4.1)(typescript@5.9.3)(viem@2.44.4(typescript@5.9.3)(zod@4.3.5))(zod@4.3.5) unplugin-auto-import: - specifier: ^20.3.0 - version: 20.3.0 + specifier: ^21.0.0 + version: 21.0.0 unplugin-icons: - specifier: ^22.5.0 - version: 22.5.0(@svgr/core@8.1.0(typescript@5.9.3)) + specifier: ^23.0.1 + version: 23.0.1(@svgr/core@8.1.0(typescript@5.9.3)) viem: specifier: ^2.44.4 version: 2.44.4(typescript@5.9.3)(zod@4.3.5) vocs: specifier: https://pkg.pr.new/wevm/vocs@7431807 - version: https://pkg.pr.new/wevm/vocs@7431807(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(rollup@4.55.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(waku@1.0.0-alpha.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: https://pkg.pr.new/wevm/vocs@7431807(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(rollup@4.56.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(waku@1.0.0-alpha.2(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) wagmi: specifier: https://pkg.pr.new/wagmi@59f5a5c - version: https://pkg.pr.new/wagmi@59f5a5c(@tanstack/query-core@5.90.17)(@tanstack/react-query@5.90.17(react@19.2.3))(@types/react@19.2.8)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)) + version: https://pkg.pr.new/wagmi@59f5a5c(@tanstack/query-core@5.90.19)(@tanstack/react-query@5.90.19(react@19.2.3))(@types/react@19.2.9)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)) waku: - specifier: 1.0.0-alpha.1 - version: 1.0.0-alpha.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 1.0.0-alpha.2 + version: 1.0.0-alpha.2(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) zod: specifier: ^4.3.5 version: 4.3.5 @@ -91,23 +91,26 @@ importers: specifier: ^2.3.11 version: 2.3.11 '@types/node': - specifier: ^24.10.1 - version: 24.10.9 + specifier: ^25.0.10 + version: 25.0.10 '@types/react': - specifier: ^19.2.5 - version: 19.2.8 + specifier: ^19.2.9 + version: 19.2.9 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.8) + version: 19.2.3(@types/react@19.2.9) + '@typescript/native-preview': + specifier: 7.0.0-dev.20260122.3 + version: 7.0.0-dev.20260122.3 '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 5.1.2(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) anser: specifier: ^2.3.5 version: 2.3.5 - dotenv: - specifier: ^17.2.3 - version: 17.2.3 + node: + specifier: runtime:24.12.0 + version: runtime:24.12.0 tsx: specifier: ^4.21.0 version: 4.21.0 @@ -118,8 +121,8 @@ importers: specifier: ^1.6.0 version: 1.6.0(react@19.2.3) vite: - specifier: ^7.2.4 - version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: ^7.3.1 + version: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) packages: @@ -506,14 +509,14 @@ packages: peerDependencies: hono: ^4 - '@iconify-json/lucide@1.2.85': - resolution: {integrity: sha512-VXUWT6KRDiVK4Ty/7Ypu+U0KnSbHzDAOOiSgLLPhU8u3ES5IusP1X7ahZb1iwiVKGWRG6gkKywaRUIZLgYWXyA==} + '@iconify-json/lucide@1.2.86': + resolution: {integrity: sha512-W/Jz7/gGOkI9u43r+UHmQtZtcyw2YLvMwiHa01WV6V4DYltrPNXiD+bCa+djV8LZB1uwF8CiympOMIbgiQ74nA==} - '@iconify-json/simple-icons@1.2.66': - resolution: {integrity: sha512-D1OnnXwiQXFkVMw5M+Bt8mPsXeMkQyGmMdrmN7lsQlKMUkfLOp6JWhnUJ92po51WXT046aF/zzqSmkKqg08p4Q==} + '@iconify-json/simple-icons@1.2.67': + resolution: {integrity: sha512-RGJRwlxyup54L1UDAjCshy3ckX5zcvYIU74YLSnUgHGvqh6B4mvksbGNHAIEp7dZQ6cM13RZVT5KC07CmnFNew==} - '@iconify-json/vscode-icons@1.2.39': - resolution: {integrity: sha512-ycXYaWkho1nJE+HsArpphb+Ug/bVVAZzPHqvGhSJULE3rutdz9cqxg//AmrU/oEBPTi7ximyoEKpJ2ICVhR1aw==} + '@iconify-json/vscode-icons@1.2.40': + resolution: {integrity: sha512-Q7JIWAxENwmcRg4EGRY+u16gBwrAj6mWeuSmuyuPvNvoTJHh8Ss8qoeDhrFYNgtWqNkzH5hSf4b2T9XLK5MsrA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -579,8 +582,8 @@ packages: peerDependencies: rollup: '>=2' - '@modelcontextprotocol/sdk@1.25.2': - resolution: {integrity: sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==} + '@modelcontextprotocol/sdk@1.25.3': + resolution: {integrity: sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -628,8 +631,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.4.0': - resolution: {integrity: sha512-KtcyFHssTn5ZgDu6SXmUznS80OFs/wN7y6MyFRRcKU6TOw8hNcGxKvt8hsdaLJfhzUszNSjURetq5Qpkad14Gw==} + '@opentelemetry/core@2.5.0': + resolution: {integrity: sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -658,8 +661,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/resources@2.4.0': - resolution: {integrity: sha512-RWvGLj2lMDZd7M/5tjkI/2VHMpXebLgPKvBUd9LRasEWR2xAynDwEYZuLvY9P2NGG73HF07jbbgWX2C9oavcQg==} + '@opentelemetry/resources@2.5.0': + resolution: {integrity: sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' @@ -682,15 +685,15 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.38.0': - resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} + '@opentelemetry/semantic-conventions@1.39.0': + resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==} engines: {node: '>=14'} - '@posthog/core@1.9.1': - resolution: {integrity: sha512-kRb1ch2dhQjsAapZmu6V66551IF2LnCbc1rnrQqnR7ArooVyJN9KOPXre16AJ3ObJz2eTfuP7x25BMyS2Y5Exw==} + '@posthog/core@1.13.0': + resolution: {integrity: sha512-knjncrk7qRmssFRbGzBl1Tunt21GRpe0Wv+uVelyL0Rh7PdQUsgguulzXFTps8hA6wPwTU4kq85qnbAJ3eH6Wg==} - '@posthog/types@1.324.1': - resolution: {integrity: sha512-OV1DWoLFwYVMiIz6dTkzxOp502brOb8XGh6YHUJ3411Qi8gHyWY1lEGTcWnPFkTKE2KW+6alHlj7g3MMSCZ1kw==} + '@posthog/types@1.333.0': + resolution: {integrity: sha512-9Wg/2ez+EZh6NmtOjhtYSkBHz/yIq8WMS0QSIizUoggh35hHVg4BTMXl3rz/tPearJNKU/8oRjEyuZ0OYTEDOA==} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -763,128 +766,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.55.1': - resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} + '@rollup/rollup-android-arm-eabi@4.56.0': + resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.55.1': - resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} + '@rollup/rollup-android-arm64@4.56.0': + resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.55.1': - resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} + '@rollup/rollup-darwin-arm64@4.56.0': + resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.55.1': - resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} + '@rollup/rollup-darwin-x64@4.56.0': + resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.55.1': - resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} + '@rollup/rollup-freebsd-arm64@4.56.0': + resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.55.1': - resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} + '@rollup/rollup-freebsd-x64@4.56.0': + resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': - resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': + resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.55.1': - resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} + '@rollup/rollup-linux-arm-musleabihf@4.56.0': + resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.55.1': - resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} + '@rollup/rollup-linux-arm64-gnu@4.56.0': + resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.55.1': - resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} + '@rollup/rollup-linux-arm64-musl@4.56.0': + resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.55.1': - resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} + '@rollup/rollup-linux-loong64-gnu@4.56.0': + resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.55.1': - resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} + '@rollup/rollup-linux-loong64-musl@4.56.0': + resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.55.1': - resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} + '@rollup/rollup-linux-ppc64-gnu@4.56.0': + resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.55.1': - resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} + '@rollup/rollup-linux-ppc64-musl@4.56.0': + resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.55.1': - resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} + '@rollup/rollup-linux-riscv64-gnu@4.56.0': + resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.55.1': - resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} + '@rollup/rollup-linux-riscv64-musl@4.56.0': + resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.55.1': - resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} + '@rollup/rollup-linux-s390x-gnu@4.56.0': + resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.55.1': - resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} + '@rollup/rollup-linux-x64-gnu@4.56.0': + resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.55.1': - resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} + '@rollup/rollup-linux-x64-musl@4.56.0': + resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.55.1': - resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} + '@rollup/rollup-openbsd-x64@4.56.0': + resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.55.1': - resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} + '@rollup/rollup-openharmony-arm64@4.56.0': + resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.55.1': - resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} + '@rollup/rollup-win32-arm64-msvc@4.56.0': + resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.55.1': - resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} + '@rollup/rollup-win32-ia32-msvc@4.56.0': + resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.55.1': - resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} + '@rollup/rollup-win32-x64-gnu@4.56.0': + resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.55.1': - resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} + '@rollup/rollup-win32-x64-msvc@4.56.0': + resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} cpu: [x64] os: [win32] @@ -1161,11 +1164,11 @@ packages: '@takumi-rs/wasm@0.62.8': resolution: {integrity: sha512-V3L4LMoa1hqUxYel+j2oaIYhx7TdfSI/5iStU+7sTDru3o0gwJxw923jG66/F+lLSPGeY4rmYejcJCJN5VfpBA==} - '@tanstack/query-core@5.90.17': - resolution: {integrity: sha512-hDww+RyyYhjhUfoYQ4es6pbgxY7LNiPWxt4l1nJqhByjndxJ7HIjDxTBtfvMr5HwjYavMrd+ids5g4Rfev3lVQ==} + '@tanstack/query-core@5.90.19': + resolution: {integrity: sha512-GLW5sjPVIvH491VV1ufddnfldyVB+teCnpPIvweEfkpRx7CfUmUGhoh9cdcUKBh/KwVxk22aNEDxeTsvmyB/WA==} - '@tanstack/react-query@5.90.17': - resolution: {integrity: sha512-PGc2u9KLwohDUSchjW9MZqeDQJfJDON7y4W7REdNBgiFKxQy+Pf7eGjiFWEj5xPqKzAeHYdAb62IWI1a9UJyGQ==} + '@tanstack/react-query@5.90.19': + resolution: {integrity: sha512-qTZRZ4QyTzQc+M0IzrbKHxSeISUmRB3RPGmao5bT+sI6ayxSRhn0FXEnT5Hg3as8SBFcRosrXXRFB+yAcxVxJQ==} peerDependencies: react: ^18 || ^19 @@ -1211,16 +1214,16 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@24.10.9': - resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} + '@types/node@25.0.10': + resolution: {integrity: sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==} '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.2.8': - resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==} + '@types/react@19.2.9': + resolution: {integrity: sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1231,6 +1234,45 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260122.3': + resolution: {integrity: sha512-VVr3SHMzQTeQhtSlLnSjMK8kaE3f2SmOOkvuC8qGHQ2W28RF2ZvIFhbJgCAI++8S/L0GufF+ISA50M41yRiNOA==} + cpu: [arm64] + os: [darwin] + + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260122.3': + resolution: {integrity: sha512-3G2+xwNXu7cJtMavpuoJ3EdO0Dk1okrKQ28VNKrkV61+8Ei5Z6hNSU+rmEw7fn83EYGXMBpq8znO/U/Gvc3BDg==} + cpu: [x64] + os: [darwin] + + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260122.3': + resolution: {integrity: sha512-W5Ac4aYkKHf8ytEk969CjpWOT8WjVI7rbx5cwMCPKOLFnTyz4MJ2rK70IXWCssnZtz9KuSBdktAjhq7O1utF3w==} + cpu: [arm64] + os: [linux] + + '@typescript/native-preview-linux-arm@7.0.0-dev.20260122.3': + resolution: {integrity: sha512-q/BqemIAcP7MjmtG8xXFnbC/MuCxzSL03kN2IrOybxetspCTEi5gKVLEm81LZUCLt3bVgBeVu1sSrQEGhunM6w==} + cpu: [arm] + os: [linux] + + '@typescript/native-preview-linux-x64@7.0.0-dev.20260122.3': + resolution: {integrity: sha512-N+yHKKuaMKjKMtxDBj7fK1nxbbVjme30kEoRQnYTPCwX7mwCbGy/8WffhgNV+qCxtdxp5P0+iQFr8X/dxjWS3w==} + cpu: [x64] + os: [linux] + + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260122.3': + resolution: {integrity: sha512-QTT+YpIgPLl0TkVu2M/hGGR8MjVvfXDqA57R8ILS8+QjpzE+EB7P73MR7OAeCs+hI+Kw3OERoH3WtmdyHlYf5w==} + cpu: [arm64] + os: [win32] + + '@typescript/native-preview-win32-x64@7.0.0-dev.20260122.3': + resolution: {integrity: sha512-Q6N5274oq3WiSlNoox9uC7YNEivkbwzYintiAzb45d1rsoknNgkCMRecdEC1+kMg6uNnWrmHELg1yJuLaaIinA==} + cpu: [x64] + os: [win32] + + '@typescript/native-preview@7.0.0-dev.20260122.3': + resolution: {integrity: sha512-/G74DRDNrq2pkBjne3aGzycdy2bKa2Hs4DrkLMRq+cDODjyqvHJIZV7hjRRYph3cvGnd0bFd5G6LE5zNp+ap8w==} + hasBin: true + '@typescript/vfs@1.6.2': resolution: {integrity: sha512-hoBwJwcbKHmvd2QVebiytN1aELvpk9B74B4L1mFm/XT1Q/VOYAWl2vQ9AWRFtQq8zmz6enTpfTV8WRc4ATjW/g==} peerDependencies: @@ -1294,8 +1336,8 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vitejs/plugin-rsc@0.5.14': - resolution: {integrity: sha512-PW1vWMXzbOJSMuODV+clvWvzBKFE+SYmz0T0FBc8Jk5elZYKG4IWQLozX26w4omYN4HfbieOqRT2QVIWg/rpXg==} + '@vitejs/plugin-rsc@0.5.16': + resolution: {integrity: sha512-BopxxopgDQjKIikc6VW1BeC1uRJgY0HOi2uJnF3L+J44oQVjmHIunHEaO85InW6FnFtaMpBeLQ/OJ/sbnwhiEA==} peerDependencies: react: '*' react-dom: '*' @@ -1306,7 +1348,7 @@ packages: optional: true '@wagmi/connectors@https://pkg.pr.new/wevm/wagmi/@wagmi/connectors@59f5a5c': - resolution: {integrity: sha512-D/D+LWmk8uqI2DVaNgNvQnsPeP9nNOOU5lEV9bRWDk+IP1L8C7GgkqZQFKjU9dyGR6jScUtWn1uF/4qZi42Drw==, tarball: https://pkg.pr.new/wevm/wagmi/@wagmi/connectors@59f5a5c} + resolution: {tarball: https://pkg.pr.new/wevm/wagmi/@wagmi/connectors@59f5a5c} version: 0.0.0-fix-webauthn-rpid-propagation.3918c86 peerDependencies: '@base-org/account': ^2.5.1 @@ -1341,7 +1383,7 @@ packages: optional: true '@wagmi/core@https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c': - resolution: {integrity: sha512-OwoLuUuNHOXoQ521dmXTrJI7oRKlmUfUfQlNBnZPepulUmphqfYuzzdgdYebxpQnw7jW4u/5EaHJkvHyivIDyQ==, tarball: https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c} + resolution: {tarball: https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c} version: 0.0.0-fix-webauthn-rpid-propagation.3918c86 peerDependencies: '@tanstack/query-core': '>=5.0.0' @@ -1485,8 +1527,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.9.14: - resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==} + baseline-browser-mapping@2.9.17: + resolution: {integrity: sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==} hasBin: true body-parser@2.2.2: @@ -1528,8 +1570,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001764: - resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==} + caniuse-lite@1.0.30001765: + resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1605,8 +1647,8 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - core-js@3.47.0: - resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} + core-js@3.48.0: + resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==} cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -1652,8 +1694,8 @@ packages: supports-color: optional: true - decode-named-character-reference@1.2.0: - resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -1697,8 +1739,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.267: - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + electron-to-chromium@1.5.277: + resolution: {integrity: sha512-wKXFZw4erWmmOz5N/grBoJ2XrNJGDFMu2+W5ACHza5rHtvsqrK4gb6rnLC7XxKB9WlJ+RmyQatuEXmtm86xbnw==} encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} @@ -1826,6 +1868,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'} @@ -1988,8 +2033,8 @@ packages: hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hono@4.11.4: - resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==} + hono@4.11.5: + resolution: {integrity: sha512-WemPi9/WfyMwZs+ZUXdiwcCh9Y+m7L+8vki9MzDw3jJ+W9Lc+12HGsd368Qc1vZi1xwW8BWMMsnK5efYKPdt4g==} engines: {node: '>=16.9.0'} html-void-elements@3.0.0: @@ -2485,6 +2530,96 @@ packages: node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + node@runtime:24.12.0: + resolution: + type: variations + variants: + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-MfPQZbuE8GnlIuVdDTA1vTZMul2KIiM/9oAF0oHou3g= + type: binary + url: https://nodejs.org/download/release/v24.12.0/node-v24.12.0-aix-ppc64.tar.gz + targets: + - cpu: ppc64 + os: aix + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-MZ8iGtxeRP8O1X6KRBsihPArjcb8h7jrkqapNkP9gIA= + type: binary + url: https://nodejs.org/download/release/v24.12.0/node-v24.12.0-darwin-arm64.tar.gz + targets: + - cpu: arm64 + os: darwin + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-uC6kxi/QjiUMq1nWJeddd8xbCj1gxmmOvuRUXIihacU= + type: binary + url: https://nodejs.org/download/release/v24.12.0/node-v24.12.0-darwin-x64.tar.gz + targets: + - cpu: x64 + os: darwin + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-myou65io6zc2EiTiodBgMArS3RQ69Y39sW3nhd8PEig= + type: binary + url: https://nodejs.org/download/release/v24.12.0/node-v24.12.0-linux-arm64.tar.gz + targets: + - cpu: arm64 + os: linux + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-Zux5tNZPQQmu34IhCHFdC2CXEY35FZwvYyFHfaTqF6o= + type: binary + url: https://nodejs.org/download/release/v24.12.0/node-v24.12.0-linux-ppc64le.tar.gz + targets: + - cpu: ppc64le + os: linux + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-jclgolVdsap3/RMcJb5XG594RLyLJ454cyufWA/n1YA= + type: binary + url: https://nodejs.org/download/release/v24.12.0/node-v24.12.0-linux-s390x.tar.gz + targets: + - cpu: s390x + os: linux + - resolution: + archive: tarball + bin: bin/node + integrity: sha256-YVkifgr318PGuy+pAEUrBKbLiEGnAqeazGEyCdcLBNA= + type: binary + url: https://nodejs.org/download/release/v24.12.0/node-v24.12.0-linux-x64.tar.gz + targets: + - cpu: x64 + os: linux + - resolution: + archive: zip + bin: node.exe + integrity: sha256-sF5+Bm+BPTWtPNnCTu2u4HTAEqx+AAcSl2CP3S6UiuM= + prefix: node-v24.12.0-win-arm64 + type: binary + url: https://nodejs.org/download/release/v24.12.0/node-v24.12.0-win-arm64.zip + targets: + - cpu: arm64 + os: win32 + - resolution: + archive: zip + bin: node.exe + integrity: sha256-nBJfYa6Ue1LneQlYMPnKwmeEagQ+9xkhg8hAFqqtKBI= + prefix: node-v24.12.0-win-x64 + type: binary + url: https://nodejs.org/download/release/v24.12.0/node-v24.12.0-win-x64.zip + targets: + - cpu: x64 + os: win32 + version: 24.12.0 + hasBin: true + npm-run-path@6.0.0: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} @@ -2518,6 +2653,9 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -2610,8 +2748,8 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - posthog-js@1.324.1: - resolution: {integrity: sha512-V9mum4EK9BrN6KzVLnamdTcjLBP80mY7q8f+Y3VIvVexUtU6egUwniFeq2efrTFG3sWnU78DERhByePx86nbeQ==} + posthog-js@1.333.0: + resolution: {integrity: sha512-c7vquERMedjuGE2GnaDDJW/V1BIMMQG7BlYKrH0z8O7fc3WpEsQ/IyQ+9aD9+DLxlDCFpzrwgoxVDWi9K37mdA==} preact@10.28.2: resolution: {integrity: sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==} @@ -2783,8 +2921,8 @@ packages: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} - rollup@4.55.1: - resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} + rollup@4.56.0: + resolution: {integrity: sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2891,8 +3029,8 @@ packages: resolution: {integrity: sha512-o2yiy7fYXK1HvzA8P6wwj8QSuwG3e/XcpWht/jIxkQX99c0SVPw0OXdLSV9fHASPiYB09HLA0uq8hokGydi/QA==} hasBin: true - srvx@0.10.0: - resolution: {integrity: sha512-NqIsR+wQCfkvvwczBh8J8uM4wTZx41K2lLSEp/3oMp917ODVVMtW5Me4epCmQ3gH8D+0b+/t4xxkUKutyhimTA==} + srvx@0.10.1: + resolution: {integrity: sha512-A//xtfak4eESMWWydSRFUVvCTQbSwivnGCEf8YGPe2eHU0+Z6znfUTCPF0a7oV3sObSOcrXHlL6Bs9vVctfXdg==} engines: {node: '>=20.16.0'} hasBin: true @@ -2946,8 +3084,8 @@ packages: tailwind-merge@3.4.0: resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} - tailwindcss-logical@4.1.0: - resolution: {integrity: sha512-jko8jJ2svfBHJWHyQj7H3MBN9FeleqDUYNddJEbF1f00rz+OWlCRv2w4Ga2ZjasF8fbEl+ZPwaWQRN5suwB8Iw==} + tailwindcss-logical@4.2.0: + resolution: {integrity: sha512-G+7NFU8xiMczeaykFRvaDbfbpqvFWv05YG6RtS2klW1wvTRkUs96P/e+Zy/Qse6y0HL8tLQ+da8M7trDfu12sw==} peerDependencies: tailwindcss: '>=4.0.0' @@ -2961,6 +3099,7 @@ packages: tar@7.2.0: resolution: {integrity: sha512-hctwP0Nb4AB60bj8WQgRYaMOuJYRAPMGiQUAotms5igN8ppfQM+IvjQ5HcKu1MaZh2Wy2KWVTe563Yj8dfc14w==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me tempo.ts@0.14.0: resolution: {integrity: sha512-tyNg6pomYGqXpiRm0PDLwzOcifd//C9J+B+4rvbIHIwvwqxE1jres1YuaVSayo0JE0hzmXi/HZjJOsbSRdu+kg==} @@ -3095,9 +3234,9 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin-auto-import@20.3.0: - resolution: {integrity: sha512-RcSEQiVv7g0mLMMXibYVKk8mpteKxvyffGuDKqZZiFr7Oq3PB1HwgHdK5O7H4AzbhzHoVKG0NnMnsk/1HIVYzQ==} - engines: {node: '>=14'} + unplugin-auto-import@21.0.0: + resolution: {integrity: sha512-vWuC8SwqJmxZFYwPojhOhOXDb5xFhNNcEVb9K/RFkyk/3VnfaOjzitWN7v+8DEKpMjSsY2AEGXNgt6I0yQrhRQ==} + engines: {node: '>=20.19.0'} peerDependencies: '@nuxt/kit': ^4.0.0 '@vueuse/core': '*' @@ -3130,6 +3269,23 @@ packages: vue-template-es2015-compiler: optional: true + unplugin-icons@23.0.1: + resolution: {integrity: sha512-rv0XEJepajKzDLvRUWASM8K+8+/CCfZn2jtogXqg6RIp7kpatRc/aFrVJn8ANQA09e++lPEEv9yX8cC9enc+QQ==} + peerDependencies: + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 + svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + '@svgr/core': + optional: true + '@svgx/core': + optional: true + '@vue/compiler-sfc': + optional: true + svelte: + optional: true + unplugin-utils@0.3.1: resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} engines: {node: '>=20.19.0'} @@ -3175,8 +3331,8 @@ packages: typescript: optional: true - vite-plugin-arraybuffer@0.1.1: - resolution: {integrity: sha512-j66GVZ695+k5aB/+exTXujYGiW7EfAFchV1Bp27c9JL3Dg+611T8oL9yuCX5zFcgQPCjTy/APijOjaizR/vyGw==} + vite-plugin-arraybuffer@0.1.2: + resolution: {integrity: sha512-KQLgCTnKJE25blJLvW8smUzhuTQyfcX1+aFqkTRKXpeMeqt6tX/AOGngdBd80oc6o0RX7bEsdaF48EQGXOIPWA==} vite-plugin-wasm@3.5.0: resolution: {integrity: sha512-X5VWgCnqiQEGb+omhlBVsvTfxikKtoOgAzQ95+BZ8gQ+VfMHIjSHr0wyvXFQCa0eKQ0fKyaL0kWcEnYqBac4lQ==} @@ -3232,7 +3388,7 @@ packages: optional: true vocs@https://pkg.pr.new/wevm/vocs@7431807: - resolution: {integrity: sha512-WbAsWt7TLxyGaMyOMTlGwJoICmTRuX2A+LRZIzjt1i5ssYnwoYbz/hYlRdKw1pi1c0r7yQ1/0UVSO5pedjNo1w==, tarball: https://pkg.pr.new/wevm/vocs@7431807} + resolution: {tarball: https://pkg.pr.new/wevm/vocs@7431807} version: 0.0.0 hasBin: true peerDependencies: @@ -3256,7 +3412,7 @@ packages: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} wagmi@https://pkg.pr.new/wagmi@59f5a5c: - resolution: {integrity: sha512-CUW3I+vaxmSnZklv54YXCAnYjtELhg31fRjRBXfgFgDzsXjSKwPsTahtixLaaaabmYL4txBiU7Iqnzwm9JA9RQ==, tarball: https://pkg.pr.new/wagmi@59f5a5c} + resolution: {tarball: https://pkg.pr.new/wagmi@59f5a5c} version: 0.0.0-fix-webauthn-rpid-propagation.3918c86 peerDependencies: '@tanstack/react-query': '>=5.0.0' @@ -3267,8 +3423,8 @@ packages: typescript: optional: true - waku@1.0.0-alpha.1: - resolution: {integrity: sha512-IN2+Q4yeomXyDgXWrtze45RQdNsk/B+ZpINhyc5jyurVpUfdMCGT86xZ5NWZexLei6P9RGSUsMY7JIdF09ppew==} + waku@1.0.0-alpha.2: + resolution: {integrity: sha512-AqS1+jEH+gBeqbxt+Tg8cbDp9Kxqgilr/awifeaWyZsKfsMDfzi0thw/OZlW9KT2W8xJNV1lG4OwSNxgvigJpA==} engines: {node: ^24.0.0 || ^22.12.0 || ^20.19.0} hasBin: true peerDependencies: @@ -3491,10 +3647,10 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-ui/react@1.1.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@base-ui/react@1.1.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 - '@base-ui/utils': 0.2.4(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@base-ui/utils': 0.2.4(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@floating-ui/utils': 0.2.10 react: 19.2.3 @@ -3503,9 +3659,9 @@ snapshots: tabbable: 6.4.0 use-sync-external-store: 1.6.0(react@19.2.3) optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 - '@base-ui/utils@0.2.4(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@base-ui/utils@0.2.4(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.6 '@floating-ui/utils': 0.2.10 @@ -3514,7 +3670,7 @@ snapshots: reselect: 5.1.1 use-sync-external-store: 1.6.0(react@19.2.3) optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 '@biomejs/biome@2.3.11': optionalDependencies: @@ -3754,19 +3910,19 @@ snapshots: '@floating-ui/utils@0.2.10': {} - '@hono/node-server@1.19.9(hono@4.11.4)': + '@hono/node-server@1.19.9(hono@4.11.5)': dependencies: - hono: 4.11.4 + hono: 4.11.5 - '@iconify-json/lucide@1.2.85': + '@iconify-json/lucide@1.2.86': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.66': + '@iconify-json/simple-icons@1.2.67': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/vscode-icons@1.2.39': + '@iconify-json/vscode-icons@1.2.40': dependencies: '@iconify/types': 2.0.0 @@ -3866,25 +4022,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(@types/react@19.2.8)(react@19.2.3)': + '@mdx-js/react@3.1.1(@types/react@19.2.9)(react@19.2.3)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.2.8 + '@types/react': 19.2.9 react: 19.2.3 - '@mdx-js/rollup@3.1.1(rollup@4.55.1)': + '@mdx-js/rollup@3.1.1(rollup@4.56.0)': dependencies: '@mdx-js/mdx': 3.1.1 - '@rollup/pluginutils': 5.3.0(rollup@4.55.1) - rollup: 4.55.1 + '@rollup/pluginutils': 5.3.0(rollup@4.56.0) + rollup: 4.56.0 source-map: 0.7.6 vfile: 6.0.3 transitivePeerDependencies: - supports-color - '@modelcontextprotocol/sdk@1.25.2(hono@4.11.4)(zod@4.3.5)': + '@modelcontextprotocol/sdk@1.25.3(hono@4.11.5)(zod@4.3.5)': dependencies: - '@hono/node-server': 1.19.9(hono@4.11.4) + '@hono/node-server': 1.19.9(hono@4.11.5) ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) content-type: 1.0.5 @@ -3934,12 +4090,12 @@ snapshots: '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/semantic-conventions': 1.39.0 - '@opentelemetry/core@2.4.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/semantic-conventions': 1.39.0 '@opentelemetry/exporter-logs-otlp-http@0.208.0(@opentelemetry/api@1.9.0)': dependencies: @@ -3971,13 +4127,13 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/semantic-conventions': 1.39.0 - '@opentelemetry/resources@2.4.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.4.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.39.0 '@opentelemetry/sdk-logs@0.208.0(@opentelemetry/api@1.9.0)': dependencies: @@ -3997,15 +4153,15 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.38.0 + '@opentelemetry/semantic-conventions': 1.39.0 - '@opentelemetry/semantic-conventions@1.38.0': {} + '@opentelemetry/semantic-conventions@1.39.0': {} - '@posthog/core@1.9.1': + '@posthog/core@1.13.0': dependencies: cross-spawn: 7.0.6 - '@posthog/types@1.324.1': {} + '@posthog/types@1.333.0': {} '@protobufjs/aspromise@1.1.2': {} @@ -4056,87 +4212,87 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.53': {} - '@rollup/pluginutils@5.3.0(rollup@4.55.1)': + '@rollup/pluginutils@5.3.0(rollup@4.56.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.55.1 + rollup: 4.56.0 - '@rollup/rollup-android-arm-eabi@4.55.1': + '@rollup/rollup-android-arm-eabi@4.56.0': optional: true - '@rollup/rollup-android-arm64@4.55.1': + '@rollup/rollup-android-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-arm64@4.55.1': + '@rollup/rollup-darwin-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-x64@4.55.1': + '@rollup/rollup-darwin-x64@4.56.0': optional: true - '@rollup/rollup-freebsd-arm64@4.55.1': + '@rollup/rollup-freebsd-arm64@4.56.0': optional: true - '@rollup/rollup-freebsd-x64@4.55.1': + '@rollup/rollup-freebsd-x64@4.56.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.55.1': + '@rollup/rollup-linux-arm-musleabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.55.1': + '@rollup/rollup-linux-arm64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.55.1': + '@rollup/rollup-linux-arm64-musl@4.56.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.1': + '@rollup/rollup-linux-loong64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.55.1': + '@rollup/rollup-linux-loong64-musl@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.55.1': + '@rollup/rollup-linux-ppc64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.55.1': + '@rollup/rollup-linux-ppc64-musl@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.55.1': + '@rollup/rollup-linux-riscv64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.55.1': + '@rollup/rollup-linux-riscv64-musl@4.56.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.55.1': + '@rollup/rollup-linux-s390x-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.55.1': + '@rollup/rollup-linux-x64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-musl@4.55.1': + '@rollup/rollup-linux-x64-musl@4.56.0': optional: true - '@rollup/rollup-openbsd-x64@4.55.1': + '@rollup/rollup-openbsd-x64@4.56.0': optional: true - '@rollup/rollup-openharmony-arm64@4.55.1': + '@rollup/rollup-openharmony-arm64@4.56.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.55.1': + '@rollup/rollup-win32-arm64-msvc@4.56.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.1': + '@rollup/rollup-win32-ia32-msvc@4.56.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.55.1': + '@rollup/rollup-win32-x64-gnu@4.56.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.55.1': + '@rollup/rollup-win32-x64-msvc@4.56.0': optional: true '@scure/base@1.2.6': {} @@ -4347,12 +4503,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 - '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@tailwindcss/node': 4.1.18 '@tailwindcss/oxide': 4.1.18 tailwindcss: 4.1.18 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) '@takumi-rs/core-darwin-arm64@0.62.8': optional: true @@ -4399,11 +4555,11 @@ snapshots: '@takumi-rs/wasm@0.62.8': {} - '@tanstack/query-core@5.90.17': {} + '@tanstack/query-core@5.90.19': {} - '@tanstack/react-query@5.90.17(react@19.2.3)': + '@tanstack/react-query@5.90.19(react@19.2.3)': dependencies: - '@tanstack/query-core': 5.90.17 + '@tanstack/query-core': 5.90.19 react: 19.2.3 '@types/babel__core@7.20.5': @@ -4461,15 +4617,15 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@24.10.9': + '@types/node@25.0.10': dependencies: undici-types: 7.16.0 - '@types/react-dom@19.2.3(@types/react@19.2.8)': + '@types/react-dom@19.2.3(@types/react@19.2.9)': dependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 - '@types/react@19.2.8': + '@types/react@19.2.9': dependencies: csstype: 3.2.3 @@ -4480,6 +4636,37 @@ snapshots: '@types/unist@3.0.3': {} + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260122.3': + optional: true + + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260122.3': + optional: true + + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260122.3': + optional: true + + '@typescript/native-preview-linux-arm@7.0.0-dev.20260122.3': + optional: true + + '@typescript/native-preview-linux-x64@7.0.0-dev.20260122.3': + optional: true + + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260122.3': + optional: true + + '@typescript/native-preview-win32-x64@7.0.0-dev.20260122.3': + optional: true + + '@typescript/native-preview@7.0.0-dev.20260122.3': + optionalDependencies: + '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260122.3 + '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260122.3 + '@typescript/native-preview-linux-arm': 7.0.0-dev.20260122.3 + '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260122.3 + '@typescript/native-preview-linux-x64': 7.0.0-dev.20260122.3 + '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260122.3 + '@typescript/native-preview-win32-x64': 7.0.0-dev.20260122.3 + '@typescript/vfs@1.6.2(typescript@5.9.3)': dependencies: debug: 4.4.3 @@ -4497,7 +4684,7 @@ snapshots: optionalDependencies: react: 19.2.3 - '@vitejs/plugin-react@5.1.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@5.1.2(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.6 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.6) @@ -4505,11 +4692,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-rsc@0.5.14(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-rsc@0.5.16(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: es-module-lexer: 2.0.0 estree-walker: 3.0.3 @@ -4517,29 +4704,29 @@ snapshots: periscopic: 4.0.2 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - srvx: 0.10.0 + srvx: 0.10.1 strip-literal: 3.1.0 turbo-stream: 3.1.0 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vitefu: 1.1.1(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) optionalDependencies: react-server-dom-webpack: 19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1) - '@wagmi/connectors@https://pkg.pr.new/wevm/wagmi/@wagmi/connectors@59f5a5c(@wagmi/core@https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.17)(@types/react@19.2.8)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)))(typescript@5.9.3)(viem@2.44.4(typescript@5.9.3)(zod@4.3.5))': + '@wagmi/connectors@https://pkg.pr.new/wevm/wagmi/@wagmi/connectors@59f5a5c(@wagmi/core@https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.19)(@types/react@19.2.9)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)))(typescript@5.9.3)(viem@2.44.4(typescript@5.9.3)(zod@4.3.5))': dependencies: - '@wagmi/core': https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.17)(@types/react@19.2.8)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)) + '@wagmi/core': https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.19)(@types/react@19.2.9)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)) viem: 2.44.4(typescript@5.9.3)(zod@4.3.5) optionalDependencies: typescript: 5.9.3 - '@wagmi/core@https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.17)(@types/react@19.2.8)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5))': + '@wagmi/core@https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.19)(@types/react@19.2.9)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.9.3) viem: 2.44.4(typescript@5.9.3)(zod@4.3.5) - zustand: 5.0.0(@types/react@19.2.8)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) + zustand: 5.0.0(@types/react@19.2.9)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) optionalDependencies: - '@tanstack/query-core': 5.90.17 + '@tanstack/query-core': 5.90.19 ox: 0.11.3(typescript@5.9.3)(zod@4.3.5) typescript: 5.9.3 transitivePeerDependencies: @@ -4684,7 +4871,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.9.14: {} + baseline-browser-mapping@2.9.17: {} body-parser@2.2.2: dependencies: @@ -4702,9 +4889,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.14 - caniuse-lite: 1.0.30001764 - electron-to-chromium: 1.5.267 + baseline-browser-mapping: 2.9.17 + caniuse-lite: 1.0.30001765 + electron-to-chromium: 1.5.277 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4733,7 +4920,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001764: {} + caniuse-lite@1.0.30001765: {} ccount@2.0.1: {} @@ -4781,7 +4968,7 @@ snapshots: cookie@0.7.2: {} - core-js@3.47.0: {} + core-js@3.48.0: {} cors@2.8.5: dependencies: @@ -4822,7 +5009,7 @@ snapshots: dependencies: ms: 2.1.3 - decode-named-character-reference@1.2.0: + decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 @@ -4863,7 +5050,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.267: {} + electron-to-chromium@1.5.277: {} encodeurl@2.0.0: {} @@ -5027,6 +5214,8 @@ snapshots: eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} + events@3.3.0: {} eventsource-parser@3.0.6: {} @@ -5255,7 +5444,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hono@4.11.4: {} + hono@4.11.5: {} html-void-elements@3.0.0: {} @@ -5329,7 +5518,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.10.9 + '@types/node': 25.0.10 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -5465,7 +5654,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 micromark: 4.0.2 @@ -5636,7 +5825,7 @@ snapshots: micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 @@ -5849,7 +6038,7 @@ snapshots: micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 micromark-util-character: 2.1.1 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 @@ -5897,7 +6086,7 @@ snapshots: dependencies: '@types/debug': 4.1.12 debug: 4.4.3 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-factory-space: 2.0.1 @@ -5985,6 +6174,8 @@ snapshots: node-releases@2.0.27: {} + node@runtime:24.12.0: {} + npm-run-path@6.0.0: dependencies: path-key: 4.0.0 @@ -5999,6 +6190,8 @@ snapshots: object-inspect@1.13.4: {} + obug@2.1.1: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -6043,7 +6236,7 @@ snapshots: '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.2.0 + decode-named-character-reference: 1.3.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 @@ -6101,16 +6294,16 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - posthog-js@1.324.1: + posthog-js@1.333.0: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.208.0 '@opentelemetry/exporter-logs-otlp-http': 0.208.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0) - '@posthog/core': 1.9.1 - '@posthog/types': 1.324.1 - core-js: 3.47.0 + '@posthog/core': 1.13.0 + '@posthog/types': 1.333.0 + core-js: 3.48.0 dompurify: 3.3.1 fflate: 0.4.8 preact: 10.28.2 @@ -6126,7 +6319,7 @@ snapshots: prool@0.2.2: dependencies: change-case: 5.4.4 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 execa: 9.6.1 get-port: 7.1.0 http-proxy: 1.18.1 @@ -6148,7 +6341,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.10.9 + '@types/node': 25.0.10 long: 5.3.2 proxy-addr@2.0.7: @@ -6362,35 +6555,35 @@ snapshots: ret@0.1.15: {} - rollup@4.55.1: + rollup@4.56.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.55.1 - '@rollup/rollup-android-arm64': 4.55.1 - '@rollup/rollup-darwin-arm64': 4.55.1 - '@rollup/rollup-darwin-x64': 4.55.1 - '@rollup/rollup-freebsd-arm64': 4.55.1 - '@rollup/rollup-freebsd-x64': 4.55.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 - '@rollup/rollup-linux-arm-musleabihf': 4.55.1 - '@rollup/rollup-linux-arm64-gnu': 4.55.1 - '@rollup/rollup-linux-arm64-musl': 4.55.1 - '@rollup/rollup-linux-loong64-gnu': 4.55.1 - '@rollup/rollup-linux-loong64-musl': 4.55.1 - '@rollup/rollup-linux-ppc64-gnu': 4.55.1 - '@rollup/rollup-linux-ppc64-musl': 4.55.1 - '@rollup/rollup-linux-riscv64-gnu': 4.55.1 - '@rollup/rollup-linux-riscv64-musl': 4.55.1 - '@rollup/rollup-linux-s390x-gnu': 4.55.1 - '@rollup/rollup-linux-x64-gnu': 4.55.1 - '@rollup/rollup-linux-x64-musl': 4.55.1 - '@rollup/rollup-openbsd-x64': 4.55.1 - '@rollup/rollup-openharmony-arm64': 4.55.1 - '@rollup/rollup-win32-arm64-msvc': 4.55.1 - '@rollup/rollup-win32-ia32-msvc': 4.55.1 - '@rollup/rollup-win32-x64-gnu': 4.55.1 - '@rollup/rollup-win32-x64-msvc': 4.55.1 + '@rollup/rollup-android-arm-eabi': 4.56.0 + '@rollup/rollup-android-arm64': 4.56.0 + '@rollup/rollup-darwin-arm64': 4.56.0 + '@rollup/rollup-darwin-x64': 4.56.0 + '@rollup/rollup-freebsd-arm64': 4.56.0 + '@rollup/rollup-freebsd-x64': 4.56.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.56.0 + '@rollup/rollup-linux-arm-musleabihf': 4.56.0 + '@rollup/rollup-linux-arm64-gnu': 4.56.0 + '@rollup/rollup-linux-arm64-musl': 4.56.0 + '@rollup/rollup-linux-loong64-gnu': 4.56.0 + '@rollup/rollup-linux-loong64-musl': 4.56.0 + '@rollup/rollup-linux-ppc64-gnu': 4.56.0 + '@rollup/rollup-linux-ppc64-musl': 4.56.0 + '@rollup/rollup-linux-riscv64-gnu': 4.56.0 + '@rollup/rollup-linux-riscv64-musl': 4.56.0 + '@rollup/rollup-linux-s390x-gnu': 4.56.0 + '@rollup/rollup-linux-x64-gnu': 4.56.0 + '@rollup/rollup-linux-x64-musl': 4.56.0 + '@rollup/rollup-openbsd-x64': 4.56.0 + '@rollup/rollup-openharmony-arm64': 4.56.0 + '@rollup/rollup-win32-arm64-msvc': 4.56.0 + '@rollup/rollup-win32-ia32-msvc': 4.56.0 + '@rollup/rollup-win32-x64-gnu': 4.56.0 + '@rollup/rollup-win32-x64-msvc': 4.56.0 fsevents: 2.3.3 router@2.2.0: @@ -6528,7 +6721,7 @@ snapshots: argparse: 2.0.1 nearley: 2.20.1 - srvx@0.10.0: {} + srvx@0.10.1: {} state-local@1.0.7: {} @@ -6584,7 +6777,7 @@ snapshots: tailwind-merge@3.4.0: {} - tailwindcss-logical@4.1.0(tailwindcss@4.1.18): + tailwindcss-logical@4.2.0(tailwindcss@4.1.18): dependencies: tailwindcss: 4.1.18 @@ -6758,7 +6951,7 @@ snapshots: unpipe@1.0.0: {} - unplugin-auto-import@20.3.0: + unplugin-auto-import@21.0.0: dependencies: local-pkg: 1.1.2 magic-string: 0.30.21 @@ -6779,6 +6972,16 @@ snapshots: transitivePeerDependencies: - supports-color + unplugin-icons@23.0.1(@svgr/core@8.1.0(typescript@5.9.3)): + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/utils': 3.1.0 + local-pkg: 1.1.2 + obug: 2.1.1 + unplugin: 2.3.11 + optionalDependencies: + '@svgr/core': 8.1.0(typescript@5.9.3) + unplugin-utils@0.3.1: dependencies: pathe: 2.0.3 @@ -6836,22 +7039,22 @@ snapshots: - utf-8-validate - zod - vite-plugin-arraybuffer@0.1.1: {} + vite-plugin-arraybuffer@0.1.2: {} - vite-plugin-wasm@3.5.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-wasm@3.5.0(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): dependencies: - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.55.1 + rollup: 4.56.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.9 + '@types/node': 25.0.10 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 @@ -6859,23 +7062,23 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitefu@1.1.1(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): + vitefu@1.1.1(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): optionalDependencies: - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - vocs@https://pkg.pr.new/wevm/vocs@7431807(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(rollup@4.55.1)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(waku@1.0.0-alpha.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): + vocs@https://pkg.pr.new/wevm/vocs@7431807(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(rollup@4.56.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(waku@1.0.0-alpha.2(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): dependencies: - '@base-ui/react': 1.1.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@base-ui/react': 1.1.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@codesandbox/sandpack-react': 2.20.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@iconify-json/lucide': 1.2.85 - '@iconify-json/simple-icons': 1.2.66 - '@iconify-json/vscode-icons': 1.2.39 + '@iconify-json/lucide': 1.2.86 + '@iconify-json/simple-icons': 1.2.67 + '@iconify-json/vscode-icons': 1.2.40 '@iconify/types': 2.0.0 '@iconify/utils': 3.1.0 '@mdx-js/mdx': 3.1.1 - '@mdx-js/react': 3.1.1(@types/react@19.2.8)(react@19.2.3) - '@mdx-js/rollup': 3.1.1(rollup@4.55.1) - '@modelcontextprotocol/sdk': 1.25.2(hono@4.11.4)(zod@4.3.5) + '@mdx-js/react': 3.1.1(@types/react@19.2.9)(react@19.2.3) + '@mdx-js/rollup': 3.1.1(rollup@4.56.0) + '@modelcontextprotocol/sdk': 1.25.3(hono@4.11.5)(zod@4.3.5) '@remix-run/node-fetch-server': 0.13.0 '@shikijs/rehype': 3.21.0 '@shikijs/transformers': 3.21.0 @@ -6883,18 +7086,18 @@ snapshots: '@shikijs/types': 3.21.0 '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) - '@tailwindcss/vite': 4.1.18(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@tailwindcss/vite': 4.1.18(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) '@takumi-rs/image-response': 0.62.8 '@takumi-rs/wasm': 0.62.8 - '@vitejs/plugin-react': 5.1.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) - '@vitejs/plugin-rsc': 0.5.14(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitejs/plugin-react': 5.1.2(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitejs/plugin-rsc': 0.5.16(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) cac: 6.7.14 cva: class-variance-authority@0.7.1 esast-util-from-js: 2.0.1 estree-util-value-to-estree: 3.5.0 estree-util-visit: 2.0.0 github-slugger: 2.0.0 - hono: 4.11.4 + hono: 4.11.5 mdast-util-from-markdown: 2.0.2 mdast-util-gfm: 3.1.0 mdast-util-mdx: 3.0.0 @@ -6921,7 +7124,7 @@ snapshots: shiki: 3.21.0 sucrase: 3.35.1 tailwindcss: 4.1.18 - tailwindcss-logical: 4.1.0(tailwindcss@4.1.18) + tailwindcss-logical: 4.2.0(tailwindcss@4.1.18) tsx: 4.21.0 twoslash: 0.3.6(typescript@5.9.3) unified: 11.0.5 @@ -6929,13 +7132,13 @@ snapshots: unplugin-icons: 22.5.0(@svgr/core@8.1.0(typescript@5.9.3)) urlpattern-polyfill: 10.1.0 vfile: 6.0.3 - vite-plugin-arraybuffer: 0.1.1 - vite-plugin-wasm: 3.5.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + vite-plugin-arraybuffer: 0.1.2 + vite-plugin-wasm: 3.5.0(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) yaml: 2.8.2 zod: 4.3.5 optionalDependencies: - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - waku: 1.0.0-alpha.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + waku: 1.0.0-alpha.2(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@cfworker/json-schema' - '@remix-run/react' @@ -6956,11 +7159,11 @@ snapshots: w3c-keyname@2.2.8: {} - wagmi@https://pkg.pr.new/wagmi@59f5a5c(@tanstack/query-core@5.90.17)(@tanstack/react-query@5.90.17(react@19.2.3))(@types/react@19.2.8)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)): + wagmi@https://pkg.pr.new/wagmi@59f5a5c(@tanstack/query-core@5.90.19)(@tanstack/react-query@5.90.19(react@19.2.3))(@types/react@19.2.9)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)): dependencies: - '@tanstack/react-query': 5.90.17(react@19.2.3) - '@wagmi/connectors': https://pkg.pr.new/wevm/wagmi/@wagmi/connectors@59f5a5c(@wagmi/core@https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.17)(@types/react@19.2.8)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)))(typescript@5.9.3)(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)) - '@wagmi/core': https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.17)(@types/react@19.2.8)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)) + '@tanstack/react-query': 5.90.19(react@19.2.3) + '@wagmi/connectors': https://pkg.pr.new/wevm/wagmi/@wagmi/connectors@59f5a5c(@wagmi/core@https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.19)(@types/react@19.2.9)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)))(typescript@5.9.3)(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)) + '@wagmi/core': https://pkg.pr.new/wevm/wagmi/@wagmi/core@59f5a5c(@tanstack/query-core@5.90.19)(@types/react@19.2.9)(ox@0.11.3(typescript@5.9.3)(zod@4.3.5))(react@19.2.3)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.3))(viem@2.44.4(typescript@5.9.3)(zod@4.3.5)) react: 19.2.3 use-sync-external-store: 1.4.0(react@19.2.3) viem: 2.44.4(typescript@5.9.3)(zod@4.3.5) @@ -6980,20 +7183,20 @@ snapshots: - ox - porto - waku@1.0.0-alpha.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + waku@1.0.0-alpha.2(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: - '@hono/node-server': 1.19.9(hono@4.11.4) - '@vitejs/plugin-react': 5.1.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) - '@vitejs/plugin-rsc': 0.5.14(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@hono/node-server': 1.19.9(hono@4.11.5) + '@vitejs/plugin-react': 5.1.2(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitejs/plugin-rsc': 0.5.16(react-dom@19.2.3(react@19.2.3))(react-server-dom-webpack@19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1))(react@19.2.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) dotenv: 17.2.3 - hono: 4.11.4 + hono: 4.11.5 magic-string: 0.30.21 picocolors: 1.1.1 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) react-server-dom-webpack: 19.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(webpack@5.104.1) rsc-html-stream: 0.0.7 - vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -7075,9 +7278,9 @@ snapshots: zod@4.3.5: {} - zustand@5.0.0(@types/react@19.2.8)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)): + zustand@5.0.0(@types/react@19.2.9)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)): optionalDependencies: - '@types/react': 19.2.8 + '@types/react': 19.2.9 react: 19.2.3 use-sync-external-store: 1.6.0(react@19.2.3) diff --git a/src/pages/protocol/tips/tip-1009.mdx b/src/pages/protocol/tips/tip-1009.mdx new file mode 100644 index 00000000..39fc0c95 --- /dev/null +++ b/src/pages/protocol/tips/tip-1009.mdx @@ -0,0 +1,298 @@ +--- +id: TIP-1009 +title: Expiring Nonces +description: Time-bounded replay protection using transaction hashes instead of sequential nonce management. +authors: Tempo Team +status: Approved +related: TIP-20, Transactions +protocolVersion: T1 +--- + +# TIP-1009: Expiring Nonces + +## Abstract + +TIP-1009 introduces expiring nonces, an alternative replay protection mechanism where transactions are valid only within a specified time window. Instead of tracking sequential nonces, the protocol uses transaction hashes with expiry timestamps to prevent replay attacks. This enables use cases like gasless transactions, meta-transactions, and simplified UX where users don't need to manage nonce ordering. + +## Motivation + +Traditional sequential nonces require careful ordering—if transaction N fails or is delayed, all subsequent transactions (N+1, N+2, ...) are blocked. This creates friction for: + +1. **Gasless/Meta-transactions**: Relayers need complex nonce management across multiple users +2. **Parallel submission**: Users cannot submit multiple independent transactions simultaneously +3. **Recovery from failures**: Stuck transactions require explicit cancellation with the same nonce + +Expiring nonces solve these problems by using time-based validity instead of sequence-based ordering. Each transaction is uniquely identified by its hash and is valid only until a specified `validBefore` timestamp. + +--- + +# Specification + +## Nonce Key + +Expiring nonce transactions use a reserved nonce key: + +``` +TEMPO_EXPIRING_NONCE_KEY = uint256.max (2^256 - 1) +``` + +When a Tempo transaction specifies `nonceKey = uint256.max`, the protocol treats it as an expiring nonce transaction. + +## Transaction Fields + +Expiring nonce transactions require: + +| Field | Type | Description | +|-------|------|-------------| +| `nonceKey` | `uint256` | Must be `uint256.max` to indicate expiring nonce mode | +| `nonce` | `uint64` | Must be `0` (unused, validated for consistency) | +| `validBefore` | `uint64` | Unix timestamp (seconds) after which the transaction is invalid | + +## Validity Window + +The `validBefore` timestamp must satisfy: + +``` +now < validBefore <= now + MAX_EXPIRY_SECS +``` + +Where: +- `now` is the current block timestamp +- `MAX_EXPIRY_SECS = 30` seconds + +Transactions with `validBefore` in the past or more than 30 seconds in the future are rejected. + +## Replay Protection + +Replay protection uses a **circular buffer** data structure in the Nonce precompile: + +### Storage Layout + +```solidity +contract Nonce { + // Existing 2D nonce storage + mapping(address => mapping(uint256 => uint64)) public nonces; // slot 0 + + // Expiring nonce storage + mapping(bytes32 => uint64) public expiringNonceSeen; // slot 1: txHash => expiry + mapping(uint32 => bytes32) public expiringNonceRing; // slot 2: circular buffer + uint32 public expiringNonceRingPtr; // slot 3: buffer pointer +} +``` + +### Circular Buffer Design + +The circular buffer has a fixed capacity: + +``` +EXPIRING_NONCE_SET_CAPACITY = 300,000 +``` + +This capacity is sized for 10,000 TPS × 30 seconds = 300,000 transactions, ensuring entries expire before being overwritten. + +### Algorithm + +When processing an expiring nonce transaction: + +1. **Validate expiry window**: Reject if `validBefore <= now` or `validBefore > now + 30` + +2. **Replay check**: Read `expiringNonceSeen[txHash]` + - If entry exists and `expiry > now`, reject as replay + +3. **Get buffer position**: Read `expiringNonceRingPtr`, compute `idx = ptr % CAPACITY` + +4. **Read existing entry**: Read `expiringNonceRing[idx]` to get `oldHash` + +5. **Eviction check** (safety): If `oldHash != 0`: + - Read `expiringNonceSeen[oldHash]` + - If `expiry > now`, reject (buffer full of valid entries) + - Clear `expiringNonceSeen[oldHash] = 0` + +6. **Insert new entry**: + - Write `expiringNonceRing[idx] = txHash` + - Write `expiringNonceSeen[txHash] = validBefore` + +7. **Advance pointer**: Write `expiringNonceRingPtr = ptr + 1` + +### Pseudocode + +```solidity +function checkAndMarkExpiringNonce( + bytes32 txHash, + uint64 validBefore, + uint64 now +) internal { + // 1. Validate expiry window + require(validBefore > now && validBefore <= now + 30, "InvalidExpiry"); + + // 2. Replay check + uint64 seenExpiry = expiringNonceSeen[txHash]; + require(seenExpiry == 0 || seenExpiry <= now, "Replay"); + + // 3-4. Get buffer position and existing entry + uint32 ptr = expiringNonceRingPtr; + uint32 idx = ptr % CAPACITY; + bytes32 oldHash = expiringNonceRing[idx]; + + // 5. Eviction check (safety) + if (oldHash != bytes32(0)) { + uint64 oldExpiry = expiringNonceSeen[oldHash]; + require(oldExpiry == 0 || oldExpiry <= now, "BufferFull"); + expiringNonceSeen[oldHash] = 0; + } + + // 6. Insert new entry + expiringNonceRing[idx] = txHash; + expiringNonceSeen[txHash] = validBefore; + + // 7. Advance pointer + expiringNonceRingPtr = ptr + 1; +} +``` + +## Gas Costs + +The intrinsic gas cost for expiring nonce transactions includes: + +``` +EXPIRING_NONCE_GAS = 2 * COLD_SLOAD_COST + WARM_SLOAD_COST + 3 * WARM_SSTORE_RESET + = 2 * 2100 + 100 + 3 * 2900 + = 13,000 gas +``` + +**Included operations:** +- 2 cold SLOADs: `seen[txHash]`, `ring[idx]` (unique slots per tx) +- 1 warm SLOAD: `seen[oldHash]` (warm because we just read `ring[idx]` which points to it) +- 3 SSTOREs at RESET price: `seen[oldHash]=0`, `ring[idx]`, `seen[txHash]` + +**Excluded operations (amortized):** +- `ring_ptr` SLOAD/SSTORE: Accessed by almost every expiring nonce tx in a block, so amortized cost approaches ~200 gas. May be moved out of EVM storage in the future. + +**Why SSTORE_RESET (2,900) instead of SSTORE_SET (20,000) for `seen[txHash]`:** +- SSTORE_SET cost exists to penalize permanent state growth +- Expiring nonce data is ephemeral: evicted within 30 seconds, fixed-size buffer (300k entries) +- No permanent state growth, so the 20k penalty doesn't apply + +## Transaction Pool Validation + +The transaction pool performs preliminary validation: + +1. Verify `nonceKey == uint256.max` +2. Verify `nonce == 0` +3. Verify `validBefore` is present +4. Verify `validBefore > currentTime` (not expired) +5. Verify `validBefore <= currentTime + MAX_EXPIRY_SECS` (within window) +6. Query `expiringNonceSeen[txHash]` storage slot to check for existing entry + +Transactions failing these checks are rejected before entering the pool. + +## Interaction with Other Features + +### 2D Nonces + +Expiring nonces and 2D nonces are mutually exclusive: +- `nonceKey = 0`: Protocol nonce (standard sequential) +- `nonceKey = 1..uint256.max-1`: 2D nonce keys +- `nonceKey = uint256.max`: Expiring nonce mode + +### Access Keys (Keychain) + +Expiring nonces work with access key signatures. The `validBefore` provides an additional security boundary—even if an access key is compromised, transactions signed with it become invalid after the expiry window. + +### Fee Tokens + +Expiring nonce transactions pay fees in TIP-20 fee tokens like any other Tempo transaction. + +--- + +# Invariants + +## Must Hold + +| ID | Invariant | Description | +|----|-----------|-------------| +| **E1** | No replay | A transaction hash can never be executed twice (changing `validBefore` produces a different hash) | +| **E2** | Expiry enforcement | Transactions with `validBefore <= now` must be rejected | +| **E3** | Window bounds | Transactions with `validBefore > now + MAX_EXPIRY_SECS` must be rejected | +| **E4** | Nonce must be zero | Expiring nonce transactions must have `nonce == 0` | +| **E5** | Valid before required | Expiring nonce transactions must have `validBefore` set | +| **E6** | No nonce mutation | Expiring nonce txs do not increment protocol nonce or any 2D nonce | +| **E7** | Concurrent independence | Multiple expiring nonce txs from same sender can execute in same block | + +## Invariant Tests + +These invariants are tested in the Foundry invariant test suite (`TempoTransactionInvariant.t.sol`): + +| Handler | Tests | Description | +|---------|-------|-------------| +| `handler_expiringNonceBasic` | Basic flow | Execute valid expiring nonce tx | +| `handler_expiringNonceReplay` | E1 | Replay must be rejected | +| `handler_expiringNonceExpired` | E2 | Tx with `validBefore <= now` must be rejected | +| `handler_expiringNonceWindowTooFar` | E3 | Tx with `validBefore > now + 30s` must be rejected | +| `handler_expiringNonceNonZeroNonce` | E4 | Tx with `nonce != 0` must be rejected | +| `handler_expiringNonceMissingValidBefore` | E5 | Tx without `validBefore` must be rejected | +| `handler_expiringNonceNoNonceMutation` | E6 | Protocol and 2D nonces unchanged after execution | +| `handler_expiringNonceConcurrent` | E7 | Multiple concurrent txs from same sender succeed | + +## Test Cases + +1. **Basic flow**: Submit transaction, verify execution, attempt replay (should fail) + +2. **Expiry validation**: + - `validBefore` in past → reject + - `validBefore = now` → reject + - `validBefore = now + 31` → reject + - `validBefore = now + 30` → accept + +3. **Nonce validation**: + - `nonce = 0` → accept + - `nonce > 0` → reject + +4. **Required fields**: + - `validBefore` missing → reject + - `nonceKey != uint256.max` → not expiring nonce (uses 2D nonce rules) + +5. **Post-expiry replay**: Submit tx, wait for expiry, submit same tx with new `validBefore` (should succeed) + +6. **Buffer eviction**: Fill buffer, verify old entries are evicted when expired + +7. **Concurrent transactions**: Submit multiple transactions with same `validBefore`, verify all succeed + +--- + +# Open Questions + +## Safety Check for Buffer Eviction + +The current implementation includes a safety check that reads `expiringNonceSeen[oldHash]` before evicting an entry from the ring buffer. This check verifies the entry is actually expired before overwriting. + +**Rationale for keeping the check:** +- Protects against unexpected TPS spikes that could cause the buffer to fill with valid entries +- Defense-in-depth: prevents replay attacks if capacity assumptions are violated +- Cost is only incurred in the rare case when eviction is needed + +**Rationale for removing the check:** +- The buffer is sized (300k entries) to guarantee entries expire before being overwritten at 10k TPS +- Removes 1 SLOAD (2,100 gas) from the critical path +- Simplifies the algorithm + +**Current decision**: Keep the check but exclude it from gas accounting (charged as if it won't trigger in normal operation). + +**Question**: Should this safety check be: +1. Kept with current gas accounting (not charged for the extra SLOAD)? +2. Removed entirely, trusting the capacity sizing? +3. Kept and fully charged (add 2,100 gas to `EXPIRING_NONCE_GAS`)? + +## Buffer Capacity Sizing + +The current capacity of 300,000 assumes: +- Maximum 10,000 TPS sustained +- 30 second expiry window + +**Question**: Should the capacity be configurable per-chain or hardcoded? What happens if TPS requirements increase significantly? + +## Transaction Hash Computation + +The transaction hash used for replay protection must be computed before signature recovery. + +**Question**: Should the spec explicitly define the hash computation (which fields, encoding) or reference the Tempo Transaction spec? diff --git a/src/pages/protocol/tips/tip-1010.mdx b/src/pages/protocol/tips/tip-1010.mdx new file mode 100644 index 00000000..2e686fa5 --- /dev/null +++ b/src/pages/protocol/tips/tip-1010.mdx @@ -0,0 +1,151 @@ +--- +id: TIP-1010 +title: Mainnet Gas Parameters +description: Initial gas parameters for Tempo mainnet launch including base fee pricing, payment lane capacity, and transaction gas limits. +authors: Dankrad Feist @dankrad +status: Approved +related: TIP-1000, Payment Lane Specification +protocolVersion: T1 +--- + +# TIP-1010: Mainnet Gas Parameters + +## Abstract + +This TIP specifies the initial gas parameters for Tempo mainnet, including base fee pricing, payment lane capacity, and main transaction gas limits. These parameters are calibrated to support Tempo's target of approximately 20,000 TPS for payment transactions while maintaining economically sustainable fee levels. + +## Motivation + +Tempo is designed as a high-throughput blockchain optimized for stablecoin payments. To achieve this, the gas parameters must be carefully calibrated to: + +1. **Enable high throughput**: Support ~20,000 TPS for payment transactions +2. **Maintain low fees**: Target 0.1 cent per standard TIP-20 transfer +3. **Prevent spam**: Ensure fees are high enough to deter abuse +4. **Balance capacity**: Allocate appropriate gas limits between payment lane and general transactions + +The parameters defined in this TIP represent the initial mainnet configuration and may be adjusted through future governance processes. + +--- + +# Specification + +## Base Fee + +**Value**: `2 × 10^10` wei (20 gwei) + +**Rationale**: +- A standard TIP-20 transfer costs approximately 50,000 gas +- At 20 gwei base fee: `50,000 × 20 × 10^9 = 10^15 wei = 0.001 USD` (assuming 1 ETH = $1000 for unit conversion reference) +- This targets approximately **0.1 cent per TIP-20 transfer** + +**Note**: The base fee may fluctuate based on network demand through the existing EIP-1559-style mechanism. This value represents the target equilibrium base fee. + +## Payment Lane Gas Limit + +**Value**: 500,000,000 gas per block (total block gas limit) + +**Rationale**: +- At 50,000 gas per TIP-20 transfer: `500,000,000 / 50,000 = 10,000 transfers per block` +- With 500ms block time: `10,000 × 2 = 20,000 TPS` for payment transactions +- This capacity supports Tempo's target throughput for payment use cases + +**Constraints**: +- Only transactions qualifying for the payment lane (simple TIP-20 transfers, memos, etc.) may exceed the `general_gas_limit` +- Complex contract interactions use the general gas limit instead + +:::info +**Shared capacity model**: The payment lane is non-dedicated. General transactions consume from the same 500M total block gas limit, reducing the remaining capacity available for payment transactions. However, general transactions are capped at `general_gas_limit` (30M), guaranteeing that at least 470M gas remains available for payments even under maximum general transaction load. +::: + +## Main Transaction Gas Limit + +**Value**: 30,000,000 gas per block (`general_gas_limit`) + +**Rationale**: +- Aligned with the transaction gas cap to ensure maximum-sized contract deployments can be included in a block +- Supports general smart contract interactions beyond simple payments +- Provides capacity for: + - Contract deployments (including max 24KB contracts) + - DEX swaps + - Complex multi-step transactions + - Other non-payment use cases + +:::warning +**Transactions exceeding 16,000,000 gas are not recommended.** The elevated gas limits (30M) exist solely to accommodate maximum-sized contract deployments under TIP-1000 state creation costs. Applications should not rely on transactions consuming more than 16M gas for normal operations. When storage pricing is moved to a separate mechanism (e.g., storage rent or state expiry), the transaction gas cap is expected to return to 16,000,000 gas. +::: + +## Transaction Gas Cap + +**Value**: 30,000,000 gas per transaction + +**Rationale**: +- Increased from the previous 16,000,000 gas limit +- Accommodates deployment of maximum-size contracts (24,576 bytes per EIP-170) under TIP-1000 state creation costs: + - Base transaction cost: 21,000 gas + - Calldata for initcode (up to 49,152 bytes per EIP-3860): ~500,000-800,000 gas + - CREATE base cost (TIP-1000, includes keccak/codesize fields): 500,000 gas (replaces old 32,000) + - Initcode execution: variable (~3,000 gas minimum) + - Contract code storage (TIP-1000): `24,576 bytes × 1,000 gas/byte = 24,576,000 gas` + - Account creation (TIP-1000): 250,000 gas + - **Total**: ~25,850,000-26,150,000 gas (fits within 30M limit) + +## Gas Schedule Summary + +| Parameter | Value | Purpose | +|-----------|-------|---------| +| Base fee | `2 × 10^10` wei (20 gwei) | Target 0.1 cent per TIP-20 transfer | +| Total block gas limit | 500,000,000 gas/block | Shared capacity; supports ~20,000 TPS for payments | +| General gas limit | 30,000,000 gas/block | General contract interactions | +| Transaction gas cap | 30,000,000 gas | Allow max-size contract deployment | + +## Economic Analysis + +### Fee Revenue Projections + +At full payment lane utilization: +- 10,000 transfers per block × 50,000 gas × 20 gwei = 10^16 wei per block +- At 2 blocks/second: 2 × 10^16 wei/second = ~$0.02/second (at reference pricing) +- Daily: ~$1,728 in base fees from payment lane alone + +### Cost Per Operation + +| Operation | Gas Cost | USD Cost (at target base fee) | +|-----------|----------|-------------------------------| +| TIP-20 transfer (existing recipient) | 50,000 | $0.001 (0.1 cent) | +| TIP-20 transfer (new recipient) | 300,000 | $0.006 (0.6 cent) | +| First transaction from new account | 300,000 | $0.006 (0.6 cent) | +| Small contract deployment (1KB) | ~1,800,000 | $0.036 (3.6 cents) | +| Max contract deployment (24,576 bytes) | ~26,200,000 | $0.524 (~52 cents) | + +--- + +# Invariants + +1. **Base Fee Floor**: The base fee MUST NOT fall below a minimum threshold that would enable economically viable spam attacks. + +2. **Payment Lane Priority**: Transactions qualifying for the payment lane MUST be able to consume up to the remaining block gas capacity (total gas limit minus gas already consumed by general transactions). + +3. **Shared Gas Pool**: The payment lane and general transactions share a common block gas limit (500M). General transactions are additionally constrained by `general_gas_limit` (30M), ensuring payment transactions always have access to at least 470M gas. + +4. **Transaction Gas Cap**: No single transaction MUST be allowed to consume more than the transaction gas cap (30,000,000 gas). + +5. **Block Gas Validity**: A block MUST be invalid if either: + - Payment lane transactions exceed the payment lane gas limit + - General transactions exceed the general gas limit + +## Implementation Notes + +These parameters are configured at the chainspec level and applied during block validation. Future adjustments may be made through: + +1. Hard fork upgrades (for significant changes) +2. Governance proposals (if on-chain governance is implemented) +3. Emergency response procedures (for critical security issues) + +## Test Cases + +1. **Base fee targeting**: Verify that at equilibrium, TIP-20 transfers cost approximately 0.1 cent +2. **Payment lane capacity**: Verify that 10,000 TIP-20 transfers can be included in a single block +3. **General gas limit**: Verify that general transactions are correctly bounded by the 25M gas limit +4. **Transaction gas cap**: Verify that transactions exceeding 30M gas are rejected +5. **Contract deployment**: Verify that a 24KB contract can be deployed within the transaction gas cap +6. **Lane separation**: Verify that payment lane and general transactions are independently tracked diff --git a/tsconfig.app.json b/tsconfig.app.json index 0d001b43..540b56ad 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -1,9 +1,9 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2022", + "target": "ES2024", "useDefineForClassFields": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"], + "lib": ["ES2024", "DOM", "DOM.Iterable"], "module": "ESNext", "types": ["vite/client", "vocs/globals"], "skipLibCheck": true, diff --git a/tsconfig.node.json b/tsconfig.node.json index b7c768c8..a31a1dba 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -1,8 +1,8 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2023", - "lib": ["ES2023"], + "target": "ES2024", + "lib": ["ES2024"], "module": "ESNext", "types": ["node"], "skipLibCheck": true,