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..67732b6 --- /dev/null +++ b/.env.example @@ -0,0 +1,55 @@ +# Environment +NEXT_PUBLIC_ENVIRONMENT= + +# Sentry (Optional) +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= 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/pr_checks.yml b/.github/workflows/pr_checks.yml new file mode 100644 index 0000000..b68c874 --- /dev/null +++ b/.github/workflows/pr_checks.yml @@ -0,0 +1,82 @@ +name: PR Checks +on: [pull_request] +jobs: + install_modules: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + run_install: false + - uses: actions/setup-node@v4 + with: + node-version: "20.x" + cache: "pnpm" + + - 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 + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/base-setup + name: Base Setup + - name: Install dependencies + shell: bash + run: pnpm install --frozen-lockfile + - name: Generate dummy .env.production + run: ./scripts/generate-dummy-dotenv.sh + - name: Run linting + run: pnpm run lint + + format: + needs: install_modules + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/base-setup + name: Base Setup + - name: Install dependencies + shell: bash + run: pnpm install --frozen-lockfile + - name: Generate dummy .env.production + run: ./scripts/generate-dummy-dotenv.sh + - name: Run formatting + run: pnpm run format:check + + build: + needs: install_modules + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/base-setup + name: Base Setup + - name: Install dependencies + shell: bash + run: pnpm install --frozen-lockfile + - name: Generate dummy .env.production + run: ./scripts/generate-dummy-dotenv.sh + - name: Building app + run: pnpm run build + - name: Cache build + uses: actions/cache/save@v4 + with: + path: .next + key: ${{ runner.os }}-build-store-${{ hashFiles('./src') }} diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml deleted file mode 100644 index 6c12c6b..0000000 --- a/.github/workflows/pull_request.yml +++ /dev/null @@ -1,161 +0,0 @@ -name: PR Checks -on: [pull_request] -jobs: - install_modules: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - with: - run_install: false - - uses: actions/setup-node@v4 - 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 - - lint: - needs: install_modules - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/base-setup - name: Base Setup - - name: Run linting - run: pnpm run lint - - format: - needs: install_modules - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/base-setup - name: Base Setup - - name: Run formatting - run: pnpm run format:check - - build: - needs: install_modules - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/base-setup - name: Base Setup - - name: Create and populate .env.production - env: - NEXT_PUBLIC_WC_PROJECT_ID: DUMMY_DO_NOT_REPLACE - NEXT_PUBLIC_FAUCET_API_URL: DUMMY_DO_NOT_REPLACE - NEXT_PUBLIC_GELATO_BRIDGE_URL: DUMMY_DO_NOT_REPLACE - NEXT_PUBLIC_SENTRY_DSN: DUMMY_DO_NOT_REPLACE - NEXT_PUBLIC_GTM_ID: DUMMY_DO_NOT_REPLACE - NEXT_PUBLIC_SEGMENT_WRITE_KEY: DUMMY_DO_NOT_REPLACE - BRAZE_INSTANCE_URL: DUMMY_DO_NOT_REPLACE - BRAZE_API_KEY: DUMMY_DO_NOT_REPLACE - BRAZE_GENERAL_WAITLIST_GROUP_ID: DUMMY_DO_NOT_REPLACE - BRAZE_DEVELOPERS_WAITLIST_GROUP_ID: DUMMY_DO_NOT_REPLACE - MULTIPLIER_JWT_SECRET: DUMMY_DO_NOT_REPLACE - ORIGIN: DUMMY_DO_NOT_REPLACE - INK_APP_SUBMISSION_BOT_GITHUB_APP_ID: DUMMY_DO_NOT_REPLACE - INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY: DUMMY_DO_NOT_REPLACE - INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID: DUMMY_DO_NOT_REPLACE - INK_APP_SUBMISSION_SLACK_BOT_TOKEN: DUMMY_DO_NOT_REPLACE - INK_APP_SUBMISSION_TARGET_ORG: DUMMY_DO_NOT_REPLACE - INK_APP_SUBMISSION_TARGET_REPO: DUMMY_DO_NOT_REPLACE - INK_APP_SUBMISSION_TARGET_BRANCH: DUMMY_DO_NOT_REPLACE - INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL: DUMMY_DO_NOT_REPLACE - HCAPTCHA_SECRET: DUMMY_DO_NOT_REPLACE - run: | - touch .env.production - echo "NEXT_PUBLIC_WC_PROJECT_ID=$NEXT_PUBLIC_WC_PROJECT_ID" >> .env.production - echo "NEXT_PUBLIC_FAUCET_API_URL=$NEXT_PUBLIC_FAUCET_API_URL" >> .env.production - echo "NEXT_PUBLIC_GELATO_BRIDGE_URL=$NEXT_PUBLIC_GELATO_BRIDGE_URL" >> .env.production - echo "NEXT_PUBLIC_SENTRY_DSN=$NEXT_PUBLIC_SENTRY_DSN" >> .env.production - echo "NEXT_PUBLIC_GTM_ID=$NEXT_PUBLIC_GTM_ID" >> .env.production - echo "NEXT_PUBLIC_SEGMENT_WRITE_KEY=$NEXT_PUBLIC_SEGMENT_WRITE_KEY" >> .env.production - echo "BRAZE_INSTANCE_URL=$BRAZE_INSTANCE_URL" >> .env.production - echo "BRAZE_API_KEY=$BRAZE_API_KEY" >> .env.production - echo "BRAZE_GENERAL_WAITLIST_GROUP_ID=$BRAZE_GENERAL_WAITLIST_GROUP_ID" >> .env.production - echo "BRAZE_DEVELOPERS_WAITLIST_GROUP_ID=$BRAZE_DEVELOPERS_WAITLIST_GROUP_ID" >> .env.production - echo "MULTIPLIER_JWT_SECRET=$MULTIPLIER_JWT_SECRET" >> .env.production - echo "ORIGIN=$ORIGIN" >> .env.production - echo "INK_APP_SUBMISSION_BOT_GITHUB_APP_ID=$INK_APP_SUBMISSION_BOT_GITHUB_APP_ID" >> .env.production - echo "INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY=$INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY" >> .env.production - echo "INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID=$INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID" >> .env.production - echo "INK_APP_SUBMISSION_SLACK_BOT_TOKEN=$INK_APP_SUBMISSION_SLACK_BOT_TOKEN" >> .env.production - echo "INK_APP_SUBMISSION_TARGET_ORG=$INK_APP_SUBMISSION_TARGET_ORG" >> .env.production - echo "INK_APP_SUBMISSION_TARGET_REPO=$INK_APP_SUBMISSION_TARGET_REPO" >> .env.production - echo "INK_APP_SUBMISSION_TARGET_BRANCH=$INK_APP_SUBMISSION_TARGET_BRANCH" >> .env.production - echo "INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL=$INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL" >> .env.production - echo "HCAPTCHA_SECRET=$HCAPTCHA_SECRET" >> .env.production - - name: Building app - run: pnpm run build - - name: Cache build - uses: actions/cache/save@v4 - with: - path: .next - key: ${{ runner.os }}-build-store-${{ hashFiles('./src') }} - - # e2e-test: - # needs: build - # timeout-minutes: 60 - # runs-on: ubuntu-latest - # steps: - # - uses: actions/checkout@v4 - # - uses: ./.github/actions/base-setup - # name: Base Setup - # - name: Restore build from cache - # uses: actions/cache/restore@v4 - # with: - # path: .next - # key: ${{ runner.os }}-build-store-${{ hashFiles('./src') }} - # - name: Get installed Playwright version - # id: playwright-version - # run: echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package.json').dependencies['@playwright/test'].version)")" >> $GITHUB_ENV - # - name: Restore playwright binaries from cache - # uses: actions/cache@v4 - # id: playwright-cache - # with: - # path: | - # ~/.cache/ms-playwright - # key: ${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.PLAYWRIGHT_VERSION }} - # - name: Install Playwright Browsers - # run: npx playwright install --with-deps - # if: steps.playwright-cache.outputs.cache-hit != 'true' - # - name: Install Playwright Dependencies - # run: npx playwright install-deps - # if: steps.playwright-cache.outputs.cache-hit == 'true' - # - name: Run Playwright tests - # run: pnpm run test - # env: - # NEXT_PUBLIC_ENVIRONMENT: ci - # NEXT_PUBLIC_FAUCET_API_URL: DUMMY_DO_NOT_REPLACE - # NEXT_PUBLIC_GELATO_BRIDGE_URL: DUMMY_DO_NOT_REPLACE - # NEXT_PUBLIC_GTM_ID: DUMMY_DO_NOT_REPLACE - # NEXT_PUBLIC_SENTRY_DSN: DUMMY_DO_NOT_REPLACE - # NEXT_PUBLIC_SEGMENT_WRITE_KEY: DUMMY_DO_NOT_REPLACE - # BRAZE_INSTANCE_URL: DUMMY_DO_NOT_REPLACE - # BRAZE_API_KEY: DUMMY_DO_NOT_REPLACE - # BRAZE_GENERAL_WAITLIST_GROUP_ID: DUMMY_DO_NOT_REPLACE - # BRAZE_DEVELOPERS_WAITLIST_GROUP_ID: DUMMY_DO_NOT_REPLACE - # MULTIPLIER_JWT_SECRET: DUMMY_DO_NOT_REPLACE - # ORIGIN: DUMMY_DO_NOT_REPLACE - # INK_APP_SUBMISSION_BOT_GITHUB_APP_ID: DUMMY_DO_NOT_REPLACE - # INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY: DUMMY_DO_NOT_REPLACE - # INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID: DUMMY_DO_NOT_REPLACE - # INK_APP_SUBMISSION_SLACK_BOT_TOKEN: DUMMY_DO_NOT_REPLACE - # INK_APP_SUBMISSION_TARGET_ORG: DUMMY_DO_NOT_REPLACE - # INK_APP_SUBMISSION_TARGET_REPO: DUMMY_DO_NOT_REPLACE - # INK_APP_SUBMISSION_TARGET_BRANCH: DUMMY_DO_NOT_REPLACE - # INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL: DUMMY_DO_NOT_REPLACE - # - uses: actions/upload-artifact@v4 - # if: always() - # with: - # name: playwright-report - # path: playwright-report/ - # retention-days: 30 diff --git a/.github/workflows/ship.yml b/.github/workflows/ship.yml new file mode 100644 index 0000000..ebe9e80 --- /dev/null +++ b/.github/workflows/ship.yml @@ -0,0 +1,108 @@ +name: ship +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +on: + push: + branches: + - main + - ops/preview-1 + - ops/preview-2 + paths: + - "**" +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 }} + + - name: Generate a token for Ink CI Github App + id: generate-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.INK_CI_GITHUB_APP_ID }} + private-key: ${{ secrets.INK_CI_GITHUB_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + + # https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#create-a-workflow-dispatch-event + - name: Trigger deployment + run: | + # Extract branch name from github.ref + BRANCH_NAME=${GITHUB_REF#refs/heads/} + + curl -L \ + -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${{ steps.generate-token.outputs.token }}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + ${{ secrets.TARGET_REPOSITORY_DISPATCH_URL }} \ + -d '{"ref": "feat/ink-web-app","inputs":{"digest":"${{ steps.build-push.outputs.digest }}","branch":"'"${BRANCH_NAME}"'"}}' 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..b52b45b --- /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"] diff --git a/README.md b/README.md index 971c161..0221c87 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,30 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). +# Ink Web App -## Getting Started - -To open this project in a Dev Container using Visual Studio Code: - - Ensure Prerequisites: - Docker: Install Docker if you haven't already. - VS Code Dev Containers Extension: Install the Dev Containers Extension. - https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers +Ink is a cutting-edge Layer 2 (L2) blockchain built on Optimism's Superchain and released by Kraken. This repository contains the web application that serves as the main interface for users to interact with Ink's ecosystem. +## Getting Started - Docker Desktop on Mac - Go to Settings > Choose file sharing implementation for your containers > Choose gRPC FUSE - - Set INK_GPG_HOME Environment Variable - # Add this to your shell rc file - export INK_GPG_HOME=$(gpgconf --list-dirs agent-socket) - # OR use this if youre unsure - echo 'export INK_GPG_HOME=$(gpgconf --list-dirs agent-socket)' >> "$HOME/.$(basename $SHELL)rc" +### Prerequisites - Open in VS Code: - If you haven't already, open this project in Visual Studio Code. +- Node.js 20.x +- PNPM 9.12.1 - Reopen in Dev Container: - Press F1 (or Ctrl+Shift+P). - Select Dev Containers: Reopen in Container. +### Environment Variables - # If you want to open a different directory - Select Dev Containers: Open Folder in Container +```sh +cp .env.example .env.local +``` -VS Code will now build and open the project in a fully configured Dev Container environment. 🚀 +Instructions on how to fill in those environment variables coming soon! -Create `.env.local` file with the follwoing defined `HUB_SPOT_TOKEN_ACCESS=` -First, run the development server: +### Installation -```bash +```sh pnpm install -pnpm dev ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. - -## Learn More +### Running in development -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. - -# Setup - -- Define the env variable `INK_DIRECTORY` in your .bashrc or .zshrc file to the directory where Ink specific .gitconfig is stored +```sh +pnpm dev +``` diff --git a/next.config.mjs b/next.config.ts similarity index 58% rename from next.config.mjs rename to next.config.ts index 1d42b38..610561d 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, @@ -18,18 +20,18 @@ const nextConfig = { }; export default withSentryConfig(withNextIntl(nextConfig), { - // For all available options, see: - // https://github.com/getsentry/sentry-webpack-plugin#options + // For all available options, see node_modules/@sentry/nextjs/build/types/config/types.d.ts org: "payward-inc", project: "ink-web-app", + authToken: env.SENTRY_AUTH_TOKEN, + silent: true, - // Only print logs for uploading source maps in CI - silent: !process.env.CI, - - authToken: process.env.SENTRY_AUTH_TOKEN, - // For all available options, see: - // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/ + // Sourcemaps config + sourcemaps: { + // Send source maps to Sentry, but do not include them in the client bundle + deleteSourcemapsAfterUpload: true, + }, // Upload a larger set of source maps for prettier stack traces (increases build time) widenClientFileUpload: true, @@ -40,15 +42,6 @@ export default withSentryConfig(withNextIntl(nextConfig), { // side errors will fail. tunnelRoute: "/monitoring", - // Hides source maps from generated client bundles - hideSourceMaps: true, - // Automatically tree-shake Sentry logger statements to reduce bundle size disableLogger: true, - - // Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.) - // See the following for more information: - // https://docs.sentry.io/product/crons/ - // https://vercel.com/docs/cron-jobs - automaticVercelMonitors: true, }); diff --git a/package.json b/package.json index c4d886e..ec0b1ce 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", + "@sentry/nextjs": "8.54.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,13 +63,13 @@ "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", "@types/node": "22", - "@typescript-eslint/eslint-plugin": "8.14.0", - "@typescript-eslint/parser": "8.14.0", + "@typescript-eslint/eslint-plugin": "8.23.0", + "@typescript-eslint/parser": "8.23.0", "autoprefixer": "10.4.20", "clsx": "2.1.1", "dotenv": "16.4.5", @@ -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..9259ed0 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,19 +46,25 @@ 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 '@sentry/nextjs': - specifier: 8.38.0 - version: 8.38.0(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(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)(webpack@5.97.1) + specifier: 8.54.0 + version: 8.54.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(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)(webpack@5.97.1) '@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 @@ -171,11 +172,11 @@ importers: specifier: '22' 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) + specifier: 8.23.0 + version: 8.23.0(@typescript-eslint/parser@8.23.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) + specifier: 8.23.0 + version: 8.23.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.23.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.23.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.23.0(@typescript-eslint/parser@8.23.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} @@ -1193,16 +1225,12 @@ packages: '@octokit/types@13.8.0': resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} - '@opentelemetry/api-logs@0.52.1': - resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} - engines: {node: '>=14'} - '@opentelemetry/api-logs@0.53.0': resolution: {integrity: sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==} engines: {node: '>=14'} - '@opentelemetry/api-logs@0.54.2': - resolution: {integrity: sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ==} + '@opentelemetry/api-logs@0.57.1': + resolution: {integrity: sha512-I4PHczeujhQAQv6ZBzqHYEUiggZL4IdSMixtVD3EYqbdrjujE7kRfI5QohjlPoJm8BvenoW5YaTMWRrbpot6tg==} engines: {node: '>=14'} '@opentelemetry/api@1.9.0': @@ -1215,176 +1243,164 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@1.26.0': - resolution: {integrity: sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@1.30.1': resolution: {integrity: sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/instrumentation-amqplib@0.43.0': - resolution: {integrity: sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A==} + '@opentelemetry/instrumentation-amqplib@0.46.0': + resolution: {integrity: sha512-04VHHV1KIN/c1wLWwzmLI02d/welgscBJ4BuDqrHaxd+ZIdlVXK9UYQsYf3JwSeF52z/4YoSzr8bfdVBSWoMAg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-connect@0.40.0': - resolution: {integrity: sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==} + '@opentelemetry/instrumentation-connect@0.43.0': + resolution: {integrity: sha512-Q57JGpH6T4dkYHo9tKXONgLtxzsh1ZEW5M9A/OwKrZFyEpLqWgjhcZ3hIuVvDlhb426iDF1f9FPToV/mi5rpeA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-dataloader@0.12.0': - resolution: {integrity: sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==} + '@opentelemetry/instrumentation-dataloader@0.16.0': + resolution: {integrity: sha512-88+qCHZC02up8PwKHk0UQKLLqGGURzS3hFQBZC7PnGwReuoKjHXS1o29H58S+QkXJpkTr2GACbx8j6mUoGjNPA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-express@0.44.0': - resolution: {integrity: sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==} + '@opentelemetry/instrumentation-express@0.47.0': + resolution: {integrity: sha512-XFWVx6k0XlU8lu6cBlCa29ONtVt6ADEjmxtyAyeF2+rifk8uBJbk1La0yIVfI0DoKURGbaEDTNelaXG9l/lNNQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-fastify@0.41.0': - resolution: {integrity: sha512-pNRjFvf0mvqfJueaeL/qEkuGJwgtE5pgjIHGYwjc2rMViNCrtY9/Sf+Nu8ww6dDd/Oyk2fwZZP7i0XZfCnETrA==} + '@opentelemetry/instrumentation-fastify@0.44.1': + resolution: {integrity: sha512-RoVeMGKcNttNfXMSl6W4fsYoCAYP1vi6ZAWIGhBY+o7R9Y0afA7f9JJL0j8LHbyb0P0QhSYk+6O56OwI2k4iRQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-fs@0.16.0': - resolution: {integrity: sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg==} + '@opentelemetry/instrumentation-fs@0.19.0': + resolution: {integrity: sha512-JGwmHhBkRT2G/BYNV1aGI+bBjJu4fJUD/5/Jat0EWZa2ftrLV3YE8z84Fiij/wK32oMZ88eS8DI4ecLGZhpqsQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-generic-pool@0.39.0': - resolution: {integrity: sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==} + '@opentelemetry/instrumentation-generic-pool@0.43.0': + resolution: {integrity: sha512-at8GceTtNxD1NfFKGAuwtqM41ot/TpcLh+YsGe4dhf7gvv1HW/ZWdq6nfRtS6UjIvZJOokViqLPJ3GVtZItAnQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-graphql@0.44.0': - resolution: {integrity: sha512-FYXTe3Bv96aNpYktqm86BFUTpjglKD0kWI5T5bxYkLUPEPvFn38vWGMJTGrDMVou/i55E4jlWvcm6hFIqLsMbg==} + '@opentelemetry/instrumentation-graphql@0.47.0': + resolution: {integrity: sha512-Cc8SMf+nLqp0fi8oAnooNEfwZWFnzMiBHCGmDFYqmgjPylyLmi83b+NiTns/rKGwlErpW0AGPt0sMpkbNlzn8w==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-hapi@0.41.0': - resolution: {integrity: sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==} + '@opentelemetry/instrumentation-hapi@0.45.1': + resolution: {integrity: sha512-VH6mU3YqAKTePPfUPwfq4/xr049774qWtfTuJqVHoVspCLiT3bW+fCQ1toZxt6cxRPYASoYaBsMA3CWo8B8rcw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-http@0.53.0': - resolution: {integrity: sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==} + '@opentelemetry/instrumentation-http@0.57.1': + resolution: {integrity: sha512-ThLmzAQDs7b/tdKI3BV2+yawuF09jF111OFsovqT1Qj3D8vjwKBwhi/rDE5xethwn4tSXtZcJ9hBsVAlWFQZ7g==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-ioredis@0.43.0': - resolution: {integrity: sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==} + '@opentelemetry/instrumentation-ioredis@0.47.0': + resolution: {integrity: sha512-4HqP9IBC8e7pW9p90P3q4ox0XlbLGme65YTrA3UTLvqvo4Z6b0puqZQP203YFu8m9rE/luLfaG7/xrwwqMUpJw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-kafkajs@0.4.0': - resolution: {integrity: sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==} + '@opentelemetry/instrumentation-kafkajs@0.7.0': + resolution: {integrity: sha512-LB+3xiNzc034zHfCtgs4ITWhq6Xvdo8bsq7amR058jZlf2aXXDrN9SV4si4z2ya9QX4tz6r4eZJwDkXOp14/AQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-knex@0.41.0': - resolution: {integrity: sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg==} + '@opentelemetry/instrumentation-knex@0.44.0': + resolution: {integrity: sha512-SlT0+bLA0Lg3VthGje+bSZatlGHw/vwgQywx0R/5u9QC59FddTQSPJeWNw29M6f8ScORMeUOOTwihlQAn4GkJQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-koa@0.43.0': - resolution: {integrity: sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==} + '@opentelemetry/instrumentation-koa@0.47.0': + resolution: {integrity: sha512-HFdvqf2+w8sWOuwtEXayGzdZ2vWpCKEQv5F7+2DSA74Te/Cv4rvb2E5So5/lh+ok4/RAIPuvCbCb/SHQFzMmbw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-lru-memoizer@0.40.0': - resolution: {integrity: sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==} + '@opentelemetry/instrumentation-lru-memoizer@0.44.0': + resolution: {integrity: sha512-Tn7emHAlvYDFik3vGU0mdwvWJDwtITtkJ+5eT2cUquct6nIs+H8M47sqMJkCpyPe5QIBJoTOHxmc6mj9lz6zDw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mongodb@0.48.0': - resolution: {integrity: sha512-9YWvaGvrrcrydMsYGLu0w+RgmosLMKe3kv/UNlsPy8RLnCkN2z+bhhbjjjuxtUmvEuKZMCoXFluABVuBr1yhjw==} + '@opentelemetry/instrumentation-mongodb@0.51.0': + resolution: {integrity: sha512-cMKASxCX4aFxesoj3WK8uoQ0YUrRvnfxaO72QWI2xLu5ZtgX/QvdGBlU3Ehdond5eb74c2s1cqRQUIptBnKz1g==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mongoose@0.42.0': - resolution: {integrity: sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==} + '@opentelemetry/instrumentation-mongoose@0.46.0': + resolution: {integrity: sha512-mtVv6UeaaSaWTeZtLo4cx4P5/ING2obSqfWGItIFSunQBrYROfhuVe7wdIrFUs2RH1tn2YYpAJyMaRe/bnTTIQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mysql2@0.41.0': - resolution: {integrity: sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==} + '@opentelemetry/instrumentation-mysql2@0.45.0': + resolution: {integrity: sha512-qLslv/EPuLj0IXFvcE3b0EqhWI8LKmrgRPIa4gUd8DllbBpqJAvLNJSv3cC6vWwovpbSI3bagNO/3Q2SuXv2xA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-mysql@0.41.0': - resolution: {integrity: sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==} + '@opentelemetry/instrumentation-mysql@0.45.0': + resolution: {integrity: sha512-tWWyymgwYcTwZ4t8/rLDfPYbOTF3oYB8SxnYMtIQ1zEf5uDm90Ku3i6U/vhaMyfHNlIHvDhvJh+qx5Nc4Z3Acg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-nestjs-core@0.40.0': - resolution: {integrity: sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==} + '@opentelemetry/instrumentation-nestjs-core@0.44.0': + resolution: {integrity: sha512-t16pQ7A4WYu1yyQJZhRKIfUNvl5PAaF2pEteLvgJb/BWdd1oNuU1rOYt4S825kMy+0q4ngiX281Ss9qiwHfxFQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-pg@0.44.0': - resolution: {integrity: sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==} + '@opentelemetry/instrumentation-pg@0.50.0': + resolution: {integrity: sha512-TtLxDdYZmBhFswm8UIsrDjh/HFBeDXd4BLmE8h2MxirNHewLJ0VS9UUddKKEverb5Sm2qFVjqRjcU+8Iw4FJ3w==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-redis-4@0.42.0': - resolution: {integrity: sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==} + '@opentelemetry/instrumentation-redis-4@0.46.0': + resolution: {integrity: sha512-aTUWbzbFMFeRODn3720TZO0tsh/49T8H3h8vVnVKJ+yE36AeW38Uj/8zykQ/9nO8Vrtjr5yKuX3uMiG/W8FKNw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-tedious@0.15.0': - resolution: {integrity: sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw==} + '@opentelemetry/instrumentation-tedious@0.18.0': + resolution: {integrity: sha512-9zhjDpUDOtD+coeADnYEJQ0IeLVCj7w/hqzIutdp5NqS1VqTAanaEfsEcSypyvYv5DX3YOsTUoF+nr2wDXPETA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-undici@0.6.0': - resolution: {integrity: sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==} + '@opentelemetry/instrumentation-undici@0.10.0': + resolution: {integrity: sha512-vm+V255NGw9gaSsPD6CP0oGo8L55BffBc8KnxqsMuc6XiAD1L8SFNzsW0RHhxJFqy9CJaJh+YiJ5EHXuZ5rZBw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.7.0 - '@opentelemetry/instrumentation@0.52.1': - resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.53.0': resolution: {integrity: sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.54.2': - resolution: {integrity: sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==} + '@opentelemetry/instrumentation@0.57.1': + resolution: {integrity: sha512-SgHEKXoVxOjc20ZYusPG3Fh+RLIZTSa4x8QtD3NfgAUDyqdFFS9W1F2ZVbZkqDCdyMcQG02Ok4duUGLHJXHgbA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 @@ -1480,8 +1496,8 @@ packages: engines: {node: '>=18'} hasBin: true - '@prisma/instrumentation@5.19.1': - resolution: {integrity: sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==} + '@prisma/instrumentation@5.22.0': + resolution: {integrity: sha512-LxccF392NN37ISGxIurUljZSh1YWnphO34V5a0+T7FVQG2u9bhAXRTJpgmQ3483woVhkraQZFF7cbRrpbw/F4Q==} '@radix-ui/colors@3.0.0': resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} @@ -2000,8 +2016,8 @@ packages: peerDependencies: viem: ^2.21.55 - '@rollup/plugin-commonjs@26.0.1': - resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} + '@rollup/plugin-commonjs@28.0.1': + resolution: {integrity: sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -2077,124 +2093,117 @@ packages: resolution: {integrity: sha512-NzkBK8GwPsyQ74AceLjENbUoaFrObnzEKOX4ko2wZDuIyK+DnDm3B//8xZYI2LCKt+wUD55l6ygfjCoVs8RMWw==} hasBin: true - '@sentry-internal/browser-utils@8.38.0': - resolution: {integrity: sha512-5QMVcssrAcmjKT0NdFYcX0b0wwZovGAZ9L2GajErXtHkBenjI2sgR2+5J7n+QZGuk2SC1qhGmT1O9i3p3UEwew==} + '@sentry-internal/browser-utils@8.54.0': + resolution: {integrity: sha512-DKWCqb4YQosKn6aD45fhKyzhkdG7N6goGFDeyTaJFREJDFVDXiNDsYZu30nJ6BxMM7uQIaARhPAC5BXfoED3pQ==} engines: {node: '>=14.18'} - '@sentry-internal/feedback@8.38.0': - resolution: {integrity: sha512-AW5HCCAlc3T1jcSuNhbFVNO1CHyJ5g5tsGKEP4VKgu+D1Gg2kZ5S2eFatLBUP/BD5JYb1A7p6XPuzYp1XfMq0A==} + '@sentry-internal/feedback@8.54.0': + resolution: {integrity: sha512-nQqRacOXoElpE0L0ADxUUII0I3A94niqG9Z4Fmsw6057QvyrV/LvTiMQBop6r5qLjwMqK+T33iR4/NQI5RhsXQ==} engines: {node: '>=14.18'} - '@sentry-internal/replay-canvas@8.38.0': - resolution: {integrity: sha512-OxmlWzK9J8mRM+KxdSnQ5xuxq+p7TiBzTz70FT3HltxmeugvDkyp6803UcFqHOPHR35OYeVLOalym+FmvNn9kw==} + '@sentry-internal/replay-canvas@8.54.0': + resolution: {integrity: sha512-K/On3OAUBeq/TV2n+1EvObKC+WMV9npVXpVyJqCCyn8HYMm8FUGzuxeajzm0mlW4wDTPCQor6mK9/IgOquUzCw==} engines: {node: '>=14.18'} - '@sentry-internal/replay@8.38.0': - resolution: {integrity: sha512-mQPShKnIab7oKwkwrRxP/D8fZYHSkDY+cvqORzgi+wAwgnunytJQjz9g6Ww2lJu98rHEkr5SH4V4rs6PZYZmnQ==} + '@sentry-internal/replay@8.54.0': + resolution: {integrity: sha512-8xuBe06IaYIGJec53wUC12tY2q4z2Z0RPS2s1sLtbA00EvK1YDGuXp96IDD+HB9mnDMrQ/jW5f97g9TvPsPQUg==} engines: {node: '>=14.18'} - '@sentry/babel-plugin-component-annotate@2.22.6': - resolution: {integrity: sha512-V2g1Y1I5eSe7dtUVMBvAJr8BaLRr4CLrgNgtPaZyMT4Rnps82SrZ5zqmEkLXPumlXhLUWR6qzoMNN2u+RXVXfQ==} + '@sentry/babel-plugin-component-annotate@2.22.7': + resolution: {integrity: sha512-aa7XKgZMVl6l04NY+3X7BP7yvQ/s8scn8KzQfTLrGRarziTlMGrsCOBQtCNWXOPEbtxAIHpZ9dsrAn5EJSivOQ==} engines: {node: '>= 14'} - '@sentry/browser@8.38.0': - resolution: {integrity: sha512-AZR+b0EteNZEGv6JSdBD22S9VhQ7nrljKsSnzxobBULf3BpwmhmCzTbDrqWszKDAIDYmL+yQJIR2glxbknneWQ==} + '@sentry/browser@8.54.0': + resolution: {integrity: sha512-BgUtvxFHin0fS0CmJVKTLXXZcke0Av729IVfi+2fJ4COX8HO7/HAP02RKaSQGmL2HmvWYTfNZ7529AnUtrM4Rg==} engines: {node: '>=14.18'} - '@sentry/bundler-plugin-core@2.22.6': - resolution: {integrity: sha512-1esQdgSUCww9XAntO4pr7uAM5cfGhLsgTK9MEwAKNfvpMYJi9NUTYa3A7AZmdA8V6107Lo4OD7peIPrDRbaDCg==} + '@sentry/bundler-plugin-core@2.22.7': + resolution: {integrity: sha512-ouQh5sqcB8vsJ8yTTe0rf+iaUkwmeUlGNFi35IkCFUQlWJ22qS6OfvNjOqFI19e6eGUXks0c/2ieFC4+9wJ+1g==} engines: {node: '>= 14'} - '@sentry/cli-darwin@2.41.1': - resolution: {integrity: sha512-7pS3pu/SuhE6jOn3wptstAg6B5nUP878O6s+2svT7b5fKNfYUi/6NPK6dAveh2Ca0rwVq40TO4YFJabWMgTpdQ==} + '@sentry/cli-darwin@2.39.1': + resolution: {integrity: sha512-kiNGNSAkg46LNGatfNH5tfsmI/kCAaPA62KQuFZloZiemTNzhy9/6NJP8HZ/GxGs8GDMxic6wNrV9CkVEgFLJQ==} engines: {node: '>=10'} os: [darwin] - '@sentry/cli-linux-arm64@2.41.1': - resolution: {integrity: sha512-EzYCEnnENBnS5kpNW+2dBcrPZn1MVfywh2joGVQZTpmgDL5YFJ59VOd+K0XuEwqgFI8BSNI14KXZ75s4DD1/Vw==} + '@sentry/cli-linux-arm64@2.39.1': + resolution: {integrity: sha512-5VbVJDatolDrWOgaffsEM7znjs0cR8bHt9Bq0mStM3tBolgAeSDHE89NgHggfZR+DJ2VWOy4vgCwkObrUD6NQw==} engines: {node: '>=10'} cpu: [arm64] os: [linux, freebsd] - '@sentry/cli-linux-arm@2.41.1': - resolution: {integrity: sha512-wNUvquD6qjOCczvuBGf9OiD29nuQ6yf8zzfyPJa5Bdx1QXuteKsKb6HBrMwuIR3liyuu0duzHd+H/+p1n541Hg==} + '@sentry/cli-linux-arm@2.39.1': + resolution: {integrity: sha512-DkENbxyRxUrfLnJLXTA4s5UL/GoctU5Cm4ER1eB7XN7p9WsamFJd/yf2KpltkjEyiTuplv0yAbdjl1KX3vKmEQ==} engines: {node: '>=10'} cpu: [arm] os: [linux, freebsd] - '@sentry/cli-linux-i686@2.41.1': - resolution: {integrity: sha512-urpQCWrdYnSAsZY3udttuMV88wTJzKZL10xsrp7sjD/Hd+O6qSLVLkxebIlxts70jMLLFHYrQ2bkRg5kKuX6Fg==} + '@sentry/cli-linux-i686@2.39.1': + resolution: {integrity: sha512-pXWVoKXCRrY7N8vc9H7mETiV9ZCz+zSnX65JQCzZxgYrayQPJTc+NPRnZTdYdk5RlAupXaFicBI2GwOCRqVRkg==} engines: {node: '>=10'} cpu: [x86, ia32] os: [linux, freebsd] - '@sentry/cli-linux-x64@2.41.1': - resolution: {integrity: sha512-ZqpYwHXAaK4MMEFlyaLYr6mJTmpy9qP6n30jGhLTW7kHKS3s6GPLCSlNmIfeClrInEt0963fM633ZRnXa04VPw==} + '@sentry/cli-linux-x64@2.39.1': + resolution: {integrity: sha512-IwayNZy+it7FWG4M9LayyUmG1a/8kT9+/IEm67sT5+7dkMIMcpmHDqL8rWcPojOXuTKaOBBjkVdNMBTXy0mXlA==} engines: {node: '>=10'} cpu: [x64] os: [linux, freebsd] - '@sentry/cli-win32-i686@2.41.1': - resolution: {integrity: sha512-AuRimCeVsx99DIOr9cwdYBHk39tlmAuPDdy2r16iNzY0InXs4xOys4gGzM7N4vlFQvFkzuc778Su0HkfasgprA==} + '@sentry/cli-win32-i686@2.39.1': + resolution: {integrity: sha512-NglnNoqHSmE+Dz/wHeIVRnV2bLMx7tIn3IQ8vXGO5HWA2f8zYJGktbkLq1Lg23PaQmeZLPGlja3gBQfZYSG10Q==} engines: {node: '>=10'} cpu: [x86, ia32] os: [win32] - '@sentry/cli-win32-x64@2.41.1': - resolution: {integrity: sha512-6JcPvXGye61+wPp0xdzfc2YLE/Dcud8JdaK8VxLM3b/8+Em7E+UyliDu3uF8+YGUqizY5JYTd3fs17DC8DZhLw==} + '@sentry/cli-win32-x64@2.39.1': + resolution: {integrity: sha512-xv0R2CMf/X1Fte3cMWie1NXuHmUyQPDBfCyIt6k6RPFPxAYUgcqgMPznYwVMwWEA1W43PaOkSn3d8ZylsDaETw==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@sentry/cli@2.41.1': - resolution: {integrity: sha512-0GVmDiTV7R1492wkVY4bGcfC0fSmRmQjuxaaPI8CIV9B2VP9pBVCUizi1mevXaaE4I3fM60LI+XYrKFEneuVog==} + '@sentry/cli@2.39.1': + resolution: {integrity: sha512-JIb3e9vh0+OmQ0KxmexMXg9oZsR/G7HMwxt5BUIKAXZ9m17Xll4ETXTRnRUBT3sf7EpNGAmlQk1xEmVN9pYZYQ==} engines: {node: '>= 10'} hasBin: true - '@sentry/core@8.38.0': - resolution: {integrity: sha512-sGD+5TEHU9G7X7zpyaoJxpOtwjTjvOd1f/MKBrWW2vf9UbYK+GUJrOzLhMoSWp/pHSYgvObkJkDb/HwieQjvhQ==} + '@sentry/core@8.54.0': + resolution: {integrity: sha512-03bWf+D1j28unOocY/5FDB6bUHtYlm6m6ollVejhg45ZmK9iPjdtxNWbrLsjT1WRym0Tjzowu+A3p+eebYEv0Q==} engines: {node: '>=14.18'} - '@sentry/nextjs@8.38.0': - resolution: {integrity: sha512-axKkeAXbpiO8hQjVtDSLyXYqCN9ptnNHxNmKlYuRTJtwv4hPZ31AIhurEN2y7dUBvXv3QTBv+9kvEkdN8qHvXA==} + '@sentry/nextjs@8.54.0': + resolution: {integrity: sha512-TiNrT98+3AdeX/CMM8uhx0yOt/ITkx8EOJ8d1FjiRZdrR/UcY1dpq1S/m3h3T2NkwTQ9Os1A/GpDJz7LHPoL/w==} engines: {node: '>=14.18'} peerDependencies: next: ^13.2.0 || ^14.0 || ^15.0.0-rc.0 - '@sentry/node@8.38.0': - resolution: {integrity: sha512-nwW0XqZFQseXYn0i6i6nKPkbjgHMBEFSF9TnK6mHHqJHHObHIZ6qu5CfvGKgxATia8JPIg9NN8XcyYOnQMi07w==} + '@sentry/node@8.54.0': + resolution: {integrity: sha512-z9ak481OtCw3V4l55ke/9FOiorF2J/niO1J1gvGefXpgFucpw0M3qqEFjB5cpg9HoZM8Y1WtA1OFusfTAnvcXg==} engines: {node: '>=14.18'} - '@sentry/opentelemetry@8.38.0': - resolution: {integrity: sha512-AfjmIf/v7+x2WplhkX66LyGKvrzzPeSgff9uJ0cFCC2s0yd1qA2VPuIwEyr5i/FOJOP5bvFr8tu/hz3LA4+F5Q==} + '@sentry/opentelemetry@8.54.0': + resolution: {integrity: sha512-Tkmd8bmXMx0PKZF53ywk/FfvDrphX8NdPH5N53HxyMvGxSf2trZkTuOSFJg6zKibyGYO6+PUeGO3g2WJKUxwGA==} engines: {node: '>=14.18'} peerDependencies: '@opentelemetry/api': ^1.9.0 - '@opentelemetry/core': ^1.25.1 - '@opentelemetry/instrumentation': ^0.54.0 - '@opentelemetry/sdk-trace-base': ^1.26.0 - '@opentelemetry/semantic-conventions': ^1.27.0 - - '@sentry/react@8.38.0': - resolution: {integrity: sha512-5396tewO00wbJFHUkmU+ikmp4A+wuBpStNc7UDyAm642jfbPajj51+GWld/ZYNFiQaZ/8I9tvvpHqVLnUh21gg==} + '@opentelemetry/context-async-hooks': ^1.30.1 + '@opentelemetry/core': ^1.30.1 + '@opentelemetry/instrumentation': ^0.57.1 + '@opentelemetry/sdk-trace-base': ^1.30.1 + '@opentelemetry/semantic-conventions': ^1.28.0 + + '@sentry/react@8.54.0': + resolution: {integrity: sha512-42T/fp8snYN19Fy/2P0Mwotu4gcdy+1Lx+uYCNcYP1o7wNGigJ7qb27sW7W34GyCCHjoCCfQgeOqDQsyY8LC9w==} engines: {node: '>=14.18'} peerDependencies: react: 19.0.0 - '@sentry/types@8.38.0': - resolution: {integrity: sha512-fP5H9ZX01W4Z/EYctk3mkSHi7d06cLcX2/UWqwdWbyPWI+pL2QpUPICeO/C+8SnmYx//wFj3qWDhyPCh1PdFAA==} - engines: {node: '>=14.18'} - - '@sentry/utils@8.38.0': - resolution: {integrity: sha512-3X7MgIKIx+2q5Al7QkhaRB4wV6DvzYsaeIwdqKUzGLuRjXmNgJrLoU87TAwQRmZ6Wr3IoEpThZZMNrzYPXxArw==} + '@sentry/vercel-edge@8.54.0': + resolution: {integrity: sha512-1oct5P0iTPJOBCzNKZZ+H1ja7b1izZNCObBRhxscOsDHM4fUFwCP8MfjxGIphzj9XLibzo+4dsn6JtkxIdn5GQ==} engines: {node: '>=14.18'} - '@sentry/vercel-edge@8.38.0': - resolution: {integrity: sha512-JckfcK/bZZj2CGOcHhgi4lcHAWpMqOnx8g9YcIWc8Bj8MfpavXciYBU+L0AnYiXwnW1v3E4M0pMrb+jccvGtEw==} - engines: {node: '>=14.18'} - - '@sentry/webpack-plugin@2.22.6': - resolution: {integrity: sha512-BiLhAzQYAz/9kCXKj2LeUKWf/9GBVn2dD0DeYK89s+sjDEaxjbcLBBiLlLrzT7eC9QVj2tUZRKOi6puCfc8ysw==} + '@sentry/webpack-plugin@2.22.7': + resolution: {integrity: sha512-j5h5LZHWDlm/FQCCmEghQ9FzYXwfZdlOf3FE/X6rK6lrtx0JCAkq+uhMSasoyP4XYKL4P4vRS6WFSos4jxf/UA==} engines: {node: '>= 14'} peerDependencies: webpack: '>=4.40.0' @@ -2800,6 +2809,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==} @@ -2911,61 +2948,51 @@ packages: '@types/webxr@0.5.21': resolution: {integrity: sha512-geZIAtLzjGmgY2JUi6VxXdCrTb99A7yP49lxLr2Nm/uIK0PkkxcEi4OGhoGDO4pxCf3JwGz2GiJL2Ej4K2bKaA==} - '@typescript-eslint/eslint-plugin@8.14.0': - resolution: {integrity: sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==} + '@typescript-eslint/eslint-plugin@8.23.0': + resolution: {integrity: sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.14.0': - resolution: {integrity: sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==} + '@typescript-eslint/parser@8.23.0': + resolution: {integrity: sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.14.0': - resolution: {integrity: sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==} + '@typescript-eslint/scope-manager@8.23.0': + resolution: {integrity: sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.14.0': - resolution: {integrity: sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==} + '@typescript-eslint/type-utils@8.23.0': + resolution: {integrity: sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.14.0': - resolution: {integrity: sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==} + '@typescript-eslint/types@8.23.0': + resolution: {integrity: sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.14.0': - resolution: {integrity: sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==} + '@typescript-eslint/typescript-estree@8.23.0': + resolution: {integrity: sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.14.0': - resolution: {integrity: sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==} + '@typescript-eslint/utils@8.23.0': + resolution: {integrity: sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.14.0': - resolution: {integrity: sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==} + '@typescript-eslint/visitor-keys@8.23.0': + resolution: {integrity: sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@use-gesture/core@10.3.1': @@ -3246,6 +3273,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 +3670,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'} @@ -4213,6 +4252,9 @@ packages: resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} + forwarded-parse@2.1.2: + resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} + fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -4401,10 +4443,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 +4596,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 +4662,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 +4697,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 +4719,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 +5171,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 +5307,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 +5811,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 +5839,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 +6113,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 +6195,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 +6210,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: @@ -6122,11 +6234,11 @@ packages: troika-worker-utils@0.49.0: resolution: {integrity: sha512-1xZHoJrG0HFfCvT/iyN41DvI/nRykiBtHqFkGaGgJwq5iXfIZFBiPPEHFpPpgyKM3Oo5ITHXP5wM2TNQszYdVg==} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-evaluator@1.2.0: resolution: {integrity: sha512-ncSGek1p92bj2ifB7s9UBgryHCkU9vwC5d+Lplt12gT9DH+e41X8dMoHRQjIMeAvyG7j9dEnuHmwgOtuRIQL+Q==} @@ -6405,6 +6517,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 +6548,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 +6569,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 +6667,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 +6705,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 +6763,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 +6905,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 +7015,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 +7331,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 +7340,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: @@ -7610,15 +7777,11 @@ snapshots: dependencies: '@octokit/openapi-types': 23.0.1 - '@opentelemetry/api-logs@0.52.1': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs@0.53.0': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs@0.54.2': + '@opentelemetry/api-logs@0.57.1': dependencies: '@opentelemetry/api': 1.9.0 @@ -7628,231 +7791,216 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.27.0 - '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/instrumentation-amqplib@0.43.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-amqplib@0.46.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-connect@0.40.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-connect@0.43.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 '@types/connect': 3.4.36 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-dataloader@0.12.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-dataloader@0.16.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-express@0.44.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-express@0.47.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-fastify@0.41.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-fastify@0.44.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-fs@0.16.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-fs@0.19.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-generic-pool@0.39.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-generic-pool@0.43.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-graphql@0.44.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-graphql@0.47.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-hapi@0.41.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-hapi@0.45.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-http@0.53.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-http@0.57.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 + forwarded-parse: 2.1.2 semver: 7.7.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-ioredis@0.43.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-ioredis@0.47.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-kafkajs@0.4.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-kafkajs@0.7.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-knex@0.41.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-knex@0.44.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-koa@0.43.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-koa@0.47.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-lru-memoizer@0.40.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-lru-memoizer@0.44.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongodb@0.48.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mongodb@0.51.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongoose@0.42.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mongoose@0.46.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql2@0.41.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mysql2@0.45.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql@0.41.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-mysql@0.45.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 '@types/mysql': 2.15.26 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-nestjs-core@0.40.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-nestjs-core@0.44.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-pg@0.44.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-pg@0.50.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.28.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) '@types/pg': 8.6.1 '@types/pg-pool': 2.0.6 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-redis-4@0.42.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-redis-4@0.46.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 '@opentelemetry/semantic-conventions': 1.28.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-tedious@0.15.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-tedious@0.18.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 '@types/tedious': 4.0.14 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-undici@0.6.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-undici@0.10.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.52.1 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.12.0 - require-in-the-middle: 7.5.0 - semver: 7.7.0 - shimmer: 1.2.1 + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color @@ -7868,10 +8016,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation@0.57.1(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.54.2 + '@opentelemetry/api-logs': 0.57.1 '@types/shimmer': 1.2.0 import-in-the-middle: 1.12.0 require-in-the-middle: 7.5.0 @@ -7940,13 +8088,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 +8104,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 +8134,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 +8167,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 +8183,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 @@ -8081,10 +8229,10 @@ snapshots: dependencies: playwright: 1.45.0 - '@prisma/instrumentation@5.19.1': + '@prisma/instrumentation@5.22.0': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color @@ -8455,7 +8603,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 +8615,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 +8770,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 +8809,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,41 +8818,42 @@ 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 - '@rollup/plugin-commonjs@26.0.1(rollup@3.29.5)': + '@rollup/plugin-commonjs@28.0.1(rollup@3.29.5)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@3.29.5) commondir: 1.0.1 estree-walker: 2.0.2 - glob: 10.4.5 + fdir: 6.4.3(picomatch@4.0.2) is-reference: 1.2.1 magic-string: 0.30.17 + picomatch: 4.0.2 optionalDependencies: rollup: 3.29.5 @@ -8720,9 +8869,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 +8879,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 @@ -8822,49 +8971,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@sentry-internal/browser-utils@8.38.0': + '@sentry-internal/browser-utils@8.54.0': dependencies: - '@sentry/core': 8.38.0 - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@sentry/core': 8.54.0 - '@sentry-internal/feedback@8.38.0': + '@sentry-internal/feedback@8.54.0': dependencies: - '@sentry/core': 8.38.0 - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@sentry/core': 8.54.0 - '@sentry-internal/replay-canvas@8.38.0': + '@sentry-internal/replay-canvas@8.54.0': dependencies: - '@sentry-internal/replay': 8.38.0 - '@sentry/core': 8.38.0 - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@sentry-internal/replay': 8.54.0 + '@sentry/core': 8.54.0 - '@sentry-internal/replay@8.38.0': + '@sentry-internal/replay@8.54.0': dependencies: - '@sentry-internal/browser-utils': 8.38.0 - '@sentry/core': 8.38.0 - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@sentry-internal/browser-utils': 8.54.0 + '@sentry/core': 8.54.0 - '@sentry/babel-plugin-component-annotate@2.22.6': {} + '@sentry/babel-plugin-component-annotate@2.22.7': {} - '@sentry/browser@8.38.0': + '@sentry/browser@8.54.0': dependencies: - '@sentry-internal/browser-utils': 8.38.0 - '@sentry-internal/feedback': 8.38.0 - '@sentry-internal/replay': 8.38.0 - '@sentry-internal/replay-canvas': 8.38.0 - '@sentry/core': 8.38.0 - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@sentry-internal/browser-utils': 8.54.0 + '@sentry-internal/feedback': 8.54.0 + '@sentry-internal/replay': 8.54.0 + '@sentry-internal/replay-canvas': 8.54.0 + '@sentry/core': 8.54.0 - '@sentry/bundler-plugin-core@2.22.6': + '@sentry/bundler-plugin-core@2.22.7': dependencies: '@babel/core': 7.26.7 - '@sentry/babel-plugin-component-annotate': 2.22.6 - '@sentry/cli': 2.41.1 + '@sentry/babel-plugin-component-annotate': 2.22.7 + '@sentry/cli': 2.39.1 dotenv: 16.4.5 find-up: 5.0.0 glob: 9.3.5 @@ -8874,28 +9013,28 @@ snapshots: - encoding - supports-color - '@sentry/cli-darwin@2.41.1': + '@sentry/cli-darwin@2.39.1': optional: true - '@sentry/cli-linux-arm64@2.41.1': + '@sentry/cli-linux-arm64@2.39.1': optional: true - '@sentry/cli-linux-arm@2.41.1': + '@sentry/cli-linux-arm@2.39.1': optional: true - '@sentry/cli-linux-i686@2.41.1': + '@sentry/cli-linux-i686@2.39.1': optional: true - '@sentry/cli-linux-x64@2.41.1': + '@sentry/cli-linux-x64@2.39.1': optional: true - '@sentry/cli-win32-i686@2.41.1': + '@sentry/cli-win32-i686@2.39.1': optional: true - '@sentry/cli-win32-x64@2.41.1': + '@sentry/cli-win32-x64@2.39.1': optional: true - '@sentry/cli@2.41.1': + '@sentry/cli@2.39.1': dependencies: https-proxy-agent: 5.0.1 node-fetch: 2.7.0 @@ -8903,43 +9042,38 @@ snapshots: proxy-from-env: 1.1.0 which: 2.0.2 optionalDependencies: - '@sentry/cli-darwin': 2.41.1 - '@sentry/cli-linux-arm': 2.41.1 - '@sentry/cli-linux-arm64': 2.41.1 - '@sentry/cli-linux-i686': 2.41.1 - '@sentry/cli-linux-x64': 2.41.1 - '@sentry/cli-win32-i686': 2.41.1 - '@sentry/cli-win32-x64': 2.41.1 + '@sentry/cli-darwin': 2.39.1 + '@sentry/cli-linux-arm': 2.39.1 + '@sentry/cli-linux-arm64': 2.39.1 + '@sentry/cli-linux-i686': 2.39.1 + '@sentry/cli-linux-x64': 2.39.1 + '@sentry/cli-win32-i686': 2.39.1 + '@sentry/cli-win32-x64': 2.39.1 transitivePeerDependencies: - encoding - supports-color - '@sentry/core@8.38.0': - dependencies: - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@sentry/core@8.54.0': {} - '@sentry/nextjs@8.38.0(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(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)(webpack@5.97.1)': + '@sentry/nextjs@8.54.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(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)(webpack@5.97.1)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@rollup/plugin-commonjs': 26.0.1(rollup@3.29.5) - '@sentry-internal/browser-utils': 8.38.0 - '@sentry/core': 8.38.0 - '@sentry/node': 8.38.0 - '@sentry/opentelemetry': 8.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0) - '@sentry/react': 8.38.0(react@19.0.0) - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 - '@sentry/vercel-edge': 8.38.0 - '@sentry/webpack-plugin': 2.22.6(webpack@5.97.1) + '@rollup/plugin-commonjs': 28.0.1(rollup@3.29.5) + '@sentry-internal/browser-utils': 8.54.0 + '@sentry/core': 8.54.0 + '@sentry/node': 8.54.0 + '@sentry/opentelemetry': 8.54.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0) + '@sentry/react': 8.54.0(react@19.0.0) + '@sentry/vercel-edge': 8.54.0 + '@sentry/webpack-plugin': 2.22.7(webpack@5.97.1) chalk: 3.0.0 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) resolve: 1.22.8 rollup: 3.29.5 stacktrace-parser: 0.1.10 transitivePeerDependencies: + - '@opentelemetry/context-async-hooks' - '@opentelemetry/core' - '@opentelemetry/instrumentation' - '@opentelemetry/sdk-trace-base' @@ -8948,84 +9082,71 @@ snapshots: - supports-color - webpack - '@sentry/node@8.38.0': + '@sentry/node@8.54.0': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-amqplib': 0.43.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-connect': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-dataloader': 0.12.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-express': 0.44.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fastify': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fs': 0.16.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-generic-pool': 0.39.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-graphql': 0.44.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-hapi': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-ioredis': 0.43.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-kafkajs': 0.4.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-knex': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-koa': 0.43.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-lru-memoizer': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongodb': 0.48.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongoose': 0.42.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql2': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-nestjs-core': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-pg': 0.44.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-redis-4': 0.42.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-tedious': 0.15.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-undici': 0.6.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.16.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.47.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fastify': 0.44.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.19.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.47.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.45.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.57.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.47.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.7.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.47.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.51.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.45.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.45.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-nestjs-core': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.50.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis-4': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.18.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.10.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@prisma/instrumentation': 5.19.1 - '@sentry/core': 8.38.0 - '@sentry/opentelemetry': 8.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0) - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@prisma/instrumentation': 5.22.0 + '@sentry/core': 8.54.0 + '@sentry/opentelemetry': 8.54.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0) import-in-the-middle: 1.12.0 transitivePeerDependencies: - supports-color - '@sentry/opentelemetry@8.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0)': + '@sentry/opentelemetry@8.54.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0)': dependencies: '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@sentry/core': 8.38.0 - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@sentry/core': 8.54.0 - '@sentry/react@8.38.0(react@19.0.0)': + '@sentry/react@8.54.0(react@19.0.0)': dependencies: - '@sentry/browser': 8.38.0 - '@sentry/core': 8.38.0 - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@sentry/browser': 8.54.0 + '@sentry/core': 8.54.0 hoist-non-react-statics: 3.3.2 react: 19.0.0 - '@sentry/types@8.38.0': {} - - '@sentry/utils@8.38.0': - dependencies: - '@sentry/types': 8.38.0 - - '@sentry/vercel-edge@8.38.0': + '@sentry/vercel-edge@8.54.0': dependencies: '@opentelemetry/api': 1.9.0 - '@sentry/core': 8.38.0 - '@sentry/types': 8.38.0 - '@sentry/utils': 8.38.0 + '@sentry/core': 8.54.0 - '@sentry/webpack-plugin@2.22.6(webpack@5.97.1)': + '@sentry/webpack-plugin@2.22.7(webpack@5.97.1)': dependencies: - '@sentry/bundler-plugin-core': 2.22.6 + '@sentry/bundler-plugin-core': 2.22.7 unplugin: 1.0.1 uuid: 9.0.1 webpack: 5.97.1 @@ -9774,6 +9895,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,86 +10021,82 @@ 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.23.0(@typescript-eslint/parser@8.23.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/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/visitor-keys': 8.14.0 - eslint: 9.14.0(jiti@1.21.7) + '@typescript-eslint/parser': 8.23.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/type-utils': 8.23.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.23.0 + eslint: 9.14.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.7.3) - optionalDependencies: + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 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.23.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 + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.23.0 debug: 4.4.0 - eslint: 9.14.0(jiti@1.21.7) - optionalDependencies: + eslint: 9.14.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.14.0': + '@typescript-eslint/scope-manager@8.23.0': dependencies: - '@typescript-eslint/types': 8.14.0 - '@typescript-eslint/visitor-keys': 8.14.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.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.23.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/typescript-estree': 8.23.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.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: + eslint: 9.14.0(jiti@2.4.2) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - - eslint - supports-color - '@typescript-eslint/types@8.14.0': {} + '@typescript-eslint/types@8.23.0': {} - '@typescript-eslint/typescript-estree@8.14.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.23.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.14.0 - '@typescript-eslint/visitor-keys': 8.14.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.0 - ts-api-utils: 1.4.3(typescript@5.7.3) - optionalDependencies: + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 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.23.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)) - '@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-community/eslint-utils': 4.4.1(eslint@9.14.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) + eslint: 9.14.0(jiti@2.4.2) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@8.14.0': + '@typescript-eslint/visitor-keys@8.23.0': dependencies: - '@typescript-eslint/types': 8.14.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.23.0 + eslint-visitor-keys: 4.2.0 '@use-gesture/core@10.3.1': {} @@ -10035,16 +10164,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 +10203,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 +10885,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 +10932,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 +11336,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 +11657,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.23.0(@typescript-eslint/parser@8.23.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.23.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.23.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.23.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.23.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 +11677,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 +11689,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.23.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.23.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.23.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.23.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.23.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.23.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.23.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.23.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.23.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 +11725,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.23.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.23.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 +11739,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.23.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 +11755,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 +11764,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 +11776,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 +11790,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.23.0(@typescript-eslint/parser@8.23.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.23.0(@typescript-eslint/parser@8.23.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 +11816,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 +11854,7 @@ snapshots: optionator: 0.9.4 text-table: 0.2.0 optionalDependencies: - jiti: 1.21.7 + jiti: 2.4.2 transitivePeerDependencies: - supports-color @@ -11916,6 +12057,8 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 + forwarded-parse@2.1.2: {} + fraction.js@4.3.7: {} framer-motion@11.18.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): @@ -12100,6 +12243,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 +12261,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 +12408,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 +12467,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 +12520,9 @@ snapshots: jiti@1.21.7: {} + jiti@2.4.2: + optional: true + jose@5.9.6: {} joycon@3.1.1: {} @@ -12355,6 +12535,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 +12965,8 @@ snapshots: normalize-range@0.1.2: {} + nwsapi@2.2.16: {} + obj-case@0.2.1: {} obj-multiplex@1.0.0: @@ -12843,14 +13053,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 +13105,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: {} @@ -13358,7 +13572,7 @@ snapshots: dependencies: debug: 4.4.0 module-details-from-path: 1.0.3 - resolve: 1.22.8 + resolve: 1.22.10 transitivePeerDependencies: - supports-color @@ -13394,6 +13608,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 +13639,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 +13998,8 @@ snapshots: dependencies: react: 19.0.0 + symbol-tree@3.2.4: {} + tabbable@6.2.0: {} table@6.9.0: @@ -13876,14 +14100,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 @@ -13898,16 +14136,18 @@ snapshots: troika-worker-utils@0.49.0: {} - ts-api-utils@1.4.3(typescript@5.7.3): + ts-api-utils@2.0.1(typescript@5.7.3): 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 +14365,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 +14382,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 +14437,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 +14473,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 +14574,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 +14609,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/scripts/generate-dummy-dotenv.sh b/scripts/generate-dummy-dotenv.sh new file mode 100755 index 0000000..222604c --- /dev/null +++ b/scripts/generate-dummy-dotenv.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Read .env.example and generate .env.production with dummy values +while IFS= read -r line || [ -n "$line" ]; do + # Skip empty lines and comments + if [[ -z "$line" ]] || [[ "$line" =~ ^# ]]; then + echo "$line" >> .env.production + else + # Get the variable name (everything before =) + var_name=$(echo "$line" | cut -d= -f1) + + # Skip variables that start with SENTRY_ variables as they mess up the build if defined with dummy data... Learned this the hard way: + # node_modules/@sentry/nextjs/build/types/config/types.d.ts + if [[ "$var_name" =~ ^SENTRY_ ]]; then + continue + fi + + # Get existing environment variable value if it exists + existing_value="${!var_name}" + + if [ -n "$existing_value" ]; then + # Use existing environment variable value + echo "${var_name}=${existing_value}" >> .env.production + else + # No existing value, use dummy values based on variable name + if [[ "$var_name" =~ _URL$ ]] || [[ "$var_name" =~ _DSN$ ]]; then + echo "${var_name}=https://dummy-url.com/" >> .env.production + elif [[ "$var_name" == "NEXT_PUBLIC_ENVIRONMENT" ]]; then + echo "${var_name}=ci" >> .env.production + else + echo "${var_name}=DUMMY_DO_NOT_REPLACE" >> .env.production + fi + fi + fi +done < .env.example 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..62b4c05 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().optional(), + 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..5116f83 100644 --- a/src/instrumentation.ts +++ b/src/instrumentation.ts @@ -1,9 +1,9 @@ export async function register() { if (process.env.NEXT_RUNTIME === "nodejs") { - await import("../sentry.server.config"); + await import("./sentry/sentry.server.config"); } if (process.env.NEXT_RUNTIME === "edge") { - await import("../sentry.edge.config"); + await import("./sentry/sentry.edge.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", { diff --git a/src/middleware.ts b/src/middleware.ts index 5bf757a..dbeef5e 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -38,5 +38,6 @@ export const config = { // - /_vercel (Vercel internals) // - /static (public files) // - /*.* (files with extensions) - matcher: ["/", "/((?!api|_next|_vercel|.*\\..*).*)"], + // - /monitoring (Sentry tunnel route) + matcher: ["/", "/((?!api|_next|_vercel|monitoring|.*\\..*).*)"], }; diff --git a/sentry.client.config.ts b/src/sentry/sentry.client.config.ts similarity index 85% rename from sentry.client.config.ts rename to src/sentry/sentry.client.config.ts index f65a3cb..92b4b0e 100644 --- a/sentry.client.config.ts +++ b/src/sentry/sentry.client.config.ts @@ -4,7 +4,8 @@ import * as Sentry from "@sentry/nextjs"; -import Consent, { ConsentType } from "@/integrations/consent"; +import { clientEnv } from "../env-client"; +import Consent, { ConsentType } from "../integrations/consent"; 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/src/sentry/sentry.edge.config.ts similarity index 82% rename from sentry.edge.config.ts rename to src/sentry/sentry.edge.config.ts index 6880625..8476eab 100644 --- a/sentry.edge.config.ts +++ b/src/sentry/sentry.edge.config.ts @@ -5,9 +5,11 @@ import * as Sentry from "@sentry/nextjs"; +import { clientEnv } from "../env-client"; + 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/src/sentry/sentry.server.config.ts similarity index 75% rename from sentry.server.config.ts rename to src/sentry/sentry.server.config.ts index aae6669..4cd9edf 100644 --- a/sentry.server.config.ts +++ b/src/sentry/sentry.server.config.ts @@ -4,9 +4,11 @@ import * as Sentry from "@sentry/nextjs"; +import { clientEnv } from "../env-client"; + 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 +17,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', });