diff --git a/package.json b/package.json index ec1ae22e0..1a9f60a37 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "type": "module", - "packageManager": "pnpm@10.18.2+sha512.9fb969fa749b3ade6035e0f109f0b8a60b5d08a1a87fdf72e337da90dcc93336e2280ca4e44f2358a649b83c17959e9993e777c2080879f3801e6f0d999ad3dd", + "packageManager": "pnpm@10.30.0+sha512.2b5753de015d480eeb88f5b5b61e0051f05b4301808a82ec8b840c9d2adf7748eb352c83f5c1593ca703ff1017295bc3fdd3119abb9686efc96b9fcb18200937", "scripts": { "build": "tsc -b tsconfig.build.json && pnpm --recursive --parallel build", "check": "tsc -b tsconfig.json", @@ -12,16 +12,16 @@ "devDependencies": { "@edgeandnode/amp": "workspace:*", "@effect/eslint-plugin": "^0.3.2", - "@effect/language-service": "^0.56.0", + "@effect/language-service": "^0.74.0", "@eslint/js": "^9.39.2", "eslint": "^9.39.2", "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import-x": "^4.16.1", "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-sort-destructure-keys": "^2.0.0", + "eslint-plugin-sort-destructure-keys": "^3.0.0", "prettier": "^3.8.1", "typescript": "^5.9.3", "typescript-eslint": "^8.54.0", - "vitest": "4.0.12" + "vitest": "4.0.18" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 609184629..dafae1886 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: ^0.3.2 version: 0.3.2 '@effect/language-service': - specifier: ^0.56.0 - version: 0.56.0 + specifier: ^0.74.0 + version: 0.74.0 '@eslint/js': specifier: ^9.39.2 version: 9.39.2 @@ -25,16 +25,16 @@ importers: version: 9.39.2(jiti@2.6.1) eslint-import-resolver-typescript: specifier: ^4.4.4 - version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)) + version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-import-x: specifier: ^4.16.1 - version: 4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) + version: 4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-simple-import-sort: specifier: ^12.1.1 version: 12.1.1(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-sort-destructure-keys: - specifier: ^2.0.0 - version: 2.0.0(eslint@9.39.2(jiti@2.6.1)) + specifier: ^3.0.0 + version: 3.0.0(eslint@9.39.2(jiti@2.6.1)) prettier: specifier: ^3.8.1 version: 3.8.1 @@ -45,198 +45,201 @@ importers: specifier: ^8.54.0 version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) vitest: - specifier: 4.0.12 - version: 4.0.12(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.18 + version: 4.0.18(@types/node@25.2.3)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) typescript/amp: dependencies: '@bufbuild/protobuf': - specifier: ^2.10.1 - version: 2.10.1 + specifier: ^2.11.0 + version: 2.11.0 '@effect/cli': - specifier: ^0.72.1 - version: 0.72.1(@effect/platform@0.93.3(effect@3.19.5))(@effect/printer-ansi@0.47.0(@effect/typeclass@0.36.0(effect@3.19.5))(effect@3.19.5))(@effect/printer@0.47.0(@effect/typeclass@0.36.0(effect@3.19.5))(effect@3.19.5))(effect@3.19.5) + specifier: ^0.73.2 + version: 0.73.2(@effect/platform@0.94.5(effect@3.19.18))(@effect/printer-ansi@0.47.0(@effect/typeclass@0.36.0(effect@3.19.18))(effect@3.19.18))(@effect/printer@0.47.0(@effect/typeclass@0.36.0(effect@3.19.18))(effect@3.19.18))(effect@3.19.18) abitype: - specifier: ^1.1.2 - version: 1.1.2(typescript@5.9.3)(zod@4.1.12) + specifier: ^1.2.3 + version: 1.2.3(typescript@5.9.3)(zod@4.3.6) jiti: specifier: ^2.6.1 version: 2.6.1 jose: - specifier: ^6.1.2 - version: 6.1.2 + specifier: ^6.1.3 + version: 6.1.3 js-toml: specifier: ^1.0.2 version: 1.0.2 minimatch: - specifier: ^10.1.2 - version: 10.1.2 + specifier: ^10.2.1 + version: 10.2.1 open: specifier: ^11.0.0 version: 11.0.0 viem: - specifier: ^2.39.3 - version: 2.39.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + specifier: ^2.46.1 + version: 2.46.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) devDependencies: '@bufbuild/buf': - specifier: ^1.60.0 - version: 1.60.0 + specifier: ^1.65.0 + version: 1.65.0 '@bufbuild/protoc-gen-es': - specifier: ^2.10.1 - version: 2.10.1(@bufbuild/protobuf@2.10.1) + specifier: ^2.11.0 + version: 2.11.0(@bufbuild/protobuf@2.11.0) '@connectrpc/connect': specifier: ^2.1.1 - version: 2.1.1(@bufbuild/protobuf@2.10.1) + version: 2.1.1(@bufbuild/protobuf@2.11.0) '@connectrpc/connect-node': specifier: ^2.1.1 - version: 2.1.1(@bufbuild/protobuf@2.10.1)(@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.10.1)) + version: 2.1.1(@bufbuild/protobuf@2.11.0)(@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.11.0)) + '@effect/cluster': + specifier: ^0.56.4 + version: 0.56.4(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/workflow@0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(effect@3.19.18) '@effect/platform': - specifier: ^0.93.3 - version: 0.93.3(effect@3.19.5) + specifier: ^0.94.5 + version: 0.94.5(effect@3.19.18) '@effect/platform-node': - specifier: ^0.101.0 - version: 0.101.0(@effect/cluster@0.53.1(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/workflow@0.10.0(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(bufferutil@4.0.9)(effect@3.19.5)(utf-8-validate@5.0.10) + specifier: ^0.104.1 + version: 0.104.1(@effect/cluster@0.56.4(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/workflow@0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(bufferutil@4.0.9)(effect@3.19.18)(utf-8-validate@5.0.10) '@effect/vitest': specifier: ^0.27.0 - version: 0.27.0(effect@3.19.5)(vitest@4.0.12(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) + version: 0.27.0(effect@3.19.18)(vitest@4.0.18(@types/node@25.2.3)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1)) '@types/node': - specifier: ^24.10.1 - version: 24.10.1 + specifier: ^25.2.3 + version: 25.2.3 apache-arrow: specifier: ^21.1.0 version: 21.1.0 effect: - specifier: ^3.19.5 - version: 3.19.5 + specifier: ^3.19.18 + version: 3.19.18 tsx: - specifier: ^4.20.6 - version: 4.20.6 + specifier: ^4.21.0 + version: 4.21.0 typescript: specifier: ^5.9.3 version: 5.9.3 vitest: - specifier: 4.0.12 - version: 4.0.12(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.18 + version: 4.0.18(@types/node@25.2.3)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) typescript/studio: dependencies: - '@base-ui-components/react': - specifier: 1.0.0-beta.6 - version: 1.0.0-beta.6(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@base-ui/react': + specifier: 1.2.0 + version: 1.2.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@connectrpc/connect': specifier: ^2.1.1 - version: 2.1.1(@bufbuild/protobuf@2.10.1) + version: 2.1.1(@bufbuild/protobuf@2.11.0) '@connectrpc/connect-web': specifier: ^2.1.1 - version: 2.1.1(@bufbuild/protobuf@2.10.1)(@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.10.1)) + version: 2.1.1(@bufbuild/protobuf@2.11.0)(@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.11.0)) '@edgeandnode/amp': specifier: workspace:* version: link:../amp '@effect-atom/atom': - specifier: ^0.4.2 - version: 0.4.2(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5) + specifier: ^0.5.1 + version: 0.5.1(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18) '@effect-atom/atom-react': - specifier: ^0.4.0 - version: 0.4.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5)(react@19.2.0)(scheduler@0.27.0) + specifier: ^0.5.0 + version: 0.5.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18)(react@19.2.4)(scheduler@0.27.0) '@graphprotocol/gds-react': - specifier: https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-react@b9ac299 - version: https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-react@b9ac299(@types/react@19.2.6)(bufferutil@4.0.9)(react-dom@19.2.0(react@19.2.0))(react-is@17.0.2)(react@19.2.0)(tailwindcss@4.1.17)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + specifier: 0.2.5 + version: 0.2.5(@types/react@19.2.14)(bufferutil@4.0.9)(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(tailwindcss@4.1.18)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) '@monaco-editor/react': specifier: 4.8.0-rc.2 - version: 4.8.0-rc.2(monaco-editor@0.55.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 4.8.0-rc.2(monaco-editor@0.55.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tailwindcss/vite': - specifier: ^4.1.17 - version: 4.1.17(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) + specifier: ^4.1.18 + version: 4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1)) '@tanstack/match-sorter-utils': specifier: ^8.19.4 version: 8.19.4 '@tanstack/react-form': - specifier: ^1.25.0 - version: 1.25.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^1.28.3 + version: 1.28.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/react-query': - specifier: ^5.90.10 - version: 5.90.10(react@19.2.0) + specifier: ^5.90.21 + version: 5.90.21(react@19.2.4) '@tanstack/react-query-devtools': - specifier: ^5.90.2 - version: 5.90.2(@tanstack/react-query@5.90.10(react@19.2.0))(react@19.2.0) + specifier: ^5.91.3 + version: 5.91.3(@tanstack/react-query@5.90.21(react@19.2.4))(react@19.2.4) '@tanstack/react-router': - specifier: ^1.158.0 - version: 1.158.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^1.160.2 + version: 1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/react-router-devtools': - specifier: ^1.158.0 - version: 1.158.0(@tanstack/react-router@1.158.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.158.0)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^1.160.2 + version: 1.160.2(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.160.0)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-plugin': - specifier: ^1.158.0 - version: 1.158.0(@tanstack/react-router@1.158.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) + specifier: ^1.160.2 + version: 1.160.2(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1)) effect: - specifier: ^3.19.5 - version: 3.19.5 + specifier: ^3.19.18 + version: 3.19.18 monaco-editor: - specifier: ^0.55.0 - version: 0.55.0 + specifier: ^0.55.1 + version: 0.55.1 react: - specifier: ^19.2.0 - version: 19.2.0 + specifier: ^19.2.4 + version: 19.2.4 react-dom: - specifier: ^19.2.0 - version: 19.2.0(react@19.2.0) + specifier: ^19.2.4 + version: 19.2.4(react@19.2.4) tailwindcss: - specifier: ^4.1.17 - version: 4.1.17 + specifier: ^4.1.18 + version: 4.1.18 zod: - specifier: ^4.1.12 - version: 4.1.12 + specifier: ^4.3.6 + version: 4.3.6 devDependencies: '@tanstack/eslint-config': - specifier: ^0.3.2 - version: 0.3.2(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: ^0.4.0 + version: 0.4.0(@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@testing-library/dom': specifier: ^10.4.1 version: 10.4.1 '@testing-library/react': - specifier: ^16.3.0 - version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.6))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^16.3.2 + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/react': - specifier: ^19.2.6 - version: 19.2.6 + specifier: ^19.2.14 + version: 19.2.14 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.6) + version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^5.1.1 - version: 5.1.1(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) + specifier: ^5.1.4 + version: 5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1)) jsdom: - specifier: ^27.2.0 - version: 27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + specifier: ^28.1.0 + version: 28.1.0(@noble/hashes@1.8.0) prettier: - specifier: ^3.6.2 - version: 3.6.2 + specifier: ^3.8.1 + version: 3.8.1 typescript: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^7.2.4 - version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + specifier: ^7.3.1 + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) vitest: - specifier: 4.0.12 - version: 4.0.12(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + specifier: 4.0.18 + version: 4.0.18(@types/node@25.2.3)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) web-vitals: specifier: ^5.1.0 version: 5.1.0 packages: - '@acemir/cssom@0.9.23': - resolution: {integrity: sha512-2kJ1HxBKzPLbmhZpxBiTZggjtgCwKg1ma5RHShxvd6zgqhDEdEkzpiwe7jLkI2p2BrZvFCXIihdoMkl1H39VnA==} + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} '@adraffy/ens-normalize@1.11.1': resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} - '@asamuzakjp/css-color@4.1.0': - resolution: {integrity: sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==} + '@asamuzakjp/css-color@4.1.2': + resolution: {integrity: sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==} - '@asamuzakjp/dom-selector@6.7.4': - resolution: {integrity: sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==} + '@asamuzakjp/dom-selector@6.8.1': + resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} @@ -245,22 +248,42 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.28.5': resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + '@babel/core@7.28.5': resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} engines: {node: '>=6.9.0'} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.28.5': resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} @@ -269,12 +292,22 @@ packages: resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.28.3': resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} @@ -295,11 +328,20 @@ packages: resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.28.5': resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} @@ -332,34 +374,37 @@ packages: resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.5': resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} - '@base-ui-components/react@1.0.0-beta.4': - resolution: {integrity: sha512-sPYKj26gbFHD2ZsrMYqQshXnMuomBodzPn+d0dDxWieTj232XCQ9QGt9fU9l5SDGC9hi8s24lDlg9FXPSI7T8A==} - engines: {node: '>=14.0.0'} - deprecated: Package was renamed to @base-ui/react - peerDependencies: - '@types/react': ^17 || ^18 || ^19 - react: ^17 || ^18 || ^19 - react-dom: ^17 || ^18 || ^19 - peerDependenciesMeta: - '@types/react': - optional: true + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} - '@base-ui-components/react@1.0.0-beta.6': - resolution: {integrity: sha512-jE07DkS7JcGKGH4/hNPTabyGfEzrfDhGPM0h9exGDWwRhEJXZK9xhJ4m3fr+yPf8gpddOCMMoKyV4xITJKrSOA==} + '@base-ui/react@1.2.0': + resolution: {integrity: sha512-O6aEQHcm+QyGTFY28xuwRD3SEJGZOBDpyjN2WvpfWYFVhg+3zfXPysAILqtM0C1kWC82MccOE/v1j+GHXE4qIw==} engines: {node: '>=14.0.0'} - deprecated: Package was renamed to @base-ui/react peerDependencies: '@types/react': ^17 || ^18 || ^19 react: ^17 || ^18 || ^19 @@ -368,9 +413,8 @@ packages: '@types/react': optional: true - '@base-ui-components/utils@0.1.2': - resolution: {integrity: sha512-aEitDGpMsYO2qnSpYOwZNykn9Rzn2ioyEVk2fyDRH7t+TIHVKpp9CeV7SPTq43M9mMSDxQ+7UeZJVkrj2dCVIQ==} - deprecated: Package was renamed to @base-ui/utils + '@base-ui/utils@0.2.5': + resolution: {integrity: sha512-oYC7w0gp76RI5MxprlGLV0wze0SErZaRl3AAkeP3OnNB/UBMb6RqNf6ZSIlxOc9Qp68Ab3C2VOcJQyRs7Xc7Vw==} peerDependencies: '@types/react': ^17 || ^18 || ^19 react: ^17 || ^18 || ^19 @@ -379,79 +423,72 @@ packages: '@types/react': optional: true - '@base-ui-components/utils@0.2.0': - resolution: {integrity: sha512-uLLsLpYxPVq/QNsrfHwXuI+uiCr8+P/SLtTgrA4hL5b4UmWo3dnhwo38edfu+gCgfblrJveDj1D4RxEvDc7RXw==} - deprecated: Package was renamed to @base-ui/utils - peerDependencies: - '@types/react': ^17 || ^18 || ^19 - react: ^17 || ^18 || ^19 - react-dom: ^17 || ^18 || ^19 - peerDependenciesMeta: - '@types/react': - optional: true + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true - '@bufbuild/buf-darwin-arm64@1.60.0': - resolution: {integrity: sha512-3C/+EVyHnTGEl0DQ2GISab86IyE0jI4A65m059/BT0LFOF4vPbJU7bHO3Zzz+sFDWer+Ddi+93Tph+pWoxGI9A==} + '@bufbuild/buf-darwin-arm64@1.65.0': + resolution: {integrity: sha512-2U8CHjW1ysINYKwIPcc4WAiQPxe91RIjNtjpg+RC9rP0aZ7TpGm5MTMY5l3sN4drtmKdb9rBs3bMQsMNhSc90A==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@bufbuild/buf-darwin-x64@1.60.0': - resolution: {integrity: sha512-hS6BLLJGJj1FfA0m/pGI/ihv2i4/kin7pQlY1x1rE/FOwzpDFveLVKht+o6dt38cz2HSjLcItOrnke7D4hLBsg==} + '@bufbuild/buf-darwin-x64@1.65.0': + resolution: {integrity: sha512-aMqfc6pQC4L9dZpSD61XCEpPWKEtb1rXDPkK0/tzrfTWodnbaJ/elNoxsCGzbZVSMFeAdomUpXmSMrk8ALfWWw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@bufbuild/buf-linux-aarch64@1.60.0': - resolution: {integrity: sha512-arpgQZ3YZ6RQ6xwCAfKaBHS7wlQBxBDeWSEb+KXOkCGu6fcJX+4b80vUWIVJPE+j2tfpIv02ncWLCwU1tyWeuA==} + '@bufbuild/buf-linux-aarch64@1.65.0': + resolution: {integrity: sha512-gzqvY4PLRQ7g0+RlE9g+OL/6yPd5szG7e3Wd5bgjJzfKaQerNiQWaGyPLdcRsIM/WxJhT5e5lG8OrrWHwgQ9Ig==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@bufbuild/buf-linux-armv7@1.60.0': - resolution: {integrity: sha512-4vDsFgo1m5+J/kY8L58tbnPlpbt6FUO5ngKSIporCTZ+VfpiMiK8R6kh0Tp7PDOO3nAyTqzY/V6h+APnewsuOQ==} + '@bufbuild/buf-linux-armv7@1.65.0': + resolution: {integrity: sha512-RpYFuPr9MKniD+WNfDgCclyvMu+/w9kK41OWr9sNnbS2BorujskwPiY0iTf5j+8+n/MeAnLIGlyC36+vUB/wIw==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@bufbuild/buf-linux-x64@1.60.0': - resolution: {integrity: sha512-E3p1o1VLUxiPnTvOUXU5A37CeF3zbvNZYZQzZT2KZvMCbjch1ZG2zFBmgRtuGsid2aQ260O5NXurh+abDg3boA==} + '@bufbuild/buf-linux-x64@1.65.0': + resolution: {integrity: sha512-0j06h1uKCXlOtrlNcTBkURazT+AwMNvuVxgJsYeUDnSliN05QS7LnBzPOwKg76ariSqlLo+QXk9eNtdhgVjYOg==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@bufbuild/buf-win32-arm64@1.60.0': - resolution: {integrity: sha512-c3udQuwdCOZk5ijeQKT64rbXvzRvJzXqOLjOn+2loM/Yhx6csoOKzCRPxlGKP8qLy45woSoH/tfiBPzuvFKeLA==} + '@bufbuild/buf-win32-arm64@1.65.0': + resolution: {integrity: sha512-KBFsQ3iEityUuLTUCoXAO6ZTGUXWljSjK4upqofsYCb4OJeSeVguD7b09efkQt9ymKsXBt5wQicsRdkMJy/VEA==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@bufbuild/buf-win32-x64@1.60.0': - resolution: {integrity: sha512-xu/o0wJHK+KL/kvfbV/3UvcelJ+DAwxMwhjrGG0mCq91MY+wKXaQHwv28MDjHtSC71+aV81A/YgJDcQjpQtZkg==} + '@bufbuild/buf-win32-x64@1.65.0': + resolution: {integrity: sha512-vJYzHjncSLdy4sPDW8kLqUldHh6Vucg6KabAflm7CDj29lU/HydV8T+nOVsXkoRMUf4+H/qy8WjnSMEtRkaogA==} engines: {node: '>=12'} cpu: [x64] os: [win32] - '@bufbuild/buf@1.60.0': - resolution: {integrity: sha512-RF7EcwHF9wGUs4EBSweHtXZHfVL7bqkSPD1zwgJmG/ejo/I7KXS8+mT56fjw4r6MNgyNTV9F9gVfTsx4D6vhhA==} + '@bufbuild/buf@1.65.0': + resolution: {integrity: sha512-IQmIBB2CGbJAwx1NkuAWMuj4QGPnZ8mujbf4ckx9t6KI9EzfUzql1OyKi9qPrxlLAciI+kBIyPDQ2MIvXTxWUg==} engines: {node: '>=12'} hasBin: true - '@bufbuild/protobuf@2.10.1': - resolution: {integrity: sha512-ckS3+vyJb5qGpEYv/s1OebUHDi/xSNtfgw1wqKZo7MR9F2z+qXr0q5XagafAG/9O0QPVIUfST0smluYSTpYFkg==} + '@bufbuild/protobuf@2.11.0': + resolution: {integrity: sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==} - '@bufbuild/protoc-gen-es@2.10.1': - resolution: {integrity: sha512-vsfbWs1X93oX+sMMJ7910/OwIizAYH5IOAArsxnSTifiop1fVgLFPAvJBLiHZoNMI8B/lbqji2SFwvjK0AWO1Q==} + '@bufbuild/protoc-gen-es@2.11.0': + resolution: {integrity: sha512-VzQuwEQDXipbZ1soWUuAWm1Z0C3B/IDWGeysnbX6ogJ6As91C2mdvAND/ekQ4YIWgen4d5nqLfIBOWLqCCjYUA==} engines: {node: '>=20'} hasBin: true peerDependencies: - '@bufbuild/protobuf': 2.10.1 + '@bufbuild/protobuf': 2.11.0 peerDependenciesMeta: '@bufbuild/protobuf': optional: true - '@bufbuild/protoplugin@2.10.1': - resolution: {integrity: sha512-imB8dKEjrOnG5+XqVS+CeYn924WGLU/g3wogKhk11XtX9y9NJ7432OS6h24asuBbLrQcPdEZ6QkfM7KeOCeeyQ==} + '@bufbuild/protoplugin@2.11.0': + resolution: {integrity: sha512-lyZVNFUHArIOt4W0+dwYBe5GBwbKzbOy8ObaloEqsw9Mmiwv2O48TwddDoHN4itylC+BaEGqFdI1W8WQt2vWJQ==} '@chevrotain/cst-dts-gen@11.0.3': resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} @@ -486,37 +523,36 @@ packages: peerDependencies: '@bufbuild/protobuf': ^2.7.0 - '@csstools/color-helpers@5.1.0': - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} - engines: {node: '>=18'} + '@csstools/color-helpers@6.0.1': + resolution: {integrity: sha512-NmXRccUJMk2AWA5A7e5a//3bCIMyOu2hAtdRYrhPPHjDxINuCwX1w6rnIZ4xjLcp0ayv6h8Pc3X0eJUGiAAXHQ==} + engines: {node: '>=20.19.0'} - '@csstools/css-calc@2.1.4': - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} - engines: {node: '>=18'} + '@csstools/css-calc@3.1.1': + resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@3.1.0': - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} - engines: {node: '>=18'} + '@csstools/css-color-parser@4.0.1': + resolution: {integrity: sha512-vYwO15eRBEkeF6xjAno/KQ61HacNhfQuuU/eGwH67DplL0zD5ZixUa563phQvUelA07yDczIXdtmYojCphKJcw==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.0.16': - resolution: {integrity: sha512-2SpS4/UaWQaGpBINyG5ZuCHnUDeVByOhvbkARwfmnfxDvTaj80yOI1cD8Tw93ICV5Fx4fnyDKWQZI1CDtcWyUg==} - engines: {node: '>=18'} + '@csstools/css-syntax-patches-for-csstree@1.0.27': + resolution: {integrity: sha512-sxP33Jwg1bviSUXAV43cVYdmjt2TLnLXNqCWl9xmxHawWVjGz/kEbdkr7F9pxJNBN2Mh+dq0crgItbW6tQvyow==} - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} '@dprint/formatter@0.4.1': resolution: {integrity: sha512-IB/GXdlMOvi0UhQQ9mcY15Fxcrc2JPadmo6tqefCNV0bptFq7YBpggzpqYXldBXDa04CbKJ+rDwO2eNRPE2+/g==} @@ -524,37 +560,37 @@ packages: '@dprint/typescript@0.91.8': resolution: {integrity: sha512-tuKn4leCPItox1O4uunHcQF0QllDCvPWklnNQIh2PiWWVtRAGltJJnM4Cwj5AciplosD1Hiz7vAY3ew3crLb3A==} - '@effect-atom/atom-react@0.4.0': - resolution: {integrity: sha512-5HpKLgXEG8EWr4sBDl7BZjm6koO/5HSb94C9+OkRLDE4mhH2357vNl4uPNqid0ZNGwVvS6bAvKFmBzc0bZU6yg==} + '@effect-atom/atom-react@0.5.0': + resolution: {integrity: sha512-aFfjWi4rEJCqfM12Oi36/EKaDm/W6n4/N6yM5vL0t/QozKhJhK05rQL/GY4XMxlH2eqkQ4ih8jBQa3Yyp0Fiqw==} peerDependencies: effect: ^3.19 react: '>=18 <20' scheduler: '*' - '@effect-atom/atom@0.4.2': - resolution: {integrity: sha512-E8XssuIus+0nnu0qf0fTHr98Qme47Ph75CAO++q5gYMdeWkpi5iEY1Ugb2NzUVZKTXRKap4te89yFtfl2f2TQA==} + '@effect-atom/atom@0.5.1': + resolution: {integrity: sha512-3GKvEWsM887SXUvHM0t9k+msgAYRG7eGLH0b/AaZ033ozK1qMB69eQxtXnHg+SuJUgv9KCfX0XD6i6UmYXas5Q==} peerDependencies: - '@effect/experimental': ^0.57.0 - '@effect/platform': ^0.93.0 - '@effect/rpc': ^0.72.1 - effect: ^3.19.0 + '@effect/experimental': ^0.58.0 + '@effect/platform': ^0.94.2 + '@effect/rpc': ^0.73.0 + effect: ^3.19.15 - '@effect/cli@0.72.1': - resolution: {integrity: sha512-HGDMGD23TxFW9tCSX6g+M2u0robikMA0mP0SqeJMj7FWXTdcQ+cQsJE99bxi9iu+5YID7MIrVJMs8TUwXUV2sg==} + '@effect/cli@0.73.2': + resolution: {integrity: sha512-K8IJo81+qa1LU8dhxcDU4QO/bIjL/dPd3zUOSCpLiuUNz8Y3/T+WNs3GqIXEhMfCFMSlRZERN0YgmtRlEZUREA==} peerDependencies: - '@effect/platform': ^0.93.0 + '@effect/platform': ^0.94.3 '@effect/printer': ^0.47.0 '@effect/printer-ansi': ^0.47.0 - effect: ^3.19.3 + effect: ^3.19.16 - '@effect/cluster@0.53.1': - resolution: {integrity: sha512-IVpirEEb/1EW7UbVy7zSNM5J16/vuofwvrXRAGmc47vJB4lQYoXDnctKJ+4CETqmmlQY0ZTIttTDeP39xFwScg==} + '@effect/cluster@0.56.4': + resolution: {integrity: sha512-7Je5/JlbZOlsSxsbKjr97dJed2cNGWsb+TLNgMcr5mRDbcWlFOTUGvsrisEJV6waosYLIg+2omPdvnvRoYKdhA==} peerDependencies: - '@effect/platform': ^0.93.3 - '@effect/rpc': ^0.72.2 - '@effect/sql': ^0.48.0 - '@effect/workflow': ^0.13.0 - effect: ^3.19.5 + '@effect/platform': ^0.94.5 + '@effect/rpc': ^0.73.1 + '@effect/sql': ^0.49.0 + '@effect/workflow': ^0.16.0 + effect: ^3.19.17 '@effect/eslint-plugin@0.3.2': resolution: {integrity: sha512-c4Vs9t3r54A4Zpl+wo8+PGzZz3JWYsip41H+UrebRLjQ2Hk/ap63IeCgN/HWcYtxtyhRopjp7gW9nOQ2Snbl+g==} @@ -572,32 +608,32 @@ packages: lmdb: optional: true - '@effect/language-service@0.56.0': - resolution: {integrity: sha512-gvJaHoeXMHAoA6+Xyj9Vdq52yDCs+ECLbKpHvxHtdJP/C0D9b3JFEfLjdVuw37zoWcYS856um4rgEYHlW2LSEQ==} + '@effect/language-service@0.74.0': + resolution: {integrity: sha512-ZqOvxCUo70WtnV8Kf4ORcEW6euepPn3Yu9btB0vpDhN5ydf1RC3/kl2M2b22tzB0MOITeJzNn5HK7w7NJhQFaw==} hasBin: true - '@effect/platform-node-shared@0.54.0': - resolution: {integrity: sha512-prTgG3CXqmrxB4Rg6utfwCTqjlGwjAEvK7R4g3HzVdFpfFRum+FQBpGHUcjyz7EejkDtBY2MWJC3Wr1QKDPjPw==} + '@effect/platform-node-shared@0.57.1': + resolution: {integrity: sha512-oX/bApMdoKsyrDiNdJxo7U9Rz1RXsjRv+ecfAPp1qGlSdGIo32wVRvJ2XCHqYj0sqaYJS0pU0/GCulRfVGuJag==} peerDependencies: - '@effect/cluster': ^0.53.0 - '@effect/platform': ^0.93.3 - '@effect/rpc': ^0.72.2 - '@effect/sql': ^0.48.0 - effect: ^3.19.5 + '@effect/cluster': ^0.56.1 + '@effect/platform': ^0.94.2 + '@effect/rpc': ^0.73.0 + '@effect/sql': ^0.49.0 + effect: ^3.19.15 - '@effect/platform-node@0.101.0': - resolution: {integrity: sha512-dtaQA6Wn5EbVpunwNI9Uld6sSqAnC4Pg7WZ19SndK2pMr4QEPetBH80080kvYQoQbXz6J+T+OI/AyGSiIsADhw==} + '@effect/platform-node@0.104.1': + resolution: {integrity: sha512-jT1a/z98niK6fnEU8pWHPPCdJMVDRCIdB65lolcOjse5rsTwVbczMjvKkhVQpF63mNWoOnol7OTRNkw5L54llg==} peerDependencies: - '@effect/cluster': ^0.53.0 - '@effect/platform': ^0.93.3 - '@effect/rpc': ^0.72.2 - '@effect/sql': ^0.48.0 - effect: ^3.19.5 + '@effect/cluster': ^0.56.1 + '@effect/platform': ^0.94.2 + '@effect/rpc': ^0.73.0 + '@effect/sql': ^0.49.0 + effect: ^3.19.15 - '@effect/platform@0.93.3': - resolution: {integrity: sha512-s88zctkeXba24Mjy7MEFMuam1p5sXmsG7uQjPIDE6EiC+2IFUQd8976TtangiU0e8qu0SALpjIH1P1QyC7/1og==} + '@effect/platform@0.94.5': + resolution: {integrity: sha512-z05APUiDDPbodhTkH/RJqOLoCU11bU2IZLfcwLFrld03+ob1VeqRnELQlmueLIYm6NZifHAtjl32V+GRt34y4A==} peerDependencies: - effect: ^3.19.4 + effect: ^3.19.17 '@effect/printer-ansi@0.47.0': resolution: {integrity: sha512-tDEQ9XJpXDNYoWMQJHFRMxKGmEOu6z32x3Kb8YLOV5nkauEKnKmWNs7NBp8iio/pqoJbaSwqDwUg9jXVquxfWQ==} @@ -651,324 +687,162 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.2': resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.27.2': resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.27.2': resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.27.2': resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.27.2': resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.27.2': resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.27.2': resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.27.2': resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.27.2': resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.27.2': resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.27.2': resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.27.2': resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.27.2': resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.27.2': resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.27.2': resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.27.2': resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.27.2': resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.27.2': resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.27.2': resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.27.2': resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.27.2': resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.27.2': resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.27.2': resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.27.2': resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.27.2': resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.27.2': resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -995,6 +869,15 @@ packages: resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + '@eslint/js@9.39.2': resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1007,6 +890,15 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/bytes@1.14.1': + resolution: {integrity: sha512-OhkBFWI6GcRMUroChZiopRiSp2iAMvEBK47NhJooDqz1RERO4QuZIZnjP63TXX8GAiLABkYmX+fuQsdJ1dd2QQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + '@floating-ui/core@1.7.3': resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} @@ -1037,32 +929,27 @@ packages: '@formatjs/intl-localematcher@0.6.1': resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} - '@graphprotocol/gds-css@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-css@b9ac299b071ebaca3736e2886420c8d08c757725': - resolution: {tarball: https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-css@b9ac299b071ebaca3736e2886420c8d08c757725} - version: 0.0.1 + '@graphprotocol/gds-css@0.2.3': + resolution: {integrity: sha512-9A5YzkOg79FT0osil97PJcmzXzWuTqwnTfsXrM//xbQ3/D4r82VsFXMT+igID+spkiIHqmX40NYFAKGylEwM9g==} peerDependencies: tailwindcss: ^4.1.14 - '@graphprotocol/gds-icons@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-icons@b9ac299b071ebaca3736e2886420c8d08c757725': - resolution: {tarball: https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-icons@b9ac299b071ebaca3736e2886420c8d08c757725} - version: 0.0.1 + '@graphprotocol/gds-icons@0.1.1': + resolution: {integrity: sha512-UvzOZhAIfSRAl78FbaU8l9kFRiYibxv2Qw8sq80hUE0sKIp2wkcNGxrtpdco8EFxrnggvq3ZWLm4dZk8vViamg==} - '@graphprotocol/gds-react@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-react@b9ac299': - resolution: {tarball: https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-react@b9ac299} - version: 0.0.1 + '@graphprotocol/gds-react@0.2.5': + resolution: {integrity: sha512-aXdBUAE0Y2sxt5bcp5sApo8KF8kTiHNi95itq9DSE0XzWQVmNFXwaACcp8CLE8TYNNFDyRom8IXe0229UxTUTQ==} peerDependencies: react: ^19.0.0 react-dom: ^19.0.0 react-is: ^19.0.0 tailwindcss: ^4.1.14 - '@graphprotocol/gds-utils@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-utils@b9ac299b071ebaca3736e2886420c8d08c757725': - resolution: {tarball: https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-utils@b9ac299b071ebaca3736e2886420c8d08c757725} - version: 0.0.1 + '@graphprotocol/gds-utils@0.2.1': + resolution: {integrity: sha512-W5w3cXzzDy19DGv8dUUnhD3XQylLuZTQx+wPhmxrxvYstsS6IVaWXola78Y3vGqglJ25K1EkncJwSCd9buvbeA==} - '@graphprotocol/tailwindcss-animate@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/tailwindcss-animate@b9ac299b071ebaca3736e2886420c8d08c757725': - resolution: {tarball: https://pkg.pr.new/graphprotocol/gds/@graphprotocol/tailwindcss-animate@b9ac299b071ebaca3736e2886420c8d08c757725} - version: 0.0.1 + '@graphprotocol/tailwindcss-animate@0.1.1': + resolution: {integrity: sha512-JsjRjdE6lQV1hiD4QYq0tKdM8olrd8+oHiQq3vb89zpdiXr7/3qFBUp6N4glfZ6WC74Ic74K8skmVIyvPQUFEA==} peerDependencies: tailwindcss: ^4.1.14 @@ -1082,8 +969,8 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@internationalized/date@3.10.0': - resolution: {integrity: sha512-oxDR/NTEJ1k+UFVQElaNIk65E/Z83HK1z1WI3lQyhTtnNg4R5oVXaPzK3jcpKG8UHKDVuDQHzn+wsxSz8RP3aw==} + '@internationalized/date@3.11.0': + resolution: {integrity: sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==} '@internationalized/message@3.1.8': resolution: {integrity: sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA==} @@ -1102,6 +989,10 @@ packages: resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} engines: {node: 20 || >=22} + '@isaacs/cliui@9.0.0': + resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} + engines: {node: '>=18'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1202,36 +1093,42 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -1255,122 +1152,122 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - '@react-aria/breadcrumbs@3.5.29': - resolution: {integrity: sha512-rKS0dryllaZJqrr3f/EAf2liz8CBEfmL5XACj+Z1TAig6GIYe1QuA3BtkX0cV9OkMugXdX8e3cbA7nD10ORRqg==} + '@react-aria/breadcrumbs@3.5.31': + resolution: {integrity: sha512-j8F2NMHFGT/n3alfFKdO4bvrY/ymtdL04GdclY7Vc6zOmCnWoEZ2UA0sFuV7Rk9dOL8fAtYV1kMD1ZRO/EMcGA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/button@3.14.2': - resolution: {integrity: sha512-VbLIA+Kd6f/MDjd+TJBUg2+vNDw66pnvsj2E4RLomjI9dfBuN7d+Yo2UnsqKVyhePjCUZ6xxa2yDuD63IOSIYA==} + '@react-aria/button@3.14.4': + resolution: {integrity: sha512-6mTPiSSQhELnWlnYJ1Tm1B0VL1GGKAs2PGAY3ZGbPGQPPDc6Wu82yIhuAO8TTFJrXkwAiqjQawgDLil/yB0V7Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/calendar@3.9.2': - resolution: {integrity: sha512-uSLxLgOPRnEU4Jg59lAhUVA+uDx/55NBg4lpfsP2ynazyiJ5LCXmYceJi+VuOqMml7d9W0dB87OldOeLdIxYVA==} + '@react-aria/calendar@3.9.4': + resolution: {integrity: sha512-0BvU8cj6uHn622Vp8Xd21XxXtvp3Bh4Yk1pHloqDNmUvvdBN+ol3Xsm5gG3XKKkZ+6CCEi6asCbLaEg3SZSbyg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/checkbox@3.16.2': - resolution: {integrity: sha512-29Mj9ZqXioJ0bcMnNGooHztnTau5pikZqX3qCRj5bYR3by/ZFFavYoMroh9F7s/MbFm/tsKX+Sf02lYFEdXRjA==} + '@react-aria/checkbox@3.16.4': + resolution: {integrity: sha512-FcZj6/f27mNp2+G5yxyOMRZbZQjJ1cuWvo0PPnnZ4ybSPUmSzI4uUZBk1wvsJVP9F9n+J2hZuYVCaN8pyzLweA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/color@3.1.2': - resolution: {integrity: sha512-jCC+Q7rAQGLQBkHjkPAeDuGYuMbc4neifjlNRiyZ9as1z4gg63H8MteoWYYk6K4vCKKxSixgt8MfI29XWMOWPQ==} + '@react-aria/color@3.1.4': + resolution: {integrity: sha512-LNFo0A9EEn2HZ8O/hASschH++M+krfezcp01XPv0/2ZQJ5b5u7VvJlUOEXtPsD4i9+BzvkSAEoVUXdlJie9V2Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/combobox@3.14.0': - resolution: {integrity: sha512-z4ro0Hma//p4nL2IJx5iUa7NwxeXbzSoZ0se5uTYjG1rUUMszg+wqQh/AQoL+eiULn7rs18JY9wwNbVIkRNKWA==} + '@react-aria/combobox@3.14.2': + resolution: {integrity: sha512-qwBeb8cMgK3xwrvXYHPtcphduD/k+oTcU18JHPvEO2kmR32knB33H81C2/Zoh4x86zTDJXaEtPscXBWuQ/M7AQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/datepicker@3.15.2': - resolution: {integrity: sha512-th078hyNqPf4P2K10su/y32zPDjs3lOYVdHvsL9/+5K1dnTvLHCK5vgUyLuyn8FchhF7cmHV49D+LZVv65PEpQ==} + '@react-aria/datepicker@3.16.0': + resolution: {integrity: sha512-QynYHIHE+wvuGopl/k05tphmDpykpfZ3l3eKnUfGrqvAYJEeCOyS0qoMlw7Vq3NscMLFbJI6ajqBmlmtgFNiSA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/dialog@3.5.31': - resolution: {integrity: sha512-inxQMyrzX0UBW9Mhraq0nZ4HjHdygQvllzloT1E/RlDd61lr3RbmJR6pLsrbKOTtSvDIBJpCso1xEdHCFNmA0Q==} + '@react-aria/dialog@3.5.33': + resolution: {integrity: sha512-C5FpLAMJU6gQU8gztWKlEJ2A0k/JKl0YijNOv3Lizk+vUdF5njROSrmFs16bY5Hd6ycmsK9x/Pqkq3m/OpNFXA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/disclosure@3.1.0': - resolution: {integrity: sha512-5996BeBpnj+yKXYysz+UuhFQxGFPvaZZ3zNBd052wz/i+TVFVGSqqYJ6cwZyO1AfBR8zOT0ZIiK4EC3ETwSvtQ==} + '@react-aria/disclosure@3.1.2': + resolution: {integrity: sha512-UQ/CmWcdcROfRTMtvfsnYHrEsPPNbwZifZ/UErQpbvU4kzal2N+PpuP3+kpdf4G7TeMt+uJ8S9dLzyFVijOj9A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/dnd@3.11.3': - resolution: {integrity: sha512-MyTziciik1Owz3rqDghu0K3ZtTFvmj/R2ZsLDwbU9N4hKqGX/BKnrI8SytTn8RDqVv5LmA/GhApLngiupTAsXw==} + '@react-aria/dnd@3.11.5': + resolution: {integrity: sha512-3IGrABfK8Cf6/b/uEmGEDGeubWKMUK3umWunF/tdkWBnIaxpdj4gRkWFMw7siWQYnqir6AN567nrWXtHFcLKsA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/focus@3.21.2': - resolution: {integrity: sha512-JWaCR7wJVggj+ldmM/cb/DXFg47CXR55lznJhZBh4XVqJjMKwaOOqpT5vNN7kpC1wUpXicGNuDnJDN1S/+6dhQ==} + '@react-aria/focus@3.21.4': + resolution: {integrity: sha512-6gz+j9ip0/vFRTKJMl3R30MHopn4i19HqqLfSQfElxJD+r9hBnYG1Q6Wd/kl/WRR1+CALn2F+rn06jUnf5sT8Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/form@3.1.2': - resolution: {integrity: sha512-R3i7L7Ci61PqZQvOrnL9xJeWEbh28UkTVgkj72EvBBn39y4h7ReH++0stv7rRs8p5ozETSKezBbGfu4UsBewWw==} + '@react-aria/form@3.1.4': + resolution: {integrity: sha512-GjPS85cE/34zal3vs6MOi7FxUsXwbxN4y6l1LFor2g92UK97gVobp238f3xdMW2T8IuaWGcnHeYFg+cjiZ51pQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/grid@3.14.5': - resolution: {integrity: sha512-XHw6rgjlTqc85e3zjsWo3U0EVwjN5MOYtrolCKc/lc2ItNdcY3OlMhpsU9+6jHwg/U3VCSWkGvwAz9hg7krd8Q==} + '@react-aria/grid@3.14.7': + resolution: {integrity: sha512-8eaJThNHUs75Xf4+FQC2NKQtTOVYkkDdA8VbfbqG06oYDAn7ETb1yhbwoqh1jOv7MezCNkYjyFe4ADsz2rBVcw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/gridlist@3.14.1': - resolution: {integrity: sha512-keS03Am07aOn7RuNaRsMOyh0jscyhDn95asCVy4lxhl9A9TFk1Jw0o2L6q6cWRj1gFiKeacj/otG5H8ZKQQ2Wg==} + '@react-aria/gridlist@3.14.3': + resolution: {integrity: sha512-t3nr29nU5jRG9MdWe9aiMd02V8o0pmidLU/7c4muWAu7hEH+IYdeDthGDdXL9tXAom/oQ+6yt6sOfLxpsVNmGA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/i18n@3.12.13': - resolution: {integrity: sha512-YTM2BPg0v1RvmP8keHenJBmlx8FXUKsdYIEX7x6QWRd1hKlcDwphfjzvt0InX9wiLiPHsT5EoBTpuUk8SXc0Mg==} + '@react-aria/i18n@3.12.15': + resolution: {integrity: sha512-3CrAN7ORVHrckvTmbPq76jFZabqq+rScosGT5+ElircJ5rF5+JcdT99Hp5Xg6R10jk74e8G3xiqdYsUd+7iJMA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/interactions@3.25.6': - resolution: {integrity: sha512-5UgwZmohpixwNMVkMvn9K1ceJe6TzlRlAfuYoQDUuOkk62/JVJNDLAPKIf5YMRc7d2B0rmfgaZLMtbREb0Zvkw==} + '@react-aria/interactions@3.27.0': + resolution: {integrity: sha512-D27pOy+0jIfHK60BB26AgqjjRFOYdvVSkwC31b2LicIzRCSPOSP06V4gMHuGmkhNTF4+YWDi1HHYjxIvMeiSlA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/label@3.7.22': - resolution: {integrity: sha512-jLquJeA5ZNqDT64UpTc9XJ7kQYltUlNcgxZ37/v4mHe0UZ7QohCKdKQhXHONb0h2jjNUpp2HOZI8J9++jOpzxA==} + '@react-aria/label@3.7.24': + resolution: {integrity: sha512-lcJbUy6xyicWKNgzfrXksrJ2CeCST2rDxGAvHOmUxSbFOm26kK710DjaFvtO4tICWh/TKW5mC3sm77soNcVUGA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/landmark@3.0.7': - resolution: {integrity: sha512-t8c610b8hPLS6Vwv+rbuSyljZosI1s5+Tosfa0Fk4q7d+Ex6Yj7hLfUFy59GxZAufhUYfGX396fT0gPqAbU1tg==} + '@react-aria/landmark@3.0.9': + resolution: {integrity: sha512-YYyluDBCXupnMh91ccE5g27fczjYmzPebHqTkVYjH4B6k45pOoqsMmWBCMnOTl0qOCeioI+daT8W0MamAZzoSw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/link@3.8.6': - resolution: {integrity: sha512-7F7UDJnwbU9IjfoAdl6f3Hho5/WB7rwcydUOjUux0p7YVWh/fTjIFjfAGyIir7MJhPapun1D0t97QQ3+8jXVcg==} + '@react-aria/link@3.8.8': + resolution: {integrity: sha512-hxQEvo5rrn2C0GOSwB/tROe+y//dyhmyXGbm8arDy6WF5Mj0wcjjrAu0/dhGYBqoltJa16iIEvs52xgzOC+f+Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/listbox@3.15.0': - resolution: {integrity: sha512-Ub1Wu79R9sgxM7h4HeEdjOgOKDHwduvYcnDqsSddGXgpkL8ADjsy2YUQ0hHY5VnzA4BxK36bLp4mzSna8Qvj1w==} + '@react-aria/listbox@3.15.2': + resolution: {integrity: sha512-xcrgSediV8MaVmsuDrDPmWywF82/HOv+H+Y/dgr6GLCWl0XDj5Q7PyAhDzUsYdZNIne3B9muGh6IQc3HdkgWqg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 @@ -1378,74 +1275,74 @@ packages: '@react-aria/live-announcer@3.4.4': resolution: {integrity: sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA==} - '@react-aria/menu@3.19.3': - resolution: {integrity: sha512-52fh8y8b2776R2VrfZPpUBJYC9oTP7XDy+zZuZTxPEd7Ywk0JNUl5F92y6ru22yPkS13sdhrNM/Op+V/KulmAg==} + '@react-aria/menu@3.20.0': + resolution: {integrity: sha512-BAsHuf7kTVmawNUkTUd5RB3ZvL6DQQT7hgZ2cYKd/1ZwYq4KO2wWGYdzyTOtK1qimZL0eyHyQwDYv4dNKBH4gw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/meter@3.4.27': - resolution: {integrity: sha512-andOOdJkgRJF9vBi5VWRmFodK+GT+5X1lLeNUmb4qOX8/MVfX/RbK72LDeIhd7xC7rSCFHj3WvZ198rK4q0k3w==} + '@react-aria/meter@3.4.29': + resolution: {integrity: sha512-XAhJf8LlYQl+QQXqtpWvzjlrT8MZKEG6c8N3apC5DONgSKlCwfmDm4laGEJPqtuz3QGiOopsfSfyTFYHjWsfZw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/numberfield@3.12.2': - resolution: {integrity: sha512-M2b+z0HIXiXpGAWOQkO2kpIjaLNUXJ5Q3/GMa3Fkr+B1piFX0VuOynYrtddKVrmXCe+r5t+XcGb0KS29uqv7nQ==} + '@react-aria/numberfield@3.12.4': + resolution: {integrity: sha512-TgKBjKOjyURzbqNR2wF4tSFmQKNK5DqE4QZSlQxpYYo1T6zuztkh+oTOUZ4IWCJymL5qLtuPfGHCZbR7B+DN2w==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/overlays@3.30.0': - resolution: {integrity: sha512-UpjqSjYZx5FAhceWCRVsW6fX1sEwya1fQ/TKkL53FAlLFR8QKuoKqFlmiL43YUFTcGK3UdEOy3cWTleLQwdSmQ==} + '@react-aria/overlays@3.31.1': + resolution: {integrity: sha512-U5BedzcXU97U5PWm4kIPnNoVpAs9KjTYfbkGx33vapmTVpGYhQyYW9eg6zW2E8ZKsyFJtQ/jkQnbWGen97aHSQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/progress@3.4.27': - resolution: {integrity: sha512-0OA1shs1575g1zmO8+rWozdbTnxThFFhOfuoL1m7UV5Dley6FHpueoKB1ECv7B+Qm4dQt6DoEqLg7wsbbQDhmg==} + '@react-aria/progress@3.4.29': + resolution: {integrity: sha512-orSaaFLX5LdD9UyxgBrmP1J/ivyEFX+5v4ENPQM5RH5+Hl+0OJa+8ozI0AfVKBqCYc89BOZfG7kzi7wFHACZcQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/radio@3.12.2': - resolution: {integrity: sha512-I11f6I90neCh56rT/6ieAs3XyDKvEfbj/QmbU5cX3p+SJpRRPN0vxQi5D1hkh0uxDpeClxygSr31NmZsd4sqfg==} + '@react-aria/radio@3.12.4': + resolution: {integrity: sha512-2sjBAE8++EtAAfjwPdrqEVswbzR4Mvcy4n8SvwUxTo02yESa9nolBzCSdAUFUmhrNj3MiMA+zLxQ+KACfUjJOg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/searchfield@3.8.9': - resolution: {integrity: sha512-Yt2pj8Wb5/XsUr2T0DQqFv+DlFpzzWIWnNr9cJATUcWV/xw6ok7YFEg9+7EHtBmsCQxFFJtock1QfZzBw6qLtQ==} + '@react-aria/searchfield@3.8.11': + resolution: {integrity: sha512-5R0prEC+jRFwPeJsK6G4RN8QG3V/+EaIuw9p79G1gFD+1dY81ZakiZIIJaLWRyO7AzYBGyC/QFHtz0m3KGQT/Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/select@3.17.0': - resolution: {integrity: sha512-q5ZuyAn5jSOeI0Ys99951TaGcF4O7u1SSBVxPMwVVXOU8ZhToCNx+WG3n/JDYHEjqdo7sbsVRaPA7LkBzBGf5w==} + '@react-aria/select@3.17.2': + resolution: {integrity: sha512-oMpHStyMluRf67qxrzH5Qfcvw6ETQgZT1Qw2xvAxQVRd5IBb0PfzZS7TGiULOcMLqXAUOC28O/ycUGrGRKLarg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/selection@3.26.0': - resolution: {integrity: sha512-ZBH3EfWZ+RfhTj01dH8L17uT7iNbXWS8u77/fUpHgtrm0pwNVhx0TYVnLU1YpazQ/3WVpvWhmBB8sWwD1FlD/g==} + '@react-aria/selection@3.27.1': + resolution: {integrity: sha512-8WQ4AtWiBnk9UEeYkqpH12dd8KQW2aFbNZvM4sDfLtz7K7HWyY/MkqMe/snk9IcoSa7t4zr0bnoZJcWSGgn2PQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/separator@3.4.13': - resolution: {integrity: sha512-0NlcrdBfQbcjWEXdHl3+uSY1272n2ljT1gWL2RIf6aQsQWTZ0gz0rTgRHy0MTXN+y+tICItUERJT4vmTLtIzVg==} + '@react-aria/separator@3.4.15': + resolution: {integrity: sha512-A1aPQhCaE8XeelNJYPjHtA2uh921ROh8PNiZI4o62x80wcziRoctN5PAtNHJAx7VKvX66A8ZVGbOqb7iqS3J5Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/slider@3.8.2': - resolution: {integrity: sha512-6KyUGaVzRE4xAz1LKHbNh1q5wzxe58pdTHFSnxNe6nk1SCoHw7NfI4h2s2m6LgJ0megFxsT0Ir8aHaFyyxmbgg==} + '@react-aria/slider@3.8.4': + resolution: {integrity: sha512-/FYCgK1qVqaz2VCDfR2x4BjyJ8lmWg1v8//+WIwKdIu4cz0KUs+U3yx0w1vp676RoERp3OEvkT3tb+/jHQ1hjA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/spinbutton@3.6.19': - resolution: {integrity: sha512-xOIXegDpts9t3RSHdIN0iYQpdts0FZ3LbpYJIYVvdEHo9OpDS+ElnDzCGtwZLguvZlwc5s1LAKuKopDUsAEMkw==} + '@react-aria/spinbutton@3.7.1': + resolution: {integrity: sha512-Nisah6yzxOC6983u/5ck0w+OQoa3sRKmpDvWpTEX0g2+ZIABOl8ttdSd65XKtxXmXHdK8X1zmrfeGOBfBR3sKA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 @@ -1456,74 +1353,74 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/switch@3.7.8': - resolution: {integrity: sha512-AfsUq1/YiuoprhcBUD9vDPyWaigAwctQNW1fMb8dROL+i/12B+Zekj8Ml+jbU69/kIVtfL0Jl7/0Bo9KK3X0xQ==} + '@react-aria/switch@3.7.10': + resolution: {integrity: sha512-j7nrYnqX6H9J8GuqD0kdMECUozeqxeG19A2nsvfaTx3//Q7RhgIR9fqhQdVHW/wgraTlEHNH6AhDzmomBg0TNw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/table@3.17.8': - resolution: {integrity: sha512-bXiZoxTMbsqUJsYDhHPzKc3jw0HFJ/xMsJ49a0f7mp5r9zACxNLeIU0wJ4Uvx37dnYOHKzGliG+rj5l4sph7MA==} + '@react-aria/table@3.17.10': + resolution: {integrity: sha512-xdEeyOzuETkOfAHhZrX7HOIwMUsCUr4rbPvHqdcNqg7Ngla2ck9iulZNAyvOPfFwELuBEd2rz1I9TYRQ2OzSQQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/tabs@3.10.8': - resolution: {integrity: sha512-sPPJyTyoAqsBh76JinBAxStOcbjZvyWFYKpJ9Uqw+XT0ObshAPPFSGeh8DiQemPs02RwJdrfARPMhyqiX8t59A==} + '@react-aria/tabs@3.11.0': + resolution: {integrity: sha512-9Gwo118GHrMXSyteCZL1L/LHLVlGSYkhGgiTL3e/UgnYjHfEfDJVTkV2JikuE2O/4uig52gQRlq5E99axLeE9Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/tag@3.7.2': - resolution: {integrity: sha512-JV679P5r4DftbqyNBRt7Nw9mP7dxaKPfikjyQuvUoEOa06wBLbM/hU9RJUPRvqK+Un6lgBDAmXD9NNf4N2xpdw==} + '@react-aria/tag@3.8.0': + resolution: {integrity: sha512-sTV6uRKFIFU1aljKb0QjM6fPPnzBuitrbkkCUZCJ0w0RIX1JinZPh96NknNtjFwWmqoROjVNCq51EUd0Hh2SQw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/textfield@3.18.2': - resolution: {integrity: sha512-G+lM8VYSor6g9Yptc6hLZ6BF+0cq0pYol1z6wdQUQgJN8tg4HPtzq75lsZtlCSIznL3amgRAxJtd0dUrsAnvaQ==} + '@react-aria/textfield@3.18.4': + resolution: {integrity: sha512-ts3Vdy2qNOzjCVeO+4RH8FSgTYN2USAMcYFeGbHOriCukVOrvgRsqcDniW7xaT60LgFdlWMJsCusvltSIyo6xw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/toast@3.0.8': - resolution: {integrity: sha512-rfJIms6AkMyQ7ZgKrMZgGfPwGcB/t1JoEwbc1PAmXcAvFI/hzF6YF7ZFDXiq38ucFsP9PnHmbXIzM9w4ccl18A==} + '@react-aria/toast@3.0.10': + resolution: {integrity: sha512-irW5Cr4msbPo4A4ysjT70MDJbpGCe1h9SkFgdYXBPA4Xbi4jRT7TiEZeIS1I7Hsvp6shAK1Ld/m6NBS0b/gyzg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/toggle@3.12.2': - resolution: {integrity: sha512-g25XLYqJuJpt0/YoYz2Rab8ax+hBfbssllcEFh0v0jiwfk2gwTWfRU9KAZUvxIqbV8Nm8EBmrYychDpDcvW1kw==} + '@react-aria/toggle@3.12.4': + resolution: {integrity: sha512-yVcl8kEFLsV47aCA22EMPcd/KWoYqPIPSzoKjRD/iWmxcP6iGzSxDjdUgMQojNGY8Q6wL8lUxfRqKBjvl/uezQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/toolbar@3.0.0-beta.21': - resolution: {integrity: sha512-yRCk/GD8g+BhdDgxd3I0a0c8Ni4Wyo6ERzfSoBkPkwQ4X2E2nkopmraM9D0fXw4UcIr4bnmvADzkHXtBN0XrBg==} + '@react-aria/toolbar@3.0.0-beta.23': + resolution: {integrity: sha512-FzvNf2hWtjEwk8F2MBf4qSs6AAR/p2WFSws6kJ4f0SrWXl4wR9VDEwBEUQcIPbWCK2aUsyOjubCh55Cl4t3MoQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/tooltip@3.8.8': - resolution: {integrity: sha512-CmHUqtXtFWmG4AHMEr9hIVex+oscK6xcM2V47gq9ijNInxe3M6UBu/dBdkgGP/jYv9N7tzCAjTR8nNIHQXwvWw==} + '@react-aria/tooltip@3.9.1': + resolution: {integrity: sha512-mvEhqpvF4v/wj9zw3a8bsAEnySutGbxKXXt39s6WvF6dkVfaXfsmV9ahuMCHH//UGh/yidZGLrXX4YVdrgS8lA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/tree@3.1.4': - resolution: {integrity: sha512-6pbFeN0dAsCOrFGUKU39CNjft20zCAjLfMqfkRWisL+JkUHI2nq6odUJF5jJTsU1C+1951+3oFOmVxPX+K+akQ==} + '@react-aria/tree@3.1.6': + resolution: {integrity: sha512-igLX+OQrbXCBLrtPWgUevU0iDrgTSAJh1ncHoPzfD/YDcyTDLqKdy2nZhNbJ/IdHCwTyzIknhFJ700K20Ymw9A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/utils@3.31.0': - resolution: {integrity: sha512-ABOzCsZrWzf78ysswmguJbx3McQUja7yeGj6/vZo4JVsZNlxAN+E9rs381ExBRI0KzVo6iBTeX5De8eMZPJXig==} + '@react-aria/utils@3.33.0': + resolution: {integrity: sha512-yvz7CMH8d2VjwbSa5nGXqjU031tYhD8ddax95VzJsHSPyqHDEGfxul8RkhGV6oO7bVqZxVs6xY66NIgae+FHjw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/visually-hidden@3.8.28': - resolution: {integrity: sha512-KRRjbVVob2CeBidF24dzufMxBveEUtUu7IM+hpdZKB+gxVROoh4XRLPv9SFmaH89Z7D9To3QoykVZoWD0lan6Q==} + '@react-aria/visually-hidden@3.8.30': + resolution: {integrity: sha512-iY44USEU8sJy0NOJ/sTDn3YlspbhHuVG3nx2YYrzfmxbS3i+lNwkCfG8kJ77dtmbuDLIdBGKENjGkbcwz3kiJg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 @@ -1539,502 +1436,405 @@ packages: js-cookie: optional: true - '@react-stately/calendar@3.9.0': - resolution: {integrity: sha512-U5Nf2kx9gDhJRxdDUm5gjfyUlt/uUfOvM1vDW2UA62cA6+2k2cavMLc2wNlXOb/twFtl6p0joYKHG7T4xnEFkg==} + '@react-stately/calendar@3.9.2': + resolution: {integrity: sha512-AQj8/izwb7eY+KFqKcMLI2ygvnbAIwLuQG5KPHgJsMygFqnN4yzXKz5orGqVJnxEXLKiLPteVztx7b5EQobrtw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/checkbox@3.7.2': - resolution: {integrity: sha512-j1ycUVz5JmqhaL6mDZgDNZqBilOB8PBW096sDPFaTtuYreDx2HOd1igxiIvwlvPESZwsJP7FVM3mYnaoXtpKPA==} + '@react-stately/checkbox@3.7.4': + resolution: {integrity: sha512-oXHMkK22CWLcmNlunDuu4p52QXYmkpx6es9AjWx/xlh3XLZdJzo/5SANioOH1QvBtwPA/c2KQy+ZBqC21NtMHw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/collections@3.12.8': - resolution: {integrity: sha512-AceJYLLXt1Y2XIcOPi6LEJSs4G/ubeYW3LqOCQbhfIgMaNqKfQMIfagDnPeJX9FVmPFSlgoCBxb1pTJW2vjCAQ==} + '@react-stately/collections@3.12.9': + resolution: {integrity: sha512-2jywPMhVgMOh0XtutxPqIxFCIiLOnL/GXIrRKoBEo8M3Q24NoMRBavUrn9RTvjqNnec1i/8w1/8sq8cmCKEohA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/color@3.9.2': - resolution: {integrity: sha512-F+6Do8W3yu/4n7MpzZtbXwVukcLTFYYDIUtpoR+Jl52UmAr9Hf1CQgkyTI2azv1ZMzj1mVrTBhpBL0q27kFZig==} + '@react-stately/color@3.9.4': + resolution: {integrity: sha512-SprAP5STMg6K0jq+A3UoimsvvTCIGItUtWurS/lDRoQJYajFR8IUdz+mekU/GaXzvFhMN32dijOtFcfxnA4cfA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/combobox@3.12.0': - resolution: {integrity: sha512-A6q9R/7cEa/qoQsBkdslXWvD7ztNLLQ9AhBhVN9QvzrmrH5B4ymUwcTU8lWl22ykH7RRwfonLeLXJL4C+/L2oQ==} + '@react-stately/combobox@3.12.2': + resolution: {integrity: sha512-h4YRmzA+s3aMwUrXm6jyWLN0BWWXUNiodArB1wC24xNdeI7S8O3mxz6G2r3Ne8AE02FXmZXs9SD30Mx5vVVuqQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/datepicker@3.15.2': - resolution: {integrity: sha512-S5GL+W37chvV8knv9v0JRv0L6hKo732qqabCCHXzOpYxkLIkV4f/y3cHdEzFWzpZ0O0Gkg7WgeYo160xOdBKYg==} + '@react-stately/datepicker@3.16.0': + resolution: {integrity: sha512-mYtzKXufFVivrHjmxys3ryJFMPIQNhVqaSItmGnWv3ehxw+0HKBrROf3BFiEN4zP20euoP149ZaR4uNx90kMYw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/disclosure@3.0.8': - resolution: {integrity: sha512-/Ce/Z76y85eSBZiemfU/uEyXkBBa1RdfLRaKD13rnfUV7/nS3ae1VtNlsXgmwQjWv2pmAiSuEKYMbZfVL7q/lQ==} + '@react-stately/disclosure@3.0.10': + resolution: {integrity: sha512-nUistLYMjBDy+yaS5H0y0Dwfcjr12zpIh7vjhQXF4wxIh3D08NRvV1NCQ0LV+IsMej/qoPJvKS4EnXHxBI3GmQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/dnd@3.7.1': - resolution: {integrity: sha512-O1JBJ4HI1rVNKuoa5NXiC5FCrCEkr9KVBoKNlTZU8/cnQselhbEsUfMglAakO2EuwIaM1tIXoNF5J/N5P+6lTA==} + '@react-stately/dnd@3.7.3': + resolution: {integrity: sha512-yBtzAimyYvJWnzP80Scx7l559+43TVSyjaMpUR6/s2IjqD3XoPKgPsv7KaFUmygBTkCBGBFJn404rYgMCOsu3g==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 '@react-stately/flags@3.1.2': resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==} - '@react-stately/form@3.2.2': - resolution: {integrity: sha512-soAheOd7oaTO6eNs6LXnfn0tTqvOoe3zN9FvtIhhrErKz9XPc5sUmh3QWwR45+zKbitOi1HOjfA/gifKhZcfWw==} + '@react-stately/form@3.2.3': + resolution: {integrity: sha512-NPvjJtns1Pq9uvqeRJCf8HIdVmOm2ARLYQ2F/sqXj1w5IChJ4oWL4Xzvj29/zBitgE1vVjDhnrnwSfNlHZGX0g==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/grid@3.11.6': - resolution: {integrity: sha512-vWPAkzpeTIsrurHfMubzMuqEw7vKzFhIJeEK5sEcLunyr1rlADwTzeWrHNbPMl66NAIAi70Dr1yNq+kahQyvMA==} + '@react-stately/grid@3.11.8': + resolution: {integrity: sha512-tCabR5U7ype+uEElS5Chv5n6ntUv3drXa9DwebjO05cFevUmjTkEfYPJWixpgX4UlCCvjdUFgzeQlJF+gCiozg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/list@3.13.1': - resolution: {integrity: sha512-eHaoauh21twbcl0kkwULhVJ+CzYcy1jUjMikNVMHOQdhr4WIBdExf7PmSgKHKqsSPhpGg6IpTCY2dUX3RycjDg==} + '@react-stately/list@3.13.3': + resolution: {integrity: sha512-xN0v7rzhIKshhcshOzx+ZgVngXnGCtMPRdhoDLGaHzQy5YfxvKBMNLCnr5Lm4T1U/kIvHbyzxmr5uwmH8WxoIg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/menu@3.9.8': - resolution: {integrity: sha512-bo0NOhofnTHLESiYfsSSw6gyXiPVJJ0UlN2igUXtJk5PmyhWjFzUzTzcnd7B028OB0si9w3LIWM3stqz5271Eg==} + '@react-stately/menu@3.9.10': + resolution: {integrity: sha512-dY9FzjQ+6iNInVujZPyMklDGoSbaoO0yguUnALAY+yfkPAyStEElfm4aXZgRfNKOTNHe9E34oV7qefSYsclvTg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/numberfield@3.10.2': - resolution: {integrity: sha512-jlKVFYaH3RX5KvQ7a+SAMQuPccZCzxLkeYkBE64u1Zvi7YhJ8hkTMHG/fmZMbk1rHlseE2wfBdk0Rlya3MvoNQ==} + '@react-stately/numberfield@3.10.4': + resolution: {integrity: sha512-EniHHwXOw/Ta0x5j61OvldDAvLoi/8xOo//bzrqwnDvf2/1IKGFMD9CHs7HYhQw+9oNl3Q2V1meOTNPc4PvoMQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/overlays@3.6.20': - resolution: {integrity: sha512-YAIe+uI8GUXX8F/0Pzr53YeC5c/bjqbzDFlV8NKfdlCPa6+Jp4B/IlYVjIooBj9+94QvbQdjylegvYWK/iPwlg==} + '@react-stately/overlays@3.6.22': + resolution: {integrity: sha512-sWBnuy5dqVp8d+1e+ABTRVB3YBcOW86/90pF5PWY44au3bUFXVSUBO2QMdR/6JtojDoPRmrjufonI19/Zs/20w==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/radio@3.11.2': - resolution: {integrity: sha512-UM7L6AW+k8edhSBUEPZAqiWNRNadfOKK7BrCXyBiG79zTz0zPcXRR+N+gzkDn7EMSawDeyK1SHYUuoSltTactg==} + '@react-stately/radio@3.11.4': + resolution: {integrity: sha512-3svsW5VxJA5/p1vO+Qlxv+7Jq9g7f4rqX9Rbqdfd+pH7ykHaV0CUKkSRMaWfcY8Vgaf2xmcc6dvusPRqKX8T1A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/searchfield@3.5.16': - resolution: {integrity: sha512-MRfqT1lZ24r94GuFNcGJXsfijZoWjSMySCT60T6NXtbOzVPuAF3K+pL70Rayq/EWLJjS2NPHND11VTs0VdcE0Q==} + '@react-stately/searchfield@3.5.18': + resolution: {integrity: sha512-C3/1wOON5oK0QBljj0vSbHm/IWgd29NxB+7zT1JjZcxtbcFxCj4HOxKdnPCT/d8Pojb0YS26QgKzatLZ0NnhgQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/select@3.8.0': - resolution: {integrity: sha512-A721nlt0DSCDit0wKvhcrXFTG5Vv1qkEVkeKvobmETZy6piKvwh0aaN8iQno5AFuZaj1iOZeNjZ/20TsDJR/4A==} + '@react-stately/select@3.9.1': + resolution: {integrity: sha512-CJQRqv8Dg+0RRvcig3a2YfY6POJIscDINvidRF31yK6J72rsP01dY3ria9aJjizNDHR9Q5dWFp/z+ii0cOTWIQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/selection@3.20.6': - resolution: {integrity: sha512-a0bjuP2pJYPKEiedz2Us1W1aSz0iHRuyeQEdBOyL6Z6VUa6hIMq9H60kvseir2T85cOa4QggizuRV7mcO6bU5w==} + '@react-stately/selection@3.20.8': + resolution: {integrity: sha512-V1kRN1NLW+i/3Xv+Q0pN9OzuM0zFEW9mdXOOOq7l+YL6hFjqIjttT2/q4KoyiNV3W0hfoRFSTQ7XCgqnqtwEng==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/slider@3.7.2': - resolution: {integrity: sha512-EVBHUdUYwj++XqAEiQg2fGi8Reccznba0uyQ3gPejF0pAc390Q/J5aqiTEDfiCM7uJ6WHxTM6lcCqHQBISk2dQ==} + '@react-stately/slider@3.7.4': + resolution: {integrity: sha512-cSOYSx2nsOQejMg6Ql0+GUpqAiPwRA5teYXUghNvuBDtVxnd4l2rnXs54Ww48tU43xf2+L3kkmMofThjABoEPw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/table@3.15.1': - resolution: {integrity: sha512-MhMAgE/LgAzHcAn1P3p/nQErzJ6DiixSJ1AOt2JlnAKEb5YJg4ATKWCb2IjBLwywt9ZCzfm3KMUzkctZqAoxwA==} + '@react-stately/table@3.15.3': + resolution: {integrity: sha512-W1wR0O/PmdD8hCUFIAelHICjUX/Ii6ZldPlH6EILr9olyGpoCaY7XmnyG7kii1aANuQGBeskjJdXvS6LX/gyDw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/tabs@3.8.6': - resolution: {integrity: sha512-9RYxmgjVIxUpIsGKPIF7uRoHWOEz8muwaYiStCVeyiYBPmarvZoIYtTXcwSMN/vEs7heVN5uGCL6/bfdY4+WiA==} + '@react-stately/tabs@3.8.8': + resolution: {integrity: sha512-BZImWT+pHZitImRQkoL7jVhTtpGPSra1Rhh4pi8epzwogeqseEIEpuWpQebjQP74r1kfNi/iT2p5Qb31eWfh1Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/toast@3.1.2': - resolution: {integrity: sha512-HiInm7bck32khFBHZThTQaAF6e6/qm57F4mYRWdTq8IVeGDzpkbUYibnLxRhk0UZ5ybc6me+nqqPkG/lVmM42Q==} + '@react-stately/toast@3.1.3': + resolution: {integrity: sha512-mT9QJKmD523lqFpOp0VWZ6QHZENFK7HrodnNJDVc7g616s5GNmemdlkITV43fSY3tHeThCVvPu+Uzh7RvQ9mpQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/toggle@3.9.2': - resolution: {integrity: sha512-dOxs9wrVXHUmA7lc8l+N9NbTJMAaXcYsnNGsMwfXIXQ3rdq+IjWGNYJ52UmNQyRYFcg0jrzRrU16TyGbNjOdNQ==} + '@react-stately/toggle@3.9.4': + resolution: {integrity: sha512-tjWsshRJtHC+PI5NYMlnDlV/BTo1eWq6fmR6x1mXlQfKuKGTJRzhgJyaQ2mc5K+LkifD7fchOhfapHCrRlzwMg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/tooltip@3.5.8': - resolution: {integrity: sha512-gkcUx2ROhCiGNAYd2BaTejakXUUNLPnnoJ5+V/mN480pN+OrO8/2V9pqb/IQmpqxLsso93zkM3A4wFHHLBBmPQ==} + '@react-stately/tooltip@3.5.10': + resolution: {integrity: sha512-GauUdc6Of08Np2iUw4xx/DdgpvszS9CxJWYcRnNyAAGPLQrmniVrpJvb0EUKQTP9sUSci1SlmpvJh4SNZx26Bw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/tree@3.9.3': - resolution: {integrity: sha512-ZngG79nLFxE/GYmpwX6E/Rma2MMkzdoJPRI3iWk3dgqnGMMzpPnUp/cvjDsU3UHF7xDVusC5BT6pjWN0uxCIFQ==} + '@react-stately/tree@3.9.5': + resolution: {integrity: sha512-UpvBlzL/MpFdOepDg+cohI/zvw8DEVM8cXY/OZ8tKUXWpew1HpUglwnAI3ivm0L2k9laUIB9siW0g04ZWiH9Lg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-stately/utils@3.10.8': - resolution: {integrity: sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==} + '@react-stately/utils@3.11.0': + resolution: {integrity: sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/breadcrumbs@3.7.17': - resolution: {integrity: sha512-IhvVTcfli5o/UDlGACXxjlor2afGlMQA8pNR3faH0bBUay1Fmm3IWktVw9Xwmk+KraV2RTAg9e+E6p8DOQZfiw==} + '@react-types/breadcrumbs@3.7.18': + resolution: {integrity: sha512-zwltqx2XSELBRQeuCraxrdfT4fpIOVu6eQXsZ4RhWlsT7DLhzj3pUGkxdPDAMfYaVdyNBqc+nhiAnCwz6tUJ8A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/button@3.14.1': - resolution: {integrity: sha512-D8C4IEwKB7zEtiWYVJ3WE/5HDcWlze9mLWQ5hfsBfpePyWCgO3bT/+wjb/7pJvcAocrkXo90QrMm85LcpBtrpg==} + '@react-types/button@3.15.0': + resolution: {integrity: sha512-X/K2/Oeuq7Hi8nMIzx4/YlZuvWFiSOHZt27p4HmThCnNO/9IDFPmvPrpkYjWN5eN9Nuk+P5vZUb4A7QJgYpvGA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/calendar@3.8.0': - resolution: {integrity: sha512-ZDZgfZgbz1ydWOFs1mH7QFfX3ioJrmb3Y/lkoubQE0HWXLZzyYNvhhKyFJRS1QJ40IofLSBHriwbQb/tsUnGlw==} + '@react-types/calendar@3.8.2': + resolution: {integrity: sha512-QbPFhvBQfrsz3x1Nnatr5SL+8XtbxvP4obESFuDrKmsqaaAv+jG5vwLiPTKp6Z3L+MWkCvKavBPuW+byhq+69A==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/checkbox@3.10.2': - resolution: {integrity: sha512-ktPkl6ZfIdGS1tIaGSU/2S5Agf2NvXI9qAgtdMDNva0oLyAZ4RLQb6WecPvofw1J7YKXu0VA5Mu7nlX+FM2weQ==} + '@react-types/checkbox@3.10.3': + resolution: {integrity: sha512-Xw4jHG7uK352Wc18XXzdzmtr3Xjg8d2tPoBGNgsw39f92EY2UpoDAPHxYR0BaDe04lGfAn6YwVivI4OGVbjXIg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/color@3.1.2': - resolution: {integrity: sha512-NP0TAY3j4tlMztOp/bBfMlPwC9AQKTjSiTFmc2oQNkx5M4sl3QpPqFPosdt7jZ8M4nItvfCWZrlZGjST4SB83A==} + '@react-types/color@3.1.3': + resolution: {integrity: sha512-XM0x8iZpAf036w9qceD2RFroehLxKRwkVer7EvdJNs8K8iUN8TuhCagzsomiSJtyYh5MFysEVQ2ir85toiAFyw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/combobox@3.13.9': - resolution: {integrity: sha512-G6GmLbzVkLW6VScxPAr/RtliEyPhBClfYaIllK1IZv+Z42SVnOpKzhnoe79BpmiFqy1AaC3+LjZX783mrsHCwA==} + '@react-types/combobox@3.13.11': + resolution: {integrity: sha512-5/tdmTAvqPpiWzEeaV7uLLSbSTkkoQ1mVz6NfKMPuw4ZBkY3lPc9JDkkQjY/JrquZao+KY4Dx8ZIoS0NqkrFrw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/datepicker@3.13.2': - resolution: {integrity: sha512-+M6UZxJnejYY8kz0spbY/hP08QJ5rsZ3aNarRQQHc48xV2oelFLX5MhAqizfLEsvyfb0JYrhWoh4z1xZtAmYCg==} + '@react-types/datepicker@3.13.4': + resolution: {integrity: sha512-B5sAPoYZfluDBpgVK3ADlHbXBKRkFCQFO18Bs091IvRRwqzfoO/uf+/9UpXMw+BEF4pciLf0/kdiVQTvI3MzlA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/dialog@3.5.22': - resolution: {integrity: sha512-smSvzOcqKE196rWk0oqJDnz+ox5JM5+OT0PmmJXiUD4q7P5g32O6W5Bg7hMIFUI9clBtngo8kLaX2iMg+GqAzg==} + '@react-types/dialog@3.5.23': + resolution: {integrity: sha512-3tMzweYuaDOaufF5tZPMgXSA0pPFJNgdg89YRITh0wMXMG0pm+tAKVQJL1TSLLhOiLCEL08V8M/AK67dBdr2IA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/grid@3.3.6': - resolution: {integrity: sha512-vIZJlYTii2n1We9nAugXwM2wpcpsC6JigJFBd6vGhStRdRWRoU4yv1Gc98Usbx0FQ/J7GLVIgeG8+1VMTKBdxw==} + '@react-types/grid@3.3.7': + resolution: {integrity: sha512-riET3xeKPTcRWQy6hYCMxdbdL3yubPY5Ow66b2GA2rEqoYvmDBniYXAM2Oh+q9s+YgnAP7qJK++ym8NljvHiLA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/link@3.6.5': - resolution: {integrity: sha512-+I2s3XWBEvLrzts0GnNeA84mUkwo+a7kLUWoaJkW0TOBDG7my95HFYxF9WnqKye7NgpOkCqz4s3oW96xPdIniQ==} + '@react-types/link@3.6.6': + resolution: {integrity: sha512-M6WXxUJFmiF6GNu7xUH0uHj0jsorFBN6npkfSCNM4puStC8NbUT2+ZPySQyZXCoHMQ89g6qZ6vCc8QduVkTE7Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/listbox@3.7.4': - resolution: {integrity: sha512-p4YEpTl/VQGrqVE8GIfqTS5LkT5jtjDTbVeZgrkPnX/fiPhsfbTPiZ6g0FNap4+aOGJFGEEZUv2q4vx+rCORww==} + '@react-types/listbox@3.7.5': + resolution: {integrity: sha512-Cn+yNip+YZBaGzu+z5xPNgmfSupnLl+li7uG5hRc+EArkk8/G42myRXz6M8wPrLM1bFAq3r85tAbyoXVmKG5Jw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/menu@3.10.5': - resolution: {integrity: sha512-HBTrKll2hm0VKJNM4ubIv1L9MNo8JuOnm2G3M+wXvb6EYIyDNxxJkhjsqsGpUXJdAOSkacHBDcNh2HsZABNX4A==} + '@react-types/menu@3.10.6': + resolution: {integrity: sha512-OJTznQ4xE/VddBJU+HO4x5tceSOdyQhiHA1bREE1aHl+PcgHOUZLdMjXp1zFaGF16HhItHJaxpifJ4hzf4hWQA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/meter@3.4.13': - resolution: {integrity: sha512-EiarfbpHcvmeyXvXcr6XLaHkNHuGc4g7fBVEiDPwssFJKKfbUzqnnknDxPjyspqUVRcXC08CokS98J1jYobqDg==} + '@react-types/meter@3.4.14': + resolution: {integrity: sha512-rNw0Do2AM3zLGZ0pSWweViuddg1uW99PWzE6RQXE8nsTHTeiwDZt9SYGdObEnjd+nJ3YzemqekG0Kqt93iNBcA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/numberfield@3.8.15': - resolution: {integrity: sha512-97r92D23GKCOjGIGMeW9nt+/KlfM3GeWH39Czcmd2/D5y3k6z4j0avbsfx2OttCtJszrnENjw3GraYGYI2KosQ==} + '@react-types/numberfield@3.8.17': + resolution: {integrity: sha512-Q9n24OaSMXrebMowbtowmHLNclknN3XkcBIaYMwA2BIGIl+fZFnI8MERM0pG87W+wki6FepDExsDW9YxQF4pnw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/overlays@3.9.2': - resolution: {integrity: sha512-Q0cRPcBGzNGmC8dBuHyoPR7N3057KTS5g+vZfQ53k8WwmilXBtemFJPLsogJbspuewQ/QJ3o2HYsp2pne7/iNw==} + '@react-types/overlays@3.9.3': + resolution: {integrity: sha512-LzetThNNk8T26pQRbs1I7+isuFhdFYREy7wJCsZmbB0FnZgCukGTfOtThZWv+ry11veyVJiX68jfl4SV6ACTWA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/progress@3.5.16': - resolution: {integrity: sha512-I9tSdCFfvQ7gHJtm90VAKgwdTWXQgVNvLRStEc0z9h+bXBxdvZb+QuiRPERChwFQ9VkK4p4rDqaFo69nDqWkpw==} + '@react-types/progress@3.5.17': + resolution: {integrity: sha512-JtiGlek6QS04bFrRj1WfChjPNr7+3/+pd6yZayXGUkQUPHt1Z/cFnv3QZ/tSQTdUt1XXmjnCak9ZH9JQBqe64Q==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/radio@3.9.2': - resolution: {integrity: sha512-3UcJXu37JrTkRyP4GJPDBU7NmDTInrEdOe+bVzA1j4EegzdkJmLBkLg5cLDAbpiEHB+xIsvbJdx6dxeMuc+H3g==} + '@react-types/radio@3.9.3': + resolution: {integrity: sha512-w2BrMGIiZxYXPCnnB2NQyifwE/rRFMIW87MyawrKO9zPSbnDkqLIHAAtqmlNk2zkz1ZEWjk9opNsuztjP7D4sA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/searchfield@3.6.6': - resolution: {integrity: sha512-cl3itr/fk7wbIQc2Gz5Ie8aVeUmPjVX/mRGS5/EXlmzycAKNYTvqf2mlxwObLndtLISmt7IgNjRRhbUUDI8Ang==} + '@react-types/searchfield@3.6.7': + resolution: {integrity: sha512-POo3spZcYD14aqo0f4eNbymJ8w9EKrlu0pOOjYYWI2P0GUSRmib9cBA9xZFhvRGHuNlHo3ePjeFitYQI7L3g1g==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/select@3.11.0': - resolution: {integrity: sha512-SzIsMFVPCbXE1Z1TLfpdfiwJ1xnIkcL1/CjGilmUKkNk5uT7rYX1xCJqWCjXI0vAU1xM4Qn+T3n8de4fw6HRBg==} + '@react-types/select@3.12.1': + resolution: {integrity: sha512-PtIUymvQNIIzgr+piJtK/8gbH7akWtbswIbfoADPSxtZEd1/vfUIO0s8c750s3XYNlmx/4DrhugQsLYwgC35yg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/shared@3.32.1': - resolution: {integrity: sha512-famxyD5emrGGpFuUlgOP6fVW2h/ZaF405G5KDi3zPHzyjAWys/8W6NAVJtNbkCkhedmvL0xOhvt8feGXyXaw5w==} + '@react-types/shared@3.33.0': + resolution: {integrity: sha512-xuUpP6MyuPmJtzNOqF5pzFUIHH2YogyOQfUQHag54PRmWB7AbjuGWBUv0l1UDmz6+AbzAYGmDVAzcRDOu2PFpw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/slider@3.8.2': - resolution: {integrity: sha512-MQYZP76OEOYe7/yA2To+Dl0LNb0cKKnvh5JtvNvDnAvEprn1RuLiay8Oi/rTtXmc2KmBa4VdTcsXsmkbbkeN2Q==} + '@react-types/slider@3.8.3': + resolution: {integrity: sha512-HCDegYiUA27CcJKvFwgpR8ktFKf2nAirXqQEgVPV4uxk6JIeiRx41yqM/xPJGfmaqa7BARYARLT41yN2V8Kadg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/switch@3.5.15': - resolution: {integrity: sha512-r/ouGWQmIeHyYSP1e5luET+oiR7N7cLrAlWsrAfYRWHxqXOSNQloQnZJ3PLHrKFT02fsrQhx2rHaK2LfKeyN3A==} + '@react-types/switch@3.5.16': + resolution: {integrity: sha512-6fynclkyg0wGHo3f1bwk4Z+gZZEg0Z63iP5TFhgHWdZ8W+Uq6F3u7V4IgQpuJ2NleL1c2jy2/CKdS9v06ac2Og==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/table@3.13.4': - resolution: {integrity: sha512-I/DYiZQl6aNbMmjk90J9SOhkzVDZvyA3Vn3wMWCiajkMNjvubFhTfda5DDf2SgFP5l0Yh6TGGH5XumRv9LqL5Q==} + '@react-types/table@3.13.5': + resolution: {integrity: sha512-4/CixlNmXSuJuX2IKuUlgNd/dEgNh3WvfE/bdwuI1t5JBdShP9tHIzSkgZbrzE2xX46NeA2xq4vXNO5kBv+QDA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/tabs@3.3.19': - resolution: {integrity: sha512-fE+qI43yR5pAMpeqPxGqQq9jDHXEPqXskuxNHERMW0PYMdPyem2Cw6goc5F4qeZO3Hf6uPZgHkvJz2OAq7TbBw==} + '@react-types/tabs@3.3.21': + resolution: {integrity: sha512-Dq9bKI62rHoI4LGGcBGlZ5s0aSwB0G4Y8o0r7hQZvf1eZWc9fmqdAdTTaGG/RUyhMIGRYWl5RRUBUuC5RmaO6w==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/textfield@3.12.6': - resolution: {integrity: sha512-hpEVKE+M3uUkTjw2WrX1NrH/B3rqDJFUa+ViNK2eVranLY4ZwFqbqaYXSzHupOF3ecSjJJv2C103JrwFvx6TPQ==} + '@react-types/textfield@3.12.7': + resolution: {integrity: sha512-ddiacsS6sLFtAn2/fym7lR8nbdsLgPfelNDcsDqHiu6XUHh5TCNe8ItXHFaIiyfnKTH8uJqZrSli4wfAYNfMsw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/tooltip@3.4.21': - resolution: {integrity: sha512-ugGHOZU6WbOdeTdbjnaEc+Ms7/WhsUCg+T3PCOIeOT9FG02Ce189yJ/+hd7oqL/tVwIhEMYJIqSCgSELFox+QA==} + '@react-types/tooltip@3.5.1': + resolution: {integrity: sha512-h6xOAWbWUJKs9CzcCyzSPATLHq7W5dS866HkXLrtCrRDShLuzQnojZnctD2tKtNt17990hjnOhl36GUBuO5kyw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@rolldown/pluginutils@1.0.0-beta.47': - resolution: {integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==} - - '@rollup/rollup-android-arm-eabi@4.53.3': - resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} - cpu: [arm] - os: [android] + '@rolldown/pluginutils@1.0.0-rc.3': + resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} '@rollup/rollup-android-arm-eabi@4.57.1': resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.3': - resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.57.1': resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.3': - resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.57.1': resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.3': - resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.57.1': resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.3': - resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} - cpu: [arm64] - os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.57.1': resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.3': - resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} - cpu: [x64] - os: [freebsd] - '@rollup/rollup-freebsd-x64@4.57.1': resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': - resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} - cpu: [arm] - os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.57.1': resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} cpu: [arm] os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.53.3': - resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} - cpu: [arm] - os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.57.1': resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} cpu: [arm] os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.53.3': - resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} - cpu: [arm64] - os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.57.1': resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} cpu: [arm64] os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.53.3': - resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} - cpu: [arm64] - os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.57.1': resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} cpu: [arm64] os: [linux] - - '@rollup/rollup-linux-loong64-gnu@4.53.3': - resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} - cpu: [loong64] - os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.57.1': resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.57.1': resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} cpu: [loong64] os: [linux] - - '@rollup/rollup-linux-ppc64-gnu@4.53.3': - resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} - cpu: [ppc64] - os: [linux] + libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.57.1': resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.57.1': resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} cpu: [ppc64] os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.53.3': - resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} - cpu: [riscv64] - os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.57.1': resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} cpu: [riscv64] os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.53.3': - resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} - cpu: [riscv64] - os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.57.1': resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} cpu: [riscv64] os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.53.3': - resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} - cpu: [s390x] - os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.57.1': resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} cpu: [s390x] os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.53.3': - resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} - cpu: [x64] - os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.57.1': resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} cpu: [x64] os: [linux] - - '@rollup/rollup-linux-x64-musl@4.53.3': - resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} - cpu: [x64] - os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.57.1': resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openbsd-x64@4.57.1': resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.53.3': - resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} - cpu: [arm64] - os: [openharmony] - '@rollup/rollup-openharmony-arm64@4.57.1': resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.3': - resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.57.1': resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.3': - resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.57.1': resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.3': - resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-gnu@4.57.1': resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.3': - resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.57.1': resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} cpu: [x64] @@ -2049,14 +1849,32 @@ packages: '@scure/bip39@1.6.0': resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@shikijs/core@3.22.0': + resolution: {integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==} + + '@shikijs/engine-javascript@3.22.0': + resolution: {integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==} + + '@shikijs/engine-oniguruma@3.22.0': + resolution: {integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==} + + '@shikijs/langs@3.22.0': + resolution: {integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==} + + '@shikijs/themes@3.22.0': + resolution: {integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==} + + '@shikijs/types@3.22.0': + resolution: {integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@stylistic/eslint-plugin@5.6.1': - resolution: {integrity: sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==} + '@stylistic/eslint-plugin@5.8.0': + resolution: {integrity: sha512-WNPVF/FfBAjyi3OA7gok8swRiImNLKI4dmV3iK/GC/0xSJR7eCzBFsw9hLZVgb1+MYNLy7aDsjohxN1hA/FIfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -2064,65 +1882,69 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@tailwindcss/node@4.1.17': - resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==} + '@tailwindcss/node@4.1.18': + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} - '@tailwindcss/oxide-android-arm64@4.1.17': - resolution: {integrity: sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==} + '@tailwindcss/oxide-android-arm64@4.1.18': + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.17': - resolution: {integrity: sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==} + '@tailwindcss/oxide-darwin-arm64@4.1.18': + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.17': - resolution: {integrity: sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==} + '@tailwindcss/oxide-darwin-x64@4.1.18': + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.17': - resolution: {integrity: sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==} + '@tailwindcss/oxide-freebsd-x64@4.1.18': + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': - resolution: {integrity: sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': - resolution: {integrity: sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] - '@tailwindcss/oxide-linux-arm64-musl@4.1.17': - resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] - '@tailwindcss/oxide-linux-x64-gnu@4.1.17': - resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] - '@tailwindcss/oxide-linux-x64-musl@4.1.17': - resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==} + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] - '@tailwindcss/oxide-wasm32-wasi@4.1.17': - resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==} + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -2133,37 +1955,39 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': - resolution: {integrity: sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==} + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.17': - resolution: {integrity: sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.17': - resolution: {integrity: sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==} + '@tailwindcss/oxide@4.1.18': + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} engines: {node: '>= 10'} - '@tailwindcss/vite@4.1.17': - resolution: {integrity: sha512-4+9w8ZHOiGnpcGI6z1TVVfWaX/koK7fKeSYF3qlYg2xpBtbteP2ddBxiarL+HVgfSJGeK5RIxRQmKm4rTJJAwA==} + '@tailwindcss/vite@4.1.18': + resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 - '@tanstack/devtools-event-client@0.3.5': - resolution: {integrity: sha512-RL1f5ZlfZMpghrCIdzl6mLOFLTuhqmPNblZgBaeKfdtk5rfbjykurv+VfYydOFXj0vxVIoA2d/zT7xfD7Ph8fw==} + '@tanstack/devtools-event-client@0.4.0': + resolution: {integrity: sha512-RPfGuk2bDZgcu9bAJodvO2lnZeHuz4/71HjZ0bGb/SPg8+lyTA+RLSKQvo7fSmPSi8/vcH3aKQ8EM9ywf1olaw==} engines: {node: '>=18'} - '@tanstack/eslint-config@0.3.2': - resolution: {integrity: sha512-2g+PuGR3GuvvCiR3xZs+IMqAvnYU9bvH+jRml0BFBSxHBj22xFCTNvJWhvgj7uICFF9IchDkFUto91xDPMu5cg==} + '@tanstack/eslint-config@0.4.0': + resolution: {integrity: sha512-V+Cd81W/f65dqKJKpytbwTGx9R+IwxKAHsG/uJ3nSLYEh36hlAr54lRpstUhggQB8nf/cP733cIw8DuD2dzQUg==} engines: {node: '>=18'} + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 - '@tanstack/form-core@1.25.0': - resolution: {integrity: sha512-OEWW2uTOFMyRmHrVEiPOn+J27ekQ/vXwRAJt9kD8U8vCt8CmpClj989OOGGSBSVJtDNxGUcWyKF8gYznnqIyaw==} + '@tanstack/form-core@1.28.3': + resolution: {integrity: sha512-DBhnu1d5VfACAYOAZJO8tsEUHjWczZMJY8v/YrtAJNWpwvL/3ogDuz8e6yUB2m/iVTNq6K8yrnVN2nrX0/BX/w==} '@tanstack/history@1.154.14': resolution: {integrity: sha512-xyIfof8eHBuub1CkBnbKNKQXeRZC4dClhmzePHVOEel4G7lk/dW+TQ16da7CFdeNLv6u6Owf5VoBQxoo6DFTSA==} @@ -2173,18 +1997,18 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/pacer@0.15.4': - resolution: {integrity: sha512-vGY+CWsFZeac3dELgB6UZ4c7OacwsLb8hvL2gLS6hTgy8Fl0Bm/aLokHaeDIP+q9F9HUZTnp360z9uv78eg8pg==} + '@tanstack/pacer-lite@0.1.1': + resolution: {integrity: sha512-y/xtNPNt/YeyoVxE/JCx+T7yjEzpezmbb+toK8DDD1P4m7Kzs5YR956+7OKexG3f8aXgC3rLZl7b1V+yNUSy5w==} engines: {node: '>=18'} - '@tanstack/query-core@5.90.10': - resolution: {integrity: sha512-EhZVFu9rl7GfRNuJLJ3Y7wtbTnENsvzp+YpcAV7kCYiXni1v8qZh++lpw4ch4rrwC0u/EZRnBHIehzCGzwXDSQ==} + '@tanstack/query-core@5.90.20': + resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==} - '@tanstack/query-devtools@5.90.1': - resolution: {integrity: sha512-GtINOPjPUH0OegJExZ70UahT9ykmAhmtNVcmtdnOZbxLwT7R5OmRztR5Ahe3/Cu7LArEmR6/588tAycuaWb1xQ==} + '@tanstack/query-devtools@5.93.0': + resolution: {integrity: sha512-+kpsx1NQnOFTZsw6HAFCW3HkKg0+2cepGtAWXjiiSOJJ1CtQpt72EE2nyZb+AjAbLRPoeRmPJ8MtQd8r8gsPdg==} - '@tanstack/react-form@1.25.0': - resolution: {integrity: sha512-SjKpBkjegNVW9WU+qlO8+/+kSbSEwo2zwHnrQz/yOnnJRhtdgubUt50LfeUtdzkMsbbptQ5MSZrXH03kidQjyw==} + '@tanstack/react-form@1.28.3': + resolution: {integrity: sha512-84yd0swZRcyC3Q46dYBH6bHf1tlIY1flchbdG3VwArg/wLVW5RdBenIrJhleHjk2OxXuF+9HoKQbHglJyWIXQA==} peerDependencies: '@tanstack/react-start': '*' react: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -2192,72 +2016,72 @@ packages: '@tanstack/react-start': optional: true - '@tanstack/react-query-devtools@5.90.2': - resolution: {integrity: sha512-vAXJzZuBXtCQtrY3F/yUNJCV4obT/A/n81kb3+YqLbro5Z2+phdAbceO+deU3ywPw8B42oyJlp4FhO0SoivDFQ==} + '@tanstack/react-query-devtools@5.91.3': + resolution: {integrity: sha512-nlahjMtd/J1h7IzOOfqeyDh5LNfG0eULwlltPEonYy0QL+nqrBB+nyzJfULV+moL7sZyxc2sHdNJki+vLA9BSA==} peerDependencies: - '@tanstack/react-query': ^5.90.2 + '@tanstack/react-query': ^5.90.20 react: ^18 || ^19 - '@tanstack/react-query@5.90.10': - resolution: {integrity: sha512-BKLss9Y8PQ9IUjPYQiv3/Zmlx92uxffUOX8ZZNoQlCIZBJPT5M+GOMQj7xislvVQ6l1BstBjcX0XB/aHfFYVNw==} + '@tanstack/react-query@5.90.21': + resolution: {integrity: sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-router-devtools@1.158.0': - resolution: {integrity: sha512-uhciBlsPW67xbDCFyc2RQS00OergfNXYxendGUO2HGy4uTr79aQSCb4l6v+sdlPwUTlzwkAtM6e1illIexF15Q==} + '@tanstack/react-router-devtools@1.160.2': + resolution: {integrity: sha512-uSdQD77S+LcANCiWcLsrqSxyEqTXdZhBETbciKcYJrcgd8rfkxg6AIewYi7148QPU6gb3VKQbeRlqXmBeEs5dg==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.158.0 - '@tanstack/router-core': ^1.158.0 + '@tanstack/react-router': ^1.160.2 + '@tanstack/router-core': ^1.160.0 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' peerDependenciesMeta: '@tanstack/router-core': optional: true - '@tanstack/react-router@1.158.0': - resolution: {integrity: sha512-kvTaO6zjq9WWPyo1wwSZx95AjJ9KOvu23cOMgKeDdDQWKF3Z9q3fwhToKMKJoC11T2Vuivz+o/anrxCcOvdRzw==} + '@tanstack/react-router@1.160.2': + resolution: {integrity: sha512-EJWAMS4qCfWKNCzzYGy6ZuWTdBATYEEWieaQdmM7zUesyOQ01j7o6aKXdmCp9rWuSKjPHXagWubEnEo+Puhi3w==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-store@0.7.7': - resolution: {integrity: sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==} + '@tanstack/react-store@0.8.0': + resolution: {integrity: sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/react-store@0.8.0': - resolution: {integrity: sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow==} + '@tanstack/react-store@0.8.1': + resolution: {integrity: sha512-XItJt+rG8c5Wn/2L/bnxys85rBpm0BfMbhb4zmPVLXAKY9POrp1xd6IbU4PKoOI+jSEGc3vntPRfLGSgXfE2Ig==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.158.0': - resolution: {integrity: sha512-dRMcWY0UB/6OZqSCx/7iUvom0ol18rHSQladygVT8mlth7uxYx3n5BNse8C03efIE8y1Bx+VDOBAKpAZ9BgKog==} + '@tanstack/router-core@1.160.0': + resolution: {integrity: sha512-vbh6OsE0MG+0c+SKh2uk5yEEZlWsxT96Ub2JaTs7ixOvZp3Wu9PTEIe2BA3cShNZhEsDI0Le4NqgY4XIaHLLvA==} engines: {node: '>=12'} - '@tanstack/router-devtools-core@1.158.0': - resolution: {integrity: sha512-8FUKfjh8Xz9T9O5yYaiVE0Va5aCMncQyVPKb7yy5M/buDnx9Kh0bPjw/eUZJWftOyxW6/WeR605yjOdx/PnqNw==} + '@tanstack/router-devtools-core@1.160.0': + resolution: {integrity: sha512-P/l0GVd0qmDbskg8/UbkOrCxuFz0t69BCxv2j4+8Xfy8AcqnFtoR1LChKgYyxGPy9sWOxktAneFdy1xA3X/Q6A==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.158.0 + '@tanstack/router-core': ^1.160.0 csstype: ^3.0.10 peerDependenciesMeta: csstype: optional: true - '@tanstack/router-generator@1.158.0': - resolution: {integrity: sha512-hVkXQSN/fMD9q3Zn3wNa4PV0Y9VNwQB2bLaecA5i4vc43GX75vmgyiKoMr44BJheUssfVoL/po9a/7sv+N6lKA==} + '@tanstack/router-generator@1.160.1': + resolution: {integrity: sha512-De6TicInwy3/9rQ++RZAyFOvB2oi5UV5T0iiIlxe3jgiOLFxMA4EKKVlT+alDxKnq6udTLam9xqhvGOVZ6a2hw==} engines: {node: '>=12'} - '@tanstack/router-plugin@1.158.0': - resolution: {integrity: sha512-FxTOo/icU373jlOu9nlzR0B1vqc47tKZLw3HwOQwCBL4P4EihOBz+L7dcGyKR8bRBL0rCRWvHQTSHNMOr+fGYQ==} + '@tanstack/router-plugin@1.160.2': + resolution: {integrity: sha512-+uyjLK4hImFyENb08PwDfvnKpwfdjCA29sKrHRk/ff9H23RUm10MW0UMjIrVU+4Dql/xsbzsqrTwIyRS6zna9Q==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.158.0 + '@tanstack/react-router': ^1.160.2 vite: '>=5.0.0 || >=6.0.0 || >=7.0.0' vite-plugin-solid: ^2.11.10 webpack: '>=5.92.0' @@ -2277,12 +2101,12 @@ packages: resolution: {integrity: sha512-qZ76eaLKU6Ae9iI/mc5zizBX149DXXZkBVVO3/QRIll79uKLJZHQlMKR++2ba7JsciBWz1pgpIBcCJPE9S0LVg==} engines: {node: '>=12'} - '@tanstack/store@0.7.7': - resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==} - '@tanstack/store@0.8.0': resolution: {integrity: sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ==} + '@tanstack/store@0.8.1': + resolution: {integrity: sha512-PtOisLjUZPz5VyPRSCGjNOlwTvabdTBQ2K80DpVL1chGVr35WRxfeavAPdNq6pm/t7F8GhoR2qtmkkqtCEtHYw==} + '@tanstack/virtual-file-routes@1.154.7': resolution: {integrity: sha512-cHHDnewHozgjpI+MIVp9tcib6lYEQK5MyUr0ChHpHFGBl8Xei55rohFK0I0ve/GKoHeioaK42Smd8OixPp6CTg==} engines: {node: '>=12'} @@ -2291,8 +2115,8 @@ packages: resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} engines: {node: '>=18'} - '@testing-library/react@16.3.0': - resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} + '@testing-library/react@16.3.2': + resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 @@ -2339,23 +2163,35 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/node@24.10.1': resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} + '@types/node@25.2.3': + resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==} + '@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.6': - resolution: {integrity: sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w==} + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@typescript-eslint/eslint-plugin@8.54.0': resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2364,6 +2200,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/eslint-plugin@8.56.0': + resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.54.0': resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2371,22 +2215,45 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.56.0': + resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.54.0': resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.56.0': + resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.54.0': resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.56.0': + resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.54.0': resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.56.0': + resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.54.0': resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2394,20 +2261,33 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.47.0': - resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==} + '@typescript-eslint/type-utils@8.56.0': + resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/types@8.54.0': resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.56.0': + resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.54.0': resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.56.0': + resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.54.0': resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2415,15 +2295,29 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.56.0': + resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.54.0': resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.56.0': + resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/vfs@1.6.2': resolution: {integrity: sha512-hoBwJwcbKHmvd2QVebiytN1aELvpk9B74B4L1mFm/XT1Q/VOYAWl2vQ9AWRFtQq8zmz6enTpfTV8WRc4ATjW/g==} peerDependencies: typescript: '*' + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] @@ -2463,41 +2357,49 @@ packages: resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] + libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} @@ -2523,17 +2425,17 @@ packages: resolution: {integrity: sha512-XSvL5wKXBZIv7fflMqhQx936sRpEtzxeV25xAEt0rLLXzbF6RCQaRA1jrVIn8JCubMyn/y0TaidphUtilLzl1A==} engines: {node: '>=18'} - '@vitejs/plugin-react@5.1.1': - resolution: {integrity: sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA==} + '@vitejs/plugin-react@5.1.4': + resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vitest/expect@4.0.12': - resolution: {integrity: sha512-is+g0w8V3/ZhRNrRizrJNr8PFQKwYmctWlU4qg8zy5r9aIV5w8IxXLlfbbxJCwSpsVl2PXPTm2/zruqTqz3QSg==} + '@vitest/expect@4.0.18': + resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} - '@vitest/mocker@4.0.12': - resolution: {integrity: sha512-GsmA/tD5Ht3RUFoz41mZsMU1AXch3lhmgbTnoSPTdH231g7S3ytNN1aU0bZDSyxWs8WA7KDyMPD5L4q6V6vj9w==} + '@vitest/mocker@4.0.18': + resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -2543,42 +2445,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.12': - resolution: {integrity: sha512-R7nMAcnienG17MvRN8TPMJiCG8rrZJblV9mhT7oMFdBXvS0x+QD6S1G4DxFusR2E0QIS73f7DqSR1n87rrmE+g==} - - '@vitest/runner@4.0.12': - resolution: {integrity: sha512-hDlCIJWuwlcLumfukPsNfPDOJokTv79hnOlf11V+n7E14rHNPz0Sp/BO6h8sh9qw4/UjZiKyYpVxK2ZNi+3ceQ==} - - '@vitest/snapshot@4.0.12': - resolution: {integrity: sha512-2jz9zAuBDUSbnfyixnyOd1S2YDBrZO23rt1bicAb6MA/ya5rHdKFRikPIDpBj/Dwvh6cbImDmudegnDAkHvmRQ==} + '@vitest/pretty-format@4.0.18': + resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} - '@vitest/spy@4.0.12': - resolution: {integrity: sha512-GZjI9PPhiOYNX8Nsyqdw7JQB+u0BptL5fSnXiottAUBHlcMzgADV58A7SLTXXQwcN1yZ6gfd1DH+2bqjuUlCzw==} + '@vitest/runner@4.0.18': + resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} - '@vitest/utils@4.0.12': - resolution: {integrity: sha512-DVS/TLkLdvGvj1avRy0LSmKfrcI9MNFvNGN6ECjTUHWJdlcgPDOXhjMis5Dh7rBH62nAmSXnkPbE+DZ5YD75Rw==} + '@vitest/snapshot@4.0.18': + resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} - abitype@1.1.0: - resolution: {integrity: sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3.22.0 || ^4.0.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + '@vitest/spy@4.0.18': + resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} - abitype@1.1.2: - resolution: {integrity: sha512-mqpSSIuddHs7t3IgsAweIZgYIQT4RhpIzrdcSN4fvHp9d77O0mglAAQ7fnI3r/hHIvgMwdpJAKr2T9K9leccYw==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3.22.0 || ^4.0.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + '@vitest/utils@4.0.18': + resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} abitype@1.2.3: resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==} @@ -2656,6 +2536,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.2: + resolution: {integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==} + engines: {node: 20 || >=22} + baseline-browser-mapping@2.8.30: resolution: {integrity: sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==} hasBin: true @@ -2673,6 +2557,10 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.2: + resolution: {integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==} + engines: {node: 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -2697,6 +2585,9 @@ packages: caniuse-lite@1.0.30001756: resolution: {integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} @@ -2709,6 +2600,12 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} @@ -2730,6 +2627,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + command-line-args@6.0.1: resolution: {integrity: sha512-Jr3eByUjqyK0qd8W0SGFW1nZwqCaNCtbXjRo2cRJC1OYxWl3MZ5t1US3jq+cO4sPavqgw4l9BMGX0CBe+trepg==} engines: {node: '>=12.20'} @@ -2775,16 +2675,16 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@5.3.3: - resolution: {integrity: sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==} + cssstyle@6.0.1: + resolution: {integrity: sha512-IoJs7La+oFp/AB033wBStxNOJt4+9hHMxsXUPANcoXL2b3W4DZKghlJ2cI/eyeRZIQ9ysvYEorVhjrcYctWbog==} engines: {node: '>=20'} csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - data-urls@6.0.0: - resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} - engines: {node: '>=20'} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -2826,6 +2726,9 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diff@8.0.3: resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} engines: {node: '>=0.3.1'} @@ -2836,8 +2739,8 @@ packages: dompurify@3.2.7: resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} - effect@3.19.5: - resolution: {integrity: sha512-P/Yml/wuqfIWVg4EH3QWKEqe4txwZVa9tCnlp24mRtIxN/wbn27KLOuDyF0HcKuMYsX/SGw8Lxe0T0Y6q4tvBA==} + effect@3.19.18: + resolution: {integrity: sha512-KlbNuYzzwpOpnpshIhjCaqweQkthAT1oVG61Z2wIHqo6Sb6n/+pgzFXyTvsLyxcx5Cg3aWaQXa0XQHMuzdVW4A==} electron-to-chromium@1.5.258: resolution: {integrity: sha512-rHUggNV5jKQ0sSdWwlaRDkFc3/rRJIVnOSe9yR4zrR07m3ZxhP4N27Hlg8VeJGGYgFTxK5NqDmWI4DSH72vIJg==} @@ -2853,11 +2756,6 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.27.2: resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} @@ -2871,6 +2769,10 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + eslint-compat-utils@0.5.1: resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} @@ -2918,8 +2820,8 @@ packages: eslint-import-resolver-node: optional: true - eslint-plugin-n@17.23.1: - resolution: {integrity: sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==} + eslint-plugin-n@17.24.0: + resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' @@ -2929,11 +2831,11 @@ packages: peerDependencies: eslint: '>=5.0.0' - eslint-plugin-sort-destructure-keys@2.0.0: - resolution: {integrity: sha512-4w1UQCa3o/YdfWaLr9jY8LfGowwjwjmwClyFLxIsToiyIdZMq3x9Ti44nDn34DtTPP7PWg96tUONKVmATKhYGQ==} - engines: {node: '>=12'} + eslint-plugin-sort-destructure-keys@3.0.0: + resolution: {integrity: sha512-ian2KEdGi8xZW50SVz9HIP9PDQN4XWeo3Hax3LsDk0ojL+wrwk40az8bKCnt3q2J7I3q5xF2ncZ0arj2q8Ou+A==} + engines: {node: '>=18'} peerDependencies: - eslint: 5 - 9 + eslint: 5 - 10 eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} @@ -2947,6 +2849,10 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.0: + resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.39.2: resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2966,10 +2872,6 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} @@ -3055,8 +2957,8 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - framer-motion@12.23.24: - resolution: {integrity: sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w==} + framer-motion@12.34.1: + resolution: {integrity: sha512-kcZyNaYQfvE2LlH6+AyOaJAQV4rGp5XbzfhsZpiSZcwDMfZUHhuxLWeyRzf5I7jip3qKRpuimPA9pXXfr111kQ==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -3078,9 +2980,6 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-tsconfig@4.13.0: - resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} - get-tsconfig@4.13.1: resolution: {integrity: sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==} @@ -3100,8 +2999,8 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globals@16.5.0: - resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + globals@17.3.0: + resolution: {integrity: sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==} engines: {node: '>=18'} globrex@0.1.2: @@ -3119,9 +3018,18 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} @@ -3131,10 +3039,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -3213,12 +3117,16 @@ packages: peerDependencies: ws: '*' + jackspeak@4.2.3: + resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} + engines: {node: 20 || >=22} + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - jose@6.1.2: - resolution: {integrity: sha512-MpcPtHLE5EmztuFIqB0vzHAWJPpmN1E6L4oo+kze56LIs3MyXIj9ZHMDxqOvkP38gBR7K1v3jqd4WU2+nrfONQ==} + jose@6.1.3: + resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3230,8 +3138,8 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsdom@27.2.0: - resolution: {integrity: sha512-454TI39PeRDW1LgpyLPyURtB4Zx1tklSr6+OFOipsxGUH1WMTvk6C65JQdrj455+DP2uJ1+veBEHTGFKWVLFoA==} + jsdom@28.1.0: + resolution: {integrity: sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -3265,6 +3173,9 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kubernetes-types@1.30.0: + resolution: {integrity: sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q==} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3304,24 +3215,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.30.2: resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.30.2: resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.30.2: resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.30.2: resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} @@ -3352,8 +3267,8 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lru-cache@11.2.2: - resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + lru-cache@11.2.6: + resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -3374,9 +3289,27 @@ packages: md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -3390,6 +3323,10 @@ packages: resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} engines: {node: 20 || >=22} + minimatch@10.2.1: + resolution: {integrity: sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3397,17 +3334,17 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - monaco-editor@0.55.0: - resolution: {integrity: sha512-z0wxERYJs9181lmruSC42pD2AEllobxBrDWnOMbKBKWmQnhKn7p3BGvpk+Usahooa0ueCShJkWXE8vXgYvKCIg==} + monaco-editor@0.55.1: + resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} - motion-dom@12.23.23: - resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==} + motion-dom@12.34.1: + resolution: {integrity: sha512-SC7ZC5dRcGwku2g7EsPvI4q/EzHumUbqsDNumBmZTLFg+goBO5LTJvDu9MAxx+0mtX4IA78B2be/A3aRjY0jnw==} - motion-utils@12.23.6: - resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} + motion-utils@12.29.2: + resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==} - motion@12.23.24: - resolution: {integrity: sha512-Rc5E7oe2YZ72N//S3QXGzbnXgqNrTESv8KKxABR20q2FLch9gHLo0JLyYo2hZ238bZ9Gx6cWhj9VO0IgwbMjCw==} + motion@12.34.1: + resolution: {integrity: sha512-N9RVNGn/NSo85OgHX1wGaUWHvReuQ7dZUwuQRhHyzY2wfVOvY3cEgn0Mw4NXOsXMHL/y7EYuzA+b59PYI6EejA==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -3427,9 +3364,6 @@ packages: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.5: - resolution: {integrity: sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==} - msgpackr@1.11.8: resolution: {integrity: sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==} @@ -3470,6 +3404,15 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + open@11.0.0: resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} engines: {node: '>=20'} @@ -3478,16 +3421,8 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ox@0.11.3: - resolution: {integrity: sha512-1bWYGk/xZel3xro3l8WGg6eq4YEKlaqvyMtVhfMFpbJzK2F6rj4EDRtqDCWVEJMkzcmEi9uW2QxsqELokOlarw==} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - ox@0.9.6: - resolution: {integrity: sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==} + ox@0.12.1: + resolution: {integrity: sha512-uU0llpthaaw4UJoXlseCyBHmQ3bLrQmz9rRLIAUHqv46uHuae9SE+ukYBRIPVCnlEnHKuWjDUcDFHWx9gbGNoA==} peerDependencies: typescript: '>=5.4.0' peerDependenciesMeta: @@ -3547,11 +3482,6 @@ packages: resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} - engines: {node: '>=14'} - hasBin: true - prettier@3.8.1: resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} @@ -3561,6 +3491,9 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -3568,22 +3501,22 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - react-aria@3.44.0: - resolution: {integrity: sha512-2Pq3GQxBgM4/2BlpKYXeaZ47a3tdIcYSW/AYvKgypE3XipxOdQMDG5Sr/NBn7zuJq+thzmtfRb0lB9bTbsmaRw==} + react-aria@3.46.0: + resolution: {integrity: sha512-We0diSsMK35jw53JFjgF9w8obBjehAUI/TRiynnzSrjRd9eoHYQcecHlptke/HEFxvya/Gcm+LA21Im1+qnIeQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - react-dom@19.2.0: - resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} peerDependencies: - react: ^19.2.0 + react: ^19.2.4 react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-keyed-flatten-children@5.0.1: - resolution: {integrity: sha512-bZhTocogwo+q6zz3+HAQexckXhm+Ko8CaujKO6A138kVpRtF4xN8OmLE7F1Qv9YcDJrZ8gPXkJdM/VgcKjJimg==} + react-keyed-flatten-children@5.1.1: + resolution: {integrity: sha512-+DXMhjG0nbKq7AuWvAp1NUWCcg4jsUuBCdtDW8ySl45m3+MTjbXbR+TxvoM/1dTH7reSDqksBipkc/e/gpUnDg==} peerDependencies: react: '>=18.0.0' react-is: '>=18.0.0' @@ -3592,8 +3525,8 @@ packages: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} - react@19.2.0: - resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} readdirp@3.6.0: @@ -3604,6 +3537,15 @@ packages: resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + remove-accents@0.5.0: resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} @@ -3621,11 +3563,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - rollup@4.53.3: - resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.57.1: resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3635,9 +3572,6 @@ packages: resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -3672,6 +3606,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shiki@3.22.0: + resolution: {integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -3687,6 +3624,9 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + stable-hash-x@0.2.0: resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} engines: {node: '>=12.0.0'} @@ -3700,6 +3640,9 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -3714,11 +3657,8 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - - tabbable@6.3.0: - resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} + tabbable@6.4.0: + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} table-layout@4.1.1: resolution: {integrity: sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==} @@ -3728,8 +3668,8 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tailwindcss@4.1.17: - resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==} + tailwindcss@4.1.18: + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} @@ -3744,8 +3684,9 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} @@ -3777,6 +3718,9 @@ packages: resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} engines: {node: '>=20'} + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + ts-api-utils@2.4.0: resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} @@ -3788,15 +3732,15 @@ packages: peerDependencies: typescript: '>=4.0.0' - ts-extras@0.16.0: - resolution: {integrity: sha512-wzGQE1zzOVM7BVyJ/vd1Ato3YQOOMg5Yv591jDe1oWpAX5bOFtpNd4XzR/EtVNWlBATJhO905WCAwJQuhQuxeQ==} + ts-extras@0.17.0: + resolution: {integrity: sha512-0CaHIA88Up/vodzPyidsvzaTMqAcySf0uNk/AgQd+qq6FdbN7LH7smL/zuN3/hOPLcNttXIZSPRL3EAYGhAqtw==} engines: {node: '>=20'} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.20.6: - resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} engines: {node: '>=18.0.0'} hasBin: true @@ -3804,8 +3748,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@5.2.0: - resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==} + type-fest@5.4.4: + resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} engines: {node: '>=20'} typescript-eslint@8.54.0: @@ -3815,6 +3759,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + typescript-eslint@8.56.0: + resolution: {integrity: sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -3836,6 +3787,25 @@ packages: resolution: {integrity: sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==} engines: {node: '>=20.18.1'} + undici@7.22.0: + resolution: {integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==} + engines: {node: '>=20.18.1'} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + unplugin@2.3.10: resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} engines: {node: '>=18.12.0'} @@ -3852,11 +3822,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - use-sync-external-store@1.5.0: - resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -3870,62 +3835,20 @@ packages: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true - viem@2.39.3: - resolution: {integrity: sha512-s11rPQRvUEdc5qHK3xT4fIk4qvgPAaLwaTFq+EbFlcJJD+Xn3R4mc9H6B6fquEiHl/mdsdbG/uKCnYpoNtHNHw==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - viem@2.45.1: - resolution: {integrity: sha512-LN6Pp7vSfv50LgwhkfSbIXftAM5J89lP9x8TeDa8QM7o41IxlHrDh0F9X+FfnCWtsz11pEVV5sn+yBUoOHNqYA==} + viem@2.46.1: + resolution: {integrity: sha512-c5YPQR/VueqoPG09Tp1JBw2iItKVRGVI0YkWekquRDZw0ciNBhO3muu2QjO9xFelOXh18q3d/kLbW83B2Oxf0g==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: typescript: optional: true - vite@7.2.4: - resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3966,19 +3889,18 @@ packages: yaml: optional: true - vitest@4.0.12: - resolution: {integrity: sha512-pmW4GCKQ8t5Ko1jYjC3SqOr7TUKN7uHOHB/XGsAIb69eYu6d1ionGSsb5H9chmPf+WeXt0VE7jTXsB1IvWoNbw==} + vitest@4.0.18: + resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 - '@types/debug': ^4.1.12 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.12 - '@vitest/browser-preview': 4.0.12 - '@vitest/browser-webdriverio': 4.0.12 - '@vitest/ui': 4.0.12 + '@vitest/browser-playwright': 4.0.18 + '@vitest/browser-preview': 4.0.18 + '@vitest/browser-webdriverio': 4.0.18 + '@vitest/ui': 4.0.18 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3986,8 +3908,6 @@ packages: optional: true '@opentelemetry/api': optional: true - '@types/debug': - optional: true '@types/node': optional: true '@vitest/browser-playwright': @@ -4003,11 +3923,11 @@ packages: jsdom: optional: true - vue-eslint-parser@10.2.0: - resolution: {integrity: sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==} + vue-eslint-parser@10.4.0: + resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} @@ -4016,26 +3936,21 @@ packages: web-vitals@5.1.0: resolution: {integrity: sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==} - webidl-conversions@8.0.0: - resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - whatwg-url@15.1.0: - resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} engines: {node: '>=20'} + whatwg-url@16.0.0: + resolution: {integrity: sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -4095,30 +4010,33 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.1.12: - resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: - '@acemir/cssom@0.9.23': {} + '@acemir/cssom@0.9.31': {} '@adraffy/ens-normalize@1.11.1': {} - '@asamuzakjp/css-color@4.1.0': + '@asamuzakjp/css-color@4.1.2': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.2 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.2.6 - '@asamuzakjp/dom-selector@6.7.4': + '@asamuzakjp/dom-selector@6.8.1': dependencies: '@asamuzakjp/nwsapi': 2.3.9 bidi-js: 1.0.3 css-tree: 3.1.0 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.2.2 + lru-cache: 11.2.6 '@asamuzakjp/nwsapi@2.3.9': {} @@ -4128,8 +4046,16 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.28.5': {} + '@babel/compat-data@7.29.0': {} + '@babel/core@7.28.5': dependencies: '@babel/code-frame': 7.27.1 @@ -4150,6 +4076,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.28.5': dependencies: '@babel/parser': 7.28.5 @@ -4158,6 +4104,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.28.5 @@ -4166,6 +4120,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.0 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-globals@7.28.0': {} '@babel/helper-module-imports@7.27.1': @@ -4175,6 +4137,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -4184,6 +4153,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-plugin-utils@7.27.1': {} '@babel/helper-string-parser@7.27.1': {} @@ -4197,10 +4175,19 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.5 + '@babel/helpers@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + '@babel/parser@7.28.5': dependencies: '@babel/types': 7.28.5 + '@babel/parser@7.29.0': + dependencies: + '@babel/types': 7.29.0 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -4211,14 +4198,14 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/runtime-corejs3@7.28.4': @@ -4227,12 +4214,20 @@ snapshots: '@babel/runtime@7.28.4': {} + '@babel/runtime@7.28.6': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.5 '@babel/types': 7.28.5 + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 + '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 @@ -4245,105 +4240,100 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-ui-components/react@1.0.0-beta.4(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@babel/types@7.29.0': dependencies: - '@babel/runtime': 7.28.4 - '@base-ui-components/utils': 0.1.2(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@floating-ui/utils': 0.2.10 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - reselect: 5.1.1 - tabbable: 6.2.0 - use-sync-external-store: 1.5.0(react@19.2.0) - optionalDependencies: - '@types/react': 19.2.6 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - '@base-ui-components/react@1.0.0-beta.6(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@base-ui/react@1.2.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.4 - '@base-ui-components/utils': 0.2.0(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@babel/runtime': 7.28.6 + '@base-ui/utils': 0.2.5(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@floating-ui/utils': 0.2.10 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - reselect: 5.1.1 - tabbable: 6.3.0 - use-sync-external-store: 1.6.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + tabbable: 6.4.0 + use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: - '@types/react': 19.2.6 + '@types/react': 19.2.14 - '@base-ui-components/utils@0.1.2(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@base-ui/utils@0.2.5(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@floating-ui/utils': 0.2.10 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) reselect: 5.1.1 - use-sync-external-store: 1.6.0(react@19.2.0) + use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: - '@types/react': 19.2.6 + '@types/react': 19.2.14 - '@base-ui-components/utils@0.2.0(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@bramus/specificity@2.4.2': dependencies: - '@babel/runtime': 7.28.4 - '@floating-ui/utils': 0.2.10 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - reselect: 5.1.1 - use-sync-external-store: 1.6.0(react@19.2.0) - optionalDependencies: - '@types/react': 19.2.6 + css-tree: 3.1.0 - '@bufbuild/buf-darwin-arm64@1.60.0': + '@bufbuild/buf-darwin-arm64@1.65.0': optional: true - '@bufbuild/buf-darwin-x64@1.60.0': + '@bufbuild/buf-darwin-x64@1.65.0': optional: true - '@bufbuild/buf-linux-aarch64@1.60.0': + '@bufbuild/buf-linux-aarch64@1.65.0': optional: true - '@bufbuild/buf-linux-armv7@1.60.0': + '@bufbuild/buf-linux-armv7@1.65.0': optional: true - '@bufbuild/buf-linux-x64@1.60.0': + '@bufbuild/buf-linux-x64@1.65.0': optional: true - '@bufbuild/buf-win32-arm64@1.60.0': + '@bufbuild/buf-win32-arm64@1.65.0': optional: true - '@bufbuild/buf-win32-x64@1.60.0': + '@bufbuild/buf-win32-x64@1.65.0': optional: true - '@bufbuild/buf@1.60.0': + '@bufbuild/buf@1.65.0': optionalDependencies: - '@bufbuild/buf-darwin-arm64': 1.60.0 - '@bufbuild/buf-darwin-x64': 1.60.0 - '@bufbuild/buf-linux-aarch64': 1.60.0 - '@bufbuild/buf-linux-armv7': 1.60.0 - '@bufbuild/buf-linux-x64': 1.60.0 - '@bufbuild/buf-win32-arm64': 1.60.0 - '@bufbuild/buf-win32-x64': 1.60.0 + '@bufbuild/buf-darwin-arm64': 1.65.0 + '@bufbuild/buf-darwin-x64': 1.65.0 + '@bufbuild/buf-linux-aarch64': 1.65.0 + '@bufbuild/buf-linux-armv7': 1.65.0 + '@bufbuild/buf-linux-x64': 1.65.0 + '@bufbuild/buf-win32-arm64': 1.65.0 + '@bufbuild/buf-win32-x64': 1.65.0 - '@bufbuild/protobuf@2.10.1': {} + '@bufbuild/protobuf@2.11.0': {} - '@bufbuild/protoc-gen-es@2.10.1(@bufbuild/protobuf@2.10.1)': + '@bufbuild/protoc-gen-es@2.11.0(@bufbuild/protobuf@2.11.0)': dependencies: - '@bufbuild/protoplugin': 2.10.1 + '@bufbuild/protoplugin': 2.11.0 optionalDependencies: - '@bufbuild/protobuf': 2.10.1 + '@bufbuild/protobuf': 2.11.0 transitivePeerDependencies: - supports-color - '@bufbuild/protoplugin@2.10.1': + '@bufbuild/protoplugin@2.11.0': dependencies: - '@bufbuild/protobuf': 2.10.1 + '@bufbuild/protobuf': 2.11.0 '@typescript/vfs': 1.6.2(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: @@ -4366,81 +4356,82 @@ snapshots: '@chevrotain/utils@11.0.3': {} - '@connectrpc/connect-node@2.1.1(@bufbuild/protobuf@2.10.1)(@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.10.1))': + '@connectrpc/connect-node@2.1.1(@bufbuild/protobuf@2.11.0)(@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.11.0))': dependencies: - '@bufbuild/protobuf': 2.10.1 - '@connectrpc/connect': 2.1.1(@bufbuild/protobuf@2.10.1) + '@bufbuild/protobuf': 2.11.0 + '@connectrpc/connect': 2.1.1(@bufbuild/protobuf@2.11.0) - '@connectrpc/connect-web@2.1.1(@bufbuild/protobuf@2.10.1)(@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.10.1))': + '@connectrpc/connect-web@2.1.1(@bufbuild/protobuf@2.11.0)(@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.11.0))': dependencies: - '@bufbuild/protobuf': 2.10.1 - '@connectrpc/connect': 2.1.1(@bufbuild/protobuf@2.10.1) + '@bufbuild/protobuf': 2.11.0 + '@connectrpc/connect': 2.1.1(@bufbuild/protobuf@2.11.0) - '@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.10.1)': + '@connectrpc/connect@2.1.1(@bufbuild/protobuf@2.11.0)': dependencies: - '@bufbuild/protobuf': 2.10.1 + '@bufbuild/protobuf': 2.11.0 - '@csstools/color-helpers@5.1.0': {} + '@csstools/color-helpers@6.0.1': {} - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@4.0.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/color-helpers': 6.0.1 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.0.16': {} + '@csstools/css-syntax-patches-for-csstree@1.0.27': {} - '@csstools/css-tokenizer@3.0.4': {} + '@csstools/css-tokenizer@4.0.0': {} '@dprint/formatter@0.4.1': {} '@dprint/typescript@0.91.8': {} - '@effect-atom/atom-react@0.4.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5)(react@19.2.0)(scheduler@0.27.0)': + '@effect-atom/atom-react@0.5.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18)(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@effect-atom/atom': 0.4.2(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5) - effect: 3.19.5 - react: 19.2.0 + '@effect-atom/atom': 0.5.1(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18) + effect: 3.19.18 + react: 19.2.4 scheduler: 0.27.0 transitivePeerDependencies: - '@effect/experimental' - '@effect/platform' - '@effect/rpc' - '@effect-atom/atom@0.4.2(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5)': + '@effect-atom/atom@0.5.1(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18)': dependencies: - '@effect/experimental': 0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) - '@effect/platform': 0.93.3(effect@3.19.5) - '@effect/rpc': 0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) - effect: 3.19.5 + '@effect/experimental': 0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) + '@effect/platform': 0.94.5(effect@3.19.18) + '@effect/rpc': 0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) + effect: 3.19.18 - '@effect/cli@0.72.1(@effect/platform@0.93.3(effect@3.19.5))(@effect/printer-ansi@0.47.0(@effect/typeclass@0.36.0(effect@3.19.5))(effect@3.19.5))(@effect/printer@0.47.0(@effect/typeclass@0.36.0(effect@3.19.5))(effect@3.19.5))(effect@3.19.5)': + '@effect/cli@0.73.2(@effect/platform@0.94.5(effect@3.19.18))(@effect/printer-ansi@0.47.0(@effect/typeclass@0.36.0(effect@3.19.18))(effect@3.19.18))(@effect/printer@0.47.0(@effect/typeclass@0.36.0(effect@3.19.18))(effect@3.19.18))(effect@3.19.18)': dependencies: - '@effect/platform': 0.93.3(effect@3.19.5) - '@effect/printer': 0.47.0(@effect/typeclass@0.36.0(effect@3.19.5))(effect@3.19.5) - '@effect/printer-ansi': 0.47.0(@effect/typeclass@0.36.0(effect@3.19.5))(effect@3.19.5) - effect: 3.19.5 + '@effect/platform': 0.94.5(effect@3.19.18) + '@effect/printer': 0.47.0(@effect/typeclass@0.36.0(effect@3.19.18))(effect@3.19.18) + '@effect/printer-ansi': 0.47.0(@effect/typeclass@0.36.0(effect@3.19.18))(effect@3.19.18) + effect: 3.19.18 ini: 4.1.3 toml: 3.0.0 yaml: 2.8.1 - '@effect/cluster@0.53.1(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/workflow@0.10.0(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(effect@3.19.5)': + '@effect/cluster@0.56.4(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/workflow@0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(effect@3.19.18)': dependencies: - '@effect/platform': 0.93.3(effect@3.19.5) - '@effect/rpc': 0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) - '@effect/sql': 0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) - '@effect/workflow': 0.10.0(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5) - effect: 3.19.5 + '@effect/platform': 0.94.5(effect@3.19.18) + '@effect/rpc': 0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) + '@effect/sql': 0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) + '@effect/workflow': 0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18) + effect: 3.19.18 + kubernetes-types: 1.30.0 '@effect/eslint-plugin@0.3.2': dependencies: @@ -4448,36 +4439,36 @@ snapshots: '@dprint/typescript': 0.91.8 prettier-linter-helpers: 1.0.1 - '@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5)': + '@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18)': dependencies: - '@effect/platform': 0.93.3(effect@3.19.5) - effect: 3.19.5 + '@effect/platform': 0.94.5(effect@3.19.18) + effect: 3.19.18 uuid: 11.1.0 - '@effect/language-service@0.56.0': {} + '@effect/language-service@0.74.0': {} - '@effect/platform-node-shared@0.54.0(@effect/cluster@0.53.1(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/workflow@0.10.0(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(bufferutil@4.0.9)(effect@3.19.5)(utf-8-validate@5.0.10)': + '@effect/platform-node-shared@0.57.1(@effect/cluster@0.56.4(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/workflow@0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(bufferutil@4.0.9)(effect@3.19.18)(utf-8-validate@5.0.10)': dependencies: - '@effect/cluster': 0.53.1(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/workflow@0.10.0(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(effect@3.19.5) - '@effect/platform': 0.93.3(effect@3.19.5) - '@effect/rpc': 0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) - '@effect/sql': 0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) + '@effect/cluster': 0.56.4(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/workflow@0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(effect@3.19.18) + '@effect/platform': 0.94.5(effect@3.19.18) + '@effect/rpc': 0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) + '@effect/sql': 0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) '@parcel/watcher': 2.5.1 - effect: 3.19.5 + effect: 3.19.18 multipasta: 0.2.7 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform-node@0.101.0(@effect/cluster@0.53.1(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/workflow@0.10.0(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(bufferutil@4.0.9)(effect@3.19.5)(utf-8-validate@5.0.10)': + '@effect/platform-node@0.104.1(@effect/cluster@0.56.4(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/workflow@0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(bufferutil@4.0.9)(effect@3.19.18)(utf-8-validate@5.0.10)': dependencies: - '@effect/cluster': 0.53.1(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/workflow@0.10.0(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(effect@3.19.5) - '@effect/platform': 0.93.3(effect@3.19.5) - '@effect/platform-node-shared': 0.54.0(@effect/cluster@0.53.1(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/workflow@0.10.0(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(bufferutil@4.0.9)(effect@3.19.5)(utf-8-validate@5.0.10) - '@effect/rpc': 0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) - '@effect/sql': 0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) - effect: 3.19.5 + '@effect/cluster': 0.56.4(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/workflow@0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(effect@3.19.18) + '@effect/platform': 0.94.5(effect@3.19.18) + '@effect/platform-node-shared': 0.57.1(@effect/cluster@0.56.4(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/workflow@0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(bufferutil@4.0.9)(effect@3.19.18)(utf-8-validate@5.0.10) + '@effect/rpc': 0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) + '@effect/sql': 0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) + effect: 3.19.18 mime: 3.0.0 undici: 7.20.0 ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -4485,51 +4476,51 @@ snapshots: - bufferutil - utf-8-validate - '@effect/platform@0.93.3(effect@3.19.5)': + '@effect/platform@0.94.5(effect@3.19.18)': dependencies: - effect: 3.19.5 + effect: 3.19.18 find-my-way-ts: 0.1.6 - msgpackr: 1.11.5 + msgpackr: 1.11.8 multipasta: 0.2.7 - '@effect/printer-ansi@0.47.0(@effect/typeclass@0.36.0(effect@3.19.5))(effect@3.19.5)': + '@effect/printer-ansi@0.47.0(@effect/typeclass@0.36.0(effect@3.19.18))(effect@3.19.18)': dependencies: - '@effect/printer': 0.47.0(@effect/typeclass@0.36.0(effect@3.19.5))(effect@3.19.5) - '@effect/typeclass': 0.36.0(effect@3.19.5) - effect: 3.19.5 + '@effect/printer': 0.47.0(@effect/typeclass@0.36.0(effect@3.19.18))(effect@3.19.18) + '@effect/typeclass': 0.36.0(effect@3.19.18) + effect: 3.19.18 - '@effect/printer@0.47.0(@effect/typeclass@0.36.0(effect@3.19.5))(effect@3.19.5)': + '@effect/printer@0.47.0(@effect/typeclass@0.36.0(effect@3.19.18))(effect@3.19.18)': dependencies: - '@effect/typeclass': 0.36.0(effect@3.19.5) - effect: 3.19.5 + '@effect/typeclass': 0.36.0(effect@3.19.18) + effect: 3.19.18 - '@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5)': + '@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18)': dependencies: - '@effect/platform': 0.93.3(effect@3.19.5) - effect: 3.19.5 + '@effect/platform': 0.94.5(effect@3.19.18) + effect: 3.19.18 msgpackr: 1.11.8 - '@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5)': + '@effect/sql@0.45.0(@effect/experimental@0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18)': dependencies: - '@effect/experimental': 0.57.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) - '@effect/platform': 0.93.3(effect@3.19.5) - effect: 3.19.5 + '@effect/experimental': 0.57.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) + '@effect/platform': 0.94.5(effect@3.19.18) + effect: 3.19.18 uuid: 11.1.0 - '@effect/typeclass@0.36.0(effect@3.19.5)': + '@effect/typeclass@0.36.0(effect@3.19.18)': dependencies: - effect: 3.19.5 + effect: 3.19.18 - '@effect/vitest@0.27.0(effect@3.19.5)(vitest@4.0.12(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1))': + '@effect/vitest@0.27.0(effect@3.19.18)(vitest@4.0.18(@types/node@25.2.3)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - effect: 3.19.5 - vitest: 4.0.12(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + effect: 3.19.18 + vitest: 4.0.18(@types/node@25.2.3)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) - '@effect/workflow@0.10.0(@effect/platform@0.93.3(effect@3.19.5))(@effect/rpc@0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5))(effect@3.19.5)': + '@effect/workflow@0.10.0(@effect/platform@0.94.5(effect@3.19.18))(@effect/rpc@0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18))(effect@3.19.18)': dependencies: - '@effect/platform': 0.93.3(effect@3.19.5) - '@effect/rpc': 0.70.0(@effect/platform@0.93.3(effect@3.19.5))(effect@3.19.5) - effect: 3.19.5 + '@effect/platform': 0.94.5(effect@3.19.18) + '@effect/rpc': 0.70.0(@effect/platform@0.94.5(effect@3.19.18))(effect@3.19.18) + effect: 3.19.18 '@emnapi/core@1.8.1': dependencies: @@ -4547,167 +4538,84 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.12': - optional: true - '@esbuild/aix-ppc64@0.27.2': optional: true - '@esbuild/android-arm64@0.25.12': - optional: true - '@esbuild/android-arm64@0.27.2': optional: true - '@esbuild/android-arm@0.25.12': - optional: true - '@esbuild/android-arm@0.27.2': optional: true - '@esbuild/android-x64@0.25.12': - optional: true - '@esbuild/android-x64@0.27.2': optional: true - '@esbuild/darwin-arm64@0.25.12': - optional: true - '@esbuild/darwin-arm64@0.27.2': optional: true - '@esbuild/darwin-x64@0.25.12': - optional: true - '@esbuild/darwin-x64@0.27.2': optional: true - '@esbuild/freebsd-arm64@0.25.12': - optional: true - '@esbuild/freebsd-arm64@0.27.2': optional: true - '@esbuild/freebsd-x64@0.25.12': - optional: true - '@esbuild/freebsd-x64@0.27.2': optional: true - '@esbuild/linux-arm64@0.25.12': - optional: true - '@esbuild/linux-arm64@0.27.2': optional: true - '@esbuild/linux-arm@0.25.12': - optional: true - '@esbuild/linux-arm@0.27.2': optional: true - '@esbuild/linux-ia32@0.25.12': - optional: true - '@esbuild/linux-ia32@0.27.2': optional: true - '@esbuild/linux-loong64@0.25.12': - optional: true - '@esbuild/linux-loong64@0.27.2': optional: true - '@esbuild/linux-mips64el@0.25.12': - optional: true - '@esbuild/linux-mips64el@0.27.2': optional: true - '@esbuild/linux-ppc64@0.25.12': - optional: true - '@esbuild/linux-ppc64@0.27.2': optional: true - '@esbuild/linux-riscv64@0.25.12': - optional: true - '@esbuild/linux-riscv64@0.27.2': optional: true - '@esbuild/linux-s390x@0.25.12': - optional: true - '@esbuild/linux-s390x@0.27.2': optional: true - '@esbuild/linux-x64@0.25.12': - optional: true - '@esbuild/linux-x64@0.27.2': optional: true - '@esbuild/netbsd-arm64@0.25.12': - optional: true - '@esbuild/netbsd-arm64@0.27.2': optional: true - '@esbuild/netbsd-x64@0.25.12': - optional: true - '@esbuild/netbsd-x64@0.27.2': optional: true - '@esbuild/openbsd-arm64@0.25.12': - optional: true - '@esbuild/openbsd-arm64@0.27.2': optional: true - '@esbuild/openbsd-x64@0.25.12': - optional: true - '@esbuild/openbsd-x64@0.27.2': optional: true - '@esbuild/openharmony-arm64@0.25.12': - optional: true - '@esbuild/openharmony-arm64@0.27.2': optional: true - '@esbuild/sunos-x64@0.25.12': - optional: true - '@esbuild/sunos-x64@0.27.2': optional: true - '@esbuild/win32-arm64@0.25.12': - optional: true - '@esbuild/win32-arm64@0.27.2': optional: true - '@esbuild/win32-ia32@0.25.12': - optional: true - '@esbuild/win32-ia32@0.27.2': optional: true - '@esbuild/win32-x64@0.25.12': - optional: true - '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': - dependencies: - eslint: 9.39.2(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: eslint: 9.39.2(jiti@2.6.1) @@ -4745,6 +4653,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/js@10.0.1(eslint@9.39.2(jiti@2.6.1))': + optionalDependencies: + eslint: 9.39.2(jiti@2.6.1) + '@eslint/js@9.39.2': {} '@eslint/object-schema@2.1.7': {} @@ -4754,6 +4666,10 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@exodus/bytes@1.14.1(@noble/hashes@1.8.0)': + optionalDependencies: + '@noble/hashes': 1.8.0 + '@floating-ui/core@1.7.3': dependencies: '@floating-ui/utils': 0.2.10 @@ -4763,11 +4679,11 @@ snapshots: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@floating-ui/react-dom@2.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@floating-ui/dom': 1.7.4 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@floating-ui/utils@0.2.10': {} @@ -4797,41 +4713,43 @@ snapshots: dependencies: tslib: 2.8.1 - '@graphprotocol/gds-css@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-css@b9ac299b071ebaca3736e2886420c8d08c757725(bufferutil@4.0.9)(tailwindcss@4.1.17)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@graphprotocol/gds-css@0.2.3(bufferutil@4.0.9)(tailwindcss@4.1.18)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@graphprotocol/gds-utils': https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-utils@b9ac299b071ebaca3736e2886420c8d08c757725(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@graphprotocol/tailwindcss-animate': https://pkg.pr.new/graphprotocol/gds/@graphprotocol/tailwindcss-animate@b9ac299b071ebaca3736e2886420c8d08c757725(tailwindcss@4.1.17) + '@graphprotocol/gds-utils': 0.2.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@graphprotocol/tailwindcss-animate': 0.1.1(tailwindcss@4.1.18) cssesc: 3.0.0 - tailwindcss: 4.1.17 - ts-extras: 0.16.0 + tailwindcss: 4.1.18 + ts-extras: 0.17.0 transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@graphprotocol/gds-icons@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-icons@b9ac299b071ebaca3736e2886420c8d08c757725': {} + '@graphprotocol/gds-icons@0.1.1': {} - '@graphprotocol/gds-react@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-react@b9ac299(@types/react@19.2.6)(bufferutil@4.0.9)(react-dom@19.2.0(react@19.2.0))(react-is@17.0.2)(react@19.2.0)(tailwindcss@4.1.17)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@graphprotocol/gds-react@0.2.5(@types/react@19.2.14)(bufferutil@4.0.9)(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(tailwindcss@4.1.18)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@base-ui-components/react': 1.0.0-beta.4(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@base-ui-components/utils': 0.1.2(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@graphprotocol/gds-css': https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-css@b9ac299b071ebaca3736e2886420c8d08c757725(bufferutil@4.0.9)(tailwindcss@4.1.17)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@graphprotocol/gds-icons': https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-icons@b9ac299b071ebaca3736e2886420c8d08c757725 - '@graphprotocol/gds-utils': https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-utils@b9ac299b071ebaca3736e2886420c8d08c757725(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-hookz/web': 25.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@base-ui/react': 1.2.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@base-ui/utils': 0.2.5(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@graphprotocol/gds-css': 0.2.3(bufferutil@4.0.9)(tailwindcss@4.1.18)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@graphprotocol/gds-icons': 0.1.1 + '@graphprotocol/gds-utils': 0.2.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-hookz/web': 25.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@ver0/deep-equal': 1.0.1 - motion: 12.23.24(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-aria: 3.44.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-dom: 19.2.0(react@19.2.0) + escape-string-regexp: 5.0.0 + motion: 12.34.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-aria: 3.46.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-dom: 19.2.4(react@19.2.4) react-is: 17.0.2 - react-keyed-flatten-children: 5.0.1(react-is@17.0.2)(react@19.2.0) + react-keyed-flatten-children: 5.1.1(react-is@17.0.2)(react@19.2.4) + shiki: 3.22.0 style-observer: 0.1.2 - tailwindcss: 4.1.17 - ts-extras: 0.16.0 - type-fest: 5.2.0 + tailwindcss: 4.1.18 + ts-extras: 0.17.0 + type-fest: 5.4.4 transitivePeerDependencies: - '@emotion/is-prop-valid' - '@types/react' @@ -4841,19 +4759,19 @@ snapshots: - utf-8-validate - zod - '@graphprotocol/gds-utils@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-utils@b9ac299b071ebaca3736e2886420c8d08c757725(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@graphprotocol/gds-utils@0.2.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: md5: 2.3.0 - viem: 2.45.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + viem: 2.46.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@graphprotocol/tailwindcss-animate@https://pkg.pr.new/graphprotocol/gds/@graphprotocol/tailwindcss-animate@b9ac299b071ebaca3736e2886420c8d08c757725(tailwindcss@4.1.17)': + '@graphprotocol/tailwindcss-animate@0.1.1(tailwindcss@4.1.18)': dependencies: - tailwindcss: 4.1.17 + tailwindcss: 4.1.18 '@humanfs/core@0.19.1': {} @@ -4866,7 +4784,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@internationalized/date@3.10.0': + '@internationalized/date@3.11.0': dependencies: '@swc/helpers': 0.5.17 @@ -4889,6 +4807,8 @@ snapshots: dependencies: '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@9.0.0': {} + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -4912,12 +4832,12 @@ snapshots: dependencies: state-local: 1.0.7 - '@monaco-editor/react@4.8.0-rc.2(monaco-editor@0.55.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@monaco-editor/react@4.8.0-rc.2(monaco-editor@0.55.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@monaco-editor/loader': 1.6.1 - monaco-editor: 0.55.0 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + monaco-editor: 0.55.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': optional: true @@ -5012,1109 +4932,1044 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.1 '@parcel/watcher-win32-x64': 2.5.1 - '@react-aria/breadcrumbs@3.5.29(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/breadcrumbs@3.5.31(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/link': 3.8.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/breadcrumbs': 3.7.17(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/link': 3.8.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/breadcrumbs': 3.7.18(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/button@3.14.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/button@3.14.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/toolbar': 3.0.0-beta.21(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/toggle': 3.9.2(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/toolbar': 3.0.0-beta.23(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/toggle': 3.9.4(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/calendar@3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/calendar@3.9.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@internationalized/date': 3.10.0 - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@internationalized/date': 3.11.0 + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@react-aria/live-announcer': 3.4.4 - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/calendar': 3.9.0(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/calendar': 3.8.0(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/calendar': 3.9.2(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/calendar': 3.8.2(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/checkbox@3.16.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/form': 3.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/toggle': 3.12.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/checkbox': 3.7.2(react@19.2.0) - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/toggle': 3.9.2(react@19.2.0) - '@react-types/checkbox': 3.10.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/checkbox@3.16.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/form': 3.1.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/toggle': 3.12.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/checkbox': 3.7.4(react@19.2.4) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/toggle': 3.9.4(react@19.2.4) + '@react-types/checkbox': 3.10.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/color@3.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/numberfield': 3.12.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/slider': 3.8.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/spinbutton': 3.6.19(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/textfield': 3.18.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/color': 3.9.2(react@19.2.0) - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-types/color': 3.1.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/color@3.1.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/numberfield': 3.12.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/slider': 3.8.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/spinbutton': 3.7.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/textfield': 3.18.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/visually-hidden': 3.8.30(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/color': 3.9.4(react@19.2.4) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-types/color': 3.1.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/combobox@3.14.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/combobox@3.14.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/listbox': 3.15.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/listbox': 3.15.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@react-aria/live-announcer': 3.4.4 - '@react-aria/menu': 3.19.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/overlays': 3.30.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/textfield': 3.18.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/combobox': 3.12.0(react@19.2.0) - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/combobox': 3.13.9(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/menu': 3.20.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/overlays': 3.31.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/textfield': 3.18.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/combobox': 3.12.2(react@19.2.4) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/combobox': 3.13.11(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/datepicker@3.15.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/datepicker@3.16.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@internationalized/date': 3.10.0 + '@internationalized/date': 3.11.0 '@internationalized/number': 3.6.5 '@internationalized/string': 3.2.7 - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/form': 3.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/spinbutton': 3.6.19(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/datepicker': 3.15.2(react@19.2.0) - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/calendar': 3.8.0(react@19.2.0) - '@react-types/datepicker': 3.13.2(react@19.2.0) - '@react-types/dialog': 3.5.22(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/form': 3.1.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/spinbutton': 3.7.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/datepicker': 3.16.0(react@19.2.4) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/calendar': 3.8.2(react@19.2.4) + '@react-types/datepicker': 3.13.4(react@19.2.4) + '@react-types/dialog': 3.5.23(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/dialog@3.5.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/dialog@3.5.33(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/overlays': 3.30.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/dialog': 3.5.22(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/overlays': 3.31.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/dialog': 3.5.23(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/disclosure@3.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/disclosure@3.1.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/disclosure': 3.0.8(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) + '@react-aria/ssr': 3.9.10(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/disclosure': 3.0.10(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/dnd@3.11.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/dnd@3.11.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@internationalized/string': 3.2.7 - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@react-aria/live-announcer': 3.4.4 - '@react-aria/overlays': 3.30.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/dnd': 3.7.1(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/overlays': 3.31.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/dnd': 3.7.3(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/focus@3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/focus@3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/form@3.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/form@3.1.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/grid@3.14.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/grid@3.14.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@react-aria/live-announcer': 3.4.4 - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/grid': 3.11.6(react@19.2.0) - '@react-stately/selection': 3.20.6(react@19.2.0) - '@react-types/checkbox': 3.10.2(react@19.2.0) - '@react-types/grid': 3.3.6(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/grid': 3.11.8(react@19.2.4) + '@react-stately/selection': 3.20.8(react@19.2.4) + '@react-types/checkbox': 3.10.3(react@19.2.4) + '@react-types/grid': 3.3.7(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/gridlist@3.14.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/grid': 3.14.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/list': 3.13.1(react@19.2.0) - '@react-stately/tree': 3.9.3(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/gridlist@3.14.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/grid': 3.14.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/list': 3.13.3(react@19.2.4) + '@react-stately/tree': 3.9.5(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/i18n@3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/i18n@3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@internationalized/date': 3.10.0 + '@internationalized/date': 3.11.0 '@internationalized/message': 3.1.8 '@internationalized/number': 3.6.5 '@internationalized/string': 3.2.7 - '@react-aria/ssr': 3.9.10(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/ssr': 3.9.10(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/interactions@3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/interactions@3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@react-aria/ssr': 3.9.10(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@react-stately/flags': 3.1.2 - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/label@3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/label@3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/landmark@3.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/landmark@3.0.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - use-sync-external-store: 1.6.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.4) - '@react-aria/link@3.8.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/link@3.8.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/link': 3.6.5(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/link': 3.6.6(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/listbox@3.15.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/list': 3.13.1(react@19.2.0) - '@react-types/listbox': 3.7.4(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/listbox@3.15.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/list': 3.13.3(react@19.2.4) + '@react-types/listbox': 3.7.5(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@react-aria/live-announcer@3.4.4': dependencies: '@swc/helpers': 0.5.17 - '@react-aria/menu@3.19.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/overlays': 3.30.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/menu': 3.9.8(react@19.2.0) - '@react-stately/selection': 3.20.6(react@19.2.0) - '@react-stately/tree': 3.9.3(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/menu': 3.10.5(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/menu@3.20.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/overlays': 3.31.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/menu': 3.9.10(react@19.2.4) + '@react-stately/selection': 3.20.8(react@19.2.4) + '@react-stately/tree': 3.9.5(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/menu': 3.10.6(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/meter@3.4.27(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/meter@3.4.29(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/progress': 3.4.27(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/meter': 3.4.13(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/progress': 3.4.29(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/meter': 3.4.14(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/numberfield@3.12.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/spinbutton': 3.6.19(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/textfield': 3.18.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/numberfield': 3.10.2(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/numberfield': 3.8.15(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/numberfield@3.12.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/spinbutton': 3.7.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/textfield': 3.18.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/numberfield': 3.10.4(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/numberfield': 3.8.17(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/overlays@3.30.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/ssr': 3.9.10(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/overlays': 3.6.20(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/overlays': 3.9.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/overlays@3.31.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/ssr': 3.9.10(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/visually-hidden': 3.8.30(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/overlays': 3.6.22(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/overlays': 3.9.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/progress@3.4.27(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/progress@3.4.29(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/progress': 3.5.16(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/progress': 3.5.17(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/radio@3.12.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/form': 3.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/radio': 3.11.2(react@19.2.0) - '@react-types/radio': 3.9.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/radio@3.12.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/form': 3.1.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/radio': 3.11.4(react@19.2.4) + '@react-types/radio': 3.9.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/searchfield@3.8.9(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/textfield': 3.18.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/searchfield': 3.5.16(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/searchfield': 3.6.6(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/searchfield@3.8.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/textfield': 3.18.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/searchfield': 3.5.18(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/searchfield': 3.6.7(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/select@3.17.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/form': 3.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/listbox': 3.15.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/menu': 3.19.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/select': 3.8.0(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/select': 3.11.0(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/select@3.17.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/form': 3.1.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/listbox': 3.15.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/menu': 3.20.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/visually-hidden': 3.8.30(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/select': 3.9.1(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/select': 3.12.1(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/selection@3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/selection@3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/selection': 3.20.6(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/selection': 3.20.8(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/separator@3.4.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/separator@3.4.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/slider@3.8.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/slider': 3.7.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/slider': 3.8.2(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/slider@3.8.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/slider': 3.7.4(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/slider': 3.8.3(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/spinbutton@3.6.19(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/spinbutton@3.7.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@react-aria/live-announcer': 3.4.4 - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/ssr@3.9.10(react@19.2.0)': + '@react-aria/ssr@3.9.10(react@19.2.4)': dependencies: '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-aria/switch@3.7.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/switch@3.7.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/toggle': 3.12.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/toggle': 3.9.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/switch': 3.5.15(react@19.2.0) + '@react-aria/toggle': 3.12.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/toggle': 3.9.4(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/switch': 3.5.16(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/table@3.17.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/table@3.17.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/grid': 3.14.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/grid': 3.14.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@react-aria/live-announcer': 3.4.4 - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/collections': 3.12.8(react@19.2.0) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/visually-hidden': 3.8.30(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/collections': 3.12.9(react@19.2.4) '@react-stately/flags': 3.1.2 - '@react-stately/table': 3.15.1(react@19.2.0) - '@react-types/checkbox': 3.10.2(react@19.2.0) - '@react-types/grid': 3.3.6(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/table': 3.13.4(react@19.2.0) + '@react-stately/table': 3.15.3(react@19.2.4) + '@react-types/checkbox': 3.10.3(react@19.2.4) + '@react-types/grid': 3.3.7(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/table': 3.13.5(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/tabs@3.10.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/tabs': 3.8.6(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/tabs': 3.3.19(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/tabs@3.11.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/tabs': 3.8.8(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/tabs': 3.3.21(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/tag@3.7.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/gridlist': 3.14.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/list': 3.13.1(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/tag@3.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/gridlist': 3.14.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/list': 3.13.3(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/textfield@3.18.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/form': 3.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/textfield': 3.12.6(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/textfield@3.18.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/form': 3.1.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/textfield': 3.12.7(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/toast@3.0.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/landmark': 3.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/toast': 3.1.2(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/toast@3.0.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/landmark': 3.0.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/toast': 3.1.3(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/toggle@3.12.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/toggle@3.12.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/toggle': 3.9.2(react@19.2.0) - '@react-types/checkbox': 3.10.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/toggle': 3.9.4(react@19.2.4) + '@react-types/checkbox': 3.10.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/toolbar@3.0.0-beta.21(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/toolbar@3.0.0-beta.23(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/tooltip@3.8.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/tooltip@3.9.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/tooltip': 3.5.8(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/tooltip': 3.4.21(react@19.2.0) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/tooltip': 3.5.10(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/tooltip': 3.5.1(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - '@react-aria/tree@3.1.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': - dependencies: - '@react-aria/gridlist': 3.14.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-stately/tree': 3.9.3(react@19.2.0) - '@react-types/button': 3.14.1(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@react-aria/tree@3.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@react-aria/gridlist': 3.14.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-stately/tree': 3.9.5(react@19.2.4) + '@react-types/button': 3.15.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/utils@3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/utils@3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.0) + '@react-aria/ssr': 3.9.10(react@19.2.4) '@react-stately/flags': 3.1.2 - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/visually-hidden@3.8.28(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-aria/visually-hidden@3.8.30(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-hookz/web@25.2.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@react-hookz/web@25.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@ver0/deep-equal': 1.0.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-stately/calendar@3.9.0(react@19.2.0)': + '@react-stately/calendar@3.9.2(react@19.2.4)': dependencies: - '@internationalized/date': 3.10.0 - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/calendar': 3.8.0(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@internationalized/date': 3.11.0 + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/calendar': 3.8.2(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/checkbox@3.7.2(react@19.2.0)': + '@react-stately/checkbox@3.7.4(react@19.2.4)': dependencies: - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/checkbox': 3.10.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/checkbox': 3.10.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/collections@3.12.8(react@19.2.0)': + '@react-stately/collections@3.12.9(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/color@3.9.2(react@19.2.0)': + '@react-stately/color@3.9.4(react@19.2.4)': dependencies: '@internationalized/number': 3.6.5 '@internationalized/string': 3.2.7 - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/numberfield': 3.10.2(react@19.2.0) - '@react-stately/slider': 3.7.2(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/color': 3.1.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/numberfield': 3.10.4(react@19.2.4) + '@react-stately/slider': 3.7.4(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/color': 3.1.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/combobox@3.12.0(react@19.2.0)': + '@react-stately/combobox@3.12.2(react@19.2.4)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/list': 3.13.1(react@19.2.0) - '@react-stately/overlays': 3.6.20(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/combobox': 3.13.9(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/list': 3.13.3(react@19.2.4) + '@react-stately/overlays': 3.6.22(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/combobox': 3.13.11(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/datepicker@3.15.2(react@19.2.0)': + '@react-stately/datepicker@3.16.0(react@19.2.4)': dependencies: - '@internationalized/date': 3.10.0 + '@internationalized/date': 3.11.0 + '@internationalized/number': 3.6.5 '@internationalized/string': 3.2.7 - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/overlays': 3.6.20(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/datepicker': 3.13.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/overlays': 3.6.22(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/datepicker': 3.13.4(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/disclosure@3.0.8(react@19.2.0)': + '@react-stately/disclosure@3.0.10(react@19.2.4)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/dnd@3.7.1(react@19.2.0)': + '@react-stately/dnd@3.7.3(react@19.2.4)': dependencies: - '@react-stately/selection': 3.20.6(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/selection': 3.20.8(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 '@react-stately/flags@3.1.2': dependencies: '@swc/helpers': 0.5.17 - '@react-stately/form@3.2.2(react@19.2.0)': + '@react-stately/form@3.2.3(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/grid@3.11.6(react@19.2.0)': + '@react-stately/grid@3.11.8(react@19.2.4)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/selection': 3.20.6(react@19.2.0) - '@react-types/grid': 3.3.6(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/selection': 3.20.8(react@19.2.4) + '@react-types/grid': 3.3.7(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/list@3.13.1(react@19.2.0)': + '@react-stately/list@3.13.3(react@19.2.4)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/selection': 3.20.6(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/selection': 3.20.8(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/menu@3.9.8(react@19.2.0)': + '@react-stately/menu@3.9.10(react@19.2.4)': dependencies: - '@react-stately/overlays': 3.6.20(react@19.2.0) - '@react-types/menu': 3.10.5(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/overlays': 3.6.22(react@19.2.4) + '@react-types/menu': 3.10.6(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/numberfield@3.10.2(react@19.2.0)': + '@react-stately/numberfield@3.10.4(react@19.2.4)': dependencies: '@internationalized/number': 3.6.5 - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/numberfield': 3.8.15(react@19.2.0) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/numberfield': 3.8.17(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/overlays@3.6.20(react@19.2.0)': + '@react-stately/overlays@3.6.22(react@19.2.4)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/overlays': 3.9.2(react@19.2.0) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/overlays': 3.9.3(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/radio@3.11.2(react@19.2.0)': + '@react-stately/radio@3.11.4(react@19.2.4)': dependencies: - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/radio': 3.9.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/radio': 3.9.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/searchfield@3.5.16(react@19.2.0)': + '@react-stately/searchfield@3.5.18(react@19.2.4)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/searchfield': 3.6.6(react@19.2.0) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/searchfield': 3.6.7(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/select@3.8.0(react@19.2.0)': + '@react-stately/select@3.9.1(react@19.2.4)': dependencies: - '@react-stately/form': 3.2.2(react@19.2.0) - '@react-stately/list': 3.13.1(react@19.2.0) - '@react-stately/overlays': 3.6.20(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/select': 3.11.0(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/form': 3.2.3(react@19.2.4) + '@react-stately/list': 3.13.3(react@19.2.4) + '@react-stately/overlays': 3.6.22(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/select': 3.12.1(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/selection@3.20.6(react@19.2.0)': + '@react-stately/selection@3.20.8(react@19.2.4)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/slider@3.7.2(react@19.2.0)': + '@react-stately/slider@3.7.4(react@19.2.4)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/slider': 3.8.2(react@19.2.0) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/slider': 3.8.3(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/table@3.15.1(react@19.2.0)': + '@react-stately/table@3.15.3(react@19.2.4)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.0) + '@react-stately/collections': 3.12.9(react@19.2.4) '@react-stately/flags': 3.1.2 - '@react-stately/grid': 3.11.6(react@19.2.0) - '@react-stately/selection': 3.20.6(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/grid': 3.3.6(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/table': 3.13.4(react@19.2.0) + '@react-stately/grid': 3.11.8(react@19.2.4) + '@react-stately/selection': 3.20.8(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/grid': 3.3.7(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/table': 3.13.5(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/tabs@3.8.6(react@19.2.0)': + '@react-stately/tabs@3.8.8(react@19.2.4)': dependencies: - '@react-stately/list': 3.13.1(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/tabs': 3.3.19(react@19.2.0) + '@react-stately/list': 3.13.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/tabs': 3.3.21(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/toast@3.1.2(react@19.2.0)': + '@react-stately/toast@3.1.3(react@19.2.4)': dependencies: '@swc/helpers': 0.5.17 - react: 19.2.0 - use-sync-external-store: 1.6.0(react@19.2.0) + react: 19.2.4 + use-sync-external-store: 1.6.0(react@19.2.4) - '@react-stately/toggle@3.9.2(react@19.2.0)': + '@react-stately/toggle@3.9.4(react@19.2.4)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/checkbox': 3.10.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/checkbox': 3.10.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/tooltip@3.5.8(react@19.2.0)': + '@react-stately/tooltip@3.5.10(react@19.2.4)': dependencies: - '@react-stately/overlays': 3.6.20(react@19.2.0) - '@react-types/tooltip': 3.4.21(react@19.2.0) + '@react-stately/overlays': 3.6.22(react@19.2.4) + '@react-types/tooltip': 3.5.1(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/tree@3.9.3(react@19.2.0)': + '@react-stately/tree@3.9.5(react@19.2.4)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.0) - '@react-stately/selection': 3.20.6(react@19.2.0) - '@react-stately/utils': 3.10.8(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) + '@react-stately/collections': 3.12.9(react@19.2.4) + '@react-stately/selection': 3.20.8(react@19.2.4) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-stately/utils@3.10.8(react@19.2.0)': + '@react-stately/utils@3.11.0(react@19.2.4)': dependencies: '@swc/helpers': 0.5.17 - react: 19.2.0 + react: 19.2.4 - '@react-types/breadcrumbs@3.7.17(react@19.2.0)': + '@react-types/breadcrumbs@3.7.18(react@19.2.4)': dependencies: - '@react-types/link': 3.6.5(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/link': 3.6.6(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/button@3.14.1(react@19.2.0)': + '@react-types/button@3.15.0(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/calendar@3.8.0(react@19.2.0)': + '@react-types/calendar@3.8.2(react@19.2.4)': dependencies: - '@internationalized/date': 3.10.0 - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@internationalized/date': 3.11.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/checkbox@3.10.2(react@19.2.0)': + '@react-types/checkbox@3.10.3(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/color@3.1.2(react@19.2.0)': + '@react-types/color@3.1.3(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/slider': 3.8.2(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/slider': 3.8.3(react@19.2.4) + react: 19.2.4 - '@react-types/combobox@3.13.9(react@19.2.0)': + '@react-types/combobox@3.13.11(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/datepicker@3.13.2(react@19.2.0)': + '@react-types/datepicker@3.13.4(react@19.2.4)': dependencies: - '@internationalized/date': 3.10.0 - '@react-types/calendar': 3.8.0(react@19.2.0) - '@react-types/overlays': 3.9.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@internationalized/date': 3.11.0 + '@react-types/calendar': 3.8.2(react@19.2.4) + '@react-types/overlays': 3.9.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/dialog@3.5.22(react@19.2.0)': + '@react-types/dialog@3.5.23(react@19.2.4)': dependencies: - '@react-types/overlays': 3.9.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/overlays': 3.9.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/grid@3.3.6(react@19.2.0)': + '@react-types/grid@3.3.7(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/link@3.6.5(react@19.2.0)': + '@react-types/link@3.6.6(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/listbox@3.7.4(react@19.2.0)': + '@react-types/listbox@3.7.5(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/menu@3.10.5(react@19.2.0)': + '@react-types/menu@3.10.6(react@19.2.4)': dependencies: - '@react-types/overlays': 3.9.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/overlays': 3.9.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/meter@3.4.13(react@19.2.0)': + '@react-types/meter@3.4.14(react@19.2.4)': dependencies: - '@react-types/progress': 3.5.16(react@19.2.0) - react: 19.2.0 + '@react-types/progress': 3.5.17(react@19.2.4) + react: 19.2.4 - '@react-types/numberfield@3.8.15(react@19.2.0)': + '@react-types/numberfield@3.8.17(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/overlays@3.9.2(react@19.2.0)': + '@react-types/overlays@3.9.3(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/progress@3.5.16(react@19.2.0)': + '@react-types/progress@3.5.17(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/radio@3.9.2(react@19.2.0)': + '@react-types/radio@3.9.3(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/searchfield@3.6.6(react@19.2.0)': + '@react-types/searchfield@3.6.7(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - '@react-types/textfield': 3.12.6(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + '@react-types/textfield': 3.12.7(react@19.2.4) + react: 19.2.4 - '@react-types/select@3.11.0(react@19.2.0)': + '@react-types/select@3.12.1(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/shared@3.32.1(react@19.2.0)': + '@react-types/shared@3.33.0(react@19.2.4)': dependencies: - react: 19.2.0 + react: 19.2.4 - '@react-types/slider@3.8.2(react@19.2.0)': + '@react-types/slider@3.8.3(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/switch@3.5.15(react@19.2.0)': + '@react-types/switch@3.5.16(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/table@3.13.4(react@19.2.0)': + '@react-types/table@3.13.5(react@19.2.4)': dependencies: - '@react-types/grid': 3.3.6(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/grid': 3.3.7(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/tabs@3.3.19(react@19.2.0)': + '@react-types/tabs@3.3.21(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/textfield@3.12.6(react@19.2.0)': + '@react-types/textfield@3.12.7(react@19.2.4)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@react-types/tooltip@3.4.21(react@19.2.0)': + '@react-types/tooltip@3.5.1(react@19.2.4)': dependencies: - '@react-types/overlays': 3.9.2(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 + '@react-types/overlays': 3.9.3(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 - '@rolldown/pluginutils@1.0.0-beta.47': {} - - '@rollup/rollup-android-arm-eabi@4.53.3': - optional: true + '@rolldown/pluginutils@1.0.0-rc.3': {} '@rollup/rollup-android-arm-eabi@4.57.1': optional: true - '@rollup/rollup-android-arm64@4.53.3': - optional: true - '@rollup/rollup-android-arm64@4.57.1': optional: true - '@rollup/rollup-darwin-arm64@4.53.3': - optional: true - '@rollup/rollup-darwin-arm64@4.57.1': optional: true - '@rollup/rollup-darwin-x64@4.53.3': - optional: true - '@rollup/rollup-darwin-x64@4.57.1': optional: true - '@rollup/rollup-freebsd-arm64@4.53.3': - optional: true - '@rollup/rollup-freebsd-arm64@4.57.1': optional: true - '@rollup/rollup-freebsd-x64@4.53.3': - optional: true - '@rollup/rollup-freebsd-x64@4.57.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': - optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.57.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.3': - optional: true - '@rollup/rollup-linux-arm-musleabihf@4.57.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.3': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.3': - optional: true - '@rollup/rollup-linux-arm64-musl@4.57.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.3': - optional: true - '@rollup/rollup-linux-loong64-gnu@4.57.1': optional: true '@rollup/rollup-linux-loong64-musl@4.57.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.3': - optional: true - '@rollup/rollup-linux-ppc64-gnu@4.57.1': optional: true '@rollup/rollup-linux-ppc64-musl@4.57.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.3': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.57.1': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.53.3': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.57.1': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.53.3': + '@rollup/rollup-linux-riscv64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.57.1': + '@rollup/rollup-linux-riscv64-musl@4.57.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.3': + '@rollup/rollup-linux-s390x-gnu@4.57.1': optional: true '@rollup/rollup-linux-x64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-x64-musl@4.53.3': - optional: true - '@rollup/rollup-linux-x64-musl@4.57.1': optional: true '@rollup/rollup-openbsd-x64@4.57.1': optional: true - '@rollup/rollup-openharmony-arm64@4.53.3': - optional: true - '@rollup/rollup-openharmony-arm64@4.57.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.3': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.57.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.3': - optional: true - '@rollup/rollup-win32-ia32-msvc@4.57.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.3': - optional: true - '@rollup/rollup-win32-x64-gnu@4.57.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.3': - optional: true - '@rollup/rollup-win32-x64-msvc@4.57.1': optional: true @@ -6131,14 +5986,45 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 - '@standard-schema/spec@1.0.0': {} + '@shikijs/core@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + + '@shikijs/engine-oniguruma@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + + '@shikijs/themes@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + + '@shikijs/types@3.22.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} '@standard-schema/spec@1.1.0': {} - '@stylistic/eslint-plugin@5.6.1(eslint@9.39.2(jiti@2.6.1))': + '@stylistic/eslint-plugin@5.8.0(eslint@9.39.2(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/types': 8.47.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/types': 8.54.0 eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -6149,7 +6035,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@tailwindcss/node@4.1.17': + '@tailwindcss/node@4.1.18': dependencies: '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.18.3 @@ -6157,89 +6043,89 @@ snapshots: lightningcss: 1.30.2 magic-string: 0.30.21 source-map-js: 1.2.1 - tailwindcss: 4.1.17 + tailwindcss: 4.1.18 - '@tailwindcss/oxide-android-arm64@4.1.17': + '@tailwindcss/oxide-android-arm64@4.1.18': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.17': + '@tailwindcss/oxide-darwin-arm64@4.1.18': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.17': + '@tailwindcss/oxide-darwin-x64@4.1.18': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.17': + '@tailwindcss/oxide-freebsd-x64@4.1.18': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.17': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.17': + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.17': + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.17': + '@tailwindcss/oxide-linux-x64-musl@4.1.18': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.17': + '@tailwindcss/oxide-wasm32-wasi@4.1.18': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.17': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.17': + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': optional: true - '@tailwindcss/oxide@4.1.17': + '@tailwindcss/oxide@4.1.18': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.17 - '@tailwindcss/oxide-darwin-arm64': 4.1.17 - '@tailwindcss/oxide-darwin-x64': 4.1.17 - '@tailwindcss/oxide-freebsd-x64': 4.1.17 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.17 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.17 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.17 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.17 - '@tailwindcss/oxide-linux-x64-musl': 4.1.17 - '@tailwindcss/oxide-wasm32-wasi': 4.1.17 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.17 - - '@tailwindcss/vite@4.1.17(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1))': - dependencies: - '@tailwindcss/node': 4.1.17 - '@tailwindcss/oxide': 4.1.17 - tailwindcss: 4.1.17 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) - - '@tanstack/devtools-event-client@0.3.5': {} - - '@tanstack/eslint-config@0.3.2(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint/js': 9.39.2 - '@stylistic/eslint-plugin': 5.6.1(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-n: 17.23.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - globals: 16.5.0 - typescript-eslint: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - vue-eslint-parser: 10.2.0(eslint@9.39.2(jiti@2.6.1)) + '@tailwindcss/oxide-android-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-x64': 4.1.18 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 + '@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@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1))': + dependencies: + '@tailwindcss/node': 4.1.18 + '@tailwindcss/oxide': 4.1.18 + tailwindcss: 4.1.18 + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) + + '@tanstack/devtools-event-client@0.4.0': {} + + '@tanstack/eslint-config@0.4.0(@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint/js': 10.0.1(eslint@9.39.2(jiti@2.6.1)) + '@stylistic/eslint-plugin': 5.8.0(eslint@9.39.2(jiti@2.6.1)) + eslint: 9.39.2(jiti@2.6.1) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-n: 17.24.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + globals: 17.3.0 + typescript-eslint: 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - '@typescript-eslint/utils' - - eslint - eslint-import-resolver-node - supports-color - typescript - '@tanstack/form-core@1.25.0': + '@tanstack/form-core@1.28.3': dependencies: - '@tanstack/devtools-event-client': 0.3.5 - '@tanstack/pacer': 0.15.4 - '@tanstack/store': 0.7.7 + '@tanstack/devtools-event-client': 0.4.0 + '@tanstack/pacer-lite': 0.1.1 + '@tanstack/store': 0.8.1 '@tanstack/history@1.154.14': {} @@ -6247,71 +6133,68 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/pacer@0.15.4': - dependencies: - '@tanstack/devtools-event-client': 0.3.5 - '@tanstack/store': 0.7.7 + '@tanstack/pacer-lite@0.1.1': {} - '@tanstack/query-core@5.90.10': {} + '@tanstack/query-core@5.90.20': {} - '@tanstack/query-devtools@5.90.1': {} + '@tanstack/query-devtools@5.93.0': {} - '@tanstack/react-form@1.25.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@tanstack/react-form@1.28.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/form-core': 1.25.0 - '@tanstack/react-store': 0.7.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 + '@tanstack/form-core': 1.28.3 + '@tanstack/react-store': 0.8.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 transitivePeerDependencies: - react-dom - '@tanstack/react-query-devtools@5.90.2(@tanstack/react-query@5.90.10(react@19.2.0))(react@19.2.0)': + '@tanstack/react-query-devtools@5.91.3(@tanstack/react-query@5.90.21(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/query-devtools': 5.90.1 - '@tanstack/react-query': 5.90.10(react@19.2.0) - react: 19.2.0 + '@tanstack/query-devtools': 5.93.0 + '@tanstack/react-query': 5.90.21(react@19.2.4) + react: 19.2.4 - '@tanstack/react-query@5.90.10(react@19.2.0)': + '@tanstack/react-query@5.90.21(react@19.2.4)': dependencies: - '@tanstack/query-core': 5.90.10 - react: 19.2.0 + '@tanstack/query-core': 5.90.20 + react: 19.2.4 - '@tanstack/react-router-devtools@1.158.0(@tanstack/react-router@1.158.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@tanstack/router-core@1.158.0)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@tanstack/react-router-devtools@1.160.2(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.160.0)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/react-router': 1.158.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@tanstack/router-devtools-core': 1.158.0(@tanstack/router-core@1.158.0)(csstype@3.2.3) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@tanstack/react-router': 1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/router-devtools-core': 1.160.0(@tanstack/router-core@1.160.0)(csstype@3.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: - '@tanstack/router-core': 1.158.0 + '@tanstack/router-core': 1.160.0 transitivePeerDependencies: - csstype - '@tanstack/react-router@1.158.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/history': 1.154.14 - '@tanstack/react-store': 0.8.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@tanstack/router-core': 1.158.0 + '@tanstack/react-store': 0.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/router-core': 1.160.0 isbot: 5.1.32 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-store@0.7.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@tanstack/react-store@0.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/store': 0.7.7 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - use-sync-external-store: 1.6.0(react@19.2.0) + '@tanstack/store': 0.8.0 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.4) - '@tanstack/react-store@0.8.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@tanstack/react-store@0.8.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/store': 0.8.0 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - use-sync-external-store: 1.6.0(react@19.2.0) + '@tanstack/store': 0.8.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.4) - '@tanstack/router-core@1.158.0': + '@tanstack/router-core@1.160.0': dependencies: '@tanstack/history': 1.154.14 '@tanstack/store': 0.8.0 @@ -6321,29 +6204,29 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/router-devtools-core@1.158.0(@tanstack/router-core@1.158.0)(csstype@3.2.3)': + '@tanstack/router-devtools-core@1.160.0(@tanstack/router-core@1.160.0)(csstype@3.2.3)': dependencies: - '@tanstack/router-core': 1.158.0 + '@tanstack/router-core': 1.160.0 clsx: 2.1.1 goober: 2.1.18(csstype@3.2.3) tiny-invariant: 1.3.3 optionalDependencies: csstype: 3.2.3 - '@tanstack/router-generator@1.158.0': + '@tanstack/router-generator@1.160.1': dependencies: - '@tanstack/router-core': 1.158.0 + '@tanstack/router-core': 1.160.0 '@tanstack/router-utils': 1.158.0 '@tanstack/virtual-file-routes': 1.154.7 - prettier: 3.6.2 + prettier: 3.8.1 recast: 0.23.11 source-map: 0.7.6 - tsx: 4.20.6 + tsx: 4.21.0 zod: 3.25.76 transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.158.0(@tanstack/react-router@1.158.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1))': + '@tanstack/router-plugin@1.160.2(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) @@ -6351,16 +6234,16 @@ snapshots: '@babel/template': 7.27.2 '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 - '@tanstack/router-core': 1.158.0 - '@tanstack/router-generator': 1.158.0 + '@tanstack/router-core': 1.160.0 + '@tanstack/router-generator': 1.160.1 '@tanstack/router-utils': 1.158.0 '@tanstack/virtual-file-routes': 1.154.7 chokidar: 3.6.0 unplugin: 2.3.10 zod: 3.25.76 optionalDependencies: - '@tanstack/react-router': 1.158.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + '@tanstack/react-router': 1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -6378,10 +6261,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/store@0.7.7': {} - '@tanstack/store@0.8.0': {} + '@tanstack/store@0.8.1': {} + '@tanstack/virtual-file-routes@1.154.7': {} '@testing-library/dom@10.4.1': @@ -6395,15 +6278,15 @@ snapshots: picocolors: 1.1.1 pretty-format: 27.5.1 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.6))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: - '@types/react': 19.2.6 - '@types/react-dom': 19.2.3(@types/react@19.2.6) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) '@tybys/wasm-util@0.10.1': dependencies: @@ -6446,23 +6329,37 @@ snapshots: '@types/estree@1.0.8': {} + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/node@24.10.1': dependencies: undici-types: 7.16.0 - '@types/react-dom@19.2.3(@types/react@19.2.6)': + '@types/node@25.2.3': + dependencies: + undici-types: 7.16.0 + + '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: - '@types/react': 19.2.6 + '@types/react': 19.2.14 - '@types/react@19.2.6': + '@types/react@19.2.14': dependencies: csstype: 3.2.3 '@types/trusted-types@2.0.7': optional: true + '@types/unist@3.0.3': {} + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -6479,6 +6376,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/type-utils': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.0 + eslint: 9.39.2(jiti@2.6.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.54.0 @@ -6491,6 +6404,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.0 + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) @@ -6500,15 +6425,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) + '@typescript-eslint/types': 8.56.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.54.0': dependencies: '@typescript-eslint/types': 8.54.0 '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/scope-manager@8.56.0': + dependencies: + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/visitor-keys': 8.56.0 + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.54.0 @@ -6521,10 +6464,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.47.0': {} + '@typescript-eslint/type-utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/types@8.56.0': {} + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) @@ -6540,6 +6495,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/visitor-keys': 8.56.0 + debug: 4.4.3 + minimatch: 9.0.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) @@ -6551,11 +6521,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.54.0': dependencies: '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.56.0': + dependencies: + '@typescript-eslint/types': 8.56.0 + eslint-visitor-keys: 5.0.0 + '@typescript/vfs@1.6.2(typescript@5.4.5)': dependencies: debug: 4.4.3 @@ -6563,6 +6549,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@ungap/structured-clone@1.3.0': {} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true @@ -6624,71 +6612,61 @@ snapshots: '@ver0/deep-equal@1.0.1': {} - '@vitejs/plugin-react@5.1.1(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) - '@rolldown/pluginutils': 1.0.0-beta.47 + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.12': + '@vitest/expect@4.0.18': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.12 - '@vitest/utils': 4.0.12 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.12(vite@7.3.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@vitest/spy': 4.0.12 + '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) - '@vitest/pretty-format@4.0.12': + '@vitest/pretty-format@4.0.18': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.12': + '@vitest/runner@4.0.18': dependencies: - '@vitest/utils': 4.0.12 + '@vitest/utils': 4.0.18 pathe: 2.0.3 - '@vitest/snapshot@4.0.12': + '@vitest/snapshot@4.0.18': dependencies: - '@vitest/pretty-format': 4.0.12 + '@vitest/pretty-format': 4.0.18 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.12': {} + '@vitest/spy@4.0.18': {} - '@vitest/utils@4.0.12': + '@vitest/utils@4.0.18': dependencies: - '@vitest/pretty-format': 4.0.12 + '@vitest/pretty-format': 4.0.18 tinyrainbow: 3.0.3 - abitype@1.1.0(typescript@5.9.3)(zod@4.1.12): - optionalDependencies: - typescript: 5.9.3 - zod: 4.1.12 - - abitype@1.1.2(typescript@5.9.3)(zod@4.1.12): - optionalDependencies: - typescript: 5.9.3 - zod: 4.1.12 - - abitype@1.2.3(typescript@5.9.3)(zod@4.1.12): + abitype@1.2.3(typescript@5.9.3)(zod@4.3.6): optionalDependencies: typescript: 5.9.3 - zod: 4.1.12 + zod: 4.3.6 acorn-jsx@5.3.2(acorn@8.15.0): dependencies: @@ -6759,6 +6737,10 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.2: + dependencies: + jackspeak: 4.2.3 + baseline-browser-mapping@2.8.30: {} bidi-js@1.0.3: @@ -6776,6 +6758,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.2: + dependencies: + balanced-match: 4.0.2 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -6801,6 +6787,8 @@ snapshots: caniuse-lite@1.0.30001756: {} + ccount@2.0.1: {} + chai@6.2.2: {} chalk-template@0.4.0: @@ -6812,6 +6800,10 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + charenc@0.0.2: {} chevrotain@11.0.3: @@ -6843,6 +6835,8 @@ snapshots: color-name@1.1.4: {} + comma-separated-tokens@2.0.3: {} + command-line-args@6.0.1: dependencies: array-back: 6.2.2 @@ -6882,18 +6876,21 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.3: + cssstyle@6.0.1: dependencies: - '@asamuzakjp/css-color': 4.1.0 - '@csstools/css-syntax-patches-for-csstree': 1.0.16 + '@asamuzakjp/css-color': 4.1.2 + '@csstools/css-syntax-patches-for-csstree': 1.0.27 css-tree: 3.1.0 + lru-cache: 11.2.6 csstype@3.2.3: {} - data-urls@6.0.0: + data-urls@7.0.0(@noble/hashes@1.8.0): dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.0(@noble/hashes@1.8.0) + transitivePeerDependencies: + - '@noble/hashes' debug@4.4.3: dependencies: @@ -6918,6 +6915,10 @@ snapshots: detect-libc@2.1.2: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + diff@8.0.3: {} dom-accessibility-api@0.5.16: {} @@ -6926,9 +6927,9 @@ snapshots: optionalDependencies: '@types/trusted-types': 2.0.7 - effect@3.19.5: + effect@3.19.18: dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 fast-check: 3.23.2 electron-to-chromium@1.5.258: {} @@ -6942,35 +6943,6 @@ snapshots: es-module-lexer@1.7.0: {} - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.2: optionalDependencies: '@esbuild/aix-ppc64': 0.27.2 @@ -7004,6 +6976,8 @@ snapshots: escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + eslint-compat-utils@0.5.1(eslint@9.39.2(jiti@2.6.1)): dependencies: eslint: 9.39.2(jiti@2.6.1) @@ -7016,7 +6990,7 @@ snapshots: optionalDependencies: unrs-resolver: 1.11.1 - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 4.4.3 eslint: 9.39.2(jiti@2.6.1) @@ -7027,18 +7001,18 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color eslint-plugin-es-x@7.8.0(eslint@9.39.2(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 eslint: 9.39.2(jiti@2.6.1) eslint-compat-utils: 0.5.1(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): dependencies: '@typescript-eslint/types': 8.54.0 comment-parser: 1.4.5 @@ -7051,13 +7025,13 @@ snapshots: stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - supports-color - eslint-plugin-n@17.23.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + eslint-plugin-n@17.24.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) enhanced-resolve: 5.18.3 eslint: 9.39.2(jiti@2.6.1) eslint-plugin-es-x: 7.8.0(eslint@9.39.2(jiti@2.6.1)) @@ -7074,7 +7048,7 @@ snapshots: dependencies: eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-sort-destructure-keys@2.0.0(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-sort-destructure-keys@3.0.0(eslint@9.39.2(jiti@2.6.1)): dependencies: eslint: 9.39.2(jiti@2.6.1) natural-compare-lite: 1.4.0 @@ -7088,6 +7062,8 @@ snapshots: eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.0: {} + eslint@9.39.2(jiti@2.6.1): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) @@ -7137,10 +7113,6 @@ snapshots: esprima@4.0.1: {} - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -7203,24 +7175,20 @@ snapshots: flatted@3.3.3: {} - framer-motion@12.23.24(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + framer-motion@12.34.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - motion-dom: 12.23.23 - motion-utils: 12.23.6 + motion-dom: 12.34.1 + motion-utils: 12.29.2 tslib: 2.8.1 optionalDependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) fsevents@2.3.3: optional: true gensync@1.0.0-beta.2: {} - get-tsconfig@4.13.0: - dependencies: - resolve-pkg-maps: 1.0.0 - get-tsconfig@4.13.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -7237,7 +7205,7 @@ snapshots: globals@15.15.0: {} - globals@16.5.0: {} + globals@17.3.0: {} globrex@0.1.2: {} @@ -7249,9 +7217,31 @@ snapshots: has-flag@4.0.0: {} - html-encoding-sniffer@4.0.0: + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0): dependencies: - whatwg-encoding: 3.1.1 + '@exodus/bytes': 1.14.1(@noble/hashes@1.8.0) + transitivePeerDependencies: + - '@noble/hashes' + + html-void-elements@3.0.0: {} http-proxy-agent@7.0.2: dependencies: @@ -7267,10 +7257,6 @@ snapshots: transitivePeerDependencies: - supports-color - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - ignore@5.3.2: {} ignore@7.0.5: {} @@ -7331,9 +7317,13 @@ snapshots: dependencies: ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + jackspeak@4.2.3: + dependencies: + '@isaacs/cliui': 9.0.0 + jiti@2.6.1: {} - jose@6.1.2: {} + jose@6.1.3: {} js-tokens@4.0.0: {} @@ -7346,14 +7336,16 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + jsdom@28.1.0(@noble/hashes@1.8.0): dependencies: - '@acemir/cssom': 0.9.23 - '@asamuzakjp/dom-selector': 6.7.4 - cssstyle: 5.3.3 - data-urls: 6.0.0 + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.8.1 + '@bramus/specificity': 2.4.2 + '@exodus/bytes': 1.14.1(@noble/hashes@1.8.0) + cssstyle: 6.0.1 + data-urls: 7.0.0(@noble/hashes@1.8.0) decimal.js: 10.6.0 - html-encoding-sniffer: 4.0.0 + html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 @@ -7361,17 +7353,15 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.0 + undici: 7.22.0 w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.0(@noble/hashes@1.8.0) xml-name-validator: 5.0.0 transitivePeerDependencies: - - bufferutil + - '@noble/hashes' - supports-color - - utf-8-validate jsesc@3.1.0: {} @@ -7389,6 +7379,8 @@ snapshots: dependencies: json-buffer: 3.0.1 + kubernetes-types@1.30.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -7453,7 +7445,7 @@ snapshots: lodash.merge@4.6.2: {} - lru-cache@11.2.2: {} + lru-cache@11.2.6: {} lru-cache@5.1.1: dependencies: @@ -7473,8 +7465,37 @@ snapshots: crypt: 0.0.2 is-buffer: 1.1.6 + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + mdn-data@2.12.2: {} + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -7486,6 +7507,10 @@ snapshots: dependencies: '@isaacs/brace-expansion': 5.0.1 + minimatch@10.2.1: + dependencies: + brace-expansion: 5.0.2 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -7494,24 +7519,24 @@ snapshots: dependencies: brace-expansion: 2.0.2 - monaco-editor@0.55.0: + monaco-editor@0.55.1: dependencies: dompurify: 3.2.7 marked: 14.0.0 - motion-dom@12.23.23: + motion-dom@12.34.1: dependencies: - motion-utils: 12.23.6 + motion-utils: 12.29.2 - motion-utils@12.23.6: {} + motion-utils@12.29.2: {} - motion@12.23.24(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + motion@12.34.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - framer-motion: 12.23.24(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + framer-motion: 12.34.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tslib: 2.8.1 optionalDependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) ms@2.1.3: {} @@ -7527,10 +7552,6 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.5: - optionalDependencies: - msgpackr-extract: 3.0.3 - msgpackr@1.11.8: optionalDependencies: msgpackr-extract: 3.0.3 @@ -7559,6 +7580,16 @@ snapshots: normalize-path@3.0.0: {} + obug@2.1.1: {} + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.4: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.1.0 + regex-recursion: 6.0.2 + open@11.0.0: dependencies: default-browser: 5.4.0 @@ -7577,22 +7608,7 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ox@0.11.3(typescript@5.9.3)(zod@4.1.12): - dependencies: - '@adraffy/ens-normalize': 1.11.1 - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.1 - '@noble/hashes': 1.8.0 - '@scure/bip32': 1.7.0 - '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@4.1.12) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - zod - - ox@0.9.6(typescript@5.9.3)(zod@4.1.12): + ox@0.12.1(typescript@5.9.3)(zod@4.3.6): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -7600,7 +7616,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.2(typescript@5.9.3)(zod@4.1.12) + abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -7649,8 +7665,6 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.6.2: {} - prettier@3.8.1: {} pretty-format@27.5.1: @@ -7659,72 +7673,74 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + property-information@7.1.0: {} + punycode@2.3.1: {} pure-rand@6.1.0: {} - react-aria@3.44.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-aria@3.46.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@internationalized/string': 3.2.7 - '@react-aria/breadcrumbs': 3.5.29(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/button': 3.14.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/calendar': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/checkbox': 3.16.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/color': 3.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/combobox': 3.14.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/datepicker': 3.15.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/dialog': 3.5.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/disclosure': 3.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/dnd': 3.11.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/focus': 3.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/gridlist': 3.14.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/i18n': 3.12.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/interactions': 3.25.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/label': 3.7.22(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/landmark': 3.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/link': 3.8.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/listbox': 3.15.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/menu': 3.19.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/meter': 3.4.27(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/numberfield': 3.12.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/overlays': 3.30.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/progress': 3.4.27(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/radio': 3.12.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/searchfield': 3.8.9(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/select': 3.17.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/selection': 3.26.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/separator': 3.4.13(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/slider': 3.8.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/ssr': 3.9.10(react@19.2.0) - '@react-aria/switch': 3.7.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/table': 3.17.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/tabs': 3.10.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/tag': 3.7.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/textfield': 3.18.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/toast': 3.0.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/tooltip': 3.8.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/tree': 3.1.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/utils': 3.31.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@react-types/shared': 3.32.1(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - react-dom@19.2.0(react@19.2.0): - dependencies: - react: 19.2.0 + '@react-aria/breadcrumbs': 3.5.31(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/button': 3.14.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/calendar': 3.9.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/checkbox': 3.16.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/color': 3.1.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/combobox': 3.14.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/datepicker': 3.16.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/dialog': 3.5.33(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/disclosure': 3.1.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/dnd': 3.11.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/focus': 3.21.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/gridlist': 3.14.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/i18n': 3.12.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.27.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/label': 3.7.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/landmark': 3.0.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/link': 3.8.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/listbox': 3.15.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/menu': 3.20.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/meter': 3.4.29(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/numberfield': 3.12.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/overlays': 3.31.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/progress': 3.4.29(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/radio': 3.12.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/searchfield': 3.8.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/select': 3.17.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/selection': 3.27.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/separator': 3.4.15(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/slider': 3.8.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/ssr': 3.9.10(react@19.2.4) + '@react-aria/switch': 3.7.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/table': 3.17.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/tabs': 3.11.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/tag': 3.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/textfield': 3.18.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/toast': 3.0.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/tooltip': 3.9.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/tree': 3.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.33.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/visually-hidden': 3.8.30(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/shared': 3.33.0(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + react-dom@19.2.4(react@19.2.4): + dependencies: + react: 19.2.4 scheduler: 0.27.0 react-is@17.0.2: {} - react-keyed-flatten-children@5.0.1(react-is@17.0.2)(react@19.2.0): + react-keyed-flatten-children@5.1.1(react-is@17.0.2)(react@19.2.4): dependencies: - react: 19.2.0 + react: 19.2.4 react-is: 17.0.2 react-refresh@0.18.0: {} - react@19.2.0: {} + react@19.2.4: {} readdirp@3.6.0: dependencies: @@ -7738,6 +7754,16 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + remove-accents@0.5.0: {} require-from-string@2.0.2: {} @@ -7748,34 +7774,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - rollup@4.53.3: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.3 - '@rollup/rollup-android-arm64': 4.53.3 - '@rollup/rollup-darwin-arm64': 4.53.3 - '@rollup/rollup-darwin-x64': 4.53.3 - '@rollup/rollup-freebsd-arm64': 4.53.3 - '@rollup/rollup-freebsd-x64': 4.53.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 - '@rollup/rollup-linux-arm-musleabihf': 4.53.3 - '@rollup/rollup-linux-arm64-gnu': 4.53.3 - '@rollup/rollup-linux-arm64-musl': 4.53.3 - '@rollup/rollup-linux-loong64-gnu': 4.53.3 - '@rollup/rollup-linux-ppc64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-musl': 4.53.3 - '@rollup/rollup-linux-s390x-gnu': 4.53.3 - '@rollup/rollup-linux-x64-gnu': 4.53.3 - '@rollup/rollup-linux-x64-musl': 4.53.3 - '@rollup/rollup-openharmony-arm64': 4.53.3 - '@rollup/rollup-win32-arm64-msvc': 4.53.3 - '@rollup/rollup-win32-ia32-msvc': 4.53.3 - '@rollup/rollup-win32-x64-gnu': 4.53.3 - '@rollup/rollup-win32-x64-msvc': 4.53.3 - fsevents: 2.3.3 - rollup@4.57.1: dependencies: '@types/estree': 1.0.8 @@ -7809,8 +7807,6 @@ snapshots: run-applescript@7.1.0: {} - safer-buffer@2.1.2: {} - saxes@6.0.0: dependencies: xmlchars: 2.2.0 @@ -7833,6 +7829,17 @@ snapshots: shebang-regex@3.0.0: {} + shiki@3.22.0: + dependencies: + '@shikijs/core': 3.22.0 + '@shikijs/engine-javascript': 3.22.0 + '@shikijs/engine-oniguruma': 3.22.0 + '@shikijs/langs': 3.22.0 + '@shikijs/themes': 3.22.0 + '@shikijs/types': 3.22.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + siginfo@2.0.0: {} source-map-js@1.2.1: {} @@ -7841,6 +7848,8 @@ snapshots: source-map@0.7.6: {} + space-separated-tokens@2.0.2: {} + stable-hash-x@0.2.0: {} stackback@0.0.2: {} @@ -7849,6 +7858,11 @@ snapshots: std-env@3.10.0: {} + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-json-comments@3.1.1: {} style-observer@0.1.2: {} @@ -7859,9 +7873,7 @@ snapshots: symbol-tree@3.2.4: {} - tabbable@6.2.0: {} - - tabbable@6.3.0: {} + tabbable@6.4.0: {} table-layout@4.1.1: dependencies: @@ -7870,7 +7882,7 @@ snapshots: tagged-tag@1.0.0: {} - tailwindcss@4.1.17: {} + tailwindcss@4.1.18: {} tapable@2.3.0: {} @@ -7880,7 +7892,7 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: @@ -7909,6 +7921,8 @@ snapshots: dependencies: punycode: 2.3.1 + trim-lines@3.0.1: {} + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -7918,16 +7932,16 @@ snapshots: picomatch: 4.0.3 typescript: 5.9.3 - ts-extras@0.16.0: + ts-extras@0.17.0: dependencies: - type-fest: 5.2.0 + type-fest: 5.4.4 tslib@2.8.1: {} - tsx@4.20.6: + tsx@4.21.0: dependencies: - esbuild: 0.25.12 - get-tsconfig: 4.13.0 + esbuild: 0.27.2 + get-tsconfig: 4.13.1 optionalDependencies: fsevents: 2.3.3 @@ -7935,7 +7949,7 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@5.2.0: + type-fest@5.4.4: dependencies: tagged-tag: 1.0.0 @@ -7950,6 +7964,17 @@ snapshots: transitivePeerDependencies: - supports-color + typescript-eslint@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@5.4.5: {} typescript@5.9.3: {} @@ -7960,6 +7985,31 @@ snapshots: undici@7.20.0: {} + undici@7.22.0: {} + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + unplugin@2.3.10: dependencies: '@jridgewell/remapping': 2.3.5 @@ -8001,13 +8051,9 @@ snapshots: dependencies: punycode: 2.3.1 - use-sync-external-store@1.5.0(react@19.2.0): - dependencies: - react: 19.2.0 - - use-sync-external-store@1.6.0(react@19.2.0): + use-sync-external-store@1.6.0(react@19.2.4): dependencies: - react: 19.2.0 + react: 19.2.4 utf-8-validate@5.0.10: dependencies: @@ -8016,32 +8062,25 @@ snapshots: uuid@11.1.0: {} - viem@2.39.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12): + vfile-message@4.0.3: dependencies: - '@noble/curves': 1.9.1 - '@noble/hashes': 1.8.0 - '@scure/bip32': 1.7.0 - '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@4.1.12) - isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.9.6(typescript@5.9.3)(zod@4.1.12) - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 - viem@2.45.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12): + viem@2.46.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@4.1.12) + abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.11.3(typescript@5.9.3)(zod@4.1.12) + ox: 0.12.1(typescript@5.9.3)(zod@4.3.6) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.9.3 @@ -8050,23 +8089,7 @@ snapshots: - utf-8-validate - zod - vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1): - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.3 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.10.1 - fsevents: 2.3.3 - jiti: 2.6.1 - lightningcss: 1.30.2 - tsx: 4.20.6 - yaml: 2.8.1 - - vite@7.3.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1): + vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -8075,38 +8098,38 @@ snapshots: rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 25.2.3 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 - tsx: 4.20.6 + tsx: 4.21.0 yaml: 2.8.1 - vitest@4.0.12(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.18(@types/node@25.2.3)(jiti@2.6.1)(jsdom@28.1.0(@noble/hashes@1.8.0))(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.12 - '@vitest/mocker': 4.0.12(vite@7.3.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.12 - '@vitest/runner': 4.0.12 - '@vitest/snapshot': 4.0.12 - '@vitest/spy': 4.0.12 - '@vitest/utils': 4.0.12 - debug: 4.4.3 + '@vitest/expect': 4.0.18 + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.18 + '@vitest/runner': 4.0.18 + '@vitest/snapshot': 4.0.18 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 es-module-lexer: 1.7.0 expect-type: 1.3.0 magic-string: 0.30.21 + obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.10.1 - jsdom: 27.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@types/node': 25.2.3 + jsdom: 28.1.0(@noble/hashes@1.8.0) transitivePeerDependencies: - jiti - less @@ -8116,19 +8139,18 @@ snapshots: - sass-embedded - stylus - sugarss - - supports-color - terser - tsx - yaml - vue-eslint-parser@10.2.0(eslint@9.39.2(jiti@2.6.1)): + vue-eslint-parser@10.4.0(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 4.4.3 eslint: 9.39.2(jiti@2.6.1) eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - esquery: 1.6.0 + esquery: 1.7.0 semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -8139,20 +8161,19 @@ snapshots: web-vitals@5.1.0: {} - webidl-conversions@8.0.0: {} + webidl-conversions@8.0.1: {} webpack-virtual-modules@0.6.2: {} - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - - whatwg-mimetype@4.0.0: {} + whatwg-mimetype@5.0.0: {} - whatwg-url@15.1.0: + whatwg-url@16.0.0(@noble/hashes@1.8.0): dependencies: + '@exodus/bytes': 1.14.1(@noble/hashes@1.8.0) tr46: 6.0.0 - webidl-conversions: 8.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' which@2.0.2: dependencies: @@ -8193,4 +8214,6 @@ snapshots: zod@3.25.76: {} - zod@4.1.12: {} + zod@4.3.6: {} + + zwitch@2.0.4: {} diff --git a/typescript/amp/package.json b/typescript/amp/package.json index 52b80bcac..95c9c7eb3 100644 --- a/typescript/amp/package.json +++ b/typescript/amp/package.json @@ -1,6 +1,6 @@ { "name": "@edgeandnode/amp", - "version": "0.0.51", + "version": "0.0.52", "type": "module", "license": "BUSL-1.1", "description": "Build and manage blockchain datasets.", @@ -49,37 +49,38 @@ } }, "dependencies": { - "@effect/cli": "^0.72.1", - "abitype": "^1.1.2", + "@effect/cli": "^0.73.2", + "abitype": "^1.2.3", "jiti": "^2.6.1", - "jose": "^6.1.2", + "jose": "^6.1.3", "js-toml": "^1.0.2", - "minimatch": "^10.1.2", + "minimatch": "^10.2.1", "open": "^11.0.0", - "viem": "^2.39.3" + "viem": "^2.46.1" }, "peerDependencies": { - "@bufbuild/protobuf": "^2.10.1", + "@bufbuild/protobuf": "^2.11.0", "@connectrpc/connect": "^2.1.1", "@connectrpc/connect-node": "^2.1.1", - "@effect/platform": "^0.93.3", - "@effect/platform-node": "^0.101.0", + "@effect/platform": "^0.94.5", + "@effect/platform-node": "^0.104.1", "apache-arrow": "^21.1.0", - "effect": "^3.19.5" + "effect": "^3.19.18" }, "devDependencies": { - "@bufbuild/buf": "^1.60.0", - "@bufbuild/protoc-gen-es": "^2.10.1", + "@bufbuild/buf": "^1.65.0", + "@bufbuild/protoc-gen-es": "^2.11.0", "@connectrpc/connect": "^2.1.1", "@connectrpc/connect-node": "^2.1.1", - "@effect/platform": "^0.93.3", - "@effect/platform-node": "^0.101.0", + "@effect/cluster": "^0.56.4", + "@effect/platform": "^0.94.5", + "@effect/platform-node": "^0.104.1", "@effect/vitest": "^0.27.0", - "@types/node": "^24.10.1", + "@types/node": "^25.2.3", "apache-arrow": "^21.1.0", - "effect": "^3.19.5", - "tsx": "^4.20.6", + "effect": "^3.19.18", + "tsx": "^4.21.0", "typescript": "^5.9.3", - "vitest": "4.0.12" + "vitest": "4.0.18" } } diff --git a/typescript/amp/scripts/copy-studio-dist.ts b/typescript/amp/scripts/copy-studio-dist.ts index 543218ddd..546e9dd82 100644 --- a/typescript/amp/scripts/copy-studio-dist.ts +++ b/typescript/amp/scripts/copy-studio-dist.ts @@ -1,19 +1,14 @@ -import { FileSystem, Path } from "@effect/platform" -import { NodeContext } from "@effect/platform-node" -import { Effect } from "effect" +import { cpSync, mkdirSync } from "node:fs" +import { resolve } from "node:path" -const program = Effect.gen(function*() { - const fs = yield* FileSystem.FileSystem - const path = yield* Path.Path +function copyStudioDist() { + const src = resolve("../", "studio", "dist") + const dest = resolve("./", "dist", "studio", "dist") - const src = path.resolve("../", "studio", "dist") - const dest = path.resolve("./", "dist", "studio", "dist") + mkdirSync(dest, { recursive: true }) + cpSync(src, dest, { recursive: true, force: true }) - yield* fs - .makeDirectory(dest, { recursive: true }) - .pipe(Effect.andThen(() => fs.copy(src, dest, { overwrite: true }))) + console.info("[Build] Copied studio/dist to dist/studio/dist") +} - return yield* Effect.logInfo("[Build] Copied studio/dist to dist/studio/dist") -}).pipe(Effect.provide(NodeContext.layer)) - -Effect.runPromise(program).catch(console.error) +copyStudioDist() diff --git a/typescript/amp/src/AmpRegistry.ts b/typescript/amp/src/AmpRegistry.ts index 61768d08d..74c4e5e81 100644 --- a/typescript/amp/src/AmpRegistry.ts +++ b/typescript/amp/src/AmpRegistry.ts @@ -76,11 +76,11 @@ export class AmpRegistryService extends Effect.Service()("Am const getRequest = ( url: string, responseSchema: Schema.Schema, - auth?: Auth.AuthStorageSchema, + accessToken?: Model.AccessToken, ): Effect.Effect, RegistryApiError, never> => { const request = HttpClientRequest.get(url, { acceptJson: true }) - const authenticatedRequest = auth - ? request.pipe(HttpClientRequest.bearerToken(auth.accessToken)) + const authenticatedRequest = accessToken != null + ? request.pipe(HttpClientRequest.bearerToken(accessToken)) : request return authenticatedRequest.pipe( @@ -89,7 +89,7 @@ export class AmpRegistryService extends Effect.Service()("Am Effect.flatMap( HttpClientResponse.matchStatus({ 404: () => Effect.succeed(Option.none()), - ...(auth ? { 401: (response) => parseRegistryError(response) } : {}), + ...(accessToken != null ? { 401: (response) => parseRegistryError(response) } : {}), "2xx": (response) => HttpClientResponse.schemaBodyJson(responseSchema)(response).pipe( Effect.map(Option.some), @@ -111,7 +111,7 @@ export class AmpRegistryService extends Effect.Service()("Am const makeAuthenticatedRequest = ( method: "POST" | "PUT", url: string, - auth: Auth.AuthStorageSchema, + accessToken: Model.AccessToken, bodySchema: Schema.Schema, body: I, responseSchema: Schema.Schema, @@ -138,7 +138,7 @@ export class AmpRegistryService extends Effect.Service()("Am }) return yield* request.pipe( - HttpClientRequest.bearerToken(auth.accessToken), + HttpClientRequest.bearerToken(accessToken), HttpClientRequest.setBody(encodedBody), client.execute, handleHttpClientErrors, @@ -174,27 +174,27 @@ export class AmpRegistryService extends Effect.Service()("Am /** * Get a dataset owned by the authenticated user (including private datasets) - * @param auth - Authenticated user's auth storage + * @param accessToken - Authenticated user's access token * @param namespace - Dataset namespace * @param name - Dataset name * @returns Option.some(dataset) if found, Option.none() if not found */ const getOwnedDataset = ( - auth: Auth.AuthStorageSchema, + accessToken: Model.AccessToken, namespace: Model.DatasetNamespace, name: Model.DatasetName, ): Effect.Effect, RegistryApiError, never> => - getRequest(buildUrl(`api/v1/owners/@me/datasets/${namespace}/${name}`), AmpRegistryDatasetDto, auth) + getRequest(buildUrl(`api/v1/owners/@me/datasets/${namespace}/${name}`), AmpRegistryDatasetDto, accessToken) /** * Get dataset by trying public endpoint first, then owned endpoint as fallback - * @param auth - Auth for owned dataset lookup + * @param accessToken - Authenticated user's access token * @param namespace - Dataset namespace * @param name - Dataset name * @returns Option of dataset from either endpoint */ const getDatasetWithFallback = ( - auth: Auth.AuthStorageSchema, + accessToken: Model.AccessToken, namespace: Model.DatasetNamespace, name: Model.DatasetName, ): Effect.Effect, RegistryApiError, never> => @@ -202,25 +202,25 @@ export class AmpRegistryService extends Effect.Service()("Am Effect.flatMap((publicResult) => Option.match(publicResult, { onSome: (dataset) => Effect.succeed(Option.some(dataset)), - onNone: () => getOwnedDataset(auth, namespace, name), + onNone: () => getOwnedDataset(accessToken, namespace, name), }) ), ) /** * Publish a new dataset - * @param auth - Authenticated user's auth storage + * @param accessToken - Authenticated user's access token * @param dto - Dataset data to publish * @returns Created dataset */ const publishDataset = ( - auth: Auth.AuthStorageSchema, + accessToken: Model.AccessToken, dto: AmpRegistryInsertDatasetDto, ): Effect.Effect => makeAuthenticatedRequest( "POST", buildUrl("api/v1/owners/@me/datasets/publish"), - auth, + accessToken, AmpRegistryInsertDatasetDto, dto, AmpRegistryDatasetDto, @@ -228,14 +228,14 @@ export class AmpRegistryService extends Effect.Service()("Am /** * Publish a new version to an existing dataset - * @param auth - Authenticated user's auth storage + * @param accessToken - Authenticated user's access token * @param namespace - Dataset namespace * @param name - Dataset name * @param dto - Version data to publish * @returns Created version */ const publishVersion = ( - auth: Auth.AuthStorageSchema, + accessToken: Model.AccessToken, namespace: Model.DatasetNamespace, name: Model.DatasetName, dto: AmpRegistryInsertDatasetVersionDto, @@ -243,7 +243,7 @@ export class AmpRegistryService extends Effect.Service()("Am makeAuthenticatedRequest( "POST", buildUrl(`api/v1/owners/@me/datasets/${namespace}/${name}/versions/publish`), - auth, + accessToken, AmpRegistryInsertDatasetVersionDto, dto, AmpRegistryDatasetVersionDto, @@ -251,14 +251,14 @@ export class AmpRegistryService extends Effect.Service()("Am /** * Update mutable metadata fields on an existing dataset - * @param auth - Authenticated user's auth storage + * @param accessToken - Authenticated user's access token * @param namespace - Dataset namespace * @param name - Dataset name * @param dto - Metadata update data * @returns Updated dataset */ const updateDatasetMetadata = ( - auth: Auth.AuthStorageSchema, + accessToken: Model.AccessToken, namespace: Model.DatasetNamespace, name: Model.DatasetName, dto: AmpRegistryUpdateDatasetMetadataDto, @@ -266,7 +266,7 @@ export class AmpRegistryService extends Effect.Service()("Am makeAuthenticatedRequest( "PUT", buildUrl(`api/v1/owners/@me/datasets/${namespace}/${name}`), - auth, + accessToken, AmpRegistryUpdateDatasetMetadataDto, dto, AmpRegistryDatasetDto, @@ -340,7 +340,7 @@ export class AmpRegistryService extends Effect.Service()("Am */ const publishFlow = Effect.fn("DatasetPublishFlow")(function*( args: Readonly<{ - auth: Auth.AuthStorageSchema + auth: Auth.AuthStorageSchema | Auth.JWKSVerifiedAuthClaims context: ManifestContext.DatasetContext versionTag: Model.DatasetRevision changelog?: string | undefined @@ -357,15 +357,16 @@ export class AmpRegistryService extends Effect.Service()("Am const indexingChains = [...new Set(Object.values(manifest.tables).map((table) => table.network))] // Check if dataset exists (try public first, then owned/private) - const maybeDataset = yield* getDatasetWithFallback(auth, namespace, name) + const maybeDataset = yield* getDatasetWithFallback(auth.accessToken, namespace, name) + + const owner = auth instanceof Auth.AuthStorageSchema ? (auth.accounts ?? []) : [auth.subject] return yield* Option.match(maybeDataset, { // Dataset exists - validate ownership and publish new version onSome: (dataset) => Effect.gen(function*() { // Validate ownership - const accounts = auth.accounts ?? [] - const isOwner = accounts.some((account) => account.toLowerCase() === dataset.owner.toLowerCase()) + const isOwner = owner.some((account) => account.toLowerCase() === dataset.owner.toLowerCase()) if (!isOwner) { return yield* Effect.fail( @@ -373,7 +374,7 @@ export class AmpRegistryService extends Effect.Service()("Am namespace, name, actualOwner: dataset.owner, - userAddresses: accounts, + userAddresses: owner, }), ) } @@ -393,7 +394,7 @@ export class AmpRegistryService extends Effect.Service()("Am // Publish new version yield* publishVersion( - auth, + auth.accessToken, namespace, name, AmpRegistryInsertDatasetVersionDto.make({ @@ -410,7 +411,7 @@ export class AmpRegistryService extends Effect.Service()("Am const metadataChanged = hasMetadataChanged(dataset, metadata, indexingChains) if (metadataChanged) { yield* updateDatasetMetadata( - auth, + auth.accessToken, namespace, name, AmpRegistryUpdateDatasetMetadataDto.make({ @@ -431,7 +432,7 @@ export class AmpRegistryService extends Effect.Service()("Am // Dataset doesn't exist - publish new dataset with initial version onNone: () => publishDataset( - auth, + auth.accessToken, AmpRegistryInsertDatasetDto.make({ namespace, name, diff --git a/typescript/amp/src/Auth.ts b/typescript/amp/src/Auth.ts index 3ff7c023f..38a25a6ec 100644 --- a/typescript/amp/src/Auth.ts +++ b/typescript/amp/src/Auth.ts @@ -19,6 +19,18 @@ import * as Model from "./Model.ts" export const AUTH_PLATFORM_URL = new URL("https://auth.amp.thegraph.com/") +const AMP_JWKS = jose.createLocalJWKSet({ + "keys": [{ + "kty": "RSA", + "kid": "amp-admin", + "use": "sig", + "alg": "RS256", + "n": + "vU5q9tF95v_SPjfYmEBRVnKDSvYUHyMzzxghtUbi-X03pKQHPTEAGC6vwvlnp8iOFpoqhRVL6BNTwMbIMJZwFMke_tkJ3_6Uyc-8n9MksJDulN6L6pKzSUVGEg7zF4UQOzH62IQs5DiRMsMmtODyKEhThLE3z2BRl9HA9g66CbYxibB-Lx6DLP18Mkrr4adx48ck0P5V-Ol8_GG9eruNLj1ftahUZIR8VDX1FSS4_RGcponWQdrtcCiqVjA84RALXyQZnunyLxfh_WD2cI6rGG8tJEo0_E84em2wCayr_IeGpPU0Xpbwc_ypv-ZKH2D1FKzkj1vht4C_x7z9_-sOmQ", + "e": "AQAB", + }], +}) + // ============================================================================= // Access Tokens // ============================================================================= @@ -113,6 +125,13 @@ export class AuthStorageSchema extends Schema.Class("Amp/mode expiry: Schema.Int.pipe(Schema.positive(), Schema.optional), }) {} +export class JWKSVerifiedAuthClaims + extends Schema.Class("Amp/models/auth/JWKSVerifiedAuthClaims")({ + accessToken: Model.AccessToken, + subject: Schema.String, + }) +{} + // ============================================================================= // Errors // ============================================================================= @@ -138,6 +157,10 @@ export class VerifySignedAccessTokenError extends Data.TaggedError("Amp/errors/a readonly cause: unknown }> {} +export class VerifyTokenAgainstJWKSError extends Data.TaggedError("Amp/errors/auth/VerifyTokenAgainstJWKSError")<{ + readonly cause: unknown +}> {} + export class AuthService extends Effect.Service()("Amp/AuthService", { dependencies: [LocalCache, FetchHttpClient.layer], effect: Effect.gen(function*() { @@ -326,13 +349,37 @@ export class AuthService extends Effect.Service()("Amp/AuthService" ), ) + // ------------------------------------------------------------------------ + // Local JWKS operations + // ------------------------------------------------------------------------ + + const verifyTokenWithJWKS = (token: string) => + Effect.tryPromise({ + async try() { + const payload = await jose.jwtVerify(token, AMP_JWKS).then((result) => result.payload) + if (!payload.sub) { + throw new VerifyTokenAgainstJWKSError({ cause: "Payload missing required sub" }) + } + return JWKSVerifiedAuthClaims.make({ + accessToken: Model.AccessToken.make(token), + subject: payload.sub, + }) + }, + catch(error) { + return new VerifyTokenAgainstJWKSError({ cause: error }) + }, + }) + return { generateAccessToken, refreshAccessToken, verifySignedAccessToken, + getCache, setCache, clearCache, + + verifyTokenWithJWKS, } as const }), }) {} diff --git a/typescript/amp/src/Model.ts b/typescript/amp/src/Model.ts index 7f936fb72..7d9f8fec9 100644 --- a/typescript/amp/src/Model.ts +++ b/typescript/amp/src/Model.ts @@ -8,6 +8,7 @@ export const Address = Schema.NonEmptyTrimmedString.pipe(Schema.filter((val) => export const AccessToken = Schema.NonEmptyTrimmedString.pipe( Schema.brand("AccessToken"), ) +export type AccessToken = typeof AccessToken.Type export const RefreshToken = Schema.NonEmptyTrimmedString.pipe( Schema.brand("RefreshToken"), diff --git a/typescript/amp/src/cli/commands/build.ts b/typescript/amp/src/cli/commands/build.ts index b5612a831..166fee931 100644 --- a/typescript/amp/src/cli/commands/build.ts +++ b/typescript/amp/src/cli/commands/build.ts @@ -11,7 +11,7 @@ import * as Admin from "../../api/Admin.ts" import * as Auth from "../../Auth.ts" import * as ManifestContext from "../../ManifestContext.ts" import * as Model from "../../Model.ts" -import { adminUrl, configFile } from "../common.ts" +import { adminUrl, bearerToken, configFile } from "../common.ts" export const build = Command.make("build", { args: { @@ -22,6 +22,7 @@ export const build = Command.make("build", { Options.optional, ), adminUrl, + bearerToken, }, }).pipe( Command.withDescription("Build a manifest from a dataset definition"), @@ -46,8 +47,17 @@ export const build = Command.make("build", { Command.provide(({ args }) => ManifestContext.layerFromConfigFile(args.config).pipe(Layer.provide( Layer.unwrapEffect(Effect.gen(function*() { - const token = yield* Auth.AuthService.pipe(Effect.flatMap((auth) => auth.getCache())) - return Admin.layer(`${args.adminUrl}`, Option.getOrUndefined(token)?.accessToken) + const token = yield* args.bearerToken.pipe( + Option.match({ + onSome: (passed) => Effect.succeed(Option.some(Model.AccessToken.make(passed))), + onNone: () => + Auth.AuthService.pipe( + Effect.flatMap((auth) => auth.getCache()), + Effect.map(Option.map((auth) => auth.accessToken)), + ), + }), + ) + return Admin.layer(`${args.adminUrl}`, Option.getOrUndefined(token)) })).pipe(Layer.provide(Auth.layer)), )) ), diff --git a/typescript/amp/src/cli/commands/deploy.ts b/typescript/amp/src/cli/commands/deploy.ts index 9a9df607b..16df93c59 100644 --- a/typescript/amp/src/cli/commands/deploy.ts +++ b/typescript/amp/src/cli/commands/deploy.ts @@ -8,7 +8,7 @@ import * as Admin from "../../api/Admin.ts" import * as Auth from "../../Auth.ts" import * as ManifestContext from "../../ManifestContext.ts" import * as Model from "../../Model.ts" -import { adminUrl, configFile } from "../common.ts" +import { adminUrl, bearerToken, configFile } from "../common.ts" export const deploy = Command.make("deploy", { args: { @@ -24,6 +24,7 @@ export const deploy = Command.make("deploy", { Options.optional, ), adminUrl, + bearerToken, }, }).pipe( Command.withDescription("Deploy a dataset version for extraction and transformation"), @@ -53,8 +54,17 @@ export const deploy = Command.make("deploy", { Command.provide(({ args }) => ManifestContext.layerFromConfigFile(args.configFile).pipe(Layer.provideMerge( Layer.unwrapEffect(Effect.gen(function*() { - const token = yield* Auth.AuthService.pipe(Effect.flatMap((auth) => auth.getCache())) - return Admin.layer(`${args.adminUrl}`, Option.getOrUndefined(token)?.accessToken) + const token = yield* args.bearerToken.pipe( + Option.match({ + onSome: (passed) => Effect.succeed(Option.some(Model.AccessToken.make(passed))), + onNone: () => + Auth.AuthService.pipe( + Effect.flatMap((auth) => auth.getCache()), + Effect.map(Option.map((auth) => auth.accessToken)), + ), + }), + ) + return Admin.layer(`${args.adminUrl}`, Option.getOrUndefined(token)) })).pipe(Layer.provide(Auth.layer)), )) ), diff --git a/typescript/amp/src/cli/commands/publish.ts b/typescript/amp/src/cli/commands/publish.ts index e26c59af6..dd1f68572 100644 --- a/typescript/amp/src/cli/commands/publish.ts +++ b/typescript/amp/src/cli/commands/publish.ts @@ -10,7 +10,7 @@ import * as Admin from "../../api/Admin.ts" import * as Auth from "../../Auth.ts" import * as ManifestContext from "../../ManifestContext.ts" import * as Model from "../../Model.ts" -import { configFile, ExitCode } from "../common.ts" +import { bearerToken, configFile, ExitCode } from "../common.ts" const CLUSTER_ADMIN_URL = new URL("https://gateway.amp.staging.thegraph.com/controller") @@ -30,6 +30,7 @@ export const publish = Command.make("publish", { Options.optional, ), configFile: configFile.pipe(Options.optional), + bearerToken, }, }).pipe( Command.withDescription("Publish a Dataset to the public registry"), @@ -40,12 +41,18 @@ export const publish = Command.make("publish", { const ampRegistry = yield* AmpRegistry.AmpRegistryService const client = yield* Admin.Admin - const maybeAuthStorage = yield* auth.getCache() - if (Option.isNone(maybeAuthStorage)) { + // Check authentication: + // 1. if a user passed in a bearer token, or has one in their env, use it + // 2. check the auth cache + const verifiedAuth = yield* args.bearerToken.pipe(Option.match({ + onSome: (bearerToken) => auth.verifyTokenWithJWKS(bearerToken), + onNone: () => auth.getCache().pipe(Effect.map(Option.getOrUndefined)), + })) + + if (verifiedAuth == null) { yield* Console.error("Must be authenticated to publish your dataset. Run `amp auth login`") return yield* ExitCode.NonZero } - const authStorage = maybeAuthStorage.value const metadata = context.metadata @@ -72,7 +79,7 @@ export const publish = Command.make("publish", { yield* Console.info("Publishing your Dataset to the registry") const publishResult = yield* ampRegistry.publishFlow({ - auth: authStorage, + auth: verifiedAuth, context, versionTag: args.tag, changelog: Option.getOrUndefined(args.changelog)?.trim(), @@ -111,8 +118,17 @@ export const publish = Command.make("publish", { ManifestContext.layerFromConfigFile(args.configFile), ).pipe( Layer.provideMerge(Layer.unwrapEffect(Effect.gen(function*() { - const token = yield* Auth.AuthService.pipe(Effect.flatMap((auth) => auth.getCache())) - return Admin.layer(`${CLUSTER_ADMIN_URL}`, Option.getOrUndefined(token)?.accessToken) + const token = yield* args.bearerToken.pipe( + Option.match({ + onSome: (passed) => Effect.succeed(Option.some(Model.AccessToken.make(passed))), + onNone: () => + Auth.AuthService.pipe( + Effect.flatMap((auth) => auth.getCache()), + Effect.map(Option.map((auth) => auth.accessToken)), + ), + }), + ) + return Admin.layer(`${CLUSTER_ADMIN_URL}`, Option.getOrUndefined(token)) }))), Layer.provideMerge(Auth.layer), ) diff --git a/typescript/amp/src/cli/commands/register.ts b/typescript/amp/src/cli/commands/register.ts index c343249e5..62ed596f4 100644 --- a/typescript/amp/src/cli/commands/register.ts +++ b/typescript/amp/src/cli/commands/register.ts @@ -6,9 +6,10 @@ import * as Layer from "effect/Layer" import * as Option from "effect/Option" import * as Schema from "effect/Schema" import * as Admin from "../../api/Admin.ts" +import * as Auth from "../../Auth.ts" import * as ManifestContext from "../../ManifestContext.ts" import * as Model from "../../Model.ts" -import { adminUrl, configFile } from "../common.ts" +import { adminUrl, bearerToken, configFile } from "../common.ts" export const register = Command.make("register", { args: { @@ -19,6 +20,7 @@ export const register = Command.make("register", { ), configFile: configFile.pipe(Options.optional), adminUrl, + bearerToken, }, }).pipe( Command.withDescription("Register a dataset definition from config"), @@ -37,6 +39,20 @@ export const register = Command.make("register", { }), ), Command.provide(({ args }) => - ManifestContext.layerFromConfigFile(args.configFile).pipe(Layer.provideMerge(Admin.layer(`${args.adminUrl}`))) + ManifestContext.layerFromConfigFile(args.configFile).pipe(Layer.provideMerge( + Layer.unwrapEffect(Effect.gen(function*() { + const token = yield* args.bearerToken.pipe( + Option.match({ + onSome: (passed) => Effect.succeed(Option.some(Model.AccessToken.make(passed))), + onNone: () => + Auth.AuthService.pipe( + Effect.flatMap((auth) => auth.getCache()), + Effect.map(Option.map((auth) => auth.accessToken)), + ), + }), + ) + return Admin.layer(`${args.adminUrl}`, Option.getOrUndefined(token)) + })).pipe(Layer.provide(Auth.layer)), + )) ), ) diff --git a/typescript/amp/src/cli/common.ts b/typescript/amp/src/cli/common.ts index ee64cf73f..6968a733f 100644 --- a/typescript/amp/src/cli/common.ts +++ b/typescript/amp/src/cli/common.ts @@ -5,7 +5,9 @@ import * as Schema from "effect/Schema" export const adminUrl = Options.text("admin-url").pipe( Options.withFallbackConfig( - Config.string("AMP_ADMIN_URL").pipe(Config.withDefault("http://localhost:1610")), + Config.string("AMP_ADMIN_URL").pipe( + Config.withDefault("http://localhost:1610"), + ), ), Options.withDescription("The url of the admin server"), Options.withSchema(Schema.URL), @@ -13,7 +15,9 @@ export const adminUrl = Options.text("admin-url").pipe( export const flightUrl = Options.text("flight-url").pipe( Options.withFallbackConfig( - Config.string("AMP_ARROW_FLIGHT_URL").pipe(Config.withDefault("http://localhost:1602")), + Config.string("AMP_ARROW_FLIGHT_URL").pipe( + Config.withDefault("http://localhost:1602"), + ), ), Options.withDescription("The Arrow Flight URL to use for the proxy"), Options.withSchema(Schema.URL), @@ -24,6 +28,14 @@ export const configFile = Options.file("config", { exists: "yes" }).pipe( Options.withDescription("The dataset definition config file"), ) +export const bearerToken = Options.text("bearer-token").pipe( + Options.withFallbackConfig( + Config.string("AMP_AUTH_TOKEN"), + ), + Options.withDescription("Bearer auth token"), + Options.optional, +) + export const ExitCode = { NonZero: Effect.sync(() => process.exit(1)), Zero: Effect.sync(() => process.exit(0)), diff --git a/typescript/amp/test/AmpRegistry.test.ts b/typescript/amp/test/AmpRegistry.test.ts index 6f724366f..be9d85ff6 100644 --- a/typescript/amp/test/AmpRegistry.test.ts +++ b/typescript/amp/test/AmpRegistry.test.ts @@ -348,7 +348,7 @@ describe("AmpRegistryService", () => { const service = yield* Effect.provide(AmpRegistry.AmpRegistryService, TestLayer) const result = yield* service.getOwnedDataset( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), ) @@ -378,7 +378,7 @@ describe("AmpRegistryService", () => { const service = yield* Effect.provide(AmpRegistry.AmpRegistryService, TestLayer) const result = yield* service.getOwnedDataset( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("nonexistent"), ) @@ -415,7 +415,7 @@ describe("AmpRegistryService", () => { const service = yield* Effect.provide(AmpRegistry.AmpRegistryService, TestLayer) const result = yield* Effect.exit( service.getOwnedDataset( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), ), @@ -448,7 +448,7 @@ describe("AmpRegistryService", () => { const service = yield* Effect.provide(AmpRegistry.AmpRegistryService, TestLayer) const result = yield* Effect.exit( service.getOwnedDataset( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), ), @@ -489,7 +489,7 @@ describe("AmpRegistryService", () => { const service = yield* Effect.provide(AmpRegistry.AmpRegistryService, TestLayer) const result = yield* Effect.exit( service.getOwnedDataset( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), ), @@ -550,7 +550,7 @@ describe("AmpRegistryService", () => { }), }) - const result = yield* service.publishDataset(mockAuthStorage, insertDto) + const result = yield* service.publishDataset(mockAuthStorage.accessToken, insertDto) expect(result.namespace).toBe(Model.DatasetNamespace.make("edgeandnode")) expect(result.name).toBe(Model.DatasetName.make("mainnet")) @@ -602,7 +602,7 @@ describe("AmpRegistryService", () => { }), }) - const result = yield* Effect.exit(service.publishDataset(mockAuthStorage, insertDto)) + const result = yield* Effect.exit(service.publishDataset(mockAuthStorage.accessToken, insertDto)) expect(result._tag).toBe("Failure") })) @@ -641,7 +641,7 @@ describe("AmpRegistryService", () => { }), }) - const result = yield* Effect.exit(service.publishDataset(mockAuthStorage, insertDto)) + const result = yield* Effect.exit(service.publishDataset(mockAuthStorage.accessToken, insertDto)) expect(result._tag).toBe("Failure") if (result._tag === "Failure" && result.cause._tag === "Fail") { @@ -695,7 +695,7 @@ describe("AmpRegistryService", () => { }), }) - const result = yield* Effect.exit(service.publishDataset(mockAuthStorage, insertDto)) + const result = yield* Effect.exit(service.publishDataset(mockAuthStorage.accessToken, insertDto)) expect(result._tag).toBe("Failure") if (result._tag === "Failure" && result.cause._tag === "Fail") { @@ -741,7 +741,7 @@ describe("AmpRegistryService", () => { }) const result = yield* service.publishVersion( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), versionDto, @@ -790,7 +790,7 @@ describe("AmpRegistryService", () => { const result = yield* Effect.exit( service.publishVersion( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), versionDto, @@ -839,7 +839,7 @@ describe("AmpRegistryService", () => { const result = yield* Effect.exit( service.publishVersion( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), versionDto, @@ -894,7 +894,7 @@ describe("AmpRegistryService", () => { }) const result = yield* service.updateDatasetMetadata( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), updateDto, @@ -941,7 +941,7 @@ describe("AmpRegistryService", () => { const result = yield* Effect.exit( service.updateDatasetMetadata( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), updateDto, @@ -991,7 +991,7 @@ describe("AmpRegistryService", () => { const result = yield* Effect.exit( service.updateDatasetMetadata( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("nonexistent"), updateDto, @@ -1030,7 +1030,7 @@ describe("AmpRegistryService", () => { const result = yield* Effect.exit( service.updateDatasetMetadata( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), updateDto, @@ -1078,7 +1078,7 @@ describe("AmpRegistryService", () => { const result = yield* Effect.exit( service.updateDatasetMetadata( - mockAuthStorage, + mockAuthStorage.accessToken, Model.DatasetNamespace.make("edgeandnode"), Model.DatasetName.make("mainnet"), updateDto, diff --git a/typescript/studio/package.json b/typescript/studio/package.json index 9c869ad0b..d74e10ad9 100644 --- a/typescript/studio/package.json +++ b/typescript/studio/package.json @@ -18,41 +18,41 @@ "cli": "pnpm amp studio" }, "dependencies": { - "@base-ui-components/react": "1.0.0-beta.6", + "@base-ui/react": "1.2.0", "@connectrpc/connect": "^2.1.1", "@connectrpc/connect-web": "^2.1.1", "@edgeandnode/amp": "workspace:*", - "@effect-atom/atom": "^0.4.2", - "@effect-atom/atom-react": "^0.4.0", - "@graphprotocol/gds-react": "https://pkg.pr.new/graphprotocol/gds/@graphprotocol/gds-react@b9ac299", + "@effect-atom/atom": "^0.5.1", + "@effect-atom/atom-react": "^0.5.0", + "@graphprotocol/gds-react": "0.2.5", "@monaco-editor/react": "4.8.0-rc.2", - "@tailwindcss/vite": "^4.1.17", + "@tailwindcss/vite": "^4.1.18", "@tanstack/match-sorter-utils": "^8.19.4", - "@tanstack/react-form": "^1.25.0", - "@tanstack/react-query": "^5.90.10", - "@tanstack/react-query-devtools": "^5.90.2", - "@tanstack/react-router": "^1.158.0", - "@tanstack/react-router-devtools": "^1.158.0", - "@tanstack/router-plugin": "^1.158.0", - "effect": "^3.19.5", - "monaco-editor": "^0.55.0", - "react": "^19.2.0", - "react-dom": "^19.2.0", - "tailwindcss": "^4.1.17", - "zod": "^4.1.12" + "@tanstack/react-form": "^1.28.3", + "@tanstack/react-query": "^5.90.21", + "@tanstack/react-query-devtools": "^5.91.3", + "@tanstack/react-router": "^1.160.2", + "@tanstack/react-router-devtools": "^1.160.2", + "@tanstack/router-plugin": "^1.160.2", + "effect": "^3.19.18", + "monaco-editor": "^0.55.1", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "tailwindcss": "^4.1.18", + "zod": "^4.3.6" }, "devDependencies": { - "@tanstack/eslint-config": "^0.3.2", + "@tanstack/eslint-config": "^0.4.0", "@testing-library/dom": "^10.4.1", - "@testing-library/react": "^16.3.0", - "@types/react": "^19.2.6", + "@testing-library/react": "^16.3.2", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^5.1.1", - "jsdom": "^27.2.0", - "prettier": "^3.6.2", + "@vitejs/plugin-react": "^5.1.4", + "jsdom": "^28.1.0", + "prettier": "^3.8.1", "typescript": "^5.9.3", - "vite": "^7.2.4", - "vitest": "4.0.12", + "vite": "^7.3.1", + "vitest": "4.0.18", "web-vitals": "^5.1.0" } } diff --git a/typescript/studio/src/Components/QueryPlayground/AmpConfigBrowser.tsx b/typescript/studio/src/Components/QueryPlayground/AmpConfigBrowser.tsx index c1c335b2e..b2d76dc4e 100644 --- a/typescript/studio/src/Components/QueryPlayground/AmpConfigBrowser.tsx +++ b/typescript/studio/src/Components/QueryPlayground/AmpConfigBrowser.tsx @@ -1,6 +1,6 @@ "use client" -import { Accordion } from "@base-ui-components/react/accordion" +import { Accordion } from "@base-ui/react/accordion" import { Model } from "@edgeandnode/amp" import { Button } from "@graphprotocol/gds-react" import { PlusIcon, TableIcon } from "@graphprotocol/gds-react/icons" diff --git a/typescript/studio/src/Components/QueryPlayground/QueryPlaygroundWrapper.tsx b/typescript/studio/src/Components/QueryPlayground/QueryPlaygroundWrapper.tsx index 5712c58b4..abb611a97 100644 --- a/typescript/studio/src/Components/QueryPlayground/QueryPlaygroundWrapper.tsx +++ b/typescript/studio/src/Components/QueryPlayground/QueryPlaygroundWrapper.tsx @@ -1,6 +1,6 @@ "use client" -import { Toast } from "@base-ui-components/react/toast" +import { Toast } from "@base-ui/react/toast" import { Button, ButtonGroup, CopyButton, Keyboard, TabSet, ToggleButton } from "@graphprotocol/gds-react" import { CheckCircleIcon, @@ -164,7 +164,6 @@ export function QueryPlaygroundWrapper() { {(queryField) => ( form.setFieldValue("activeTab", idx)} > @@ -224,7 +223,7 @@ export function QueryPlaygroundWrapper() {
- + {queryField.state.value.map((_, idx) => ( @@ -250,12 +249,7 @@ export function QueryPlaygroundWrapper() { { - if (!activeTabQuery?.query) { - return - } - await navigator.clipboard.writeText(activeTabQuery.query) - }} + value={activeTabQuery?.query || ""} > Copy SQL diff --git a/typescript/studio/src/Components/QueryPlayground/SchemaBrowser.tsx b/typescript/studio/src/Components/QueryPlayground/SchemaBrowser.tsx index 8a5b54e41..fcadd9e0f 100644 --- a/typescript/studio/src/Components/QueryPlayground/SchemaBrowser.tsx +++ b/typescript/studio/src/Components/QueryPlayground/SchemaBrowser.tsx @@ -1,6 +1,6 @@ "use client" -import { Accordion } from "@base-ui-components/react/accordion" +import { Accordion } from "@base-ui/react/accordion" import type { StudioModel } from "@edgeandnode/amp" import { Button, Divider } from "@graphprotocol/gds-react" import { FileSolIcon, PlusIcon } from "@graphprotocol/gds-react/icons" diff --git a/typescript/studio/src/Components/QueryPlayground/SourcesBrowser.tsx b/typescript/studio/src/Components/QueryPlayground/SourcesBrowser.tsx index 73364b3af..19f4a166a 100644 --- a/typescript/studio/src/Components/QueryPlayground/SourcesBrowser.tsx +++ b/typescript/studio/src/Components/QueryPlayground/SourcesBrowser.tsx @@ -1,6 +1,6 @@ "use client" -import { Accordion } from "@base-ui-components/react/accordion" +import { Accordion } from "@base-ui/react/accordion" import type { StudioModel } from "@edgeandnode/amp" import { Button, Divider } from "@graphprotocol/gds-react" import { FolderIcon, FolderOpenIcon, PlusIcon } from "@graphprotocol/gds-react/icons" diff --git a/typescript/studio/src/routes/__root.tsx b/typescript/studio/src/routes/__root.tsx index 090bd4083..ed38c7c3d 100644 --- a/typescript/studio/src/routes/__root.tsx +++ b/typescript/studio/src/routes/__root.tsx @@ -1,4 +1,4 @@ -import { Toast } from "@base-ui-components/react/toast" +import { Toast } from "@base-ui/react/toast" import { GDSProvider } from "@graphprotocol/gds-react" import type { QueryClient } from "@tanstack/react-query" import { createRootRouteWithContext, Outlet } from "@tanstack/react-router" diff --git a/typescript/studio/tests/services/sql/AmpCompletionProvider.test.ts b/typescript/studio/tests/services/sql/AmpCompletionProvider.test.ts deleted file mode 100644 index 8f68e6bb5..000000000 --- a/typescript/studio/tests/services/sql/AmpCompletionProvider.test.ts +++ /dev/null @@ -1,566 +0,0 @@ -/** - * Unit tests for AmpCompletionProvider - * Tests table/column/UDF completions, context filtering, and Monaco integration - */ - -import * as monaco from "monaco-editor" -import { afterEach, beforeEach, describe, expect, test } from "vitest" - -import { AmpCompletionProvider } from "../../../src/services/sql/AmpCompletionProvider" -import { QueryContextAnalyzer } from "../../../src/services/sql/QueryContextAnalyzer" - -import { - countCompletionsByKind, - createMockCancellationToken, - createMockCompletionContext, - createTestModel, - disposeTestModel, - extractCompletionLabels, - findCompletionByLabel, - mockMetadata, - mockMetadataEmpty, - mockUDFs, - mockUDFsEmpty, -} from "./fixtures" - -describe("AmpCompletionProvider", () => { - let provider: AmpCompletionProvider - let analyzer: QueryContextAnalyzer - let testModels: Array = [] - - beforeEach(() => { - analyzer = new QueryContextAnalyzer() - provider = new AmpCompletionProvider(mockMetadata, mockUDFs, analyzer) - testModels = [] - }) - - afterEach(() => { - // Cleanup all test models - testModels.forEach((model) => disposeTestModel(model)) - testModels = [] - - // Clear analyzer cache - analyzer.clearCache() - }) - - /** - * Helper to create and track test models for cleanup - */ - function createAndTrackModel(content: string): monaco.editor.ITextModel { - const model = createTestModel(content) - testModels.push(model) - return model - } - - describe("Table Completions", () => { - test("should provide table completions after FROM", async () => { - const model = createAndTrackModel("SELECT * FROM ") - const position = new monaco.Position(1, 15) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - if (result) { - expect(result.suggestions).toBeDefined() - } - - const labels = extractCompletionLabels(result ?? null) - expect(labels).toContain("anvil.logs") - expect(labels).toContain("anvil.transactions") - expect(labels).toContain("anvil.blocks") - }) - - test("should provide table details in completion items", async () => { - const model = createAndTrackModel("SELECT * FROM ") - const position = new monaco.Position(1, 15) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - const logsCompletion = findCompletionByLabel(result ?? null, "anvil.logs") - - expect(logsCompletion).toBeDefined() - expect(logsCompletion!.kind).toBe(monaco.languages.CompletionItemKind.Class) - expect(logsCompletion!.detail).toContain("Table") - expect(logsCompletion!.detail).toContain("7 columns") - expect(logsCompletion!.documentation).toBeDefined() - }) - - test("should handle empty metadata gracefully", async () => { - const emptyProvider = new AmpCompletionProvider(mockMetadataEmpty, mockUDFs, analyzer) - const model = createAndTrackModel("SELECT * FROM ") - const position = new monaco.Position(1, 15) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await emptyProvider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - if (result) { - expect(result.suggestions).toBeDefined() - } - - // Should still provide basic keyword suggestions - const labels = extractCompletionLabels(result ?? null) - expect(labels.length).toBeGreaterThan(0) - - // But no table completions - const tableCount = countCompletionsByKind(result ?? null, monaco.languages.CompletionItemKind.Class) - expect(tableCount).toBe(0) - }) - }) - - describe("Column Completions", () => { - test("should provide column completions in SELECT", async () => { - const model = createAndTrackModel("SELECT ") - const position = new monaco.Position(1, 8) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const labels = extractCompletionLabels(result ?? null) - - // Should contain columns from all tables when no specific table is in scope - expect(labels).toContain("address") - expect(labels).toContain("block_number") - expect(labels).toContain("hash") - expect(labels).toContain("number") - }) - - test("should filter columns by available tables", async () => { - const model = createAndTrackModel("SELECT address FROM anvil.logs WHERE ") - const position = new monaco.Position(1, 40) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const labels = extractCompletionLabels(result ?? null) - - // Should contain columns from anvil.logs - expect(labels).toContain("address") - expect(labels).toContain("topics") - expect(labels).toContain("data") - expect(labels).toContain("transaction_hash") - }) - - test("should provide column details with data types", async () => { - const model = createAndTrackModel("SELECT ") - const position = new monaco.Position(1, 8) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - const addressCompletion = findCompletionByLabel(result ?? null, "address") - - expect(addressCompletion).toBeDefined() - expect(addressCompletion!.kind).toBe(monaco.languages.CompletionItemKind.Field) - expect(addressCompletion!.detail).toContain("address") - expect(addressCompletion!.detail).toContain("anvil.logs") - expect(addressCompletion!.documentation).toBeDefined() - }) - - test("should support table aliases for column filtering", async () => { - const model = createAndTrackModel("SELECT l. FROM anvil.logs l WHERE ") - const position = new monaco.Position(1, 10) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const labels = extractCompletionLabels(result ?? null) - - // Should contain columns from the aliased table - expect(labels).toContain("address") - expect(labels).toContain("topics") - expect(labels).toContain("data") - }) - }) - - describe("UDF Completions", () => { - test("should provide UDF completions in SELECT clause", async () => { - const model = createAndTrackModel("SELECT ") - const position = new monaco.Position(1, 8) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const labels = extractCompletionLabels(result ?? null) - - // Should contain UDF functions - expect(labels).toContain("evm_decode_log") - expect(labels).toContain("evm_topic") - expect(labels).toContain("attestation_hash") - expect(labels).toContain("{dataset}.eth_call") - }) - - test("should provide UDF snippets with placeholders", async () => { - const model = createAndTrackModel("SELECT evm_") - const position = new monaco.Position(1, 12) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - const evmDecodeCompletion = findCompletionByLabel(result ?? null, "evm_decode_log") - - expect(evmDecodeCompletion).toBeDefined() - expect(evmDecodeCompletion!.kind).toBe(monaco.languages.CompletionItemKind.Function) - expect(evmDecodeCompletion!.insertText).toContain("${1:") - expect(evmDecodeCompletion!.insertTextRules).toBe(monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet) - expect(evmDecodeCompletion!.command?.id).toBe("editor.action.triggerParameterHints") - }) - - test("should provide UDF documentation", async () => { - const model = createAndTrackModel("SELECT evm_") - const position = new monaco.Position(1, 12) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - const evmDecodeCompletion = findCompletionByLabel(result ?? null, "evm_decode_log") - - expect(evmDecodeCompletion).toBeDefined() - expect(evmDecodeCompletion!.documentation).toBeDefined() - - const docValue = typeof evmDecodeCompletion!.documentation === "string" - ? evmDecodeCompletion!.documentation - : evmDecodeCompletion!.documentation!.value - - expect(docValue).toContain("evm_decode_log") - expect(docValue).toContain("Decodes an EVM event log") - }) - - test("should handle empty UDFs gracefully", async () => { - const emptyUDFProvider = new AmpCompletionProvider(mockMetadata, mockUDFsEmpty, analyzer) - const model = createAndTrackModel("SELECT ") - const position = new monaco.Position(1, 8) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await emptyUDFProvider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - // Should not crash and should still provide other completions - const functionCount = countCompletionsByKind(result ?? null, monaco.languages.CompletionItemKind.Function) - expect(functionCount).toBe(0) - }) - }) - - describe("Keyword Completions", () => { - test("should provide contextual keywords after SELECT", async () => { - const model = createAndTrackModel("SELECT * ") - const position = new monaco.Position(1, 10) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const labels = extractCompletionLabels(result ?? null) - - // Should contain contextual keywords for SELECT clause - expect(labels).toContain("FROM") - expect(labels).toContain("WHERE") - expect(labels).toContain("GROUP BY") - expect(labels).toContain("ORDER BY") - }) - - test("should provide contextual keywords after FROM", async () => { - const model = createAndTrackModel("SELECT * FROM anvil.logs ") - const position = new monaco.Position(1, 26) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const labels = extractCompletionLabels(result ?? null) - - // Should contain contextual keywords for FROM clause - expect(labels).toContain("WHERE") - expect(labels).toContain("JOIN") - expect(labels).toContain("LEFT JOIN") - expect(labels).toContain("GROUP BY") - }) - - test("should provide operator completions in WHERE clause", async () => { - const model = createAndTrackModel("SELECT * FROM anvil.logs WHERE address ") - const position = new monaco.Position(1, 40) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const labels = extractCompletionLabels(result ?? null) - - // Should contain operators when they're expected - expect(labels).toContain("=") - expect(labels).toContain("<>") - expect(labels).toContain("LIKE") - }) - - test("should provide ASC/DESC completions after ORDER BY column", async () => { - const model = createAndTrackModel("SELECT * FROM anvil.logs ORDER BY address ") - const position = new monaco.Position(1, 44) // After "address " - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const labels = extractCompletionLabels(result ?? null) - - // Should contain ORDER BY direction keywords - expect(labels).toContain("ASC") - expect(labels).toContain("DESC") - expect(labels).toContain("NULLS FIRST") - expect(labels).toContain("NULLS LAST") - }) - }) - - describe("Context-Aware Filtering", () => { - test("should not provide suggestions inside string literals", async () => { - const model = createAndTrackModel("SELECT * FROM anvil.logs WHERE address = 'cursor here'") - const position = new monaco.Position(1, 50) // Inside string - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - // Should provide limited or no suggestions inside strings - const labels = extractCompletionLabels(result ?? null) - expect(labels.length).toBeLessThan(10) // Significantly fewer suggestions - }) - - test("should not provide suggestions inside comments", async () => { - const model = createAndTrackModel("SELECT * -- cursor in comment") - const position = new monaco.Position(1, 25) // Inside comment - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - // Should provide limited or no suggestions inside comments - const labels = extractCompletionLabels(result ?? null) - expect(labels.length).toBeLessThan(10) // Significantly fewer suggestions - }) - - test("should filter by prefix", async () => { - const model = createAndTrackModel("SELECT addr") - const position = new monaco.Position(1, 12) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const labels = extractCompletionLabels(result ?? null) - - // Should contain items starting with "addr" - expect(labels).toContain("address") - - // Should not contain unrelated items - expect(labels).not.toContain("block_number") - expect(labels).not.toContain("hash") - }) - - test("should respect minPrefixLength configuration", async () => { - const configuredProvider = new AmpCompletionProvider(mockMetadata, mockUDFs, analyzer, { minPrefixLength: 3 }) - - const model = createAndTrackModel("SELECT a") - const position = new monaco.Position(1, 9) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await configuredProvider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - if (result) { - expect(result.suggestions).toHaveLength(0) // Should be empty due to short prefix - } - }) - - test("should respect maxSuggestions configuration", async () => { - const configuredProvider = new AmpCompletionProvider(mockMetadata, mockUDFs, analyzer, { maxSuggestions: 5 }) - - const model = createAndTrackModel("SELECT ") - const position = new monaco.Position(1, 8) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await configuredProvider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - if (result) { - expect(result.suggestions.length).toBeLessThanOrEqual(5) - } - }) - }) - - describe("Completion Ranking and Sorting", () => { - test("should sort completions by type priority", async () => { - const model = createAndTrackModel("SELECT * FROM ") - const position = new monaco.Position(1, 15) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - if (result) { - expect(result.suggestions.length).toBeGreaterThan(0) - - // Check that sort text starts with appropriate priorities - const firstSuggestion = result.suggestions[0] - expect(firstSuggestion.sortText).toMatch(/^[1-5]/) // Priority prefix - } - }) - - test("should preselect first table completion", async () => { - const model = createAndTrackModel("SELECT * FROM ") - const position = new monaco.Position(1, 15) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - if (result) { - const tableCompletions = result.suggestions.filter( - (item) => item.kind === monaco.languages.CompletionItemKind.Class, - ) - - expect(tableCompletions.length).toBeGreaterThan(0) - expect(tableCompletions[0].preselect).toBe(true) - } - }) - }) - - describe("Error Handling and Edge Cases", () => { - test("should handle malformed queries gracefully", async () => { - const model = createAndTrackModel("SELECT FROM ") // Missing column - const position = new monaco.Position(1, 13) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - if (result) { - expect(result.suggestions).toBeDefined() - } - - // Should still provide completions even with malformed SQL - const labels = extractCompletionLabels(result ?? null) - expect(labels.length).toBeGreaterThan(0) - }) - - test("should handle empty query", async () => { - const model = createAndTrackModel("") - const position = new monaco.Position(1, 1) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - if (result) { - expect(result.suggestions).toBeDefined() - } - - // Should provide basic keyword suggestions - const labels = extractCompletionLabels(result ?? null) - expect(labels).toContain("SELECT") - }) - - test("should provide fallback suggestions on analysis failure", async () => { - // Create a provider that will cause analysis to fail - const model = createAndTrackModel("SELECT * FROM anvil.logs") - const position = new monaco.Position(1, 15) - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - // Mock the analyzer to throw an error - const originalAnalyze = analyzer.analyzeContext - analyzer.analyzeContext = () => { - throw new Error("Analysis failed") - } - - try { - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - if (result) { - expect(result.suggestions).toBeDefined() - } - - // Should still provide fallback suggestions - const labels = extractCompletionLabels(result ?? null) - expect(labels.length).toBeGreaterThan(0) - expect(labels).toContain("SELECT") - } finally { - // Restore original analyzer - analyzer.analyzeContext = originalAnalyze - } - }) - - test("should handle cancellation token", async () => { - const model = createAndTrackModel("SELECT * FROM anvil.logs") - const position = new monaco.Position(1, 15) - const context = createMockCompletionContext() - const token = createMockCancellationToken(true) // Cancelled - - const result = await provider.provideCompletionItems(model, position, context, token) - - // Should handle cancelled requests gracefully - expect(result).toBeDefined() - }) - }) - - describe("Range Calculation", () => { - test("should calculate correct replacement range", async () => { - const model = createAndTrackModel("SELECT addr") - const position = new monaco.Position(1, 12) // After "addr" - const context = createMockCompletionContext() - const token = createMockCancellationToken() - - const result = await provider.provideCompletionItems(model, position, context, token) - - expect(result).toBeDefined() - - const addressCompletion = findCompletionByLabel(result ?? null, "address") - expect(addressCompletion).toBeDefined() - - // Should replace the partial word "addr" - const range = addressCompletion!.range as monaco.Range - expect(range.startColumn).toBe(8) // Start of "addr" - expect(range.endColumn).toBe(12) // End of "addr" - expect(range.startLineNumber).toBe(1) - expect(range.endLineNumber).toBe(1) - }) - }) -}) diff --git a/typescript/studio/tests/services/sql/QueryContextAnalyzer.test.ts b/typescript/studio/tests/services/sql/QueryContextAnalyzer.test.ts deleted file mode 100644 index 581069bc8..000000000 --- a/typescript/studio/tests/services/sql/QueryContextAnalyzer.test.ts +++ /dev/null @@ -1,458 +0,0 @@ -/** - * Unit tests for QueryContextAnalyzer - * Tests SQL context analysis, clause detection, and cursor position handling - */ -import { Position } from "monaco-editor" -import { afterEach, beforeEach, describe, expect, test } from "vitest" - -import { QueryContextAnalyzer } from "../../../src/services/sql/QueryContextAnalyzer" - -describe("QueryContextAnalyzer", () => { - let analyzer: QueryContextAnalyzer - - beforeEach(() => { - analyzer = new QueryContextAnalyzer() - }) - - afterEach(() => { - // Clear analyzer cache - analyzer.clearCache() - }) - - // Helper function to create proper mock models (same as tokenizer tests) - const createMockModel = (query: string) => ({ - getValue: () => query, - getOffsetAt: (position: any) => position.column - 1, - getLineContent: (lineNumber: number) => { - const lines = query.split("\n") - return lines[lineNumber - 1] || "" - }, - getWordAtPosition: (position: any) => { - const line = query.split("\n")[position.lineNumber - 1] || "" - const beforeCursor = line.substring(0, position.column - 1) - const match = beforeCursor.match(/(\w+)$/) - if (match) { - const word = match[1] - const startColumn = position.column - word.length - return { - word, - startColumn, - endColumn: position.column, - } - } - return null - }, - }) - - // Helper function to create test positions - const createMockPosition = (lineNumber: number, column: number) => new Position(lineNumber, column) - - describe("Basic Clause Detection", () => { - test("should detect FROM clause context", () => { - const model = createMockModel("SELECT * FROM ") - const position = createMockPosition(1, 15) - - const context = analyzer.analyzeContext(model, position) - - expect(context.currentClause).toBe("FROM") - expect(context.expectsTable).toBe(true) - expect(context.expectsColumn).toBe(false) - }) - - test("should detect SELECT clause context", () => { - const model = createMockModel("SELECT ") - const position = createMockPosition(1, 8) - - const context = analyzer.analyzeContext(model, position) - - expect(context.currentClause).toBe("SELECT") - expect(context.expectsColumn).toBe(true) - expect(context.expectsFunction).toBe(true) - }) - - test("should detect WHERE clause context", () => { - const model = createMockModel("SELECT * FROM anvil.logs WHERE ") - const position = createMockPosition(1, 33) - - const context = analyzer.analyzeContext(model, position) - - expect(context.currentClause).toBe("WHERE") - expect(context.expectsColumn).toBe(true) - expect(context.availableTables).toContain("anvil.logs") - }) - - test("should detect JOIN clause context", () => { - const model = createMockModel("SELECT * FROM anvil.logs LEFT JOIN ") - const position = createMockPosition(1, 37) - - const context = analyzer.analyzeContext(model, position) - - expect(context.currentClause).toBe("JOIN") - expect(context.expectsTable).toBe(true) - }) - - test("should detect GROUP BY clause context", () => { - const model = createMockModel("SELECT COUNT(*) FROM anvil.logs GROUP BY ") - const position = createMockPosition(1, 42) - - const context = analyzer.analyzeContext(model, position) - - expect(context.currentClause).toBe("GROUP_BY") - expect(context.expectsColumn).toBe(true) - }) - - test("should detect ORDER BY clause context", () => { - const model = createMockModel("SELECT * FROM anvil.logs ORDER BY ") - const position = createMockPosition(1, 35) - - const context = analyzer.analyzeContext(model, position) - - expect(context.currentClause).toBe("ORDER_BY") - expect(context.expectsColumn).toBe(true) - }) - }) - - describe("Cursor Position Analysis", () => { - test("should detect cursor inside string literal", () => { - const model = createMockModel("SELECT * FROM users WHERE name = 'test'") - const position = createMockPosition(1, 37) // Inside 'test' - - const context = analyzer.analyzeContext(model, position) - - expect(context.cursorInString).toBe(true) - expect(context.cursorInComment).toBe(false) - }) - - test("should detect cursor inside line comment", () => { - const model = createMockModel("SELECT * FROM users -- comment here") - const position = createMockPosition(1, 35) // In comment - - const context = analyzer.analyzeContext(model, position) - - expect(context.cursorInComment).toBe(true) - expect(context.cursorInString).toBe(false) - }) - - test("should handle cursor outside strings and comments", () => { - const model = createMockModel("SELECT * FROM users WHERE id = 123") - const position = createMockPosition(1, 35) // After '=' - - const context = analyzer.analyzeContext(model, position) - - expect(context.cursorInString).toBe(false) - expect(context.cursorInComment).toBe(false) - expect(context.currentClause).toBe("WHERE") - }) - }) - - describe("Table and Alias Detection", () => { - test("should detect simple table reference", () => { - const model = createMockModel("SELECT * FROM anvil.logs WHERE ") - const position = createMockPosition(1, 32) - - const context = analyzer.analyzeContext(model, position) - - expect(context.availableTables).toContain("anvil.logs") - expect(context.availableTables).toHaveLength(1) - }) - - test("should detect table with alias", () => { - const model = createMockModel("SELECT * FROM anvil.logs l WHERE ") - const position = createMockPosition(1, 34) - - const context = analyzer.analyzeContext(model, position) - - expect(context.availableTables).toContain("anvil.logs") - expect(context.tableAliases.get("l")).toBe("anvil.logs") - }) - - test("should detect multiple tables in JOIN", () => { - const model = createMockModel("SELECT * FROM anvil.logs l JOIN anvil.transactions t ON l.tx_hash = t.hash WHERE ") - const position = createMockPosition(1, 82) - - const context = analyzer.analyzeContext(model, position) - - expect(context.availableTables).toContain("anvil.logs") - expect(context.availableTables).toContain("anvil.transactions") - expect(context.tableAliases.get("l")).toBe("anvil.logs") - expect(context.tableAliases.get("t")).toBe("anvil.transactions") - }) - - test("should detect qualified table names", () => { - const model = createMockModel("SELECT * FROM dataset.table_name WHERE ") - const position = createMockPosition(1, 40) - - const context = analyzer.analyzeContext(model, position) - - expect(context.availableTables).toContain("dataset.table_name") - }) - }) - - describe("Dot Notation Context", () => { - test("should detect column completion after qualified table name", () => { - const model = createMockModel("SELECT anvil.logs.") - const position = createMockPosition(1, 19) // After the dot - - const context = analyzer.analyzeContext(model, position) - - expect(context.expectsColumn).toBe(true) - expect(context.currentClause).toBe("SELECT") - }) - - test("should detect column completion after alias", () => { - const model = createMockModel("SELECT l.* FROM anvil.logs l WHERE l.") - const position = createMockPosition(1, 38) // After 'l.' - - const context = analyzer.analyzeContext(model, position) - - expect(context.expectsColumn).toBe(true) - expect(context.availableTables).toContain("anvil.logs") - }) - }) - - describe("Error Handling and Fallback", () => { - test("should provide fallback context for empty query", () => { - const model = createMockModel("") - const position = createMockPosition(1, 1) - - const context = analyzer.analyzeContext(model, position) - - expect(context.currentClause).toBeNull() - expect(context.availableTables).toHaveLength(0) - expect(context.cursorInString).toBe(false) - expect(context.cursorInComment).toBe(false) - }) - - test("should handle malformed SQL gracefully", () => { - const model = createMockModel("SELECT FROM users") // Missing columns - const position = createMockPosition(1, 13) // After 'FROM ' - - const context = analyzer.analyzeContext(model, position) - - expect(context.currentClause).toBe("FROM") - expect(context.expectsTable).toBe(true) - }) - - test("should handle typos in keywords", () => { - const model = createMockModel("SELCT * FROM users") // Typo in SELECT - const position = createMockPosition(1, 19) - - const context = analyzer.analyzeContext(model, position) - - // Should still work reasonably well - expect(context.availableTables).toContain("users") - }) - - test("should handle cursor beyond text length", () => { - const model = createMockModel("SELECT * FROM users") - const position = createMockPosition(1, 100) // Way beyond end - - const context = analyzer.analyzeContext(model, position) - - expect(context).toBeDefined() - expect(context.availableTables).toContain("users") - }) - }) - - describe("Caching", () => { - test("should cache analysis results", () => { - const model = createMockModel("SELECT * FROM anvil.logs WHERE ") - const position = createMockPosition(1, 32) - - // Initially cache should be empty - expect(analyzer.getCacheStats().contextCache).toBe(0) - - // First call should populate cache - const context1 = analyzer.analyzeContext(model, position) - expect(analyzer.getCacheStats().contextCache).toBe(1) - - // Second call should use cache and return identical result - const context2 = analyzer.analyzeContext(model, position) - expect(analyzer.getCacheStats().contextCache).toBe(1) // Still 1, not 2 - - // Results should be identical - expect(context1).toEqual(context2) - - // Different query should add to cache - const model2 = createMockModel("SELECT * FROM users") - const position2 = createMockPosition(1, 18) - analyzer.analyzeContext(model2, position2) - expect(analyzer.getCacheStats().contextCache).toBe(2) - }) - - test("should clear cache", () => { - const model = createMockModel("SELECT * FROM users") - const position = createMockPosition(1, 8) - - // Populate cache - analyzer.analyzeContext(model, position) - expect(analyzer.getCacheStats().contextCache).toBe(1) - - // Clear cache should empty the cache - analyzer.clearCache() - expect(analyzer.getCacheStats().contextCache).toBe(0) - - // Should not throw on multiple clears - expect(() => analyzer.clearCache()).not.toThrow() - expect(analyzer.getCacheStats().contextCache).toBe(0) - }) - }) - - describe("Comprehensive Test Scenarios", () => { - const testCases = [ - { - name: "Basic table completion after FROM", - query: "SELECT * FROM ", - position: { lineNumber: 1, column: 15 }, - expected: { - currentClause: "FROM", - expectsTable: true, - expectsColumn: false, - }, - }, - { - name: "Column and function completion in SELECT", - query: "SELECT ", - position: { lineNumber: 1, column: 8 }, - expected: { - currentClause: "SELECT", - expectsColumn: true, - expectsFunction: true, - }, - }, - { - name: "Column completion in WHERE clause", - query: "SELECT * FROM anvil.logs WHERE ", - position: { lineNumber: 1, column: 32 }, - expected: { - currentClause: "WHERE", - expectsColumn: true, - expectsFunction: true, - expectsOperator: true, - availableTablesContains: "anvil.logs", - }, - }, - { - name: "Additional column completion after comma in SELECT", - query: "SELECT column1, ", - position: { lineNumber: 1, column: 17 }, - expected: { - currentClause: "SELECT", - expectsColumn: true, - expectsFunction: true, - }, - }, - ] - - test.each(testCases)("should analyze basic query: $name", ({ expected, position, query }) => { - const model = createMockModel(query) - const mockPosition = createMockPosition(position.lineNumber, position.column) - - const context = analyzer.analyzeContext(model, mockPosition) - - expect(context.currentClause).toBe(expected.currentClause) - expect(context.expectsTable).toBe(expected.expectsTable ?? false) - expect(context.expectsColumn).toBe(expected.expectsColumn || false) - expect(context.expectsFunction).toBe(expected.expectsFunction ?? false) - expect(context.expectsOperator).toBe(expected.expectsOperator ?? false) - - if (expected.availableTablesContains) { - expect(context.availableTables).toContain(expected.availableTablesContains) - } - }) - - const qualifiedTestCases = [ - { - name: "Column completion after qualified table with dot", - query: "SELECT * FROM anvil.logs.", - position: { lineNumber: 1, column: 25 }, - expected: { - currentClause: "FROM", - expectsTable: true, - availableTablesContains: "anvil.logs.", - }, - }, - { - name: "Qualified column reference completion", - query: "SELECT anvil.logs. FROM anvil.logs", - position: { lineNumber: 1, column: 19 }, - expected: { - currentClause: "SELECT", - expectsColumn: true, - availableTablesContains: "anvil.logs", - }, - }, - ] - - test.each(qualifiedTestCases)("should analyze qualified query: $name", ({ expected, position, query }) => { - const model = createMockModel(query) - const mockPosition = createMockPosition(position.lineNumber, position.column) - - const context = analyzer.analyzeContext(model, mockPosition) - - expect(context.currentClause).toBe(expected.currentClause) - expect(context.expectsTable).toBe(expected.expectsTable ?? false) - expect(context.expectsColumn).toBe(expected.expectsColumn || false) - - if (expected.availableTablesContains) { - expect(context.availableTables).toContain(expected.availableTablesContains) - } - }) - - const stringCommentTestCases = [ - { - name: "Cursor inside string literal", - query: "SELECT * FROM users WHERE name = 'test string'", - position: { lineNumber: 1, column: 40 }, // Inside string - expected: { - cursorInString: true, - cursorInComment: false, - }, - }, - { - name: "Cursor inside line comment", - query: "SELECT * FROM users -- this is a comment", - position: { lineNumber: 1, column: 35 }, // Inside comment - expected: { - cursorInString: false, - cursorInComment: true, - }, - }, - { - name: "Regular context with prefix", - query: "SELECT * FROM anvil.logs WHERE bl", - position: { lineNumber: 1, column: 35 }, // After 'bl' - expected: { - currentClause: "WHERE", - expectsColumn: true, - expectsFunction: true, - currentPrefix: "bl", - cursorInString: false, - cursorInComment: false, - availableTablesContains: "anvil.logs", - }, - }, - ] - - test.each(stringCommentTestCases)("should analyze string/comment query: $name", ({ expected, position, query }) => { - const model = createMockModel(query) - const mockPosition = createMockPosition(position.lineNumber, position.column) - - const context = analyzer.analyzeContext(model, mockPosition) - - expect(context.cursorInString).toBe(expected.cursorInString || false) - expect(context.cursorInComment).toBe(expected.cursorInComment || false) - - if (!expected.cursorInString && !expected.cursorInComment) { - expect(context.currentClause).toBe(expected.currentClause) - expect(context.expectsColumn).toBe(expected.expectsColumn || false) - expect(context.expectsFunction).toBe(expected.expectsFunction ?? false) - expect(context.currentPrefix).toBe(expected.currentPrefix ?? "") - - if (expected.availableTablesContains) { - expect(context.availableTables).toContain(expected.availableTablesContains) - } - } - }) - }) -}) diff --git a/typescript/studio/tests/services/sql/SqlValidation.test.ts b/typescript/studio/tests/services/sql/SqlValidation.test.ts deleted file mode 100644 index 5b812b783..000000000 --- a/typescript/studio/tests/services/sql/SqlValidation.test.ts +++ /dev/null @@ -1,622 +0,0 @@ -/** - * SQL Validator Test Suite - * - * Comprehensive tests for SQL validation functionality including: - * - Table/column reference validation - * - Syntax validation (parentheses, keywords) - * - Position mapping accuracy - * - Error message quality and suggestions - * - Validation levels (basic, standard, full) - * - Performance and caching - * - * @file SqlValidator.test.ts - */ - -import type { StudioModel } from "@edgeandnode/amp" -import { MarkerSeverity } from "monaco-editor" -import { afterEach, beforeEach, describe, expect, test } from "vitest" - -import { SqlValidation } from "../../../src/services/sql/SqlValidation.ts" -import type { CompletionConfig, UserDefinedFunction } from "../../../src/services/sql/types.ts" -import { mockMetadata } from "./fixtures/mockMetadata.ts" -import { mockUDFs } from "./fixtures/mockUDFs.ts" - -// Use mock data directly - SqlValidator expects DatasetSource format -const testDatasets = [...mockMetadata] as Array -const testUdfs: Array = [...mockUDFs] - -describe("SqlValidator", () => { - let validator: SqlValidation - let config: CompletionConfig - - beforeEach(() => { - config = { - minPrefixLength: 0, - maxSuggestions: 50, - enableSnippets: true, - enableContextFiltering: true, - enableAliasResolution: true, - contextCacheTTL: 30 * 1000, - enableDebugLogging: false, - enableSqlValidation: true, - validationLevel: "full", - enablePartialValidation: true, - } - - validator = new SqlValidation(testDatasets, testUdfs, config) - }) - - afterEach(() => { - validator.dispose() - }) - - describe("Table Validation", () => { - test("should validate valid table references", () => { - const query = "SELECT * FROM anvil.logs" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should detect unknown table names", () => { - const query = "SELECT * FROM unknown_table" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("UNKNOWN_TABLE") - expect(errors[0].message).toContain("unknown_table") - expect(errors[0].severity).toBe(MarkerSeverity.Error) - }) - - test("should suggest similar table names", () => { - const query = "SELECT * FROM anvil.log" // Missing 's' - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("UNKNOWN_TABLE") - expect(errors[0].message).toContain("Did you mean") - expect(errors[0].message).toContain("anvil.logs") - expect(errors[0].data?.suggestion).toBe("anvil.logs") - }) - - test("should handle multiple table references", () => { - const query = ` - SELECT l.*, t.hash - FROM anvil.logs as l - JOIN anvil.transactions as t ON l.transaction_hash = t.hash - ` - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should handle ORDER BY with ASC/DESC keywords", () => { - const query = "SELECT block_number FROM anvil.logs ORDER BY address DESC" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should handle ORDER BY with multiple columns and directions", () => { - const query = "SELECT block_number FROM anvil.logs ORDER BY address ASC, block_number DESC" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should handle ORDER BY with NULLS FIRST/LAST", () => { - const query = "SELECT block_number FROM anvil.logs ORDER BY address DESC NULLS FIRST" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should handle column aliases with AS keyword", () => { - const query = "SELECT block_number AS block_num FROM anvil.logs" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should handle column aliases without AS keyword", () => { - const query = "SELECT block_number block_num FROM anvil.logs" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should handle table aliases with AS keyword", () => { - const query = "SELECT l.block_number FROM anvil.logs AS l" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should handle table aliases without AS keyword", () => { - const query = "SELECT l.block_number FROM anvil.logs l" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should handle complex query with multiple aliases", () => { - const query = ` - SELECT - l.block_number AS block_num, - l.address addr, - t.hash AS tx_hash - FROM anvil.logs AS l - JOIN anvil.transactions t ON l.transaction_hash = t.hash - ` - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should resolve table aliases in qualified column references", () => { - const query = "SELECT c.block_number FROM anvil.logs AS c" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should resolve table aliases without AS keyword in qualified column references", () => { - const query = "SELECT c.block_number FROM anvil.logs c" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should correctly report column not found when using alias with non-existent column", () => { - const query = "SELECT c.block_hash FROM anvil.logs AS c" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("COLUMN_NOT_FOUND") - expect(errors[0].message).toContain("Column 'block_hash' not found in table 'anvil.logs'") - // Should NOT say "Table 'c' not found" - the alias should be resolved - expect(errors[0].message).not.toContain("Table 'c' not found") - }) - - test("should handle subquery aliases without validation errors", () => { - const query = ` - SELECT c.block_hash, c.event - FROM ( - SELECT block_number, address, evm_decode_log(topics, data, 'Count(uint256 count)') as event - FROM anvil.logs - ) AS c - ` - const errors = validator.validateQuery(query) - - // Should not report errors for subquery columns since we can't validate them properly yet - expect(errors).toHaveLength(0) - }) - - test("should detect multiple unknown tables", () => { - const query = ` - SELECT * - FROM unknown_table1 u1 - JOIN unknown_table2 u2 ON u1.id = u2.id - ` - const errors = validator.validateQuery(query) - - const unknownTableErrors = errors.filter((e) => e.code === "UNKNOWN_TABLE") - expect(unknownTableErrors.length).toBeGreaterThanOrEqual(2) - }) - }) - - describe("Column Validation", () => { - test("should validate valid column references", () => { - const query = "SELECT block_number, address FROM anvil.logs" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should detect unknown column names", () => { - const query = "SELECT unknown_column FROM anvil.logs" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("COLUMN_NOT_FOUND") - expect(errors[0].message).toContain("unknown_column") - expect(errors[0].severity).toBe(MarkerSeverity.Error) - }) - - test("should suggest similar column names", () => { - const query = "SELECT block_num FROM anvil.logs" // Should suggest 'block_number' - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("COLUMN_NOT_FOUND") - expect(errors[0].message).toContain("Did you mean") - expect(errors[0].data?.suggestion).toBe("block_number") - }) - - test("should validate qualified column references", () => { - const query = "SELECT anvil.logs.block_number FROM anvil.logs" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should detect ambiguous column references", () => { - const query = ` - SELECT block_number - FROM anvil.logs l - JOIN anvil.transactions t ON l.transaction_hash = t.hash - ` - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("AMBIGUOUS_COLUMN") - expect(errors[0].severity).toBe(MarkerSeverity.Warning) - expect(errors[0].message).toContain("ambiguous") - }) - - test("should list available columns in error messages", () => { - const query = "SELECT invalid_col FROM anvil.logs" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].message).toContain("Available columns:") - expect(errors[0].data?.availableColumns).toEqual(testDatasets[0].metadata_columns.map((col) => col.name)) - }) - }) - - describe("Syntax Validation", () => { - test("should validate balanced parentheses", () => { - const query = "SELECT * FROM anvil.logs WHERE (block_number > 100)" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should detect unmatched opening parentheses", () => { - const query = "SELECT * FROM anvil.logs WHERE (block_number > 100" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("UNMATCHED_OPENING_PAREN") - expect(errors[0].severity).toBe(MarkerSeverity.Error) - }) - - test("should detect unmatched closing parentheses", () => { - const query = "SELECT * FROM anvil.logs WHERE block_number > 100)" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("UNMATCHED_CLOSING_PAREN") - expect(errors[0].severity).toBe(MarkerSeverity.Error) - }) - - test("should handle nested parentheses", () => { - const query = "SELECT * FROM anvil.logs WHERE ((block_number > 100) AND (address IS NOT NULL))" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(0) - }) - - test("should detect missing FROM clause", () => { - const query = "SELECT block_number" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(2) // second error is a COLUMN_NOT_FOUND since FROM table is not defined - expect(errors[0].code).toBe("MISSING_FROM_CLAUSE") - expect(errors[0].severity).toBe(MarkerSeverity.Warning) - }) - }) - - describe("Validation Levels", () => { - test("basic level should only validate syntax", () => { - const basicConfig = { ...config, validationLevel: "basic" as const } - const basicValidator = new SqlValidation(testDatasets, testUdfs, basicConfig) - - const query = "SELECT unknown_column FROM unknown_table WHERE (unclosed_paren" - const errors = basicValidator.validateQuery(query) - - // Should only find syntax errors, not table/column errors - expect(errors.length).toBeGreaterThan(0) - expect(errors.every((e) => e.code?.includes("PAREN") || e.code?.includes("CLAUSE"))).toBe(true) - - basicValidator.dispose() - }) - - test("standard level should validate syntax and tables", () => { - const standardConfig = { ...config, validationLevel: "standard" as const } - const standardValidator = new SqlValidation(testDatasets, testUdfs, standardConfig) - - const query = "SELECT unknown_column FROM unknown_table WHERE (unclosed_paren" - const errors = standardValidator.validateQuery(query) - - // Should find syntax and table errors, but not column errors - const errorCodes = errors.map((e) => e.code) - expect(errorCodes).toContain("UNKNOWN_TABLE") - expect(errorCodes.some((code) => code?.includes("PAREN"))).toBe(true) - expect(errorCodes).not.toContain("COLUMN_NOT_FOUND") - - standardValidator.dispose() - }) - - test("full level should validate everything", () => { - const query = "SELECT unknown_column FROM unknown_table WHERE (unclosed_paren" - const errors = validator.validateQuery(query) // Using full level validator - - // Should find all types of errors - const errorCodes = errors.map((e) => e.code) - expect(errorCodes).toContain("UNKNOWN_TABLE") - expect(errorCodes).toContain("COLUMN_NOT_FOUND") - expect(errorCodes.some((code) => code?.includes("PAREN"))).toBe(true) - }) - - test("should skip validation when disabled", () => { - const disabledConfig = { ...config, enableSqlValidation: false } - const disabledValidator = new SqlValidation(testDatasets, testUdfs, disabledConfig) - - const query = "SELECT unknown_column FROM unknown_table WHERE (unclosed_paren" - const errors = disabledValidator.validateQuery(query) - - expect(errors).toHaveLength(0) - - disabledValidator.dispose() - }) - }) - - describe("Position Mapping", () => { - test("should provide accurate line and column positions", () => { - const query = `SELECT * -FROM unknown_table -WHERE invalid_column = 1` - const errors = validator.validateQuery(query) - - expect(errors.length).toBeGreaterThan(0) - - // Check that positions are reasonable (not just defaults) - for (const error of errors) { - expect(error.startLineNumber).toBeGreaterThan(0) - expect(error.startColumn).toBeGreaterThan(0) - expect(error.endLineNumber).toBeGreaterThanOrEqual(error.startLineNumber) - expect(error.endColumn).toBeGreaterThanOrEqual(error.startColumn) - } - }) - - test("should handle multi-line queries correctly", () => { - const query = ` - SELECT - block_number, - unknown_column - FROM anvil.logs - WHERE (unmatched_paren = 1 - ` - const errors = validator.validateQuery(query) - - expect(errors.length).toBeGreaterThan(0) - - // Verify that line numbers correspond to actual error locations - const columnError = errors.find((e) => e.code === "COLUMN_NOT_FOUND") - const parenError = errors.find((e) => e.code?.includes("PAREN")) - - if (columnError) { - expect(columnError.startLineNumber).toBe(4) // Line with unknown_column - } - - if (parenError) { - expect(parenError.startLineNumber).toBe(6) // Line with unmatched parenthesis - } - }) - }) - - describe("Performance and Caching", () => { - test("should cache validation results", () => { - const query = "SELECT * FROM anvil.logs" - - // First validation - const errors1 = validator.validateQuery(query) - let metrics = validator.getMetrics() - expect(metrics.totalValidations).toBe(1) - expect(metrics.cacheHits).toBe(0) - - // Second validation (should be cached) - const errors2 = validator.validateQuery(query) - metrics = validator.getMetrics() - - // Results should be identical - expect(errors1).toEqual(errors2) - - // Cache metrics should show hit - expect(metrics.totalValidations).toBe(2) - expect(metrics.cacheHits).toBe(1) - - // Third validation (should also be cached) - const errors3 = validator.validateQuery(query) - metrics = validator.getMetrics() - - expect(errors2).toEqual(errors3) - expect(metrics.totalValidations).toBe(3) - expect(metrics.cacheHits).toBe(2) - }) - - test("should clear cache when data is updated", () => { - const query = "SELECT * FROM anvil.logs" - - // Initial validation - validator.validateQuery(query) - let metrics = validator.getMetrics() - expect(metrics.totalValidations).toBe(1) - - // Update data (should clear cache) - validator.updateData(testDatasets, testUdfs) - - // Validate again (should not use cache) - validator.validateQuery(query) - metrics = validator.getMetrics() - expect(metrics.totalValidations).toBe(2) - expect(metrics.cacheHits).toBe(0) - }) - - test("should handle large queries efficiently", () => { - const largeQuery = ` - SELECT - ${testDatasets[0].metadata_columns.map((col) => col.name).join(",\n ")} - FROM anvil.logs - WHERE block_number > 100 - AND transaction_hash IS NOT NULL - AND address IN ('0x123', '0x456', '0x789') - AND topics[1] = '0xabc' - AND data IS NOT NULL - ` - - const startTime = performance.now() - const errors = validator.validateQuery(largeQuery) - const duration = performance.now() - startTime - - expect(errors).toHaveLength(0) - expect(duration).toBeLessThan(500) // Relaxed threshold for CI stability - }) - - test("should demonstrate cache performance benefit", () => { - const complexQuery = ` - SELECT l.block_number, l.address, t.hash - FROM anvil.logs l - JOIN anvil.transactions t ON l.transaction_hash = t.hash - WHERE l.block_number > 100 - ` - - // Validate multiple times and ensure consistent results - const results = [] - const iterations = 5 - - for (let i = 0; i < iterations; i++) { - results.push(validator.validateQuery(complexQuery)) - } - - // All results should be identical - for (let i = 1; i < iterations; i++) { - expect(results[i]).toEqual(results[0]) - } - - // Cache should have been hit for iterations 2-5 - const metrics = validator.getMetrics() - expect(metrics.totalValidations).toBe(iterations) - expect(metrics.cacheHits).toBe(iterations - 1) - }) - }) - - describe("Error Recovery", () => { - test("should handle empty queries gracefully", () => { - const errors = validator.validateQuery("") - expect(errors).toHaveLength(0) - }) - - test("should handle whitespace-only queries", () => { - const errors = validator.validateQuery(" \n\t ") - expect(errors).toHaveLength(0) - }) - - test("should not crash on malformed queries", () => { - const malformedQueries = [ - "SELECT ;;; FROM ###", - "INVALID QUERY WITH !@#$ CHARS", - "SELECT * FROM ); DROP TABLE users; --", - "\\x00\\xFF\\x01 BINARY DATA", - "SELECT * FROM table WHERE column = 'unterminated string", - ] - - for (const query of malformedQueries) { - expect(() => validator.validateQuery(query)).not.toThrow() - const errors = validator.validateQuery(query) - expect(Array.isArray(errors)).toBe(true) - } - }) - }) - - describe("String Similarity", () => { - test("should calculate string similarity correctly", () => { - // Access private method through casting for testing - const calculateSimilarity = (validator as any).calculateStringSimilarity.bind(validator) - - // Exact matches - expect(calculateSimilarity("test", "test")).toBe(1) - - // Complete mismatches - expect(calculateSimilarity("abc", "xyz")).toBeLessThan(0.5) - - // Similar strings - expect(calculateSimilarity("block_number", "block_num")).toBeGreaterThan(0.7) - expect(calculateSimilarity("anvil.logs", "anvil.log")).toBeGreaterThan(0.8) - - // Case insensitive - expect(calculateSimilarity("test", "TEST")).toBeLessThan(1) // Different case - expect(calculateSimilarity("test", "test")).toBe(1) // Same case - }) - }) - - describe("Integration Scenarios", () => { - test("scenario: basic table validation", () => { - const query = "SELECT * FROM users WHERE id = 1" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(2) // second error is COLUMN_NOT_FOUND for id - expect(errors[0].code).toBe("UNKNOWN_TABLE") - expect(errors[0].message).toContain("users") - expect(errors[0].data?.suggestion).toBeDefined() - expect(errors[1].code).toBe("COLUMN_NOT_FOUND") - expect(errors[1].message).toContain("id") - }) - - test("scenario: column validation with qualified names", () => { - const query = "SELECT l.username FROM anvil.logs l" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("COLUMN_NOT_FOUND") - expect(errors[0].message).toContain("username") - expect(errors[0].message).toContain("anvil.logs") - }) - - test("scenario: syntax error with parentheses", () => { - const query = "SELECT * FROM anvil.logs WHERE (block_number > 100" - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("UNMATCHED_OPENING_PAREN") - expect(errors[0].startLineNumber).toBe(1) - }) - - test("scenario: multiple errors in complex query", () => { - const query = ` - SELECT invalid_col, another_bad - FROM fake_table - WHERE (unmatched = 1 - ` - const errors = validator.validateQuery(query) - - expect(errors.length).toBeGreaterThanOrEqual(3) - - const errorCodes = errors.map((e) => e.code) - expect(errorCodes).toContain("UNKNOWN_TABLE") - expect(errorCodes).toContain("COLUMN_NOT_FOUND") - expect(errorCodes.some((code) => code?.includes("PAREN"))).toBe(true) - }) - - test("scenario: join validation with aliases", () => { - const query = ` - SELECT l.*, t.invalid_field - FROM anvil.logs l - JOIN anvil.transactions t ON l.transaction_hash = t.hash - ` - const errors = validator.validateQuery(query) - - expect(errors).toHaveLength(1) - expect(errors[0].code).toBe("COLUMN_NOT_FOUND") - expect(errors[0].message).toContain("invalid_field") - }) - }) -}) - -describe("ValidationCache", () => { - test("should be tested through SqlValidator integration", () => { - // Cache functionality is tested in the Performance and Caching section above - expect(true).toBe(true) - }) -}) diff --git a/typescript/studio/tests/services/sql/UnifiedSQLProvider.manifest.test.ts b/typescript/studio/tests/services/sql/UnifiedSQLProvider.manifest.test.ts deleted file mode 100644 index f210048d6..000000000 --- a/typescript/studio/tests/services/sql/UnifiedSQLProvider.manifest.test.ts +++ /dev/null @@ -1,435 +0,0 @@ -/** - * Integration tests for UnifiedSQLProvider with DatasetManifest support - * Tests manifest initialization and validation - */ - -import type { DatasetManifest } from "@edgeandnode/amp/Model" -import { afterEach, describe, expect, test } from "vitest" - -import { convertManifestToMetadata, mergeMetadataSources } from "../../../src/services/sql/manifestConverter" -import { SqlValidation } from "../../../src/services/sql/SqlValidation" -import { UnifiedSQLProvider } from "../../../src/services/sql/UnifiedSQLProvider" - -import { Model } from "@edgeandnode/amp" -import { mockMetadata, mockUDFs } from "./fixtures" - -describe("UnifiedSQLProvider with DatasetManifest", () => { - let provider: UnifiedSQLProvider | null = null - - afterEach(() => { - provider?.dispose() - provider = null - }) - - describe("Manifest Integration", () => { - test("should initialize with null manifest", () => { - provider = new UnifiedSQLProvider( - mockMetadata, - mockUDFs, - { - validationLevel: "full", - enablePartialValidation: true, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - }, - null, // No manifest - ) - - expect(provider).toBeDefined() - // Provider should initialize successfully without manifest - expect(provider.getValidator()).toBeDefined() - }) - - test("should initialize with a valid manifest", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - blocks: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM anvil.blocks" }, - schema: { - arrow: { - fields: [ - { name: "block_number", type: "UInt64", nullable: false }, - { name: "hash", type: "Utf8", nullable: false }, - { name: "timestamp", type: { Timestamp: ["Nanosecond", null] }, nullable: false }, - ], - }, - }, - }, - }, - functions: {}, - } - - provider = new UnifiedSQLProvider( - mockMetadata, - mockUDFs, - { - validationLevel: "full", - enablePartialValidation: true, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - }, - manifest, - ) - - expect(provider).toBeDefined() - // Provider should initialize successfully with manifest - expect(provider.getValidator()).toBeDefined() - }) - - test("should initialize with manifest containing multiple tables", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - table1: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM source1" }, - schema: { - arrow: { - fields: [{ name: "col1", type: "Int64", nullable: false }], - }, - }, - }, - table2: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM source2" }, - schema: { - arrow: { - fields: [{ name: "col2", type: "Utf8", nullable: false }], - }, - }, - }, - table3: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM source3" }, - schema: { - arrow: { - fields: [{ name: "col3", type: "Float64", nullable: false }], - }, - }, - }, - }, - functions: {}, - } - - provider = new UnifiedSQLProvider( - [], - mockUDFs, - { - validationLevel: "full", - enablePartialValidation: true, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - }, - manifest, - ) - - // Provider should initialize successfully with multiple tables - expect(provider).toBeDefined() - expect(provider.getValidator()).toBeDefined() - }) - - test("should handle manifest with complex Arrow types", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - events: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM logs" }, - schema: { - arrow: { - fields: [ - { name: "timestamp", type: { Timestamp: ["Nanosecond", "UTC"] }, nullable: false }, - { name: "value", type: { Decimal128: [38, 18] }, nullable: false }, - { name: "tags", type: { List: "Utf8" }, nullable: true }, - { name: "data", type: "Binary", nullable: false }, - ], - }, - }, - }, - }, - functions: {}, - } - - // Should not throw when initializing with complex types - provider = new UnifiedSQLProvider( - [], - mockUDFs, - { - validationLevel: "full", - enablePartialValidation: true, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - }, - manifest, - ) - - expect(provider).toBeDefined() - expect(provider.getValidator()).toBeDefined() - }) - - test("should merge raw sources and manifest tables for initialization", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - processed: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM anvil.blocks" }, - schema: { - arrow: { - fields: [{ name: "processed_field", type: "Utf8", nullable: false }], - }, - }, - }, - }, - functions: {}, - } - - provider = new UnifiedSQLProvider( - mockMetadata, - mockUDFs, - { - validationLevel: "full", - enablePartialValidation: true, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - }, - manifest, - ) - - // Should initialize without errors, merging both raw and manifest sources - expect(provider).toBeDefined() - expect(provider.getValidator()).toBeDefined() - }) - - test("should handle empty manifest tables", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: {}, - functions: {}, - } - - provider = new UnifiedSQLProvider( - mockMetadata, - mockUDFs, - { - validationLevel: "full", - enablePartialValidation: true, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - }, - manifest, - ) - - // Should handle empty manifest tables gracefully - expect(provider).toBeDefined() - expect(provider.getValidator()).toBeDefined() - }) - }) - - describe("Validation with Manifests", () => { - test("should get validator instance with manifest", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - users: { - network: Model.Network.make("testnet"), - input: { sql: "SELECT * FROM raw_users" }, - schema: { - arrow: { - fields: [ - { name: "id", type: "UInt64", nullable: false }, - { name: "email", type: "Utf8", nullable: false }, - ], - }, - }, - }, - }, - functions: {}, - } - - provider = new UnifiedSQLProvider( - [], - mockUDFs, - { - validationLevel: "full", - enablePartialValidation: true, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - }, - manifest, - ) - - const validator = provider.getValidator() - expect(validator).toBeDefined() - }) - - test("should validate queries with manifest tables", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - users: { - network: Model.Network.make("testnet"), - input: { sql: "SELECT * FROM raw_users" }, - schema: { - arrow: { - fields: [ - { name: "id", type: "UInt64", nullable: false }, - { name: "email", type: "Utf8", nullable: false }, - ], - }, - }, - }, - }, - functions: {}, - } - - // Convert manifest to metadata and create validator directly - const manifestMetadata = convertManifestToMetadata(manifest) - const mergedMetadata = mergeMetadataSources([], manifestMetadata) - const unifiedSources = mergedMetadata.map((meta) => ({ - source: meta.source, - metadata_columns: meta.columns.map((col) => ({ - name: col.name, - datatype: col.datatype, - })), - })) - - const validator = new SqlValidation(unifiedSources as any, mockUDFs, { - validationLevel: "full", - enablePartialValidation: true, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - enableSnippets: true, - enableContextFiltering: true, - enableAliasResolution: true, - contextCacheTTL: 300000, - enableSqlValidation: true, - }) - - // Valid query - should have no errors - const validErrors = validator.validateQuery("SELECT id, email FROM unknown.users") - expect(validErrors).toHaveLength(0) - - // Invalid column - should have errors - const invalidErrors = validator.validateQuery("SELECT invalid_column FROM unknown.users") - expect(invalidErrors.length).toBeGreaterThan(0) - - validator.dispose() - }) - - test("should validate with validation level off", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - data: { - network: Model.Network.make("testnet"), - input: { sql: "SELECT * FROM source" }, - schema: { - arrow: { - fields: [{ name: "col1", type: "Int64", nullable: false }], - }, - }, - }, - }, - functions: {}, - } - - provider = new UnifiedSQLProvider( - [], - mockUDFs, - { - validationLevel: "off", - enablePartialValidation: false, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - }, - manifest, - ) - - const validator = provider.getValidator() - // Should be null when validation is off - expect(validator).toBeNull() - }) - - test("should validate SELECT * FROM manifest table queries", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - blocks: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM anvil.blocks" }, - schema: { - arrow: { - fields: [ - { name: "block_number", type: "UInt64", nullable: false }, - { name: "hash", type: "Utf8", nullable: false }, - { name: "timestamp", type: { Timestamp: ["Nanosecond", null] }, nullable: false }, - ], - }, - }, - }, - }, - functions: {}, - } - - // Convert manifest to metadata and create validator directly - const manifestMetadata = convertManifestToMetadata(manifest) - const mergedMetadata = mergeMetadataSources([], manifestMetadata) - const unifiedSources = mergedMetadata.map((meta) => ({ - source: meta.source, - metadata_columns: meta.columns.map((col) => ({ - name: col.name, - datatype: col.datatype, - })), - })) - - const validator = new SqlValidation(unifiedSources as any, mockUDFs, { - validationLevel: "full", - enablePartialValidation: true, - enableDebugLogging: false, - minPrefixLength: 0, - maxSuggestions: 50, - enableSnippets: true, - enableContextFiltering: true, - enableAliasResolution: true, - contextCacheTTL: 300000, - enableSqlValidation: true, - }) - - // This is the critical test - validates the exact scenario from the user's request - // Query against manifest table should be valid - const errors = validator.validateQuery("SELECT * FROM unknown.blocks") - expect(errors).toHaveLength(0) - - // Query with specific columns should also be valid - const specificColumnErrors = validator.validateQuery("SELECT block_number, hash FROM unknown.blocks") - expect(specificColumnErrors).toHaveLength(0) - - // Query with invalid table should have errors - const invalidTableErrors = validator.validateQuery("SELECT * FROM unknown.nonexistent") - expect(invalidTableErrors.length).toBeGreaterThan(0) - - validator.dispose() - }) - }) -}) diff --git a/typescript/studio/tests/services/sql/core.test.ts b/typescript/studio/tests/services/sql/core.test.ts deleted file mode 100644 index 106cb0a4d..000000000 --- a/typescript/studio/tests/services/sql/core.test.ts +++ /dev/null @@ -1,167 +0,0 @@ -/** - * Core unit tests for SQL intellisense system without Monaco dependencies - * Tests the basic functionality of types, UDF snippets, and configurations - */ - -import { describe, expect, test } from "vitest" - -import { createUdfSnippet, UdfSnippetGenerator } from "../../../src/services/sql/UDFSnippetGenerator" - -import { mockUDFs } from "./fixtures" - -import { COMPLETION_PRIORITY, DEFAULT_COMPLETION_CONFIG } from "../../../src/services/sql/types" - -describe("SQL Intellisense Core Functionality", () => { - describe("Configuration", () => { - test("should have default completion config", () => { - expect(DEFAULT_COMPLETION_CONFIG).toBeDefined() - expect(DEFAULT_COMPLETION_CONFIG.minPrefixLength).toBe(0) - expect(DEFAULT_COMPLETION_CONFIG.maxSuggestions).toBe(200) - expect(DEFAULT_COMPLETION_CONFIG.enableSnippets).toBe(true) - expect(DEFAULT_COMPLETION_CONFIG.enableContextFiltering).toBe(true) - expect(DEFAULT_COMPLETION_CONFIG.enableAliasResolution).toBe(true) - expect(DEFAULT_COMPLETION_CONFIG.contextCacheTTL).toBe(30000) - expect(DEFAULT_COMPLETION_CONFIG.enableDebugLogging).toBe(false) - }) - - test("should have completion priorities", () => { - expect(COMPLETION_PRIORITY.TABLE).toBe("1") - expect(COMPLETION_PRIORITY.COLUMN).toBe("2") - expect(COMPLETION_PRIORITY.UDF).toBe("3") - expect(COMPLETION_PRIORITY.KEYWORD).toBe("4") - expect(COMPLETION_PRIORITY.OPERATOR).toBe("5") - }) - }) - - describe("UDF Snippet Generator", () => { - let generator: UdfSnippetGenerator - - test("should create UDF snippet generator", () => { - generator = new UdfSnippetGenerator() - expect(generator).toBeInstanceOf(UdfSnippetGenerator) - }) - - test("should generate snippet for evm_decode_log", () => { - generator = new UdfSnippetGenerator() - const udf = mockUDFs.find((u) => u.name === "evm_decode_log")! - - const snippet = generator.createUdfSnippet(udf) - - expect(snippet).toContain("evm_decode_log(") - expect(snippet).toContain("${1:") - expect(snippet).toContain("${2:") - expect(snippet).toContain("$0") // Final tab stop - }) - - test("should generate snippet for evm_topic", () => { - generator = new UdfSnippetGenerator() - const udf = mockUDFs.find((u) => u.name === "evm_topic")! - - const snippet = generator.createUdfSnippet(udf) - - expect(snippet).toContain("evm_topic(") - expect(snippet).toContain("${1:") - expect(snippet).toContain("$0") - }) - - test("should generate snippet for dataset-prefixed UDF", () => { - generator = new UdfSnippetGenerator() - const udf = mockUDFs.find((u) => u.name === "${dataset}.eth_call")! - - const snippet = generator.createUdfSnippet(udf) - - expect(snippet).toContain(".eth_call(") - expect(snippet).toContain("${1:") - expect(snippet).toContain("$0") - }) - - test("should generate snippet for attestation_hash", () => { - generator = new UdfSnippetGenerator() - const udf = mockUDFs.find((u) => u.name === "attestation_hash")! - - const snippet = generator.createUdfSnippet(udf) - - expect(snippet).toContain("attestation_hash(") - expect(snippet).toContain("${1:") - expect(snippet).toContain("$0") - }) - - test("should handle generic UDF with parameters", () => { - generator = new UdfSnippetGenerator() - const udf = mockUDFs.find((u) => u.name === "evm_encode_params")! - - const snippet = generator.createUdfSnippet(udf) - - expect(snippet).toContain("evm_encode_params(") - expect(snippet).toContain("${1:") - expect(snippet).toContain("$0") - }) - - test("should update snippet generator config", () => { - generator = new UdfSnippetGenerator() - - generator.updateConfig({ - includeTypeHints: false, - includeExampleValues: true, - }) - - // Generator should not throw when config is updated - expect(() => { - const udf = mockUDFs[0] - generator.createUdfSnippet(udf) - }).not.toThrow() - }) - }) - - describe("Convenience Functions", () => { - test("should create UDF snippet via convenience function", () => { - const udf = mockUDFs.find((u) => u.name === "evm_topic")! - - const snippet = createUdfSnippet(udf) - - expect(snippet).toContain("evm_topic(") - expect(snippet).toContain("${1:") - expect(snippet).toContain("$0") - }) - }) - - describe("Mock Data Validation", () => { - test("should have valid mock UDF data", () => { - expect(mockUDFs).toBeDefined() - expect(mockUDFs.length).toBe(8) - - // Check each UDF has required properties - mockUDFs.forEach((udf) => { - expect(udf.name).toBeDefined() - expect(typeof udf.name).toBe("string") - expect(udf.description).toBeDefined() - expect(typeof udf.description).toBe("string") - expect(udf.sql).toBeDefined() - expect(typeof udf.sql).toBe("string") - - if (udf.parameters) { - expect(Array.isArray(udf.parameters)).toBe(true) - } - }) - }) - - test("should have expected UDF functions", () => { - const expectedNames = [ - "evm_decode_log", - "evm_topic", - "${dataset}.eth_call", - "attestation_hash", - "evm_decode_params", - "evm_encode_params", - "evm_encode_type", - "evm_decode_type", - ] - - expectedNames.forEach((name) => { - const udf = mockUDFs.find((u) => u.name === name) - expect(udf).toBeDefined() - expect(udf!.name).toBe(name) - }) - }) - }) -}) diff --git a/typescript/studio/tests/services/sql/fixtures/index.ts b/typescript/studio/tests/services/sql/fixtures/index.ts deleted file mode 100644 index 9512816f3..000000000 --- a/typescript/studio/tests/services/sql/fixtures/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Test fixtures exports - * Centralized exports for all SQL intellisense test data and utilities - */ - -// Mock data exports -export * from "./mockMetadata" -export * from "./mockQueries" -export * from "./mockUDFs" -export * from "./testUtils" diff --git a/typescript/studio/tests/services/sql/fixtures/mockMetadata.ts b/typescript/studio/tests/services/sql/fixtures/mockMetadata.ts deleted file mode 100644 index 3e798190c..000000000 --- a/typescript/studio/tests/services/sql/fixtures/mockMetadata.ts +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Mock metadata for testing SQL intellisense features - * Provides realistic test data representing Amp dataset metadata - */ - -import type { StudioModel } from "@edgeandnode/amp" - -export const mockMetadata: ReadonlyArray = [ - { - source: "anvil.logs", - destination: "anvil_logs", - metadata_columns: [ - { name: "address", datatype: "address" }, - { name: "topics", datatype: "Uint32Array" }, - { name: "data", datatype: "bytes" }, - { name: "block_number", datatype: "bigint" }, - { name: "transaction_hash", datatype: "bytes32" }, - { name: "log_index", datatype: "int" }, - { name: "transaction_index", datatype: "int" }, - ], - }, - { - source: "anvil.transactions", - destination: "anvil_transactions", - metadata_columns: [ - { name: "hash", datatype: "bytes32" }, - { name: "from_address", datatype: "address" }, - { name: "to_address", datatype: "address" }, - { name: "value", datatype: "bigint" }, - { name: "gas", datatype: "bigint" }, - { name: "gas_price", datatype: "bigint" }, - { name: "input", datatype: "bytes" }, - { name: "block_number", datatype: "bigint" }, - { name: "transaction_index", datatype: "int" }, - { name: "nonce", datatype: "bigint" }, - ], - }, - { - source: "anvil.blocks", - destination: "anvil_blocks", - metadata_columns: [ - { name: "number", datatype: "bigint" }, - { name: "hash", datatype: "bytes32" }, - { name: "parent_hash", datatype: "bytes32" }, - { name: "nonce", datatype: "bigint" }, - { name: "sha3_uncles", datatype: "bytes32" }, - { name: "logs_bloom", datatype: "bytes" }, - { name: "transactions_root", datatype: "bytes32" }, - { name: "state_root", datatype: "bytes32" }, - { name: "receipts_root", datatype: "bytes32" }, - { name: "miner", datatype: "address" }, - { name: "difficulty", datatype: "bigint" }, - { name: "total_difficulty", datatype: "bigint" }, - { name: "extra_data", datatype: "bytes" }, - { name: "size", datatype: "bigint" }, - { name: "gas_limit", datatype: "bigint" }, - { name: "gas_used", datatype: "bigint" }, - { name: "timestamp", datatype: "bigint" }, - ], - }, -] as const - -/** - * Minimal metadata for testing edge cases with few columns - */ -export const mockMetadataMinimal: ReadonlyArray< - Omit & { source: string; destination: string } -> = [ - { - source: "test.simple" as any, - destination: "test_simple", - metadata_columns: [ - { name: "id", datatype: "int" }, - { name: "name", datatype: "string" }, - ], - }, -] as const - -/** - * Empty metadata for testing graceful degradation - */ -export const mockMetadataEmpty: ReadonlyArray = [] as const - -/** - * Large metadata for performance testing - */ -export const mockMetadataLarge: ReadonlyArray<{ - source: string - destination: string - metadata_columns: Array<{ name: string; datatype: string }> -}> = Array.from({ length: 100 }, (_, i) => ({ - source: `dataset${i}.table${i}`, - destination: `dataset${i}_table${i}`, - metadata_columns: Array.from({ length: 50 }, (__, j) => ({ - name: `column_${j}_${i}`, - datatype: j % 4 === 0 ? "bigint" : j % 4 === 1 ? "string" : j % 4 === 2 ? "address" : "bytes32", - })), -})) - -/** - * Helper function to get metadata by table name - */ -export function getMetadataByTableName( - metadata: ReadonlyArray, - tableName: string, -): StudioModel.DatasetSource | undefined { - return metadata.find((m) => m.source === tableName) -} - -/** - * Helper function to get all column names from a dataset - */ -export function getAllColumnNames(metadata: ReadonlyArray): Array { - return metadata.flatMap((dataset) => dataset.metadata_columns.map((col) => col.name)) -} - -/** - * Helper function to get all table names - */ -export function getAllTableNames(metadata: ReadonlyArray): Array { - return metadata.map((dataset) => dataset.source) -} diff --git a/typescript/studio/tests/services/sql/fixtures/mockQueries.ts b/typescript/studio/tests/services/sql/fixtures/mockQueries.ts deleted file mode 100644 index 277cd998c..000000000 --- a/typescript/studio/tests/services/sql/fixtures/mockQueries.ts +++ /dev/null @@ -1,256 +0,0 @@ -/** - * Mock SQL queries for testing context analysis and completion features - * Covers various SQL patterns and edge cases - */ - -import * as monaco from "monaco-editor" - -export interface TestQuery { - /** The SQL query text */ - query: string - /** Cursor position for testing completions */ - position: monaco.Position - /** Expected context analysis results */ - expectedContext?: { - expectsTable?: boolean - expectsColumn?: boolean - expectsFunction?: boolean - currentClause?: string - cursorInString?: boolean - cursorInComment?: boolean - } - /** Description of what this query tests */ - description: string -} - -/** - * Basic SQL queries for fundamental context analysis - */ -export const basicQueries: Array = [ - { - query: "SELECT * FROM ", - position: new monaco.Position(1, 15), - expectedContext: { - expectsTable: true, - expectsColumn: false, - currentClause: "FROM", - }, - description: "Basic table completion after FROM", - }, - { - query: "SELECT ", - position: new monaco.Position(1, 8), - expectedContext: { - expectsTable: false, - expectsColumn: true, - expectsFunction: true, - currentClause: "SELECT", - }, - description: "Column and function completion in SELECT", - }, - { - query: "SELECT * FROM anvil.logs WHERE ", - position: new monaco.Position(1, 33), - expectedContext: { - expectsColumn: true, - currentClause: "WHERE", - }, - description: "Column completion in WHERE clause", - }, - { - query: "SELECT address, ", - position: new monaco.Position(1, 17), - expectedContext: { - expectsColumn: true, - expectsFunction: true, - currentClause: "SELECT", - }, - description: "Additional column completion after comma", - }, -] - -/** - * Qualified name queries for testing dataset.table parsing - */ -export const qualifiedNameQueries: Array = [ - { - query: "SELECT * FROM anvil.logs.", - position: new monaco.Position(1, 26), - expectedContext: { - expectsColumn: true, - currentClause: "FROM", - }, - description: "Column completion after qualified table name with dot", - }, - { - query: "SELECT anvil.logs.address FROM anvil.logs", - position: new monaco.Position(1, 8), - expectedContext: { - expectsColumn: true, - currentClause: "SELECT", - }, - description: "Qualified column reference completion", - }, -] - -/** - * UDF-related queries for testing function completions - */ -export const udfQueries: Array = [ - { - query: "SELECT evm_", - position: new monaco.Position(1, 12), - expectedContext: { - expectsFunction: true, - currentClause: "SELECT", - }, - description: "UDF completion with evm_ prefix", - }, - { - query: "SELECT evm_decode_log(", - position: new monaco.Position(1, 23), - expectedContext: { - expectsColumn: true, - currentClause: "SELECT", - }, - description: "Parameter completion inside UDF call", - }, - { - query: "SELECT anvil.eth_call(", - position: new monaco.Position(1, 23), - expectedContext: { - expectsColumn: true, - currentClause: "SELECT", - }, - description: "Dataset-specific UDF parameter completion", - }, -] - -/** - * Complex queries with JOINs and aliases - */ -export const complexQueries: Array = [ - { - query: "SELECT l.address FROM anvil.logs l JOIN anvil.transactions t ON l.transaction_hash = t.hash WHERE ", - position: new monaco.Position(1, 101), - expectedContext: { - expectsColumn: true, - currentClause: "WHERE", - }, - description: "Column completion in complex JOIN query with aliases", - }, - { - query: "SELECT * FROM anvil.logs l LEFT JOIN ", - position: new monaco.Position(1, 38), - expectedContext: { - expectsTable: true, - currentClause: "JOIN", - }, - description: "Table completion after LEFT JOIN", - }, -] - -/** - * Queries with string literals and comments - */ -export const stringAndCommentQueries: Array = [ - { - query: "SELECT * FROM anvil.logs WHERE address = '", - position: new monaco.Position(1, 44), - expectedContext: { - cursorInString: true, - currentClause: "WHERE", - }, - description: "Cursor inside string literal", - }, - { - query: "SELECT * -- this is a comment with cursor here ", - position: new monaco.Position(1, 49), - expectedContext: { - cursorInComment: true, - }, - description: "Cursor inside line comment", - }, - { - query: "SELECT * /* cursor in block comment */ FROM anvil.logs", - position: new monaco.Position(1, 25), - expectedContext: { - cursorInComment: true, - }, - description: "Cursor inside block comment", - }, -] - -/** - * Edge case queries for testing error recovery and malformed SQL - */ -export const edgeCaseQueries: Array = [ - { - query: "SELECT FROM ", - position: new monaco.Position(1, 13), - expectedContext: { - expectsTable: true, - currentClause: "FROM", - }, - description: "Malformed query missing columns - should still provide table completion", - }, - { - query: "SELEC * FROM ", - position: new monaco.Position(1, 14), - expectedContext: { - expectsTable: true, - }, - description: "Typo in SELECT keyword - should still provide table completion", - }, - { - query: "", - position: new monaco.Position(1, 1), - expectedContext: { - expectsTable: false, - expectsColumn: false, - expectsFunction: false, - }, - description: "Empty query - should provide basic keyword completions", - }, -] - -/** - * All test queries combined for comprehensive testing - */ -export const allTestQueries = [ - ...basicQueries, - ...qualifiedNameQueries, - ...udfQueries, - ...complexQueries, - ...stringAndCommentQueries, - ...edgeCaseQueries, -] - -/** - * Helper function to create Monaco Position from line/column - */ -export function createPosition(line: number, column: number): monaco.Position { - return new monaco.Position(line, column) -} - -/** - * Helper function to get queries by category - */ -export function getQueriesByCategory(category: string): Array { - switch (category) { - case "basic": - return basicQueries - case "qualified": - return qualifiedNameQueries - case "udf": - return udfQueries - case "complex": - return complexQueries - case "string-comment": - return stringAndCommentQueries - case "edge-case": - return edgeCaseQueries - default: - return allTestQueries - } -} diff --git a/typescript/studio/tests/services/sql/fixtures/mockUDFs.ts b/typescript/studio/tests/services/sql/fixtures/mockUDFs.ts deleted file mode 100644 index c9e4e7236..000000000 --- a/typescript/studio/tests/services/sql/fixtures/mockUDFs.ts +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Mock UDF definitions for testing SQL intellisense features - * Provides all 8 Amp UDF functions with realistic test data - */ - -import type { UserDefinedFunction } from "../../../../src/services/sql/types" - -export const mockUDFs: ReadonlyArray = [ - { - name: "evm_decode_log", - description: - "Decodes an EVM event log. The signature parameter is the Solidity signature of the event. The return type of `evm_decode_log` is the SQL version of the return type specified in the signature.", - sql: "evm_decode_log(topic1, topic2, topic3, data, signature)", - parameters: ["topic1", "topic2", "topic3", "data", "signature"], - example: - "SELECT evm_decode_log(topics[1], topics[2], topics[3], data, 'Transfer(address indexed from, address indexed to, uint256 value)') FROM anvil.logs", - }, - { - name: "evm_topic", - description: - "Returns the topic hash of the event signature. This is the first topic that will show up in the log when the event is emitted. The topic hash is the keccak256 hash of the event signature.", - sql: "evm_topic(signature)", - parameters: ["signature"], - example: - "SELECT * FROM anvil.logs WHERE topics[0] = evm_topic('Transfer(address indexed from, address indexed to, uint256 value)')", - }, - { - name: "${dataset}.eth_call", - description: - "This function executes an `eth_call` JSON-RPC against the provider of the specified EVM-RPC dataset. Returns a tuple of the return value of the call and the error message (if any, or empty string if no error).", - sql: "${dataset}.eth_call(from, to, input_data, block_specification)", - parameters: ["from", "to", "input_data", "block_specification"], - example: - "SELECT anvil.eth_call('0x0000000000000000000000000000000000000000', '0x1234567890123456789012345678901234567890', '0x70a08231', 'latest')", - }, - { - name: "attestation_hash", - description: - "This is an aggregate UDF which takes any number of parameters of any type. Returns a hash over all the input parameters (columns) over all the rows.", - sql: "attestation_hash(column1, column2, ...)", - parameters: ["column1", "column2"], - example: "SELECT attestation_hash(block_number, transaction_hash) FROM anvil.transactions", - }, - { - name: "evm_decode_params", - description: - "Decodes the Ethereum ABI-encoded parameters of a function. All of the function parameters and results must be named. The output of this function will be packed into a struct.", - sql: "evm_decode_params(input_data, signature)", - parameters: ["input_data", "signature"], - example: "SELECT evm_decode_params(input, 'transfer(address to, uint256 amount)') FROM anvil.transactions", - }, - { - name: "evm_encode_params", - description: - "ABI-encodes the given arguments into EVM parameters for the Solidity function corresponding to `signature`. `evm_encode_params` takes the same number of arguments as the Solidity function corresponding to `signature`, plus the last `signature` argument. Returns a binary value.", - sql: "evm_encode_params(arg1, arg2, ..., signature)", - parameters: ["arg1", "arg2", "signature"], - example: - "SELECT evm_encode_params('0x1234567890123456789012345678901234567890', 1000, 'transfer(address to, uint256 amount)')", - }, - { - name: "evm_encode_type", - description: - "Encodes the given value as a Solidity type, corresponding to the type string `type`. Returns a binary value.", - sql: "evm_encode_type(value, type)", - parameters: ["value", "type"], - example: "SELECT evm_encode_type(1000, 'uint256')", - }, - { - name: "evm_decode_type", - description: "Decodes the given Solidity ABI-encoded value into an SQL value.", - sql: "evm_decode_type(data, type)", - parameters: ["data", "type"], - example: "SELECT evm_decode_type(data, 'uint256') FROM anvil.logs WHERE LENGTH(data) = 32", - }, -] as const - -/** - * Minimal UDF set for testing basic functionality - */ -export const mockUDFsMinimal: ReadonlyArray = [ - { - name: "evm_topic", - description: "Returns the topic hash of the event signature.", - sql: "evm_topic(signature)", - parameters: ["signature"], - example: "SELECT evm_topic('Transfer(address,address,uint256)')", - }, -] as const - -/** - * Empty UDF set for testing graceful degradation - */ -export const mockUDFsEmpty: ReadonlyArray = [] as const - -/** - * Helper function to get UDF by name - */ -export function getUDFByName(udfs: ReadonlyArray, name: string): UserDefinedFunction | undefined { - return udfs.find((udf) => udf.name === name) -} - -/** - * Helper function to get all UDF names - */ -export function getAllUDFNames(udfs: ReadonlyArray): Array { - return udfs.map((udf) => udf.name) -} - -/** - * Helper function to filter UDFs by name pattern - */ -export function filterUDFsByPattern( - udfs: ReadonlyArray, - pattern: string, -): ReadonlyArray { - const regex = new RegExp(pattern, "i") - return udfs.filter((udf) => regex.test(udf.name)) -} diff --git a/typescript/studio/tests/services/sql/fixtures/testUtils.ts b/typescript/studio/tests/services/sql/fixtures/testUtils.ts deleted file mode 100644 index 7dd107fbe..000000000 --- a/typescript/studio/tests/services/sql/fixtures/testUtils.ts +++ /dev/null @@ -1,196 +0,0 @@ -/** - * Test utilities for SQL intellisense testing - * Provides helpers for creating Monaco models and testing completion providers - */ -import * as monaco from "monaco-editor" - -/** - * Creates a Monaco editor model for testing - */ -export function createTestModel(content: string, language = "sql"): monaco.editor.ITextModel { - return monaco.editor.createModel(content, language) -} - -/** - * Disposes a Monaco editor model after testing - */ -export function disposeTestModel(model: monaco.editor.ITextModel): void { - model.dispose() -} - -/** - * Creates a Monaco Position for testing - */ -export function createTestPosition(line: number, column: number): monaco.Position { - return new monaco.Position(line, column) -} - -/** - * Creates a Monaco Range for testing - */ -export function createTestRange( - startLine: number, - startColumn: number, - endLine: number, - endColumn: number, -): monaco.Range { - return new monaco.Range(startLine, startColumn, endLine, endColumn) -} - -/** - * Creates a mock completion context for testing - */ -export function createMockCompletionContext( - triggerKind: monaco.languages.CompletionTriggerKind = monaco.languages.CompletionTriggerKind.Invoke, - triggerCharacter?: string | undefined, -): monaco.languages.CompletionContext { - return { - triggerKind, - ...(triggerCharacter ? { triggerCharacter } : {}), - } -} - -/** - * Creates a mock cancellation token for testing - */ -export function createMockCancellationToken(isCancelled = false): monaco.CancellationToken { - return { - isCancellationRequested: isCancelled, - onCancellationRequested: () => ({ dispose: () => {} }), - } -} - -/** - * Creates a test setup with model and position - */ -export interface TestSetup { - model: monaco.editor.ITextModel - position: monaco.Position - cleanup: () => void -} - -export function createTestSetup(query: string, line: number, column: number): TestSetup { - const model = createTestModel(query) - const position = createTestPosition(line, column) - - return { - model, - position, - cleanup: () => disposeTestModel(model), - } -} - -/** - * Helper to extract completion item labels from completion results - */ -export function extractCompletionLabels(completionList: monaco.languages.CompletionList | null): Array { - if (!completionList?.suggestions) { - return [] - } - - return completionList.suggestions.map((item) => (typeof item.label === "string" ? item.label : item.label.label)) -} - -/** - * Helper to find completion item by label - */ -export function findCompletionByLabel( - completionList: monaco.languages.CompletionList | null, - label: string, -): monaco.languages.CompletionItem | undefined { - if (!completionList?.suggestions) { - return undefined - } - - return completionList.suggestions.find((item) => { - const itemLabel = typeof item.label === "string" ? item.label : item.label.label - return itemLabel === label - }) -} - -/** - * Helper to verify completion contains expected items - */ -export function assertCompletionContains( - completionList: monaco.languages.CompletionList | null, - expectedLabels: Array, -): void { - const actualLabels = extractCompletionLabels(completionList) - - for (const expectedLabel of expectedLabels) { - if (!actualLabels.includes(expectedLabel)) { - throw new Error( - `Expected completion to contain "${expectedLabel}". ` + `Actual completions: [${actualLabels.join(", ")}]`, - ) - } - } -} - -/** - * Helper to verify completion does NOT contain certain items - */ -export function assertCompletionDoesNotContain( - completionList: monaco.languages.CompletionList | null, - unexpectedLabels: Array, -): void { - const actualLabels = extractCompletionLabels(completionList) - - for (const unexpectedLabel of unexpectedLabels) { - if (actualLabels.includes(unexpectedLabel)) { - throw new Error( - `Expected completion to NOT contain "${unexpectedLabel}". ` + - `Actual completions: [${actualLabels.join(", ")}]`, - ) - } - } -} - -/** - * Helper to count completion items by kind - */ -export function countCompletionsByKind( - completionList: monaco.languages.CompletionList | null, - kind: monaco.languages.CompletionItemKind, -): number { - if (!completionList?.suggestions) { - return 0 - } - - return completionList.suggestions.filter((item) => item.kind === kind).length -} - -/** - * Performance testing helper - */ -export async function measurePerformance( - operation: () => Promise, - description: string, -): Promise<{ result: T; duration: number }> { - const start = performance.now() - const result = await operation() - const end = performance.now() - const duration = end - start - - console.log(`${description}: ${duration.toFixed(2)}ms`) - - return { result, duration } -} - -/** - * Helper to create multiple test models for batch testing - */ -export function createTestBatch( - queries: Array<{ query: string; position: monaco.Position }>, -): Array<{ model: monaco.editor.ITextModel; position: monaco.Position }> { - return queries.map(({ position, query }) => ({ - model: createTestModel(query), - position, - })) -} - -/** - * Helper to dispose multiple test models - */ -export function disposeTestBatch(batch: Array<{ model: monaco.editor.ITextModel; position: monaco.Position }>): void { - batch.forEach(({ model }) => model.dispose()) -} diff --git a/typescript/studio/tests/services/sql/manifestConverter.test.ts b/typescript/studio/tests/services/sql/manifestConverter.test.ts deleted file mode 100644 index 58a80d09d..000000000 --- a/typescript/studio/tests/services/sql/manifestConverter.test.ts +++ /dev/null @@ -1,326 +0,0 @@ -/** - * Tests for DatasetManifest to Metadata Converter - */ - -import type { DatasetManifest } from "@edgeandnode/amp/Model" -import { describe, expect, it } from "vitest" - -import { Model } from "@edgeandnode/amp" -import { convertManifestToMetadata, mergeMetadataSources } from "../../../src/services/sql/manifestConverter" - -describe("manifestConverter", () => { - describe("convertManifestToMetadata", () => { - it("should convert a simple manifest with one table", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - blocks: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM anvil.blocks" }, - schema: { - arrow: { - fields: [ - { name: "block_number", type: "UInt64", nullable: false }, - { name: "hash", type: "Utf8", nullable: false }, - ], - }, - }, - }, - }, - functions: {}, - } - - const result = convertManifestToMetadata(manifest) - - expect(result).toHaveLength(1) - expect(result[0]).toEqual({ - source: "unknown.blocks", - network: Model.Network.make("mainnet"), - columns: [ - { name: "block_number", datatype: "NUMERIC(20, 0)", nullable: false }, - { name: "hash", datatype: "TEXT", nullable: false }, - ], - }) - }) - - it("should convert a manifest with multiple tables", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - blocks: { - network: Model.Network.make("ethereum"), - input: { sql: "SELECT * FROM anvil.blocks" }, - schema: { - arrow: { - fields: [{ name: "block_number", type: "UInt64", nullable: false }], - }, - }, - }, - transactions: { - network: Model.Network.make("ethereum"), - input: { sql: "SELECT * FROM anvil.transactions" }, - schema: { - arrow: { - fields: [ - { name: "hash", type: "Utf8", nullable: false }, - { name: "value", type: { Decimal128: [38, 18] }, nullable: false }, - ], - }, - }, - }, - }, - functions: {}, - } - - const result = convertManifestToMetadata(manifest) - - expect(result).toHaveLength(2) - expect(result[0]?.source).toBe("unknown.blocks") - expect(result[1]?.source).toBe("unknown.transactions") - }) - - it("should handle nullable and non-nullable columns", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - data: { - network: Model.Network.make("testnet"), - input: { sql: "SELECT * FROM source" }, - schema: { - arrow: { - fields: [ - { name: "required_field", type: "Int64", nullable: false }, - { name: "optional_field", type: "Utf8", nullable: true }, - ], - }, - }, - }, - }, - functions: {}, - } - - const result = convertManifestToMetadata(manifest) - - expect(result[0]?.columns).toEqual([ - { name: "required_field", datatype: "BIGINT", nullable: false }, - { name: "optional_field", datatype: "TEXT", nullable: true }, - ]) - }) - - it("should handle complex Arrow types", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - events: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM logs" }, - schema: { - arrow: { - fields: [ - { name: "timestamp", type: { Timestamp: ["Nanosecond", null] }, nullable: false }, - { name: "amount", type: { Decimal128: [38, 18] }, nullable: false }, - { name: "tags", type: { List: "Utf8" }, nullable: true }, - ], - }, - }, - }, - }, - functions: {}, - } - - const result = convertManifestToMetadata(manifest) - - expect(result[0]?.columns).toEqual([ - { name: "timestamp", datatype: "TIMESTAMP", nullable: false }, - { name: "amount", datatype: "NUMERIC(38, 18)", nullable: false }, - { name: "tags", datatype: "TEXT[]", nullable: true }, - ]) - }) - - it("should handle empty tables object", () => { - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: {}, - functions: {}, - } - - const result = convertManifestToMetadata(manifest) - - expect(result).toHaveLength(0) - }) - }) - - describe("mergeMetadataSources", () => { - it("should merge raw sources with manifest metadata", () => { - const rawSources = [ - { - source: "anvil.blocks", - metadata_columns: [ - { name: "number", datatype: "int64" }, - { name: "hash", datatype: "binary" }, - ], - }, - ] - - const manifestMetadata = [ - { - source: "example.blocks", - network: Model.Network.make("mainnet"), - columns: [ - { name: "block_number", datatype: "NUMERIC(20, 0)", nullable: false }, - { name: "transaction_hash", datatype: "TEXT", nullable: false }, - ], - }, - ] - - const result = mergeMetadataSources(rawSources, manifestMetadata) - - expect(result).toHaveLength(2) - expect(result[0]?.source).toBe("anvil.blocks") - expect(result[1]?.source).toBe("example.blocks") - }) - - it("should handle raw sources with no manifest metadata", () => { - const rawSources = [ - { - source: "anvil.blocks", - metadata_columns: [{ name: "number", datatype: "int64" }], - }, - ] - - const result = mergeMetadataSources(rawSources, []) - - expect(result).toHaveLength(1) - expect(result[0]?.source).toBe("anvil.blocks") - expect(result[0]?.columns[0]?.nullable).toBe(true) // Raw sources default to nullable - }) - - it("should handle empty raw sources with manifest metadata", () => { - const manifestMetadata = [ - { - source: "example.blocks", - network: Model.Network.make("mainnet"), - columns: [{ name: "block_number", datatype: "NUMERIC(20, 0)", nullable: false }], - }, - ] - - const result = mergeMetadataSources([], manifestMetadata) - - expect(result).toHaveLength(1) - expect(result[0]?.source).toBe("example.blocks") - }) - - it("should preserve column metadata from both sources", () => { - const rawSources = [ - { - source: "raw.table", - metadata_columns: [ - { name: "col1", datatype: "text" }, - { name: "col2", datatype: "int64" }, - ], - }, - ] - - const manifestMetadata = [ - { - source: "manifest.table", - network: "testnet", - columns: [ - { name: "col3", datatype: "TIMESTAMP", nullable: false }, - { name: "col4", datatype: "BYTEA", nullable: true }, - ], - }, - ] - - const result = mergeMetadataSources(rawSources, manifestMetadata) - - expect(result[0]?.columns).toHaveLength(2) - expect(result[1]?.columns).toHaveLength(2) - expect(result[0]?.columns[0]?.name).toBe("col1") - expect(result[1]?.columns[0]?.name).toBe("col3") - }) - - it("should handle both empty sources", () => { - const result = mergeMetadataSources([], []) - expect(result).toHaveLength(0) - }) - - it("should convert raw sources with unknown network", () => { - const rawSources = [ - { - source: "anvil.blocks", - metadata_columns: [{ name: "number", datatype: "int64" }], - }, - ] - - const result = mergeMetadataSources(rawSources, []) - - expect(result[0]?.network).toBe("unknown") - }) - }) - - describe("Integration: Full Workflow", () => { - it("should handle a complete workflow from manifest to unified metadata", () => { - // Step 1: Create a realistic manifest - const manifest: DatasetManifest = { - kind: "manifest", - dependencies: {}, - tables: { - swaps: { - network: Model.Network.make("mainnet"), - input: { sql: "SELECT * FROM eth_rpc.logs WHERE topic0 = 'swap'" }, - schema: { - arrow: { - fields: [ - { name: "block_number", type: "UInt64", nullable: false }, - { name: "transaction_hash", type: "Utf8", nullable: false }, - { name: "amount0", type: { Decimal128: [38, 18] }, nullable: false }, - { name: "amount1", type: { Decimal128: [38, 18] }, nullable: false }, - { name: "timestamp", type: { Timestamp: ["Nanosecond", null] }, nullable: false }, - ], - }, - }, - }, - }, - functions: {}, - } - - // Step 2: Convert manifest to metadata - const manifestMetadata = convertManifestToMetadata(manifest) - - // Step 3: Simulate raw sources - const rawSources = [ - { - source: "eth_rpc.blocks", - metadata_columns: [ - { name: "number", datatype: "int64" }, - { name: "hash", datatype: "binary" }, - ], - }, - ] - - // Step 4: Merge both sources - const unified = mergeMetadataSources(rawSources, manifestMetadata) - - // Assertions - expect(unified).toHaveLength(2) - - // Check raw source - expect(unified[0]?.source).toBe("eth_rpc.blocks") - expect(unified[0]?.columns).toHaveLength(2) - - // Check manifest source - expect(unified[1]?.source).toBe("unknown.swaps") - expect(unified[1]?.network).toBe("mainnet") - expect(unified[1]?.columns).toHaveLength(5) - expect(unified[1]?.columns[0]?.name).toBe("block_number") - expect(unified[1]?.columns[0]?.datatype).toBe("NUMERIC(20, 0)") - expect(unified[1]?.columns[0]?.nullable).toBe(false) - }) - }) -}) diff --git a/typescript/studio/tests/services/sql/tokenizer.test.ts b/typescript/studio/tests/services/sql/tokenizer.test.ts deleted file mode 100644 index 81b2ba83a..000000000 --- a/typescript/studio/tests/services/sql/tokenizer.test.ts +++ /dev/null @@ -1,161 +0,0 @@ -/** - * Unit tests for SQL Tokenization via QueryContextAnalyzer - * Tests SQL token recognition and context analysis functionality - */ -import { Position } from "monaco-editor" -import { afterEach, beforeEach, describe, expect, test } from "vitest" - -import { QueryContextAnalyzer } from "../../../src/services/sql/QueryContextAnalyzer" - -describe("SQL Tokenization via Context Analyzer", () => { - let analyzer: QueryContextAnalyzer - - beforeEach(() => { - analyzer = new QueryContextAnalyzer() - }) - - afterEach(() => { - analyzer.clearCache() - }) - - // Helper function to create proper mock models - const createMockModel = (query: string) => ({ - getValue: () => query, - getOffsetAt: (position: Position) => position.column - 1, - getLineContent: (lineNumber: number) => { - const lines = query.split("\n") - return lines[lineNumber - 1] || "" - }, - getWordAtPosition: (position: Position) => { - const line = query.split("\n")[position.lineNumber - 1] || "" - const beforeCursor = line.substring(0, position.column - 1) - const match = beforeCursor.match(/(\w+)$/) - if (match) { - const word = match[1] - const startColumn = position.column - word.length - return { - word, - startColumn, - endColumn: position.column, - } - } - return null - }, - }) - - describe("Basic SQL Recognition", () => { - test("should recognize SELECT keyword context", () => { - const mockModel = createMockModel("SELECT * FROM users") - const mockPosition = new Position(1, 8) // Position after "SELECT " - - const context = analyzer.analyzeContext(mockModel, mockPosition) - - expect(context.currentClause).toBe("SELECT") - expect(context.expectsColumn).toBe(true) - expect(context.expectsFunction).toBe(true) - }) - - test("should recognize FROM keyword context", () => { - const mockModel = createMockModel("SELECT * FROM ") - const mockPosition = new Position(1, 15) // Position after "FROM " - - const context = analyzer.analyzeContext(mockModel, mockPosition) - - expect(context.currentClause).toBe("FROM") - expect(context.expectsTable).toBe(true) - expect(context.expectsColumn).toBe(false) - }) - - test("should recognize WHERE keyword context", () => { - const mockModel = createMockModel("SELECT * FROM users WHERE ") - const mockPosition = new Position(1, 27) // Position after "WHERE " - - const context = analyzer.analyzeContext(mockModel, mockPosition) - - expect(context.currentClause).toBe("WHERE") - expect(context.expectsColumn).toBe(true) - expect(context.expectsFunction).toBe(true) - }) - }) - - describe("String and Comment Detection", () => { - test("should detect cursor in string literal", () => { - const mockModel = createMockModel("SELECT * FROM users WHERE name = 'test'") - const mockPosition = new Position(1, 37) // Position inside string - - const context = analyzer.analyzeContext(mockModel, mockPosition) - - expect(context.cursorInString).toBe(true) - expect(context.cursorInComment).toBe(false) - }) - - test("should detect cursor in line comment", () => { - const mockModel = createMockModel("SELECT * FROM users -- comment here") - const mockPosition = new Position(1, 35) // Position in comment - - const context = analyzer.analyzeContext(mockModel, mockPosition) - - expect(context.cursorInComment).toBe(true) - expect(context.cursorInString).toBe(false) - }) - }) - - describe("Table and Alias Detection", () => { - test("should detect table references", () => { - const mockModel = createMockModel("SELECT * FROM anvil.logs WHERE ") - const mockPosition = new Position(1, 32) // Position after WHERE - - const context = analyzer.analyzeContext(mockModel, mockPosition) - - expect(context.availableTables).toHaveLength(1) - expect(context.availableTables[0]).toBe("anvil.logs") - }) - - test("should detect table aliases", () => { - const mockModel = createMockModel("SELECT * FROM anvil.logs l WHERE ") - const mockPosition = new Position(1, 34) // Position after WHERE - - const context = analyzer.analyzeContext(mockModel, mockPosition) - - expect(context.availableTables).toHaveLength(1) - expect(context.tableAliases.get("l")).toBe("anvil.logs") - }) - }) - - describe("Error Recovery", () => { - test("should handle empty query gracefully", () => { - const mockModel = createMockModel("") - const mockPosition = new Position(1, 1) - - const context = analyzer.analyzeContext(mockModel, mockPosition) - - expect(context.currentClause).toBeNull() - expect(context.availableTables).toHaveLength(0) - expect(context.cursorInString).toBe(false) - expect(context.cursorInComment).toBe(false) - }) - - test("should handle malformed SQL gracefully", () => { - const mockModel = createMockModel("SELECT FROM users") // Missing columns - const mockPosition = new Position(1, 13) // Position after "FROM " - - const context = analyzer.analyzeContext(mockModel, mockPosition) - - expect(context.currentClause).toBe("FROM") - expect(context.expectsTable).toBe(true) - }) - }) - - describe("Caching", () => { - test("should provide cache clearing functionality", () => { - // Create some analysis to populate cache - const mockModel = createMockModel("SELECT * FROM users") - const mockPosition = new Position(1, 8) - - analyzer.analyzeContext(mockModel, mockPosition) - - // Clear cache should not throw - expect(() => analyzer.clearCache()).not.toThrow() - }) - }) -})