From 6ea8b11afcbcb43dd243c72e6d1ec924bf4348e1 Mon Sep 17 00:00:00 2001
From: ink-victor <171172553+ink-victor@users.noreply.github.com>
Date: Wed, 5 Feb 2025 06:13:02 -0500
Subject: [PATCH] feat: build ink web app in ci
---
.dockerignore | 9 +
.env.example | 55 ++
.github/actions/base-setup/action.yaml | 16 +-
.github/actions/image-build-push/action.yaml | 39 ++
.github/workflows/pull_request.yml | 24 +-
.github/workflows/ship.yml | 98 +++
.gitignore | 3 +-
Dockerfile | 33 +
README.md | 2 +
next.config.mjs => next.config.ts | 12 +-
package.json | 11 +-
pnpm-lock.yaml | 629 ++++++++++++++----
sentry.client.config.ts | 5 +-
sentry.edge.config.ts | 5 +-
sentry.server.config.ts | 7 +-
src/actions/submit-your-app.ts | 16 +-
.../dashboard/_components/InkApp.ts | 2 +-
.../_components/FaucetRequestButton.tsx | 31 +-
.../(home)/smart-wallet/utils/constants.ts | 8 +-
src/app/[locale]/layout.tsx | 4 +-
src/app/api/validate-tweet/route.ts | 9 +-
src/app/robots.ts | 4 +-
src/app/sitemap.ts | 6 +-
src/components/BridgeButton.tsx | 8 +-
.../CookieConsent/CookieConsent.tsx | 16 +-
src/components/FaucetButton.tsx | 21 +-
src/components/Providers.tsx | 4 +-
src/contexts/AnalyticsProvider.tsx | 4 +-
src/contexts/RelayProvider.tsx | 4 +-
src/contexts/WalletProvider.tsx | 4 +-
src/env-client.ts | 89 ++-
src/env.ts | 141 +---
src/hooks/useFaucetInfoAndHCaptcha.ts | 15 +-
src/hooks/useForm.ts | 4 +-
src/hooks/useLegacyForm.ts | 4 +-
src/instrumentation.ts | 1 +
src/integrations/braze.ts | 17 +-
src/lib/hcaptcha.ts | 4 +-
38 files changed, 935 insertions(+), 429 deletions(-)
create mode 100644 .dockerignore
create mode 100644 .env.example
create mode 100644 .github/actions/image-build-push/action.yaml
create mode 100644 .github/workflows/ship.yml
create mode 100644 Dockerfile
rename next.config.mjs => next.config.ts (84%)
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..642dc36
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,9 @@
+node_modules
+.next
+.git
+.env*
+!.env.production
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..4288457
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,55 @@
+# Environment
+NEXT_PUBLIC_ENVIRONMENT=
+
+# Sentry
+NEXT_PUBLIC_SENTRY_DSN=
+SENTRY_AUTH_TOKEN=
+
+# GTM
+NEXT_PUBLIC_GTM_ID=
+
+# Braze
+BRAZE_INSTANCE_URL=
+BRAZE_API_KEY=
+BRAZE_GENERAL_WAITLIST_GROUP_ID=
+BRAZE_DEVELOPERS_WAITLIST_GROUP_ID=
+
+# OneTrust
+NEXT_PUBLIC_ONE_TRUST_ID=
+
+# Dune
+NEXT_PUBLIC_DUNE_API_KEY=
+
+# WalletConnect
+NEXT_PUBLIC_WC_PROJECT_ID=
+
+# hCaptcha
+HCAPTCHA_SECRET=
+NEXT_PUBLIC_HCAPTCHA_SITEKEY=
+
+# Segment
+NEXT_PUBLIC_SEGMENT_WRITE_KEY=
+
+# Kraken Connect
+NEXT_PUBLIC_KRAKEN_CLIENT_ID=
+KRAKEN_CLIENT_SECRET=
+
+# App Submission Bot
+INK_APP_SUBMISSION_BOT_GITHUB_APP_ID=
+INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY=
+INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID=
+INK_APP_SUBMISSION_TARGET_ORG=
+INK_APP_SUBMISSION_TARGET_REPO=
+INK_APP_SUBMISSION_TARGET_BRANCH=
+INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL=
+INK_APP_SUBMISSION_SLACK_BOT_TOKEN=
+
+# Smart Account Experiment
+NEXT_PUBLIC_BUNDLER_URL=
+NEXT_PUBLIC_PASSKEY_SERVER_URL=
+NEXT_PUBLIC_PAYMASTER_URL=
+NEXT_PUBLIC_GELATO_BRIDGE_URL=
+NEXT_PUBLIC_FAUCET_API_URL=
+
+# Testnet Faucet Experiment
+MULTIPLIER_JWT_SECRET=
\ No newline at end of file
diff --git a/.github/actions/base-setup/action.yaml b/.github/actions/base-setup/action.yaml
index ce0af58..e775447 100644
--- a/.github/actions/base-setup/action.yaml
+++ b/.github/actions/base-setup/action.yaml
@@ -12,7 +12,19 @@ runs:
uses: actions/setup-node@v4
with:
node-version: "20.x"
+ cache: "pnpm"
- - name: Install dependencies
+ - name: Add pnpm store path to env var
+ id: pnpm-cache
shell: bash
- run: pnpm install --frozen-lockfile
+ run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
+
+ - name: Restore Cache
+ uses: actions/cache@v4
+ with:
+ path: |
+ ${{ steps.pnpm-cache.outputs.STORE_PATH }}
+ **/node_modules
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-store-
diff --git a/.github/actions/image-build-push/action.yaml b/.github/actions/image-build-push/action.yaml
new file mode 100644
index 0000000..00582f4
--- /dev/null
+++ b/.github/actions/image-build-push/action.yaml
@@ -0,0 +1,39 @@
+name: image-build-push
+description: Build and push a Docker image to GitHub Container Registry
+inputs:
+ repository-name:
+ description: The name of the service to build and push
+ required: true
+ dockerfile-path:
+ description: The path to the Dockerfile for the service
+ required: true
+ github-token:
+ description: The GitHub token
+ required: true
+ docker-context:
+ description: The docker context path
+ required: true
+outputs:
+ digest:
+ description: The digest of the built image
+ value: ${{ steps.build.outputs.digest }}
+runs:
+ using: composite
+ steps:
+ - uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446
+ with:
+ registry: ghcr.io
+ username: ${{ github.actor }}
+ password: ${{ inputs.github-token }}
+ - id: metadata
+ uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
+ with:
+ images: ghcr.io/inkonchain/${{ inputs.repository-name }}
+ - id: build
+ uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c
+ with:
+ context: ${{ inputs.docker-context }}
+ file: ${{ inputs.dockerfile-path }}
+ push: true
+ tags: ${{ steps.metadata.outputs.tags }}
+ labels: ${{ steps.metadata.outputs.labels }}
diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
index 6c12c6b..ab14149 100644
--- a/.github/workflows/pull_request.yml
+++ b/.github/workflows/pull_request.yml
@@ -12,14 +12,25 @@ jobs:
with:
node-version: "20.x"
cache: "pnpm"
- - name: Clear pnpm store and modules
- run: |
- rm -rf node_modules || true
- rm -rf ~/.pnpm-store || true
- pnpm store path && pnpm store prune || true
+
- name: Install dependencies
run: pnpm install --frozen-lockfile
+ - name: Add pnpm store path to env var
+ id: pnpm-cache
+ shell: bash
+ run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
+
+ - name: Cache node modules
+ uses: actions/cache@v4
+ with:
+ path: |
+ ${{ steps.pnpm-cache.outputs.STORE_PATH }}
+ **/node_modules
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-store-
+
lint:
needs: install_modules
runs-on: ubuntu-latest
@@ -27,6 +38,9 @@ jobs:
- uses: actions/checkout@v4
- uses: ./.github/actions/base-setup
name: Base Setup
+ - name: Install dependencies
+ shell: bash
+ run: pnpm install --frozen-lockfile
- name: Run linting
run: pnpm run lint
diff --git a/.github/workflows/ship.yml b/.github/workflows/ship.yml
new file mode 100644
index 0000000..220d0ed
--- /dev/null
+++ b/.github/workflows/ship.yml
@@ -0,0 +1,98 @@
+name: ship
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+on:
+ push:
+ branches:
+ - main
+ - main2
+ paths:
+ - .github/workflows/ship.yml
+ - "**"
+jobs:
+ image-build-push:
+ runs-on: ubuntu-latest
+ environment: production
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Generate .env.production file
+ run: |
+ cat << EOF > .env.production
+ # Environment
+ NEXT_PUBLIC_ENVIRONMENT=${{ vars.NEXT_PUBLIC_ENVIRONMENT }}
+
+ # Sentry
+ NEXT_PUBLIC_SENTRY_DSN=${{ secrets.NEXT_PUBLIC_SENTRY_DSN }}
+ SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
+
+ # GTM
+ NEXT_PUBLIC_GTM_ID=${{ secrets.NEXT_PUBLIC_GTM_ID }}
+
+ # Braze
+ BRAZE_INSTANCE_URL=${{ secrets.BRAZE_INSTANCE_URL }}
+ BRAZE_API_KEY=${{ secrets.BRAZE_API_KEY }}
+ BRAZE_GENERAL_WAITLIST_GROUP_ID=${{ secrets.BRAZE_GENERAL_WAITLIST_GROUP_ID }}
+ BRAZE_DEVELOPERS_WAITLIST_GROUP_ID=${{ secrets.BRAZE_DEVELOPERS_WAITLIST_GROUP_ID }}
+
+ # OneTrust
+ NEXT_PUBLIC_ONE_TRUST_ID=${{ secrets.NEXT_PUBLIC_ONE_TRUST_ID }}
+
+ # Dune
+ NEXT_PUBLIC_DUNE_API_KEY=${{ secrets.NEXT_PUBLIC_DUNE_API_KEY }}
+
+ # WalletConnect
+ NEXT_PUBLIC_WC_PROJECT_ID=${{ secrets.NEXT_PUBLIC_WC_PROJECT_ID }}
+
+ # hCaptcha
+ HCAPTCHA_SECRET=${{ secrets.HCAPTCHA_SECRET }}
+ NEXT_PUBLIC_HCAPTCHA_SITEKEY=${{ secrets.NEXT_PUBLIC_HCAPTCHA_SITEKEY }}
+
+ # Segment
+ NEXT_PUBLIC_SEGMENT_WRITE_KEY=${{ secrets.NEXT_PUBLIC_SEGMENT_WRITE_KEY }}
+
+ # Kraken Connect
+ NEXT_PUBLIC_KRAKEN_CLIENT_ID=${{ secrets.NEXT_PUBLIC_KRAKEN_CLIENT_ID }}
+ KRAKEN_CLIENT_SECRET=${{ secrets.KRAKEN_CLIENT_SECRET }}
+
+ # App Submission Bot
+ INK_APP_SUBMISSION_BOT_GITHUB_APP_ID=${{ secrets.INK_APP_SUBMISSION_BOT_GITHUB_APP_ID }}
+ INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY=${{ secrets.INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY }}
+ INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID=${{ secrets.INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID }}
+ INK_APP_SUBMISSION_TARGET_ORG=${{ secrets.INK_APP_SUBMISSION_TARGET_ORG }}
+ INK_APP_SUBMISSION_TARGET_REPO=${{ secrets.INK_APP_SUBMISSION_TARGET_REPO }}
+ INK_APP_SUBMISSION_TARGET_BRANCH=${{ secrets.INK_APP_SUBMISSION_TARGET_BRANCH }}
+ INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL=${{ secrets.INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL }}
+ INK_APP_SUBMISSION_SLACK_BOT_TOKEN=${{ secrets.INK_APP_SUBMISSION_SLACK_BOT_TOKEN }}
+
+ # Smart Account Experiment
+ NEXT_PUBLIC_BUNDLER_URL=${{ secrets.NEXT_PUBLIC_BUNDLER_URL }}
+ NEXT_PUBLIC_PASSKEY_SERVER_URL=${{ secrets.NEXT_PUBLIC_PASSKEY_SERVER_URL }}
+ NEXT_PUBLIC_PAYMASTER_URL=${{ secrets.NEXT_PUBLIC_PAYMASTER_URL }}
+ NEXT_PUBLIC_GELATO_BRIDGE_URL=${{ secrets.NEXT_PUBLIC_GELATO_BRIDGE_URL }}
+ NEXT_PUBLIC_FAUCET_API_URL=${{ secrets.NEXT_PUBLIC_FAUCET_API_URL }}
+
+ # Testnet Faucet Experiment
+ MULTIPLIER_JWT_SECRET=${{ secrets.MULTIPLIER_JWT_SECRET }}
+ EOF
+
+ - id: build-push
+ uses: ./.github/actions/image-build-push
+ with:
+ repository-name: ink-web-app
+ dockerfile-path: ./Dockerfile
+ docker-context: ./
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
+ # https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#create-a-workflow-dispatch-event
+ - name: Trigger deployment
+ if: github.ref == 'refs/heads/main2'
+ run: |
+ curl -L \
+ -X POST \
+ -H "Accept: application/vnd.github+json" \
+ -H "Authorization: Bearer ${{ secrets.VICTOR_PAT_TOKEN }}" \
+ -H "X-GitHub-Api-Version: 2022-11-28" \
+ ${{ secrets.TARGET_REPOSITORY_DISPATCH_URL }} \
+ -d '{"ref": "feat/ink-web-app-eks-app","inputs":{"digest":"${{ steps.build-push.outputs.digest }}"}}'
diff --git a/.gitignore b/.gitignore
index ce4d22a..70c7e42 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,8 +21,7 @@ next-env.d.ts
# Environment and local files
.env*
-.env*.local
-.env.sentry-build-plugin
+!.env.example
# Debug logs
npm-debug.log*
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..e6b0902
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,33 @@
+# Build
+FROM node:20 AS base
+
+WORKDIR /app
+
+RUN npm i -g pnpm@9.12.1
+
+COPY package.json pnpm-lock.yaml ./
+
+RUN pnpm install --frozen-lockfile
+
+COPY . .
+
+RUN pnpm build
+
+# Run
+FROM node:20-alpine3.19 AS release
+
+WORKDIR /app
+
+RUN npm i -g pnpm@9.12.1
+
+RUN addgroup --system --gid 1001 nodejs && \
+ adduser --system --uid 1001 nextjs
+
+COPY --from=base --chown=nextjs:nodejs /app/node_modules ./node_modules
+COPY --from=base --chown=nextjs:nodejs /app/package.json ./package.json
+COPY --from=base --chown=nextjs:nodejs /app/.next ./.next
+COPY --from=base --chown=nextjs:nodejs /app/public ./public
+
+USER nextjs
+
+CMD ["pnpm", "start"]
\ No newline at end of file
diff --git a/README.md b/README.md
index 971c161..acdbaaf 100644
--- a/README.md
+++ b/README.md
@@ -63,3 +63,5 @@ Check out our [Next.js deployment documentation](https://nextjs.org/docs/deploym
# Setup
- Define the env variable `INK_DIRECTORY` in your .bashrc or .zshrc file to the directory where Ink specific .gitconfig is stored
+
+# Deployment
diff --git a/next.config.mjs b/next.config.ts
similarity index 84%
rename from next.config.mjs
rename to next.config.ts
index 1d42b38..b4b6a47 100644
--- a/next.config.mjs
+++ b/next.config.ts
@@ -1,10 +1,12 @@
import { withSentryConfig } from "@sentry/nextjs";
import createNextIntlPlugin from "next-intl/plugin";
+import type { NextConfig } from "next";
+import { env } from "@/env";
+import { clientEnv } from "@/env-client";
const withNextIntl = createNextIntlPlugin();
-/** @type {import('next').NextConfig} */
-const nextConfig = {
+const nextConfig: NextConfig = {
transpilePackages: ["three"],
images: {
unoptimized: true,
@@ -22,12 +24,12 @@ export default withSentryConfig(withNextIntl(nextConfig), {
// https://github.com/getsentry/sentry-webpack-plugin#options
org: "payward-inc",
- project: "ink-web-app",
+ project: "ink-landingpage", // TODO: Create project ink-web-app
// Only print logs for uploading source maps in CI
- silent: !process.env.CI,
+ silent: clientEnv.NEXT_PUBLIC_ENVIRONMENT !== "ci",
- authToken: process.env.SENTRY_AUTH_TOKEN,
+ authToken: env.SENTRY_AUTH_TOKEN,
// For all available options, see:
// https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
diff --git a/package.json b/package.json
index c4d886e..fb4c57d 100644
--- a/package.json
+++ b/package.json
@@ -26,9 +26,11 @@
"@react-three/postprocessing": "2.16.2",
"@reservoir0x/relay-kit-hooks": "1.4.16",
"@reservoir0x/relay-kit-ui": "2.4.0",
+ "@reservoir0x/relay-sdk": "1.5.0",
"@segment/analytics-next": "1.70.0",
"@sentry/nextjs": "8.38.0",
"@slack/web-api": "7.8.0",
+ "@t3-oss/env-nextjs": "0.12.0",
"@tanstack/react-query": "5.60.6",
"@types/react": "19.0.7",
"@types/react-dom": "19.0.3",
@@ -38,9 +40,9 @@
"@zerodev/sdk": "5.4.0-beta.0",
"class-variance-authority": "0.7.1",
"cookies-next": "4.2.1",
- "dompurify": "3.2.3",
"ethers": "6.13.1",
"framer-motion": "12.0.0-alpha.1",
+ "isomorphic-dompurify": "2.21.0",
"jose": "5.9.6",
"leva": "0.9.35",
"lottie-react": "2.4.0",
@@ -61,7 +63,7 @@
"three": "0.165.0",
"viem": "2.22.11",
"wagmi": "2.14.9",
- "zod": "3.23.8"
+ "zod": "3.24.1"
},
"devDependencies": {
"@playwright/test": "1.45.0",
@@ -86,11 +88,8 @@
"tailwindcss": "3.4.4",
"typescript": "5.7.3"
},
- "packageManager": "pnpm@9.15.2",
+ "packageManager": "pnpm@9.12.1",
"pnpm": {
- "patchedDependencies": {
- "@rainbow-me/rainbowkit": "patches/@rainbow-me__rainbowkit.patch"
- },
"overrides": {
"@types/react": "19.0.7",
"@types/react-dom": "19.0.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0941347..67434b4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,11 +10,6 @@ overrides:
react: 19.0.0
react-dom: 19.0.0
-patchedDependencies:
- '@rainbow-me/rainbowkit':
- hash: vshmhxinfwp5z6bhqyx4p6sgem
- path: patches/@rainbow-me__rainbowkit.patch
-
importers:
.:
@@ -27,7 +22,7 @@ importers:
version: 3.9.1(react-hook-form@7.54.1(react@19.0.0))
'@inkonchain/ink-kit':
specifier: 0.5.3
- version: 0.5.3(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.4)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))
+ version: 0.5.3(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.4)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1))
'@next/third-parties':
specifier: 15.1.6
version: 15.1.6(next@15.1.6(@babel/core@7.26.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.77.6))(react@19.0.0)
@@ -39,7 +34,7 @@ importers:
version: 21.0.2
'@rainbow-me/rainbowkit':
specifier: 2.2.3
- version: 2.2.3(patch_hash=vshmhxinfwp5z6bhqyx4p6sgem)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))
+ version: 2.2.3(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1))
'@react-three/drei':
specifier: 9.107.2
version: 9.107.2(@react-three/fiber@9.0.0-rc.0(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(three@0.165.0))(@types/react@19.0.7)(@types/three@0.170.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(three@0.165.0)
@@ -51,10 +46,13 @@ importers:
version: 2.16.2(@react-three/fiber@9.0.0-rc.0(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(three@0.165.0))(@types/three@0.170.0)(react@19.0.0)(three@0.165.0)
'@reservoir0x/relay-kit-hooks':
specifier: 1.4.16
- version: 1.4.16(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
+ version: 1.4.16(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
'@reservoir0x/relay-kit-ui':
specifier: 2.4.0
- version: 2.4.0(@pandacss/dev@0.51.1(typescript@5.7.3))(@radix-ui/colors@3.0.0)(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))
+ version: 2.4.0(@pandacss/dev@0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3))(@radix-ui/colors@3.0.0)(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1))
+ '@reservoir0x/relay-sdk':
+ specifier: 1.5.0
+ version: 1.5.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
'@segment/analytics-next':
specifier: 1.70.0
version: 1.70.0
@@ -64,6 +62,9 @@ importers:
'@slack/web-api':
specifier: 7.8.0
version: 7.8.0
+ '@t3-oss/env-nextjs':
+ specifier: 0.12.0
+ version: 0.12.0(typescript@5.7.3)(zod@3.24.1)
'@tanstack/react-query':
specifier: 5.60.6
version: 5.60.6(react@19.0.0)
@@ -81,25 +82,25 @@ importers:
version: 2.13.3(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)
'@zerodev/passkey-validator':
specifier: 5.5.0-beta.0
- version: 5.5.0-beta.0(@zerodev/sdk@5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)))(@zerodev/webauthn-key@5.4.2(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
+ version: 5.5.0-beta.0(@zerodev/sdk@5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(@zerodev/webauthn-key@5.4.2(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
'@zerodev/sdk':
specifier: 5.4.0-beta.0
- version: 5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
+ version: 5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
class-variance-authority:
specifier: 0.7.1
version: 0.7.1
cookies-next:
specifier: 4.2.1
version: 4.2.1
- dompurify:
- specifier: 3.2.3
- version: 3.2.3
ethers:
specifier: 6.13.1
version: 6.13.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)
framer-motion:
specifier: 12.0.0-alpha.1
version: 12.0.0-alpha.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ isomorphic-dompurify:
+ specifier: 2.21.0
+ version: 2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
jose:
specifier: 5.9.6
version: 5.9.6
@@ -156,13 +157,13 @@ importers:
version: 0.165.0
viem:
specifier: 2.22.11
- version: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ version: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
wagmi:
specifier: 2.14.9
- version: 2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)
+ version: 2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)
zod:
- specifier: 3.23.8
- version: 3.23.8
+ specifier: 3.24.1
+ version: 3.24.1
devDependencies:
'@playwright/test':
specifier: 1.45.0
@@ -172,10 +173,10 @@ importers:
version: 22.12.0
'@typescript-eslint/eslint-plugin':
specifier: 8.14.0
- version: 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
+ version: 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/parser':
specifier: 8.14.0
- version: 8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
+ version: 8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
autoprefixer:
specifier: 10.4.20
version: 10.4.20(postcss@8.5.1)
@@ -187,25 +188,25 @@ importers:
version: 16.4.5
eslint:
specifier: 9.14.0
- version: 9.14.0(jiti@1.21.7)
+ version: 9.14.0(jiti@2.4.2)
eslint-config-next:
specifier: 15.0.3
- version: 15.0.3(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
+ version: 15.0.3(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
eslint-config-prettier:
specifier: 9.1.0
- version: 9.1.0(eslint@9.14.0(jiti@1.21.7))
+ version: 9.1.0(eslint@9.14.0(jiti@2.4.2))
eslint-plugin-import:
specifier: 2.31.0
- version: 2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7))
+ version: 2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2))
eslint-plugin-simple-import-sort:
specifier: 12.1.0
- version: 12.1.0(eslint@9.14.0(jiti@1.21.7))
+ version: 12.1.0(eslint@9.14.0(jiti@2.4.2))
eslint-plugin-svg-jsx:
specifier: 1.2.4
version: 1.2.4
eslint-plugin-unused-imports:
specifier: 4.1.4
- version: 4.1.4(@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7))
+ version: 4.1.4(@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2))
pino-pretty:
specifier: 11.2.1
version: 11.2.1
@@ -244,6 +245,9 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
+ '@asamuzakjp/css-color@2.8.3':
+ resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==}
+
'@babel/code-frame@7.26.2':
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
engines: {node: '>=6.9.0'}
@@ -325,6 +329,34 @@ packages:
'@coinbase/wallet-sdk@4.2.3':
resolution: {integrity: sha512-BcyHZ/Ec84z0emORzqdXDv4P0oV+tV3a0OirfA8Ko1JGBIAVvB+hzLvZzCDvnuZx7MTK+Dd8Y9Tjlo446BpCIg==}
+ '@csstools/color-helpers@5.0.1':
+ resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==}
+ engines: {node: '>=18'}
+
+ '@csstools/css-calc@2.1.1':
+ resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^3.0.4
+ '@csstools/css-tokenizer': ^3.0.3
+
+ '@csstools/css-color-parser@3.0.7':
+ resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-parser-algorithms': ^3.0.4
+ '@csstools/css-tokenizer': ^3.0.3
+
+ '@csstools/css-parser-algorithms@3.0.4':
+ resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@csstools/css-tokenizer': ^3.0.3
+
+ '@csstools/css-tokenizer@3.0.3':
+ resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==}
+ engines: {node: '>=18'}
+
'@csstools/postcss-cascade-layers@4.0.6':
resolution: {integrity: sha512-Xt00qGAQyqAODFiFEJNkTpSUz5VfYqnDLECdlA/Vv17nl/OIV5QfTRHGAXrBGG5YcJyHpJ+GF9gF/RZvOQz4oA==}
engines: {node: ^14 || ^16 || >=18}
@@ -2800,6 +2832,34 @@ packages:
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
+ '@t3-oss/env-core@0.12.0':
+ resolution: {integrity: sha512-lOPj8d9nJJTt81mMuN9GMk8x5veOt7q9m11OSnCBJhwp1QrL/qR+M8Y467ULBSm9SunosryWNbmQQbgoiMgcdw==}
+ peerDependencies:
+ typescript: '>=5.0.0'
+ valibot: ^1.0.0-beta.7 || ^1.0.0
+ zod: ^3.24.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ valibot:
+ optional: true
+ zod:
+ optional: true
+
+ '@t3-oss/env-nextjs@0.12.0':
+ resolution: {integrity: sha512-rFnvYk1049RnNVUPvY8iQ55AuQh1Rr+qZzQBh3t++RttCGK4COpXGNxS4+45afuQq02lu+QAOy/5955aU8hRKw==}
+ peerDependencies:
+ typescript: '>=5.0.0'
+ valibot: ^1.0.0-beta.7 || ^1.0.0
+ zod: ^3.24.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ valibot:
+ optional: true
+ zod:
+ optional: true
+
'@tanstack/query-core@5.60.6':
resolution: {integrity: sha512-tI+k0KyCo1EBJ54vxK1kY24LWj673ujTydCZmzEZKAew4NqZzTaVQJEuaG1qKj2M03kUHN46rchLRd+TxVq/zQ==}
@@ -3246,6 +3306,10 @@ packages:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
+ agent-base@7.1.3:
+ resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==}
+ engines: {node: '>= 14'}
+
ajv-formats@2.1.1:
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
peerDependencies:
@@ -3639,12 +3703,20 @@ packages:
peerDependencies:
postcss: ^8.4.31
+ cssstyle@4.2.1:
+ resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==}
+ engines: {node: '>=18'}
+
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
damerau-levenshtein@1.0.8:
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+ data-urls@5.0.0:
+ resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
+ engines: {node: '>=18'}
+
data-view-buffer@1.0.2:
resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
engines: {node: '>= 0.4'}
@@ -4401,10 +4473,26 @@ packages:
hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
+ html-encoding-sniffer@4.0.0:
+ resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
+ engines: {node: '>=18'}
+
+ http-proxy-agent@7.0.2:
+ resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
+ engines: {node: '>= 14'}
+
https-proxy-agent@5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
+ https-proxy-agent@7.0.6:
+ 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'}
+
idb-keyval@6.2.1:
resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==}
@@ -4538,6 +4626,9 @@ packages:
resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
engines: {node: '>=0.10.0'}
+ is-potential-custom-element-name@1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+
is-promise@2.2.2:
resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
@@ -4601,6 +4692,10 @@ packages:
resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
engines: {node: '>=0.10.0'}
+ isomorphic-dompurify@2.21.0:
+ resolution: {integrity: sha512-IjBG/D6ApEiO6ciXvrzPqbE4xOLbjRTshSWRSeeycQVhvsxf1O9PhA7LoqwMYS0/2PKLNFJRugwsNV5UihtLxQ==}
+ engines: {node: '>=18'}
+
isomorphic-unfetch@3.1.0:
resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==}
@@ -4632,6 +4727,10 @@ packages:
resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
hasBin: true
+ jiti@2.4.2:
+ resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
+ hasBin: true
+
jose@5.9.6:
resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==}
@@ -4650,6 +4749,15 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
+ jsdom@26.0.0:
+ resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ canvas: ^3.0.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+
jsesc@3.1.0:
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
engines: {node: '>=6'}
@@ -5093,6 +5201,9 @@ packages:
resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
engines: {node: '>=0.10.0'}
+ nwsapi@2.2.16:
+ resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==}
+
obj-case@0.2.1:
resolution: {integrity: sha512-PquYBBTy+Y6Ob/O2574XHhDtHJlV1cJHMCgW+rDRc9J5hhmRelJB3k5dTK/3cVmFVtzvAKuENeuLpoyTzMzkOg==}
@@ -5226,6 +5337,9 @@ packages:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
+ parse5@7.2.1:
+ resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==}
+
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
@@ -5727,6 +5841,9 @@ packages:
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
+ rrweb-cssom@0.8.0:
+ resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==}
+
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
@@ -5752,11 +5869,18 @@ packages:
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
engines: {node: '>=10'}
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
sass@1.77.6:
resolution: {integrity: sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==}
engines: {node: '>=14.0.0'}
hasBin: true
+ saxes@6.0.0:
+ resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
+ engines: {node: '>=v12.22.7'}
+
scheduler@0.25.0:
resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
@@ -6019,6 +6143,9 @@ packages:
peerDependencies:
react: 19.0.0
+ symbol-tree@3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+
tabbable@6.2.0:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
@@ -6098,6 +6225,13 @@ packages:
resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==}
engines: {node: '>=12.0.0'}
+ tldts-core@6.1.76:
+ resolution: {integrity: sha512-uzhJ02RaMzgQR3yPoeE65DrcHI6LoM4saUqXOt/b5hmb3+mc4YWpdSeAQqVqRUlQ14q8ZuLRWyBR1ictK1dzzg==}
+
+ tldts@6.1.76:
+ resolution: {integrity: sha512-6U2ti64/nppsDxQs9hw8ephA3nO6nSQvVVfxwRw8wLQPFtLI1cFI1a1eP22g+LUP+1TA2pKKjUTwWB+K2coqmQ==}
+ hasBin: true
+
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -6106,9 +6240,17 @@ packages:
resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
engines: {node: '>=12'}
+ tough-cookie@5.1.0:
+ resolution: {integrity: sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==}
+ engines: {node: '>=16'}
+
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+ tr46@5.0.0:
+ resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
+ engines: {node: '>=18'}
+
troika-three-text@0.49.1:
resolution: {integrity: sha512-lXGWxgjJP9kw4i4Wh+0k0Q/7cRfS6iOME4knKht/KozPu9GcFA9NnNpRvehIhrUawq9B0ZRw+0oiFHgRO+4Wig==}
peerDependencies:
@@ -6405,6 +6547,10 @@ packages:
typescript:
optional: true
+ w3c-xmlserializer@5.0.0:
+ resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
+ engines: {node: '>=18'}
+
wagmi@2.14.9:
resolution: {integrity: sha512-nDJ5hwPaiVpn/8Bi82m5K4BCqDiOSnOV976p/jKXt0svQABGdAxUxej0UgDRoVlrp+NutmejN+SyQKmhV477/A==}
peerDependencies:
@@ -6432,6 +6578,10 @@ packages:
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+ webidl-conversions@7.0.0:
+ resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+
webpack-sources@3.2.3:
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
engines: {node: '>=10.13.0'}
@@ -6449,6 +6599,18 @@ packages:
webpack-cli:
optional: true
+ whatwg-encoding@3.1.1:
+ resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
+ engines: {node: '>=18'}
+
+ whatwg-mimetype@4.0.0:
+ resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
+ engines: {node: '>=18'}
+
+ whatwg-url@14.1.0:
+ resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==}
+ engines: {node: '>=18'}
+
whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
@@ -6535,6 +6697,13 @@ packages:
utf-8-validate:
optional: true
+ xml-name-validator@5.0.0:
+ resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
+ engines: {node: '>=18'}
+
+ xmlchars@2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+
xmlhttprequest-ssl@2.1.2:
resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==}
engines: {node: '>=0.4.0'}
@@ -6566,8 +6735,8 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- zod@3.23.8:
- resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
+ zod@3.24.1:
+ resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==}
zustand@3.7.2:
resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==}
@@ -6624,6 +6793,14 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
+ '@asamuzakjp/css-color@2.8.3':
+ dependencies:
+ '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+ lru-cache: 10.4.3
+
'@babel/code-frame@7.26.2':
dependencies:
'@babel/helper-validator-identifier': 7.25.9
@@ -6758,6 +6935,26 @@ snapshots:
eventemitter3: 5.0.1
preact: 10.25.4
+ '@csstools/color-helpers@5.0.1': {}
+
+ '@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+
+ '@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/color-helpers': 5.0.1
+ '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
+ '@csstools/css-tokenizer': 3.0.3
+
+ '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)':
+ dependencies:
+ '@csstools/css-tokenizer': 3.0.3
+
+ '@csstools/css-tokenizer@3.0.3': {}
+
'@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.49)':
dependencies:
'@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2)
@@ -6848,9 +7045,9 @@ snapshots:
'@esbuild/win32-x64@0.20.2':
optional: true
- '@eslint-community/eslint-utils@4.4.1(eslint@9.14.0(jiti@1.21.7))':
+ '@eslint-community/eslint-utils@4.4.1(eslint@9.14.0(jiti@2.4.2))':
dependencies:
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
@@ -7164,7 +7361,7 @@ snapshots:
'@img/sharp-win32-x64@0.33.5':
optional: true
- '@inkonchain/ink-kit@0.5.3(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.4)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))':
+ '@inkonchain/ink-kit@0.5.3(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.4)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1))':
dependencies:
'@headlessui/react': 2.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@tanstack/react-query': 5.60.6(react@19.0.0)
@@ -7173,8 +7370,8 @@ snapshots:
react-dom: 19.0.0(react@19.0.0)
tailwind-merge: 2.6.0
tailwindcss: 3.4.4
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
- wagmi: 2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
+ wagmi: 2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)
'@isaacs/cliui@8.0.2':
dependencies:
@@ -7940,13 +8137,13 @@ snapshots:
postcss-selector-parser: 6.1.2
ts-pattern: 5.0.8
- '@pandacss/dev@0.51.1(typescript@5.7.3)':
+ '@pandacss/dev@0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)':
dependencies:
'@clack/prompts': 0.7.0
'@pandacss/config': 0.51.1
'@pandacss/logger': 0.51.1
- '@pandacss/node': 0.51.1(typescript@5.7.3)
- '@pandacss/postcss': 0.51.1(typescript@5.7.3)
+ '@pandacss/node': 0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)
+ '@pandacss/postcss': 0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)
'@pandacss/preset-panda': 0.51.1
'@pandacss/shared': 0.51.1
'@pandacss/token-dictionary': 0.51.1
@@ -7956,10 +8153,10 @@ snapshots:
- jsdom
- typescript
- '@pandacss/extractor@0.51.1(typescript@5.7.3)':
+ '@pandacss/extractor@0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)':
dependencies:
'@pandacss/shared': 0.51.1
- ts-evaluator: 1.2.0(typescript@5.7.3)
+ ts-evaluator: 1.2.0(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)
ts-morph: 24.0.0
transitivePeerDependencies:
- jsdom
@@ -7986,13 +8183,13 @@ snapshots:
'@pandacss/types': 0.51.1
kleur: 4.1.5
- '@pandacss/node@0.51.1(typescript@5.7.3)':
+ '@pandacss/node@0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)':
dependencies:
'@pandacss/config': 0.51.1
'@pandacss/core': 0.51.1
'@pandacss/generator': 0.51.1
'@pandacss/logger': 0.51.1
- '@pandacss/parser': 0.51.1(typescript@5.7.3)
+ '@pandacss/parser': 0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)
'@pandacss/reporter': 0.51.1
'@pandacss/shared': 0.51.1
'@pandacss/token-dictionary': 0.51.1
@@ -8019,11 +8216,11 @@ snapshots:
- jsdom
- typescript
- '@pandacss/parser@0.51.1(typescript@5.7.3)':
+ '@pandacss/parser@0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)':
dependencies:
'@pandacss/config': 0.51.1
'@pandacss/core': 0.51.1
- '@pandacss/extractor': 0.51.1(typescript@5.7.3)
+ '@pandacss/extractor': 0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)
'@pandacss/logger': 0.51.1
'@pandacss/shared': 0.51.1
'@pandacss/types': 0.51.1
@@ -8035,9 +8232,9 @@ snapshots:
- jsdom
- typescript
- '@pandacss/postcss@0.51.1(typescript@5.7.3)':
+ '@pandacss/postcss@0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)':
dependencies:
- '@pandacss/node': 0.51.1(typescript@5.7.3)
+ '@pandacss/node': 0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)
postcss: 8.4.49
transitivePeerDependencies:
- jsdom
@@ -8455,7 +8652,7 @@ snapshots:
'@radix-ui/rect@1.1.0': {}
- '@rainbow-me/rainbowkit@2.2.3(patch_hash=vshmhxinfwp5z6bhqyx4p6sgem)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))':
+ '@rainbow-me/rainbowkit@2.2.3(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1))':
dependencies:
'@tanstack/react-query': 5.60.6(react@19.0.0)
'@vanilla-extract/css': 1.15.5
@@ -8467,8 +8664,8 @@ snapshots:
react-dom: 19.0.0(react@19.0.0)
react-remove-scroll: 2.6.2(@types/react@19.0.7)(react@19.0.0)
ua-parser-js: 1.0.40
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
- wagmi: 2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
+ wagmi: 2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)
transitivePeerDependencies:
- '@types/react'
- babel-plugin-macros
@@ -8622,33 +8819,33 @@ snapshots:
'@reservoir0x/relay-design-system@0.0.2': {}
- '@reservoir0x/relay-kit-hooks@1.4.16(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))':
+ '@reservoir0x/relay-kit-hooks@1.4.16(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))':
dependencies:
- '@reservoir0x/relay-sdk': 1.4.10(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
+ '@reservoir0x/relay-sdk': 1.4.10(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
'@tanstack/react-query': 5.60.6(react@19.0.0)
'@types/react': 19.0.7
'@types/react-dom': 19.0.3(@types/react@19.0.7)
axios: 1.7.9
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
transitivePeerDependencies:
- debug
- '@reservoir0x/relay-kit-hooks@1.5.0(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))':
+ '@reservoir0x/relay-kit-hooks@1.5.0(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))':
dependencies:
- '@reservoir0x/relay-sdk': 1.5.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
+ '@reservoir0x/relay-sdk': 1.5.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
'@tanstack/react-query': 5.60.6(react@19.0.0)
'@types/react': 19.0.7
'@types/react-dom': 19.0.3(@types/react@19.0.7)
axios: 1.7.9
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
transitivePeerDependencies:
- debug
- '@reservoir0x/relay-kit-ui@2.4.0(@pandacss/dev@0.51.1(typescript@5.7.3))(@radix-ui/colors@3.0.0)(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8))':
+ '@reservoir0x/relay-kit-ui@2.4.0(@pandacss/dev@0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3))(@radix-ui/colors@3.0.0)(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1))':
dependencies:
'@fortawesome/fontawesome-svg-core': 6.7.2
'@fortawesome/free-solid-svg-icons': 6.7.2
@@ -8661,8 +8858,8 @@ snapshots:
'@radix-ui/react-toggle-group': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@radix-ui/react-tooltip': 1.1.7(@types/react-dom@19.0.3(@types/react@19.0.7))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@reservoir0x/relay-design-system': 0.0.2
- '@reservoir0x/relay-kit-hooks': 1.5.0(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
- '@reservoir0x/relay-sdk': 1.5.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
+ '@reservoir0x/relay-kit-hooks': 1.5.0(@tanstack/react-query@5.60.6(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
+ '@reservoir0x/relay-sdk': 1.5.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
'@tanstack/react-query': 5.60.6(react@19.0.0)
'@types/react': 19.0.7
'@types/react-dom': 19.0.3(@types/react@19.0.7)
@@ -8670,30 +8867,30 @@ snapshots:
dayjs: 1.11.13
framer-motion: 11.18.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
fuse.js: 7.0.0
- pandacss-preset-radix-colors: 0.2.0(@pandacss/dev@0.51.1(typescript@5.7.3))(@radix-ui/colors@3.0.0)
+ pandacss-preset-radix-colors: 0.2.0(@pandacss/dev@0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3))(@radix-ui/colors@3.0.0)
qrcode.react: 4.2.0(react@19.0.0)
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
usehooks-ts: 3.1.0(react@19.0.0)
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
- wagmi: 2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
+ wagmi: 2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)
transitivePeerDependencies:
- '@emotion/is-prop-valid'
- '@pandacss/dev'
- '@radix-ui/colors'
- debug
- '@reservoir0x/relay-sdk@1.4.10(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))':
+ '@reservoir0x/relay-sdk@1.4.10(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))':
dependencies:
axios: 1.7.9
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
transitivePeerDependencies:
- debug
- '@reservoir0x/relay-sdk@1.5.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))':
+ '@reservoir0x/relay-sdk@1.5.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))':
dependencies:
axios: 1.7.9
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
transitivePeerDependencies:
- debug
@@ -8720,9 +8917,9 @@ snapshots:
'@rushstack/eslint-patch@1.10.5': {}
- '@safe-global/safe-apps-provider@0.18.5(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)':
+ '@safe-global/safe-apps-provider@0.18.5(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)':
dependencies:
- '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
events: 3.3.0
transitivePeerDependencies:
- bufferutil
@@ -8730,10 +8927,10 @@ snapshots:
- utf-8-validate
- zod
- '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)':
+ '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)':
dependencies:
'@safe-global/safe-gateway-typescript-sdk': 3.22.9
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
transitivePeerDependencies:
- bufferutil
- typescript
@@ -9774,6 +9971,18 @@ snapshots:
dependencies:
tslib: 2.8.1
+ '@t3-oss/env-core@0.12.0(typescript@5.7.3)(zod@3.24.1)':
+ optionalDependencies:
+ typescript: 5.7.3
+ zod: 3.24.1
+
+ '@t3-oss/env-nextjs@0.12.0(typescript@5.7.3)(zod@3.24.1)':
+ dependencies:
+ '@t3-oss/env-core': 0.12.0(typescript@5.7.3)(zod@3.24.1)
+ optionalDependencies:
+ typescript: 5.7.3
+ zod: 3.24.1
+
'@tanstack/query-core@5.60.6': {}
'@tanstack/react-query@5.60.6(react@19.0.0)':
@@ -9888,15 +10097,15 @@ snapshots:
'@types/webxr@0.5.21': {}
- '@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)':
+ '@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
+ '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/scope-manager': 8.14.0
- '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
- '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
+ '@typescript-eslint/type-utils': 8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
+ '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 8.14.0
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
@@ -9906,14 +10115,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)':
+ '@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.14.0
'@typescript-eslint/types': 8.14.0
'@typescript-eslint/typescript-estree': 8.14.0(typescript@5.7.3)
'@typescript-eslint/visitor-keys': 8.14.0
debug: 4.4.0
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
optionalDependencies:
typescript: 5.7.3
transitivePeerDependencies:
@@ -9924,10 +10133,10 @@ snapshots:
'@typescript-eslint/types': 8.14.0
'@typescript-eslint/visitor-keys': 8.14.0
- '@typescript-eslint/type-utils@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)':
+ '@typescript-eslint/type-utils@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
'@typescript-eslint/typescript-estree': 8.14.0(typescript@5.7.3)
- '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
+ '@typescript-eslint/utils': 8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
debug: 4.4.0
ts-api-utils: 1.4.3(typescript@5.7.3)
optionalDependencies:
@@ -9953,13 +10162,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)':
+ '@typescript-eslint/utils@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0(jiti@1.21.7))
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0(jiti@2.4.2))
'@typescript-eslint/scope-manager': 8.14.0
'@typescript-eslint/types': 8.14.0
'@typescript-eslint/typescript-estree': 8.14.0(typescript@5.7.3)
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
transitivePeerDependencies:
- supports-color
- typescript
@@ -10035,16 +10244,16 @@ snapshots:
'@vue/shared@3.4.19': {}
- '@wagmi/connectors@5.7.5(@types/react@19.0.7)(@wagmi/core@2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)':
+ '@wagmi/connectors@5.7.5(@types/react@19.0.7)(@wagmi/core@2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)':
dependencies:
'@coinbase/wallet-sdk': 4.2.3
'@metamask/sdk': 0.31.5(bufferutil@4.0.9)(utf-8-validate@5.0.10)
- '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
- '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
- '@wagmi/core': 2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
+ '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
+ '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
+ '@wagmi/core': 2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
'@walletconnect/ethereum-provider': 2.17.0(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)
cbw-sdk: '@coinbase/wallet-sdk@3.9.3'
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
optionalDependencies:
typescript: 5.7.3
transitivePeerDependencies:
@@ -10074,11 +10283,11 @@ snapshots:
- utf-8-validate
- zod
- '@wagmi/core@2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))':
+ '@wagmi/core@2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))':
dependencies:
eventemitter3: 5.0.1
mipd: 0.0.7(typescript@5.7.3)
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
zustand: 5.0.0(@types/react@19.0.7)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0))
optionalDependencies:
'@tanstack/query-core': 5.60.6
@@ -10756,30 +10965,30 @@ snapshots:
'@xtuc/long@4.2.2': {}
- '@zerodev/passkey-validator@5.5.0-beta.0(@zerodev/sdk@5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)))(@zerodev/webauthn-key@5.4.2(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))':
+ '@zerodev/passkey-validator@5.5.0-beta.0(@zerodev/sdk@5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(@zerodev/webauthn-key@5.4.2(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))':
dependencies:
'@noble/curves': 1.8.1
'@simplewebauthn/browser': 8.3.7
- '@zerodev/sdk': 5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
- '@zerodev/webauthn-key': 5.4.2(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ '@zerodev/sdk': 5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
+ '@zerodev/webauthn-key': 5.4.2(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
- '@zerodev/sdk@5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))':
+ '@zerodev/sdk@5.4.0-beta.0(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))':
dependencies:
semver: 7.7.0
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
- '@zerodev/webauthn-key@5.4.2(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))':
+ '@zerodev/webauthn-key@5.4.2(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))':
dependencies:
'@noble/curves': 1.8.1
'@simplewebauthn/browser': 8.3.7
'@simplewebauthn/types': 12.0.0
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
- abitype@1.0.7(typescript@5.7.3)(zod@3.23.8):
+ abitype@1.0.7(typescript@5.7.3)(zod@3.24.1):
optionalDependencies:
typescript: 5.7.3
- zod: 3.23.8
+ zod: 3.24.1
abort-controller@3.0.0:
dependencies:
@@ -10803,6 +11012,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ agent-base@7.1.3: {}
+
ajv-formats@2.1.1(ajv@8.17.1):
optionalDependencies:
ajv: 8.17.1
@@ -11205,10 +11416,20 @@ snapshots:
dependencies:
postcss: 8.4.49
+ cssstyle@4.2.1:
+ dependencies:
+ '@asamuzakjp/css-color': 2.8.3
+ rrweb-cssom: 0.8.0
+
csstype@3.1.3: {}
damerau-levenshtein@1.0.8: {}
+ data-urls@5.0.0:
+ dependencies:
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.1.0
+
data-view-buffer@1.0.2:
dependencies:
call-bound: 1.0.3
@@ -11516,19 +11737,19 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@15.0.3(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3):
+ eslint-config-next@15.0.3(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3):
dependencies:
'@next/eslint-plugin-next': 15.0.3
'@rushstack/eslint-patch': 1.10.5
- '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
- '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
- eslint: 9.14.0(jiti@1.21.7)
+ '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
+ '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
+ eslint: 9.14.0(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7))
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7))
- eslint-plugin-jsx-a11y: 6.10.2(eslint@9.14.0(jiti@1.21.7))
- eslint-plugin-react: 7.37.4(eslint@9.14.0(jiti@1.21.7))
- eslint-plugin-react-hooks: 5.1.0(eslint@9.14.0(jiti@1.21.7))
+ eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2))
+ eslint-plugin-jsx-a11y: 6.10.2(eslint@9.14.0(jiti@2.4.2))
+ eslint-plugin-react: 7.37.4(eslint@9.14.0(jiti@2.4.2))
+ eslint-plugin-react-hooks: 5.1.0(eslint@9.14.0(jiti@2.4.2))
optionalDependencies:
typescript: 5.7.3
transitivePeerDependencies:
@@ -11536,9 +11757,9 @@ snapshots:
- eslint-plugin-import-x
- supports-color
- eslint-config-prettier@9.1.0(eslint@9.14.0(jiti@1.21.7)):
+ eslint-config-prettier@9.1.0(eslint@9.14.0(jiti@2.4.2)):
dependencies:
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
eslint-import-resolver-node@0.3.9:
dependencies:
@@ -11548,34 +11769,34 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7)):
+ eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.0
enhanced-resolve: 5.18.0
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
fast-glob: 3.3.3
get-tsconfig: 4.10.0
is-bun-module: 1.3.0
is-glob: 4.0.3
stable-hash: 0.0.4
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2))
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7)):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
- eslint: 9.14.0(jiti@1.21.7)
+ '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
+ eslint: 9.14.0(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7))
+ eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2))
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7)):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -11584,9 +11805,9 @@ snapshots:
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7)))(eslint@9.14.0(jiti@1.21.7))
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2)))(eslint@9.14.0(jiti@2.4.2))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -11598,13 +11819,13 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
+ '@typescript-eslint/parser': 8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-jsx-a11y@6.10.2(eslint@9.14.0(jiti@1.21.7)):
+ eslint-plugin-jsx-a11y@6.10.2(eslint@9.14.0(jiti@2.4.2)):
dependencies:
aria-query: 5.3.2
array-includes: 3.1.8
@@ -11614,7 +11835,7 @@ snapshots:
axobject-query: 4.1.0
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
hasown: 2.0.2
jsx-ast-utils: 3.3.5
language-tags: 1.0.9
@@ -11623,11 +11844,11 @@ snapshots:
safe-regex-test: 1.1.0
string.prototype.includes: 2.0.1
- eslint-plugin-react-hooks@5.1.0(eslint@9.14.0(jiti@1.21.7)):
+ eslint-plugin-react-hooks@5.1.0(eslint@9.14.0(jiti@2.4.2)):
dependencies:
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
- eslint-plugin-react@7.37.4(eslint@9.14.0(jiti@1.21.7)):
+ eslint-plugin-react@7.37.4(eslint@9.14.0(jiti@2.4.2)):
dependencies:
array-includes: 3.1.8
array.prototype.findlast: 1.2.5
@@ -11635,7 +11856,7 @@ snapshots:
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
es-iterator-helpers: 1.2.1
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
estraverse: 5.3.0
hasown: 2.0.2
jsx-ast-utils: 3.3.5
@@ -11649,17 +11870,17 @@ snapshots:
string.prototype.matchall: 4.0.12
string.prototype.repeat: 1.0.0
- eslint-plugin-simple-import-sort@12.1.0(eslint@9.14.0(jiti@1.21.7)):
+ eslint-plugin-simple-import-sort@12.1.0(eslint@9.14.0(jiti@2.4.2)):
dependencies:
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
eslint-plugin-svg-jsx@1.2.4: {}
- eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7)):
+ eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2)):
dependencies:
- eslint: 9.14.0(jiti@1.21.7)
+ eslint: 9.14.0(jiti@2.4.2)
optionalDependencies:
- '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.14.0(jiti@1.21.7))(typescript@5.7.3)
+ '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3)
eslint-scope@5.1.1:
dependencies:
@@ -11675,9 +11896,9 @@ snapshots:
eslint-visitor-keys@4.2.0: {}
- eslint@9.14.0(jiti@1.21.7):
+ eslint@9.14.0(jiti@2.4.2):
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0(jiti@1.21.7))
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0(jiti@2.4.2))
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.18.0
'@eslint/core': 0.7.0
@@ -11713,7 +11934,7 @@ snapshots:
optionator: 0.9.4
text-table: 0.2.0
optionalDependencies:
- jiti: 1.21.7
+ jiti: 2.4.2
transitivePeerDependencies:
- supports-color
@@ -12100,6 +12321,17 @@ snapshots:
hookable@5.5.3: {}
+ html-encoding-sniffer@4.0.0:
+ dependencies:
+ whatwg-encoding: 3.1.1
+
+ http-proxy-agent@7.0.2:
+ dependencies:
+ agent-base: 7.1.3
+ debug: 4.4.0
+ transitivePeerDependencies:
+ - supports-color
+
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
@@ -12107,6 +12339,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ https-proxy-agent@7.0.6:
+ dependencies:
+ agent-base: 7.1.3
+ debug: 4.4.0
+ transitivePeerDependencies:
+ - supports-color
+
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+
idb-keyval@6.2.1: {}
ieee754@1.2.1: {}
@@ -12243,6 +12486,8 @@ snapshots:
dependencies:
isobject: 3.0.1
+ is-potential-custom-element-name@1.0.1: {}
+
is-promise@2.2.2: {}
is-reference@1.2.1:
@@ -12300,6 +12545,16 @@ snapshots:
isobject@3.0.1: {}
+ isomorphic-dompurify@2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10):
+ dependencies:
+ dompurify: 3.2.3
+ jsdom: 26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - utf-8-validate
+
isomorphic-unfetch@3.1.0:
dependencies:
node-fetch: 2.7.0
@@ -12343,6 +12598,9 @@ snapshots:
jiti@1.21.7: {}
+ jiti@2.4.2:
+ optional: true
+
jose@5.9.6: {}
joycon@3.1.1: {}
@@ -12355,6 +12613,34 @@ snapshots:
dependencies:
argparse: 2.0.1
+ jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10):
+ dependencies:
+ cssstyle: 4.2.1
+ data-urls: 5.0.0
+ decimal.js: 10.5.0
+ form-data: 4.0.1
+ html-encoding-sniffer: 4.0.0
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.16
+ parse5: 7.2.1
+ rrweb-cssom: 0.8.0
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 5.1.0
+ w3c-xmlserializer: 5.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 3.1.1
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.1.0
+ ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
+ xml-name-validator: 5.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
jsesc@3.1.0: {}
json-buffer@3.0.1: {}
@@ -12757,6 +13043,8 @@ snapshots:
normalize-range@0.1.2: {}
+ nwsapi@2.2.16: {}
+
obj-case@0.2.1: {}
obj-multiplex@1.0.0:
@@ -12843,14 +13131,14 @@ snapshots:
object-keys: 1.1.1
safe-push-apply: 1.0.0
- ox@0.6.5(typescript@5.7.3)(zod@3.23.8):
+ ox@0.6.5(typescript@5.7.3)(zod@3.24.1):
dependencies:
'@adraffy/ens-normalize': 1.11.0
'@noble/curves': 1.7.0
'@noble/hashes': 1.6.1
'@scure/bip32': 1.6.0
'@scure/bip39': 1.5.0
- abitype: 1.0.7(typescript@5.7.3)(zod@3.23.8)
+ abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1)
eventemitter3: 5.0.1
optionalDependencies:
typescript: 5.7.3
@@ -12895,15 +13183,19 @@ snapshots:
package-manager-detector@0.1.0: {}
- pandacss-preset-radix-colors@0.2.0(@pandacss/dev@0.51.1(typescript@5.7.3))(@radix-ui/colors@3.0.0):
+ pandacss-preset-radix-colors@0.2.0(@pandacss/dev@0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3))(@radix-ui/colors@3.0.0):
dependencies:
- '@pandacss/dev': 0.51.1(typescript@5.7.3)
+ '@pandacss/dev': 0.51.1(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3)
'@radix-ui/colors': 3.0.0
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
+ parse5@7.2.1:
+ dependencies:
+ entities: 4.5.0
+
path-browserify@1.0.1: {}
path-exists@4.0.0: {}
@@ -13394,6 +13686,8 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ rrweb-cssom@0.8.0: {}
+
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
@@ -13423,12 +13717,18 @@ snapshots:
safe-stable-stringify@2.5.0: {}
+ safer-buffer@2.1.2: {}
+
sass@1.77.6:
dependencies:
chokidar: 3.6.0
immutable: 4.3.7
source-map-js: 1.2.1
+ saxes@6.0.0:
+ dependencies:
+ xmlchars: 2.2.0
+
scheduler@0.25.0: {}
scheduler@0.25.0-rc.0: {}
@@ -13776,6 +14076,8 @@ snapshots:
dependencies:
react: 19.0.0
+ symbol-tree@3.2.4: {}
+
tabbable@6.2.0: {}
table@6.9.0:
@@ -13876,14 +14178,28 @@ snapshots:
fdir: 6.4.3(picomatch@4.0.2)
picomatch: 4.0.2
+ tldts-core@6.1.76: {}
+
+ tldts@6.1.76:
+ dependencies:
+ tldts-core: 6.1.76
+
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
toad-cache@3.7.0: {}
+ tough-cookie@5.1.0:
+ dependencies:
+ tldts: 6.1.76
+
tr46@0.0.3: {}
+ tr46@5.0.0:
+ dependencies:
+ punycode: 2.3.1
+
troika-three-text@0.49.1(three@0.165.0):
dependencies:
bidi-js: 1.0.3
@@ -13902,12 +14218,14 @@ snapshots:
dependencies:
typescript: 5.7.3
- ts-evaluator@1.2.0(typescript@5.7.3):
+ ts-evaluator@1.2.0(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.7.3):
dependencies:
ansi-colors: 4.1.3
crosspath: 2.0.0
object-path: 0.11.8
typescript: 5.7.3
+ optionalDependencies:
+ jsdom: 26.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
ts-interface-checker@0.1.13: {}
@@ -14125,15 +14443,15 @@ snapshots:
'@types/react': 19.0.7
react: 19.0.0
- viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8):
+ viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1):
dependencies:
'@noble/curves': 1.7.0
'@noble/hashes': 1.6.1
'@scure/bip32': 1.6.0
'@scure/bip39': 1.5.0
- abitype: 1.0.7(typescript@5.7.3)(zod@3.23.8)
+ abitype: 1.0.7(typescript@5.7.3)(zod@3.24.1)
isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
- ox: 0.6.5(typescript@5.7.3)(zod@3.23.8)
+ ox: 0.6.5(typescript@5.7.3)(zod@3.24.1)
ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
optionalDependencies:
typescript: 5.7.3
@@ -14142,14 +14460,18 @@ snapshots:
- utf-8-validate
- zod
- wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8):
+ w3c-xmlserializer@5.0.0:
+ dependencies:
+ xml-name-validator: 5.0.0
+
+ wagmi@2.14.9(@tanstack/query-core@5.60.6)(@tanstack/react-query@5.60.6(react@19.0.0))(@types/react@19.0.7)(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1):
dependencies:
'@tanstack/react-query': 5.60.6(react@19.0.0)
- '@wagmi/connectors': 5.7.5(@types/react@19.0.7)(@wagmi/core@2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)))(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8)
- '@wagmi/core': 2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8))
+ '@wagmi/connectors': 5.7.5(@types/react@19.0.7)(@wagmi/core@2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)))(bufferutil@4.0.9)(react@19.0.0)(typescript@5.7.3)(utf-8-validate@5.0.10)(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))(zod@3.24.1)
+ '@wagmi/core': 2.16.3(@tanstack/query-core@5.60.6)(@types/react@19.0.7)(react@19.0.0)(typescript@5.7.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1))
react: 19.0.0
use-sync-external-store: 1.4.0(react@19.0.0)
- viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.23.8)
+ viem: 2.22.11(bufferutil@4.0.9)(typescript@5.7.3)(utf-8-validate@5.0.10)(zod@3.24.1)
optionalDependencies:
typescript: 5.7.3
transitivePeerDependencies:
@@ -14193,6 +14515,8 @@ snapshots:
webidl-conversions@3.0.1: {}
+ webidl-conversions@7.0.0: {}
+
webpack-sources@3.2.3: {}
webpack-virtual-modules@0.5.0: {}
@@ -14227,6 +14551,17 @@ snapshots:
- esbuild
- uglify-js
+ whatwg-encoding@3.1.1:
+ dependencies:
+ iconv-lite: 0.6.3
+
+ whatwg-mimetype@4.0.0: {}
+
+ whatwg-url@14.1.0:
+ dependencies:
+ tr46: 5.0.0
+ webidl-conversions: 7.0.0
+
whatwg-url@5.0.0:
dependencies:
tr46: 0.0.3
@@ -14317,6 +14652,10 @@ snapshots:
bufferutil: 4.0.9
utf-8-validate: 5.0.10
+ xml-name-validator@5.0.0: {}
+
+ xmlchars@2.2.0: {}
+
xmlhttprequest-ssl@2.1.2: {}
xtend@4.0.2: {}
@@ -14348,7 +14687,7 @@ snapshots:
yocto-queue@0.1.0: {}
- zod@3.23.8: {}
+ zod@3.24.1: {}
zustand@3.7.2(react@19.0.0):
optionalDependencies:
diff --git a/sentry.client.config.ts b/sentry.client.config.ts
index f65a3cb..d1347f3 100644
--- a/sentry.client.config.ts
+++ b/sentry.client.config.ts
@@ -5,6 +5,7 @@
import * as Sentry from "@sentry/nextjs";
import Consent, { ConsentType } from "@/integrations/consent";
+import { clientEnv } from "@/env-client";
const integrations = [
Sentry.replayIntegration({
@@ -24,8 +25,8 @@ const integrations = [
Consent.on(ConsentType.CONSENT, () => {
Sentry.init({
- dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
- enabled: process.env.NEXT_PUBLIC_ENVIRONMENT !== "ci",
+ dsn: clientEnv.NEXT_PUBLIC_SENTRY_DSN,
+ enabled: clientEnv.NEXT_PUBLIC_ENVIRONMENT !== "ci",
// Adjust this value in production, or use tracesSampler for greater control
tracesSampleRate: 0.05,
diff --git a/sentry.edge.config.ts b/sentry.edge.config.ts
index 6880625..88e603f 100644
--- a/sentry.edge.config.ts
+++ b/sentry.edge.config.ts
@@ -3,11 +3,12 @@
// Note that this config is unrelated to the Vercel Edge Runtime and is also required when running locally.
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
+import { clientEnv } from "@/env-client";
import * as Sentry from "@sentry/nextjs";
Sentry.init({
- dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
- enabled: process.env.NEXT_PUBLIC_ENVIRONMENT !== "ci",
+ dsn: clientEnv.NEXT_PUBLIC_SENTRY_DSN,
+ enabled: clientEnv.NEXT_PUBLIC_ENVIRONMENT !== "ci",
// Adjust this value in production, or use tracesSampler for greater control
tracesSampleRate: 0.05,
diff --git a/sentry.server.config.ts b/sentry.server.config.ts
index aae6669..606e8e3 100644
--- a/sentry.server.config.ts
+++ b/sentry.server.config.ts
@@ -2,11 +2,12 @@
// The config you add here will be used whenever the server handles a request.
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
+import { clientEnv } from "@/env-client";
import * as Sentry from "@sentry/nextjs";
Sentry.init({
- dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
- enabled: process.env.NEXT_PUBLIC_ENVIRONMENT !== "ci",
+ dsn: clientEnv.NEXT_PUBLIC_SENTRY_DSN,
+ enabled: clientEnv.NEXT_PUBLIC_ENVIRONMENT !== "ci",
// Adjust this value in production, or use tracesSampler for greater control
tracesSampleRate: 0.05,
@@ -15,5 +16,5 @@ Sentry.init({
debug: false,
// Uncomment the line below to enable Spotlight (https://spotlightjs.com)
- // spotlight: process.env.NODE_ENV === 'development',
+ // spotlight: env.NODE_ENV === 'development',
});
diff --git a/src/actions/submit-your-app.ts b/src/actions/submit-your-app.ts
index be95d8c..8d5941b 100644
--- a/src/actions/submit-your-app.ts
+++ b/src/actions/submit-your-app.ts
@@ -6,7 +6,15 @@ import { WebClient } from "@slack/web-api";
import sharp from "sharp";
import { InkApp } from "@/app/[locale]/(dashboard)/dashboard/_components/InkApp";
+import { env } from "@/env";
+import { validateCaptcha } from "@/lib/hcaptcha";
import {
+ AppSubmissionFormData,
+ appSubmissionSchema,
+} from "@/schemas/app-submission-schema";
+import { isSquareAspectRatio } from "@/util/validation";
+
+const {
INK_APP_SUBMISSION_BOT_GITHUB_APP_ID,
INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID,
INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY,
@@ -15,13 +23,7 @@ import {
INK_APP_SUBMISSION_TARGET_BRANCH,
INK_APP_SUBMISSION_TARGET_ORG,
INK_APP_SUBMISSION_TARGET_REPO,
-} from "@/env";
-import { validateCaptcha } from "@/lib/hcaptcha";
-import {
- AppSubmissionFormData,
- appSubmissionSchema,
-} from "@/schemas/app-submission-schema";
-import { isSquareAspectRatio } from "@/util/validation";
+} = env;
const octokit = new Octokit({
authStrategy: createAppAuth,
diff --git a/src/app/[locale]/(dashboard)/dashboard/_components/InkApp.ts b/src/app/[locale]/(dashboard)/dashboard/_components/InkApp.ts
index 0d29441..12b76f8 100644
--- a/src/app/[locale]/(dashboard)/dashboard/_components/InkApp.ts
+++ b/src/app/[locale]/(dashboard)/dashboard/_components/InkApp.ts
@@ -1,4 +1,4 @@
-import DOMPurify from "dompurify";
+import DOMPurify from "isomorphic-dompurify";
import appsData from "./apps-data.json";
diff --git a/src/app/[locale]/(home)/faucet/_components/FaucetRequestButton.tsx b/src/app/[locale]/(home)/faucet/_components/FaucetRequestButton.tsx
index 03766ed..827aa53 100644
--- a/src/app/[locale]/(home)/faucet/_components/FaucetRequestButton.tsx
+++ b/src/app/[locale]/(home)/faucet/_components/FaucetRequestButton.tsx
@@ -19,7 +19,7 @@ import {
inputContainerClassNames,
inputIconClassNames,
} from "@/components/InputWithSubmit/styles";
-import { NEXT_PUBLIC_FAUCET_API_URL } from "@/env-client";
+import { clientEnv } from "@/env-client";
import { useFaucetInfoAndCaptcha } from "@/hooks/useFaucetInfoAndHCaptcha";
interface FaucetRequestButtonProps {
@@ -188,7 +188,7 @@ export const FaucetRequestButton = forwardRef<
try {
// Check rate limit first
const rateLimitRes = await fetch(
- `${NEXT_PUBLIC_FAUCET_API_URL}/api/check-rate-limit`,
+ `${clientEnv.NEXT_PUBLIC_FAUCET_API_URL}/api/check-rate-limit`,
{
method: "POST",
headers: {
@@ -311,18 +311,21 @@ export const FaucetRequestButton = forwardRef<
}
// If captcha is solved, proceed with the claim
- const res = await fetch(`${NEXT_PUBLIC_FAUCET_API_URL}/api/claim`, {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- },
- body: JSON.stringify({
- address: resolvedAddress,
- chainId,
- hcaptchaToken,
- multiplierToken: localStorage.getItem("multiplierToken"),
- }),
- });
+ const res = await fetch(
+ `${clientEnv.NEXT_PUBLIC_FAUCET_API_URL}/api/claim`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ address: resolvedAddress,
+ chainId,
+ hcaptchaToken,
+ multiplierToken: localStorage.getItem("multiplierToken"),
+ }),
+ }
+ );
const responseData = await res.json();
diff --git a/src/app/[locale]/(home)/smart-wallet/utils/constants.ts b/src/app/[locale]/(home)/smart-wallet/utils/constants.ts
index 68296ff..caece05 100644
--- a/src/app/[locale]/(home)/smart-wallet/utils/constants.ts
+++ b/src/app/[locale]/(home)/smart-wallet/utils/constants.ts
@@ -6,9 +6,11 @@ import {
} from "viem/account-abstraction";
import { inkSepolia } from "viem/chains";
-export const BUNDLER_URL = process.env.NEXT_PUBLIC_BUNDLER_URL!;
-export const PAYMASTER_URL = process.env.NEXT_PUBLIC_PAYMASTER_URL!;
-export const PASSKEY_SERVER_URL = process.env.NEXT_PUBLIC_PASSKEY_SERVER_URL!;
+import { clientEnv } from "@/env-client";
+
+export const BUNDLER_URL = clientEnv.NEXT_PUBLIC_BUNDLER_URL;
+export const PAYMASTER_URL = clientEnv.NEXT_PUBLIC_PAYMASTER_URL;
+export const PASSKEY_SERVER_URL = clientEnv.NEXT_PUBLIC_PASSKEY_SERVER_URL;
export const CHAIN = inkSepolia;
export const contractAddress = "0xA07F56aeeb535856FdEC39a9d685C62536150B1f";
diff --git a/src/app/[locale]/layout.tsx b/src/app/[locale]/layout.tsx
index e125741..f346d57 100644
--- a/src/app/[locale]/layout.tsx
+++ b/src/app/[locale]/layout.tsx
@@ -11,7 +11,7 @@ import { GlobalSvgStuff } from "@/components/icons/GlobalSvgStuff";
import { NewsletterModal } from "@/components/NewsletterModal";
import { Providers } from "@/components/Providers";
import { ToggleThemeShortcut } from "@/components/ToggleThemeShortcut";
-import { NEXT_PUBLIC_GTM_ID } from "@/env-client";
+import { clientEnv } from "@/env-client";
import { COOKIE_CONSENT } from "@/integrations/consent";
import { inter, plus_jakarta_sans } from "../fonts";
@@ -49,7 +49,7 @@ export default async function LocaleLayout({
>
{userHasAcceptedCookiePolicy && (
<>
-
+
>
)}
diff --git a/src/app/api/validate-tweet/route.ts b/src/app/api/validate-tweet/route.ts
index c782d71..3436de1 100644
--- a/src/app/api/validate-tweet/route.ts
+++ b/src/app/api/validate-tweet/route.ts
@@ -1,13 +1,12 @@
import { SignJWT } from "jose";
import { NextResponse } from "next/server";
-import { NEXT_PUBLIC_FAUCET_API_URL } from "@/env-client";
+import { env } from "@/env";
+import { clientEnv } from "@/env-client";
import { formatDuration } from "@/util/formatDuration";
-const MULTIPLIER_JWT_SECRET = process.env.MULTIPLIER_JWT_SECRET!;
-
const MULTIPLIER_JWT_SECRET_KEY = new TextEncoder().encode(
- MULTIPLIER_JWT_SECRET!
+ env.MULTIPLIER_JWT_SECRET
);
const TWEET_AGE_LIMIT = 30 * 60 * 1000; // 30 minutes in milliseconds
@@ -93,7 +92,7 @@ export async function POST(request: Request) {
// Check with faucet API if this X/Twitter user is rate limited
const rateCheckResponse = await fetch(
- `${NEXT_PUBLIC_FAUCET_API_URL}/api/check-tweet-user`,
+ `${clientEnv.NEXT_PUBLIC_FAUCET_API_URL}/api/check-tweet-user`,
{
method: "POST",
headers: {
diff --git a/src/app/robots.ts b/src/app/robots.ts
index 6ae3b39..5a2524a 100644
--- a/src/app/robots.ts
+++ b/src/app/robots.ts
@@ -1,6 +1,6 @@
import { MetadataRoute } from "next";
-import { ORIGIN } from "@/env";
+import { env } from "@/env";
export default function robots(): MetadataRoute.Robots {
return {
@@ -8,6 +8,6 @@ export default function robots(): MetadataRoute.Robots {
userAgent: "*",
allow: "/",
},
- sitemap: ORIGIN + "/sitemap.xml",
+ sitemap: env.ORIGIN + "/sitemap.xml",
};
}
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
index 5cf39d0..40dd0ff 100644
--- a/src/app/sitemap.ts
+++ b/src/app/sitemap.ts
@@ -1,6 +1,6 @@
import { MetadataRoute } from "next";
-import { ORIGIN } from "@/env";
+import { env } from "@/env";
import { routing } from "@/routing";
export default function sitemap(): MetadataRoute.Sitemap {
@@ -8,13 +8,13 @@ export default function sitemap(): MetadataRoute.Sitemap {
return [
{
- url: ORIGIN,
+ url: env.ORIGIN,
priority: 1,
},
...basicPaths.flatMap((path) =>
routing.locales.map((lang) => ({
url:
- ORIGIN +
+ env.ORIGIN +
(lang !== routing.defaultLocale ? "/" + lang : "") +
"/" +
path,
diff --git a/src/components/BridgeButton.tsx b/src/components/BridgeButton.tsx
index 2b3d40d..67eee02 100644
--- a/src/components/BridgeButton.tsx
+++ b/src/components/BridgeButton.tsx
@@ -3,13 +3,17 @@
import { useState } from "react";
import { motion } from "framer-motion";
-import { NEXT_PUBLIC_GELATO_BRIDGE_URL } from "@/env-client";
+import { clientEnv } from "@/env-client";
export const BridgeButton: React.FC = () => {
const [isHovered, setIsHovered] = useState(false);
const handleClick = () => {
- window.open(NEXT_PUBLIC_GELATO_BRIDGE_URL, "_blank", "noopener,noreferrer");
+ window.open(
+ clientEnv.NEXT_PUBLIC_GELATO_BRIDGE_URL,
+ "_blank",
+ "noopener,noreferrer"
+ );
};
return (
diff --git a/src/components/CookieConsent/CookieConsent.tsx b/src/components/CookieConsent/CookieConsent.tsx
index 98ade05..d7e4b34 100644
--- a/src/components/CookieConsent/CookieConsent.tsx
+++ b/src/components/CookieConsent/CookieConsent.tsx
@@ -1,20 +1,16 @@
import { cookies } from "next/headers";
import { onAcceptCookiePolicy, onRefuseCookiePolicy } from "@/actions/consent";
-import {
- NEXT_PUBLIC_ENVIRONMENT,
- NEXT_PUBLIC_ONE_TRUST_ID,
-} from "@/env-client";
+import { clientEnv } from "@/env-client";
import { COOKIE_CONSENT } from "@/integrations/consent";
import { ConsentAcceptAll } from "./ConsentAcceptAll";
import { CookieConsentForm } from "./CookieConsentForm";
import { OneTrustCookieConsent } from "./OneTrustCookiesConsent";
-const IS_OPEN_TRUST_ENABLE_FOR_ENV =
- NEXT_PUBLIC_ENVIRONMENT !== "local" &&
- NEXT_PUBLIC_ENVIRONMENT !== "development" &&
- NEXT_PUBLIC_ENVIRONMENT !== "ci";
+const IS_OPEN_TRUST_ENABLE_FOR_ENV = !["local", "development", "ci"].includes(
+ clientEnv.NEXT_PUBLIC_ENVIRONMENT
+);
export const CookieConsent = async () => {
const isEuropeanCountry = true;
@@ -30,8 +26,8 @@ export const CookieConsent = async () => {
return (
<>
- {NEXT_PUBLIC_ONE_TRUST_ID && IS_OPEN_TRUST_ENABLE_FOR_ENV ? (
-
+ {clientEnv.NEXT_PUBLIC_ONE_TRUST_ID && IS_OPEN_TRUST_ENABLE_FOR_ENV ? (
+
) : isEuropeanCountry ? (
= ({ onChange }) => {
try {
// Check rate limit first
const rateLimitRes = await fetch(
- `${NEXT_PUBLIC_FAUCET_API_URL}/api/check-rate-limit`,
+ `${clientEnv.NEXT_PUBLIC_FAUCET_API_URL}/api/check-rate-limit`,
{
method: "POST",
headers: {
@@ -66,13 +66,16 @@ export const FaucetButton: React.FC = ({ onChange }) => {
}
// If captcha is solved, proceed with the claim
- const res = await fetch(`${NEXT_PUBLIC_FAUCET_API_URL}/api/claim`, {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- },
- body: JSON.stringify({ address, chainId, hcaptchaToken }),
- });
+ const res = await fetch(
+ `${clientEnv.NEXT_PUBLIC_FAUCET_API_URL}/api/claim`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({ address, chainId, hcaptchaToken }),
+ }
+ );
const responseData = await res.json();
diff --git a/src/components/Providers.tsx b/src/components/Providers.tsx
index acb7b59..ae9738d 100644
--- a/src/components/Providers.tsx
+++ b/src/components/Providers.tsx
@@ -7,7 +7,7 @@ import { AnalyticsProvider } from "@/contexts/AnalyticsProvider";
import { RelayProvider } from "@/contexts/RelayProvider";
import { ThemeProvider } from "@/contexts/ThemeProvider";
import { WalletProvider } from "@/contexts/WalletProvider";
-import { NEXT_PUBLIC_SEGMENT_WRITE_KEY } from "@/env-client";
+import { clientEnv } from "@/env-client";
import { useGlobalKeyCallback } from "@/hooks/useGlobalKey";
import { AppSubmissionModalProvider } from "./AppSubmissionModal/AppSubmissionModalContext";
@@ -22,7 +22,7 @@ export const Providers: React.FC = ({ children }) => {
return (
-
+
diff --git a/src/contexts/AnalyticsProvider.tsx b/src/contexts/AnalyticsProvider.tsx
index 79f19ee..122b37a 100644
--- a/src/contexts/AnalyticsProvider.tsx
+++ b/src/contexts/AnalyticsProvider.tsx
@@ -9,7 +9,7 @@ import {
} from "react";
import { AnalyticsBrowser } from "@segment/analytics-next";
-import { NEXT_PUBLIC_ENVIRONMENT } from "@/env-client";
+import { clientEnv } from "@/env-client";
import Consent, { ConsentType } from "@/integrations/consent";
interface AnalyticsContextProps {
@@ -32,7 +32,7 @@ export const AnalyticsProvider = ({
const analytics = useMemo(() => new AnalyticsBrowser(), []);
useEffect(() => {
- if (NEXT_PUBLIC_ENVIRONMENT === "local" && !writeKey) {
+ if (clientEnv.NEXT_PUBLIC_ENVIRONMENT === "local" && !writeKey) {
return;
}
diff --git a/src/contexts/RelayProvider.tsx b/src/contexts/RelayProvider.tsx
index af1f6c7..938aff7 100644
--- a/src/contexts/RelayProvider.tsx
+++ b/src/contexts/RelayProvider.tsx
@@ -5,7 +5,7 @@ import { useRelayChains } from "@reservoir0x/relay-kit-hooks";
import { RelayKitProvider } from "@reservoir0x/relay-kit-ui";
import { MAINNET_RELAY_API } from "@reservoir0x/relay-sdk";
-import { NEXT_PUBLIC_DUNE_API_KEY } from "@/env-client";
+import { clientEnv } from "@/env-client";
import { useCurrentInkAppName } from "@/hooks/useCurrentInkAppName";
import { theme } from "@/util/relay-kit-theme";
@@ -26,7 +26,7 @@ export const RelayProvider: React.FC = ({ children }) => {
appName: appName,
appFees: [],
chains: chains,
- duneApiKey: NEXT_PUBLIC_DUNE_API_KEY,
+ duneApiKey: clientEnv.NEXT_PUBLIC_DUNE_API_KEY,
baseApiUrl: MAINNET_RELAY_API,
}}
>
diff --git a/src/contexts/WalletProvider.tsx b/src/contexts/WalletProvider.tsx
index 30b01ba..df62a36 100644
--- a/src/contexts/WalletProvider.tsx
+++ b/src/contexts/WalletProvider.tsx
@@ -34,7 +34,7 @@ import {
} from "wagmi";
import { mainnet } from "wagmi/chains";
-import { NEXT_PUBLIC_WC_PROJECT_ID } from "@/env-client";
+import { clientEnv } from "@/env-client";
import { useCurrentInkAppName } from "@/hooks/useCurrentInkAppName";
import "@reservoir0x/relay-kit-ui/styles.css";
@@ -113,7 +113,7 @@ export const WalletProvider: React.FC = ({ children }) => {
appName: "inkonchain.com",
appIcon: "https://inkonchain.com/icon.svg",
appUrl: "https://inkonchain.com",
- projectId: NEXT_PUBLIC_WC_PROJECT_ID,
+ projectId: clientEnv.NEXT_PUBLIC_WC_PROJECT_ID,
chains: (viemChains && viemChains.length === 0
? [mainnet]
: viemChains) as [Chain, ...Chain[]],
diff --git a/src/env-client.ts b/src/env-client.ts
index 083838f..dbe3530 100644
--- a/src/env-client.ts
+++ b/src/env-client.ts
@@ -1,52 +1,37 @@
-const NEXT_PUBLIC_FAUCET_API_URL = process.env.NEXT_PUBLIC_FAUCET_API_URL!;
-const NEXT_PUBLIC_GELATO_BRIDGE_URL =
- process.env.NEXT_PUBLIC_GELATO_BRIDGE_URL!;
-
-const NEXT_PUBLIC_ENVIRONMENT = process.env.NEXT_PUBLIC_ENVIRONMENT!;
-const NEXT_PUBLIC_SENTRY_DSN = process.env.NEXT_PUBLIC_SENTRY_DSN!;
-const NEXT_PUBLIC_GTM_ID = process.env.NEXT_PUBLIC_GTM_ID!;
-const NEXT_PUBLIC_SEGMENT_WRITE_KEY =
- process.env.NEXT_PUBLIC_SEGMENT_WRITE_KEY!;
-const NEXT_PUBLIC_ONE_TRUST_ID = process.env.NEXT_PUBLIC_ONE_TRUST_ID;
-const NEXT_PUBLIC_DUNE_API_KEY = process.env.NEXT_PUBLIC_DUNE_API_KEY;
-const NEXT_PUBLIC_WC_PROJECT_ID = process.env.NEXT_PUBLIC_WC_PROJECT_ID!;
-const NEXT_PUBLIC_HCAPTCHA_SITEKEY = process.env.NEXT_PUBLIC_HCAPTCHA_SITEKEY!;
-
-if (!NEXT_PUBLIC_FAUCET_API_URL && NEXT_PUBLIC_ENVIRONMENT !== "local") {
- throw new Error("Missing environment variable NEXT_PUBLIC_FAUCET_API_URL");
-}
-
-if (!NEXT_PUBLIC_GELATO_BRIDGE_URL && NEXT_PUBLIC_ENVIRONMENT !== "local") {
- throw new Error("Missing environment variable NEXT_PUBLIC_GELATO_BRIDGE_URL");
-}
-
-if (!NEXT_PUBLIC_SENTRY_DSN && NEXT_PUBLIC_ENVIRONMENT !== "local") {
- throw new Error("Missing environment variable NEXT_PUBLIC_SENTRY_DSN.");
-}
-
-if (!NEXT_PUBLIC_GTM_ID && NEXT_PUBLIC_ENVIRONMENT !== "local") {
- throw new Error("Missing environment variable NEXT_PUBLIC_GTM_ID.");
-}
-
-if (!NEXT_PUBLIC_SEGMENT_WRITE_KEY && NEXT_PUBLIC_ENVIRONMENT !== "local") {
- throw new Error(
- "Missing environment variable NEXT_PUBLIC_SEGMENT_WRITE_KEY."
- );
-}
-
-if (!NEXT_PUBLIC_WC_PROJECT_ID && NEXT_PUBLIC_ENVIRONMENT !== "local") {
- throw new Error("Missing environment variable NEXT_PUBLIC_WC_PROJECT_ID.");
-}
-
-export {
- NEXT_PUBLIC_DUNE_API_KEY,
- NEXT_PUBLIC_ENVIRONMENT,
- NEXT_PUBLIC_FAUCET_API_URL,
- NEXT_PUBLIC_GELATO_BRIDGE_URL,
- NEXT_PUBLIC_GTM_ID,
- NEXT_PUBLIC_HCAPTCHA_SITEKEY,
- NEXT_PUBLIC_ONE_TRUST_ID,
- NEXT_PUBLIC_SEGMENT_WRITE_KEY,
- NEXT_PUBLIC_SENTRY_DSN,
- NEXT_PUBLIC_WC_PROJECT_ID,
-};
+import { createEnv } from "@t3-oss/env-nextjs";
+import { z } from "zod";
+
+export const clientEnv = createEnv({
+ client: {
+ NEXT_PUBLIC_ENVIRONMENT: z
+ .enum(["local", "development", "ci", "production"])
+ .default("local"),
+ NEXT_PUBLIC_SENTRY_DSN: z.string().min(1),
+ NEXT_PUBLIC_GTM_ID: z.string().min(1),
+ NEXT_PUBLIC_SEGMENT_WRITE_KEY: z.string().min(1),
+ NEXT_PUBLIC_ONE_TRUST_ID: z.string().min(1),
+ NEXT_PUBLIC_DUNE_API_KEY: z.string().optional(),
+ NEXT_PUBLIC_WC_PROJECT_ID: z.string().min(1),
+ NEXT_PUBLIC_HCAPTCHA_SITEKEY: z.string().min(1),
+ NEXT_PUBLIC_FAUCET_API_URL: z.string().url(),
+ NEXT_PUBLIC_GELATO_BRIDGE_URL: z.string().url(),
+ NEXT_PUBLIC_BUNDLER_URL: z.string().url(),
+ NEXT_PUBLIC_PAYMASTER_URL: z.string().url(),
+ NEXT_PUBLIC_PASSKEY_SERVER_URL: z.string().url(),
+ },
+ runtimeEnv: {
+ NEXT_PUBLIC_ENVIRONMENT: process.env.NEXT_PUBLIC_ENVIRONMENT,
+ NEXT_PUBLIC_SENTRY_DSN: process.env.NEXT_PUBLIC_SENTRY_DSN,
+ NEXT_PUBLIC_GTM_ID: process.env.NEXT_PUBLIC_GTM_ID,
+ NEXT_PUBLIC_SEGMENT_WRITE_KEY: process.env.NEXT_PUBLIC_SEGMENT_WRITE_KEY,
+ NEXT_PUBLIC_ONE_TRUST_ID: process.env.NEXT_PUBLIC_ONE_TRUST_ID,
+ NEXT_PUBLIC_DUNE_API_KEY: process.env.NEXT_PUBLIC_DUNE_API_KEY,
+ NEXT_PUBLIC_WC_PROJECT_ID: process.env.NEXT_PUBLIC_WC_PROJECT_ID,
+ NEXT_PUBLIC_HCAPTCHA_SITEKEY: process.env.NEXT_PUBLIC_HCAPTCHA_SITEKEY,
+ NEXT_PUBLIC_FAUCET_API_URL: process.env.NEXT_PUBLIC_FAUCET_API_URL,
+ NEXT_PUBLIC_GELATO_BRIDGE_URL: process.env.NEXT_PUBLIC_GELATO_BRIDGE_URL,
+ NEXT_PUBLIC_BUNDLER_URL: process.env.NEXT_PUBLIC_BUNDLER_URL,
+ NEXT_PUBLIC_PAYMASTER_URL: process.env.NEXT_PUBLIC_PAYMASTER_URL,
+ NEXT_PUBLIC_PASSKEY_SERVER_URL: process.env.NEXT_PUBLIC_PASSKEY_SERVER_URL,
+ },
+});
diff --git a/src/env.ts b/src/env.ts
index 23a639b..795a105 100644
--- a/src/env.ts
+++ b/src/env.ts
@@ -1,116 +1,25 @@
-// We can assign them as non-null since we check for this below.
-// This also allows for imports to trust they're strings.
-// TODO: Alternatively in the future we could use zod for much better validation in this file.
-const ORIGIN = process.env.ORIGIN!;
-
-const BRAZE_INSTANCE_URL = process.env.BRAZE_INSTANCE_URL!;
-const BRAZE_API_KEY = process.env.BRAZE_API_KEY!;
-const BRAZE_GENERAL_WAITLIST_GROUP_ID =
- process.env.BRAZE_GENERAL_WAITLIST_GROUP_ID!;
-const BRAZE_DEVELOPERS_WAITLIST_GROUP_ID =
- process.env.BRAZE_DEVELOPERS_WAITLIST_GROUP_ID!;
-const INK_APP_SUBMISSION_BOT_GITHUB_APP_ID =
- process.env.INK_APP_SUBMISSION_BOT_GITHUB_APP_ID!;
-const INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY =
- process.env.INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY!;
-const INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID =
- process.env.INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID!;
-const INK_APP_SUBMISSION_SLACK_BOT_TOKEN =
- process.env.INK_APP_SUBMISSION_SLACK_BOT_TOKEN!;
-const INK_APP_SUBMISSION_TARGET_ORG =
- process.env.INK_APP_SUBMISSION_TARGET_ORG!;
-const INK_APP_SUBMISSION_TARGET_REPO =
- process.env.INK_APP_SUBMISSION_TARGET_REPO!;
-const INK_APP_SUBMISSION_TARGET_BRANCH =
- process.env.INK_APP_SUBMISSION_TARGET_BRANCH!;
-const INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL =
- process.env.INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL!;
-const HCAPTCHA_SECRET = process.env.HCAPTCHA_SECRET!;
-
-if (typeof window === "undefined") {
- if (!BRAZE_INSTANCE_URL) {
- throw new Error("Missing environment variable BRAZE_INSTANCE_URL.");
- }
-
- if (!BRAZE_API_KEY) {
- throw new Error("Missing environment variable BRAZE_API_KEY.");
- }
-
- if (!BRAZE_GENERAL_WAITLIST_GROUP_ID) {
- throw new Error(
- "Missing environment variable BRAZE_GENERAL_WAITLIST_GROUP_ID."
- );
- }
-
- if (!BRAZE_DEVELOPERS_WAITLIST_GROUP_ID) {
- throw new Error(
- "Missing environment variable BRAZE_DEVELOPERS_WAITLIST_GROUP_ID."
- );
- }
-
- if (!ORIGIN) {
- throw new Error("Missing environment variable ORIGIN.");
- }
-
- if (!INK_APP_SUBMISSION_BOT_GITHUB_APP_ID) {
- throw new Error(
- "Missing environment variable INK_APP_SUBMISSION_BOT_GITHUB_APP_ID"
- );
- }
- if (!INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY) {
- throw new Error(
- "Missing environment variable INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY"
- );
- }
- if (!INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID) {
- throw new Error(
- "Missing environment variable INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID"
- );
- }
- if (!INK_APP_SUBMISSION_SLACK_BOT_TOKEN) {
- throw new Error(
- "Missing environment variable INK_APP_SUBMISSION_SLACK_BOT_TOKEN"
- );
- }
- if (!INK_APP_SUBMISSION_TARGET_ORG) {
- throw new Error(
- "Missing environment variable INK_APP_SUBMISSION_TARGET_ORG"
- );
- }
- if (!INK_APP_SUBMISSION_TARGET_REPO) {
- throw new Error(
- "Missing environment variable INK_APP_SUBMISSION_TARGET_REPO"
- );
- }
- if (!INK_APP_SUBMISSION_TARGET_BRANCH) {
- throw new Error(
- "Missing environment variable INK_APP_SUBMISSION_TARGET_BRANCH"
- );
- }
- if (!INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL) {
- throw new Error(
- "Missing environment variable INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL"
- );
- }
- if (!HCAPTCHA_SECRET) {
- throw new Error("Missing environment variable HCAPTCHA_SECRET");
- }
-}
-
-export * from "@/env-client";
-export {
- BRAZE_API_KEY,
- BRAZE_DEVELOPERS_WAITLIST_GROUP_ID,
- BRAZE_GENERAL_WAITLIST_GROUP_ID,
- BRAZE_INSTANCE_URL,
- HCAPTCHA_SECRET,
- INK_APP_SUBMISSION_BOT_GITHUB_APP_ID,
- INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID,
- INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY,
- INK_APP_SUBMISSION_SLACK_BOT_TOKEN,
- INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL,
- INK_APP_SUBMISSION_TARGET_BRANCH,
- INK_APP_SUBMISSION_TARGET_ORG,
- INK_APP_SUBMISSION_TARGET_REPO,
- ORIGIN,
-};
+import { createEnv } from "@t3-oss/env-nextjs";
+import { z } from "zod";
+
+export const env = createEnv({
+ server: {
+ CI: z.string().optional(),
+ SENTRY_AUTH_TOKEN: z.string().min(1),
+ ORIGIN: z.string().min(1).default("inkonchain.com"),
+ BRAZE_INSTANCE_URL: z.string().url(),
+ BRAZE_API_KEY: z.string().min(1),
+ BRAZE_GENERAL_WAITLIST_GROUP_ID: z.string().min(1),
+ BRAZE_DEVELOPERS_WAITLIST_GROUP_ID: z.string().min(1),
+ INK_APP_SUBMISSION_BOT_GITHUB_APP_ID: z.string().min(1),
+ INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY: z.string().min(1),
+ INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID: z.string().min(1),
+ INK_APP_SUBMISSION_SLACK_BOT_TOKEN: z.string().min(1),
+ INK_APP_SUBMISSION_TARGET_ORG: z.string().min(1),
+ INK_APP_SUBMISSION_TARGET_REPO: z.string().min(1),
+ INK_APP_SUBMISSION_TARGET_BRANCH: z.string().min(1),
+ INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL: z.string().min(1),
+ HCAPTCHA_SECRET: z.string().min(1),
+ MULTIPLIER_JWT_SECRET: z.string().min(1),
+ },
+ experimental__runtimeEnv: process.env,
+});
diff --git a/src/hooks/useFaucetInfoAndHCaptcha.ts b/src/hooks/useFaucetInfoAndHCaptcha.ts
index 210a172..dc25cbf 100644
--- a/src/hooks/useFaucetInfoAndHCaptcha.ts
+++ b/src/hooks/useFaucetInfoAndHCaptcha.ts
@@ -1,7 +1,7 @@
import { useCallback, useEffect, useState } from "react";
import { toast } from "react-toastify";
-import { NEXT_PUBLIC_FAUCET_API_URL } from "@/env-client";
+import { clientEnv } from "@/env-client";
import { useHCaptcha } from "./useHCaptcha";
@@ -26,11 +26,14 @@ export function useFaucetInfoAndCaptcha(chainId: number | undefined) {
const fetchFaucetInfo = useCallback(async () => {
try {
console.trace("Fetching faucet info for network:", chainId);
- const res = await fetch(`${NEXT_PUBLIC_FAUCET_API_URL}/api/info`, {
- method: "POST",
- headers: { "Content-Type": "application/json" },
- body: JSON.stringify({ chainId }),
- });
+ const res = await fetch(
+ `${clientEnv.NEXT_PUBLIC_FAUCET_API_URL}/api/info`,
+ {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify({ chainId }),
+ }
+ );
if (res.ok) {
const newFaucetInfo = await res.json();
console.trace("New faucet info:", newFaucetInfo);
diff --git a/src/hooks/useForm.ts b/src/hooks/useForm.ts
index 4dfc558..3024826 100644
--- a/src/hooks/useForm.ts
+++ b/src/hooks/useForm.ts
@@ -8,7 +8,7 @@ import {
import { zodResolver } from "@hookform/resolvers/zod";
import { ZodSchema } from "zod";
-import { NEXT_PUBLIC_HCAPTCHA_SITEKEY } from "@/env-client";
+import { clientEnv } from "@/env-client";
import { useHCaptcha } from "./useHCaptcha";
@@ -32,7 +32,7 @@ export function useForm(
): UseFormHook {
const [isSubmitting, startTransition] = useTransition();
const { executeHCaptcha, hcaptchaLoaded } = useHCaptcha(
- NEXT_PUBLIC_HCAPTCHA_SITEKEY,
+ clientEnv.NEXT_PUBLIC_HCAPTCHA_SITEKEY,
true
);
diff --git a/src/hooks/useLegacyForm.ts b/src/hooks/useLegacyForm.ts
index 92104aa..a3ab39b 100644
--- a/src/hooks/useLegacyForm.ts
+++ b/src/hooks/useLegacyForm.ts
@@ -1,7 +1,7 @@
// Adapted from https://allanlasser.com/posts/2024-01-26-avoid-using-reacts-useformstatus
import { SyntheticEvent, useActionState, useTransition } from "react";
-import { NEXT_PUBLIC_HCAPTCHA_SITEKEY } from "@/env-client";
+import { clientEnv } from "@/env-client";
import { useHCaptcha } from "./useHCaptcha";
@@ -17,7 +17,7 @@ export function useLegacyForm(
initialState: Awaited
): UseLegacyFormHook {
const { executeHCaptcha, hcaptchaLoaded } = useHCaptcha(
- NEXT_PUBLIC_HCAPTCHA_SITEKEY,
+ clientEnv.NEXT_PUBLIC_HCAPTCHA_SITEKEY,
true
);
const [isPending, startTransition] = useTransition();
diff --git a/src/instrumentation.ts b/src/instrumentation.ts
index 10aaace..ee08dd5 100644
--- a/src/instrumentation.ts
+++ b/src/instrumentation.ts
@@ -1,3 +1,4 @@
+// TODO: Is this used?
export async function register() {
if (process.env.NEXT_RUNTIME === "nodejs") {
await import("../sentry.server.config");
diff --git a/src/integrations/braze.ts b/src/integrations/braze.ts
index ed4ab4c..37f416c 100644
--- a/src/integrations/braze.ts
+++ b/src/integrations/braze.ts
@@ -1,11 +1,6 @@
import { randomUUID } from "crypto";
-import {
- BRAZE_API_KEY,
- BRAZE_DEVELOPERS_WAITLIST_GROUP_ID,
- BRAZE_GENERAL_WAITLIST_GROUP_ID,
- BRAZE_INSTANCE_URL,
-} from "@/env";
+import { env } from "@/env";
import { CustomError, ErrorCode } from "@/util/custom-error";
import { captureError } from "./sentry";
@@ -68,11 +63,11 @@ export async function subscribeUserToGroup(
function getSubscriptionGroupId(group: SubscriptionGroup) {
if (group === SubscriptionGroup.DEVELOPER_WAITLIST) {
- return BRAZE_DEVELOPERS_WAITLIST_GROUP_ID;
+ return env.BRAZE_DEVELOPERS_WAITLIST_GROUP_ID;
}
if (group === SubscriptionGroup.GENERAL_WAITLIST) {
- return BRAZE_GENERAL_WAITLIST_GROUP_ID;
+ return env.BRAZE_GENERAL_WAITLIST_GROUP_ID;
}
throw new Error(`Invalid subscription group ${group}`);
@@ -251,7 +246,7 @@ export async function retrieveUserEmailById(
}
async function getFromBraze(path: string) {
- const url = `${BRAZE_INSTANCE_URL}${path}`;
+ const url = `${env.BRAZE_INSTANCE_URL}${path}`;
const res = await fetch(url, {
headers: getHeaders(),
});
@@ -265,7 +260,7 @@ async function getFromBraze(path: string) {
}
async function postToBraze(path: string, data: Record) {
- const url = `${BRAZE_INSTANCE_URL}${path}`;
+ const url = `${env.BRAZE_INSTANCE_URL}${path}`;
const res = await fetch(url, {
method: "POST",
headers: getHeaders(),
@@ -282,7 +277,7 @@ async function postToBraze(path: string, data: Record) {
function getHeaders() {
return {
- Authorization: `Bearer ${BRAZE_API_KEY}`,
+ Authorization: `Bearer ${env.BRAZE_API_KEY}`,
"Content-Type": "application/json",
};
}
diff --git a/src/lib/hcaptcha.ts b/src/lib/hcaptcha.ts
index 8560b1a..474b68b 100644
--- a/src/lib/hcaptcha.ts
+++ b/src/lib/hcaptcha.ts
@@ -1,4 +1,4 @@
-import { HCAPTCHA_SECRET } from "@/env";
+import { env } from "@/env";
interface HCaptchaVerifyResponse {
success: boolean;
@@ -11,7 +11,7 @@ interface HCaptchaVerifyResponse {
export async function validateCaptcha(token: string): Promise {
try {
const formData = new URLSearchParams();
- formData.append("secret", HCAPTCHA_SECRET);
+ formData.append("secret", env.HCAPTCHA_SECRET);
formData.append("response", token);
const response = await fetch("https://api.hcaptcha.com/siteverify", {